电子邮件服务器及SMTP、POP3、IMAP协议拓扑说明:三台机器,PC1是一台DNS服务器(192.168.126.139,server.sc.cmp,fedora系统),同时配置发送邮件服务(SMTP);PC2是一台邮件服务器(192.168.126.140,mail.sc.cmp,fedora系统),配置发送及接受邮件的服务(SMTP、POP3、IMAP);PC3是客户端(XP系统/win7)。说明:本次实验仅基于IPv4协议进行,有兴趣的同学可以尝试在IPv6上进行,配置方式类似。一、电子邮件服务器配置首先,在PC1上配置好DNS服务(请看DNS服务配置实验)。1、安装软件在PC1上安装sendmail和sendmail-cf,在PC2上安装sendmail、sendmail-cf和dovecot,使用yum命令安装:在PC1(DNS服务器)上的截图:在PC2(电子邮件服务器)上的截图:2、sendmail配置(PC1和PC2上都要配置,这里只介绍PC1上的配置,PC2操作方法一样)打开文件夹/etc/mail重点关注红色框里的四个文件:access、access.db、sendmail.cf、sendmail.mc在PC1上的配置如下(PC2同样配置):(1)打开文件sendmail.mc,:Addr中,127.0.0.1表示只监听本机的25端口,不监听其他任何机器的。要是不同服务器间能通过SMTP服务通讯,必须去掉回环地址127.0.0.1,否则将无法接收来自其他机器的邮件。将红色框中的IP地址127.0.0.1改为0.0.0.0;保存修改。(2)打开文件access:按红色框所示添加PC2、PC3所在子网(PC2的配置中添加PC1、PC3所在子网),也可不添加子网,直接添加IP地址。保存修改。(3)编译文件,将access中的信息写入access.db,将sendmail.mc中的信息写入sendmail.cf中:(4)修改域名在图形界面下点击“系统-管理-网络”,在网络控制面板下选择DNS,修改域名:修改后保存配置,并重启网络服务(点击右上脚的连接,或者在终端里用ifconfig命令)(5)启动服务(6)服务验证在PC1和PC2上配置好,并启动服务后,可通过如下方法验证:1)在PC1上往PC2发邮件(用mail命令,后面直接加上收件人地址):说明:Subject后是邮件正文,以“.”结束。在PC2上检查邮件接收情况:输入序号可以查看邮件全文:在PC2上同样可以向PC1上的用户发邮件,这里就不详细列出了。注意事项:1、可以使用机器原有用户发邮件(root用户、机房机器的user2用户等),同样也可以自己新建用户发送邮件(新建用户方法请看实验教材P264)。2、接收到的邮件存放在目录/var/spool/mail下,文件名为用户名。但mail命令不能保证能查看所有用户接收到的邮件。当通过mail命令无法查看邮件时,可直接打开/var/spool/mail下对应的文件查看。3、有时候,用mail命令发了邮件但没有接收到,不见得就是配置错误,有可能是因为机器速度慢,或者转发速度慢,或者存储空间不足没显示接收邮件。存在邮件服务器过了很久才收到之前发的邮件的情况(延迟半小时也是可能的,至少我在电脑开了三台虚拟机后,出现过这样的情况。)3、dovecot配置dovecot的配置相对简单,只需要修改一个地方,但非常关键。打开文件/etc/dovecot.conf:像红色框那样,加上邮箱在电子邮件服务器中的地址。请注意,最后的“%u”表示的是用户名。保存文件。关闭防火墙:关闭防火墙的目的,是为了打开pop3端口,使得PC2能够接收来自其他机器的邮件。实际上,关闭防火墙是非常简便而且暴力的行为。可以不关闭整个防火墙服务,只开启POP3端口的服务,在图形界面下打开防火墙:点击“添加”可以选择你要添加的端口(可以是不可修改的0-1023之间的,也可以是自由分配的端口)。也可以通过命令行在防火墙开启POP3服务,有兴趣的同学可以上网查相关命令。启动服务:netstat–a|grep用于检查端口的开启状况。在PC3上验证服务:首先在PC3上将DNS服务器地址设置为192.168.126.139(PC1的地址)。打开Outlook并设置一个新账户:请记住,要设置的是PC2上的用户。接收和发送邮件服务器填PC2的域名。服务器选择POP3服务。账户名与密码要与电子邮件服务器中的用户名密码一致。完成设置后,在Outlook上发一封邮件给PC1:发送邮件后,在PC1上用mail命令检查是否收到邮件:SMTP服务验证成功,Outlook上配置的SMTP服务器能正常运行。在PC1上用mail命令发邮件给PC2(patience@mail.sc.cmp):发送邮件后,再点击接收:POP3服务验证成功,Outlook上配置的POP3服务器能正常运行。用POP3接收邮件,可以自行设置接收后邮件是否在服务器中保存,有兴趣的同学可以查看dovecot.conf的详细说明并修改相应配置。WIN7上的Outlook设置与XP上的类似。这里就不详细描述了。二、SMTP、POP3协议1、使用客户端程序发送、接收邮件:在PC2上启动Wireshark,并捕捉数据。在PC3上写一封邮件发给自己。观察捕捉到的分组情况(注意要使用POP3服务接收邮件):SMTP协议数据包:可以看到,先在TCP上建立SMTP端口的连接,再通过命令将邮件信息发出去。这里SMTP端口的通讯并没有进行验证。有兴趣的同学可以查阅资料,了解如何验证SMTP服务。在观察数据交互的过程中,可以记住以下几个重要的命令:MAILFROM、RCPTTO、DATA、QUIT。命令的详细解析请看实验课本P149。POP3协议数据包:同样,先通过TCP建立POP3端口的连接,再进行通讯。与SMTP不同,POP3需要验证用户名。观察数据交互的过程中,可以记住几个重要命令的用法:USER、PASS、STAT、LIST、RETR、DELE、QUIT。详细说明请看实验课本P150。2、通过TELNET使用SMTP发送邮件在Windows命令行模式下或Linux的终端下用TELNET方式登录SMTP服务器的25端口(SMTP服务的知名端口),登录命令为:telnetmail.sc.cmp25登录之后的过程如下:3、通过TELNET使用POP3接收邮件:与登录SMTP服务的命令类似,登录命令为:telnetmail.sc.cmp110交互过程如下:可以尝试其他的POP3基本命令,详见实验课本P150。