一:sendmail概述:

Sendmail是目前使用最为广泛的一种E-mail服务器,是最重要的邮件传输代理程序。理解电子邮件的工作模式是非常重要的。一般情况下,我们把电子邮件程序分解成用户代理,传输代理和投递代理。当用户试图发送一封电子邮件的时候,他并不能直接将信件发送到对方的机器上,用户代理必须试图去寻找一个信件传输代理,把邮件提交给它。信件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的目标地址,信件传输代理程序将找到应该对这个目标地址负责的邮件传输代理服务器, 并且通过网络将邮件传送给它。对方的服务器接收到邮件之后,将其缓冲存储在本地,直到电子邮件的接收者查看自己的电子信箱。可以看到,一个邮件传输代理的主要工作是监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接收到的邮件缓冲或者 提交给最终投递程序。

二:sendmail与dns

电子邮件(email)服务器与DNS系统是始终分不开的,如果你要发电子邮件,就得通过邮件(email)服务器帮你将信件送出去。由于IP地址相对难以记忆,因此我们要有域名与IP地址的对应,这就是DNS系统,因此在收发电子邮件的过程中要用到DNS系统域名解析。DNS数据中,与电子邮件相关的是MX记录。一般来说,排在前面的的MX服务器的优先级别比较高由于MX后可以接数字,因此,一个域名或一台主机可以有多个MX记录,这样就起到了冗余功能,当一台邮件服务器出现问题时,由于有多个MX记录,因此信件不会被直接退回,而是转到下一个设置MX记录的主机并暂存在该处,等主要邮件服务器恢复正常之后,这个设置MX记录的主机将会把邮件传送到目的地,如此就起到了异地救援作用。

三:邮件系统结构:

MUA(mail user agent)邮件用户代理:MUA是一个邮件系统的客户端程序,提供阅读、发送和接收电子邮件的用户接口,MUA是邮件系统中与用户直接交互的程序。在windows下,常用的有microsoft的outlook,国产的foxmail,在linux下有evolution以及firefox等软件包。

MTA(mail submission agent)邮件传输代理:邮件传输代理负责邮件的存储和转发,MTA监视用户请求,根据电子邮件的目标地址找到对应的电子邮件服务器。在linux下常用 的MTA有sendmail(速度较慢)以及postfix(速度较快)等。

MDA(mail delivery agent)邮件投递代理:主要的功能是将MTA接收的信件依照信件的流向放置到本地账户下的邮件文件中,或者再经由MTA将信件送到下一个MTA。在linux下常用的MDA有mail.local、promail等。

MAA(mail access agent)邮件访问代理:MAA用户将用户连接到系统邮件库,使用pop或者imap协议接收邮件。linux下常用的有dovecot软件包等:

image

四:邮件系统所使用的协议:

SMTP:简单邮件传输协议:SMTP只负责电子邮件的传送,其使用的端口是25。他是目前internet上传输电子邮件的标准协议。

POP:邮局协议:有版本2和3,目前大多使用版本3。是接收电子邮件客户机和服务器之间的协议。客户端程序连接到服务器的端口号110.

IMAP:网际消息访问协议。目前版本为4。他提供方便的下载服务,支持pop协议所具有的全部功能。端口号是143.

image

案例一:创建两个区域

image

[root@localhost ~]# vim /etc/sysconfig/network #编辑主机名配置文件修改主机名

image

[root@localhost ~]# vim /etc/hosts #删除原有的主机名

image

搭建DNS环境:

[root@localhost ~]# mkdir /mnt/cdrom 创建光盘挂载目录

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/ #挂载光盘

[root@localhost ~]# cd /mnt/cdrom/Server/ #进入光盘目录

[root@localhost Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm #安装DNS的rpm包

[root@localhost Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm #安装DNS的相关包

[root@localhost Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm

[root@localhost Server]# cd /var/named/chroot/etc/

[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf

[root@localhost etc]# vim named.conf #编辑配置文件

image

[root@localhost etc]# vim named.rfc1912.zones

image

[root@localhost named]# cd /var/named/chroot/var/named/

[root@localhost named]# cp -p localhost.zone 163.com.db

[root@localhost named]# cp -p named.local 192.168.11.db

[root@localhost named]# vim 163.com.db

image

[root@localhost named]# vim 192.168.11.db

image

[root@localhost named]# vim /etc/resolv.conf

image

[root@localhost named]# service named start #启动DNS服务

[root@localhost named]# chkconfig named on #设置该服务开机启动

[root@localhost named]#init 6 #重启服务器主机

搭建邮件发送服务器:163.com

image

image

image

image

image

[root@mail mail]# vim sendmail.mc #编辑sendmail的主配置文档

image

[root@mail mail]# vim access #编辑sendmail的中继文件

image

[root@mail mail]# vim local-host-names

image

[root@mail mail]# service sendmail restart #重启邮件服务器

搭建dovecot邮件接收服务器:

image

[root@mail mail]# vim /etc/yum.repos.d/rhel-debuginfo.repo #编辑本地yum配置文档

[root@mail mail]# cd /mnt/cdrom/Server/ #因为已经挂载过光盘,所以直接进入光盘目录

[root@mail Server]# yum install dovecot –y #利用yum安装邮件接收服务器

[root@mail Server]# rpm -ql dovecot |less #查看dovecot的安装位置

[root@mail Server]# vim /etc/dovecot.conf #查看dovecot的配置文档,这里不用作修改

image

[root@mail Server]# service dovecot start #启动dovecot服务器

[root@mail Server]# chkconfig dovecot on #设置开机启动dovecot

[root@mail Server]# useradd user1 #在本地邮件服务器(163.com)上创建用户user1

[root@mail Server]# passwd user1 #为user1设置密码123

[root@mail Server]# useradd user2 #在本地邮件服务器(163.com)上创建用户user2

[root@mail Server]# passwd user2 #为user2设置密码123

下面使用XP系统上自带的outlook express工具测试本地邮件服务器是否可用

XP系统上的网络配置信息:

image

image

image

image

image

image

image

image

image

再使用同样的步骤创建user2,不再重复显示。

User1给user2发送一封邮件:

image

image

经过测试,163.com的sendmail服务器成功!!

搭建sina.com邮件服务器:

[root@localhost ~]# cd /mnt/cdrom/Server/ #进入光盘目录

[root@localhost Server]# vim /etc/sysconfig/network 修改本地主机名

image

搭建DNS服务器:

[root@localhost Server]# ll bind*

image

[root@localhost Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm #安装bind的rpm包

[root@localhost Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm #安装rpm相关包

[root@localhost Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm

[root@localhost Server]# cd /var/named/chroot/etc/

[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf #复制DNS主配置文档

[root@localhost etc]# vim named.conf #编辑DNS配置文档

image

[root@localhost etc]# vim named.rfc1912.zones

image

[root@localhost ~]# cd /var/named/chroot/var/named/

[root@localhost named]# cp -p localhost.zone sina.com.db

[root@localhost named]# cp -p named.local 192.168.11.db

[root@localhost named]# vim sina.com.db

image

[root@localhost named]# vim 192.168.11.db

image

[root@localhost named]# vim /etc/resolv.conf

image

[root@localhost named]# service named restart

[root@localhost named]# chkconfig named on #设置开机启动

[root@localhost named]# init 6 #重启DNS服务器主机

搭建sendmail邮件发送服务器

[root@mail ~]# mount /dev/cdrom /mnt/cdrom/

[root@mail ~]# cd /mnt/cdrom/Server/

[root@mail Server]# rpm -ivh sendmail-cf-8.13.8-2.el5.i386.rpm

[root@mail Server]# rpm -qa |grep sendmail

[root@mail Server]# cd /etc/mail

image

[root@mail mail]# vim sendmail.mc

image

[root@mail mail]# vim access

image

[root@mail mail]# vim local-host-names

image

[root@mail mail]# service sendmail restart

[root@mail mail]# chkconfig sendmail on

搭建dovecot邮件接收服务器:

[root@mail mail]# vim /etc/yum.repos.d/rhel-debuginfo.repo

image

[root@mail Server]# yum install dovecot -y

[root@mail Server]# service dovecot start

[root@mail Server]# chkconfig dovecot on #开机启动dovecot

[root@mail Server]# useradd user3 #创建用户user3

[root@mail Server]# passwd user3 #设置密码

[root@mail Server]# useradd user4 #创建用户user4

[root@mail Server]# passwd user4 #设置密码

在server2003上使用outlook express进行测试:

创建步骤与创建user1和user2相似,省略:

image

image

image

image

用user4新建邮件,编辑:

image

发送:

image

image

发送成功,接受成功,回复也成功了。Sina.com的邮件服务器测试成功。

在XP系统上使用 user1@163.com给user4@sina.com发送邮件:

image

在server2003上面使用user4接收邮件成功:

image

user4回复,在XP系统上user1接收成功:

image

image

整个服务器测试成功!

附:以下内容借鉴自{http://5503845.blog.51cto.com}···

上个案例中两台邮件服务器是处于同一网段中,一般两台邮件服务器很少处于同一网段中。如果要模拟两个不在同一网段中的邮件服务器(假设163.com邮件服务器的ip地址不变sina.com服务器地址为192.168.100.10),拓扑不用变动,只需在两个邮件服务器上做如下修改即可:

163.com域:

[root@mail ~]# route add -net 192.168.100.0 netmask 255.255.255.0 dev eth0

[root@mail ~]# route add default gw 192.168.100.10

sina.com域:

[root@mail ~]# route add -net 192.168.101.0 netmask 255.255.255.0 dev eth0

[root@mail ~]# route add default gw 192.168.101.66