一: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软件包等

四:邮件系统所使用的协议:
SMTP:简单邮件传输协议:SMTP只负责电子邮件的传送,其使用的端口是25。他是目前internet上传输电子邮件的标准协议。
POP:邮局协议:有版本2和3,目前大多使用版本3。是接收电子邮件客户机和服务器之间的协议。客户端程序连接到服务器的端口号110.
IMAP:网际消息访问协议。目前版本为4。他提供方便的下载服务,支持pop协议所具有的全部功能。端口号是143.
案例:在136.com域sendmail服务器上创建账户user1和user2,在sina.com域上创建user3和user4,实现这些用户间的邮件转发。
拓扑方案:

首先搭建163.com邮件服务器:
修改主机名:
[root@lyt ~]# vim /etc/sysconfig/network #如图:

[root@lyt ~]# vim /etc/hosts

搭建dns服务器:
[root@lyt ~]# mkdir /mnt/cdrom
[root@lyt ~]# mount /dev/cdrom /mnt/cdrom/
[root@lyt ~]# cd /mnt/cdrom/Server/
[root@lyt Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm
[root@lyt Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm
[root@lyt Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm
[root@lyt Server]# cd /var/named/chroot/etc/
[root@lyt etc]# cp -p named.caching-nameserver.conf named.conf
[root@lyt etc]# vim named.conf

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

[root@lyt etc]# cd ../var/named/
[root@lyt named]# cp -p localhost.zone 163.com.db
[root@lyt named]# cp -p named.local 192.168.101.db
[root@lyt named]# vim 163.com.db
[root@lyt named]# vim 192.168.101.db #区域的声明文件是101.168.192.in-addr.arpa与sina.com的相同

[root@lyt named]# vim /etc/resolv.conf #该sendmail服务器也是dns服务器,所以sendmail要dns解析,需要指向dns服务器,也即192.168.101.66

[root@lyt named]# service named start
[root@lyt named]# chkconfig named on #开机启动dns服务器
[root@lyt named]# init 6 #重启该服务器
搭建sendmail(邮件发送服务器)
[root@mail ~]# mount /dev/cdrom /mnt/cdrom/
[root@mail ~]# cd /mnt/cdrom/Server/

[root@mail Server]# rpm -qa |grep sendmail #查看sendmail已经安装过的包


[root@mail Server]# rpm -ivh sendmail-cf-8.13.8-2.el5.i386.rpm #该软件包用于直接编辑sendmail.mc文件,不用编辑sendmail.cf文件
[root@mail Server]# cd /etc/mail
[root@mail mail]# vim sendmail.mc #编辑sendmail的主配置文件

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

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

[root@mail mail]# service sendmail restart #重启sendmail服务器
搭建dovecot(邮件接收服务器)
[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 #安装该软件包,用于接收邮件
[root@mail Server]# rpm -ql dovecot |less #查看dovecot的安装位置
[root@mail Server]# vim /etc/dovecot.conf #查看dovecot的配置文件,此处无需修改

[root@mail Server]# service dovecot start #启用dovecot服务器
[root@mail Server]# chkconfig dovecot on #开机自动启动
[root@mail Server]# useradd user1 #在本地邮件服务器(163.com)上创建账户user1
[root@mail Server]# passwd user1
[root@mail Server]# useradd user2 #在本地邮件服务器(163.com)上创建账户user2
[root@mail Server]# passwd user2
测试:使用windows xp主机自带的outlook express工具查看本地邮件服务器(163.com)是否可用:(本地的user1用户向user2发送邮件)
xp主机的ip参数

点击:开始——》程序——》outlook express
使用同样的方法创建user2






user1向user2发送邮件:



user2向user1发送邮件:

测试成功!!!
搭建sina.com邮件服务器:
[root@localhost ~]# vim /etc/sysconfig/network

搭建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
[root@localhost Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.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

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

[root@localhost etc]# cd ../var/named/
[root@localhost named]# cp -p localhost.zone sina.com.db
[root@localhost named]# cp -p named.local 192.168.101.db
[root@localhost named]# vim sina.com.db

[root@localhost named]# vim 192.168.101.db #区域的声明文件是101.168.192.in-addr.arpa与163.com的相同

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

[root@localhost named]# service named start
[root@localhost named]# chkconfig named on #开机自动启动
[root@localhost ~]# init 6 #重启
搭建sendmail(邮件发送服务器):
[root@mail ~]# mount /dev/cdrom /mnt/cdrom/
[root@mail ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# rpm -ivh sendmail-cf-8.13.8-2.el5.i386.rpm #该软件包用于直接编辑sendmail.mc文件,不用编辑sendmail.cf文件
[root@mail Server]# cd /etc/mail
[root@mail mail]# vim sendmail.mc

[root@mail mail]# vim access

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

[root@mail mail]# service sendmail restart
[root@mail mail]# chkconfig sendmail on
搭建dovecot服务器(邮件接收服务器):
[root@mail Server]# vim /etc/yum.repos.d/rhel-debuginfo.repo #编辑本地yum
[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
测试:使用windows xp主机自带的outlook express工具查看本地邮件服务器(sina.com)是否可用:(本地的user3用户向user4发送邮件)
xp主机的ip参数

点击:开始——》程序——》outlook express
使用同样的方法创建user4,这里不再创建








user3给user4发送邮件:



user4向user3发送邮件:



测试成功!!!
现在测试163.com邮件服务器和sina.com邮件服务器能否进行邮件的转发:
配置windows server 2003作为163.com域的主机,xp主机作为sina.com域的主机
server 2003主机的ip参数:

xp 主机的ip参数:

在windows server 2003上向xp发送邮件:

在xp主机上查看邮件接收情况:

在xp主机上向server 2003主机发送邮件:

在server 2003上查看邮件接收情况:
测试成功!!!!!!
附:
上个案例中两台邮件服务器是处于同一网段中,一般两台邮件服务器很少处于同一网段中。如果要模拟两个不在同一网段中的邮件服务器(假设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