小编:看到这个标题,也许会让我们有对于SendMail怀有一种期待吧!其实小编刚接触到SendMail时,感觉它就是一个非常古老的邮件系统,现在虽然还有不少企业在用,但是早已光环不再了。取而代之更多使用的是更加易于理解和应用Postfix和基于Postfix开发出来的ExtMail.这也不免让我们对于这样一个曾经的帝王有那么一种怀念和崇敬,古老但不古板的它,是曾经的邮件系统的领袖,每一个领袖的出现,必然是一场革命性的历史事件,必然会有一段传奇的经历吧.今天小编带领大家一起回味这曾经的传奇经历,一起来感受SendMail的古老与神奇吧!
友情提示:过程可能比较痛苦,但最后会感受到云开雾散!!!!!
电子邮件系统概述
一>电子邮件特点:相对于传统的书信方式,电子邮件更加的快捷、安全而且具有多样性的发展趋势,支持mime(多用途邮件扩展)协议.
二>电子邮件的常用术语分析:
基于协议
【发送协议】
SMTP(简单邮件传输协议),是以明文方式传输,没有身份认证能力,监听在TCP的25端口.
【接收协议】
①POP2/POP3:pop2监听在TCP109端口,pop3监听在TCP110端口,都是明文
②IMAP4:监听在tcp的143端口,也是明文传递.
区别:基于POP2/POP3接收协议的客户端,是将邮件下载到本地磁盘上;基于IMAP接受协议的客户端,是在线接收邮件的.这也直接导致了POP2/POP3协议的应用不具有很好的迁移性.
基于服务器的角色
【MTA】邮件的传输代理
Linux平台:
Sendmail 特点:无身份验证能力、不能防垃圾、不能防病毒
Postfix 特点:
①免费
②更快(性能是SendMail的3倍,给天可以收发上百万封邮件.)
③兼容性好.Postfix是是基于SendMail开发的,完全兼容SendMail,从而使SendMail的用户可以方便的迁移到Postfix.
④更健壮.(当系统运行超出负载内存或磁盘空间时,Postfix会自动减少运行进程的数目,当处理邮件数目处于递增趋势时,会自动增加进程数.)
⑤更灵活(Postfix是由很多程序模块组成,给个程序完成特定的功能)
⑥安全性(Postfix巨有多层防御结构,有效地抵御入侵)
Extmail 特点:
支持Maildir,索引技术,速度超快 支持多国语言同屏显示,真正国际邮,支持巨型邮箱(超过1GB)海量文件,支持无限尺寸附件,I/O能力强,模板化,多语言,修改非常容易。
Windows平台:
电子邮件服务(发送服务)
特点:Server2008版本以前,提供接受和发送邮件的服务;Server2008版本之后,只提供发送而不再提供接受服务,原因很简单,因为Windows需要主推另一个非常强大的服务器Exchange Server,2003版以前应用基本还可以,但2007版以后需要依赖于Windows域环境,这使得它的发展在中小型企业中遇到了瓶颈,个人感觉更大的问题在于它的搭建安装,基本没有1-2小时搞不定,这给它的发展带来了严重的问题.
【MRA】邮件的接受代理
Windows平台:电子邮件服务(接收服务)
Linux平台:Dovecot 支持pop3、imap4、pop3s、imaps协议.
【MDA】邮件的转发代理
Linux平台:MailDrop、ProcMail
【MUA】邮件的用户代理
Windows平台:OutLook Foxmail
Linux平台:
①字符终端界面:Mutt、Mail
②Web管理界面:Evolution、ThunderBird(雷鸟)
三>电子邮件的安全性分析:
基于协议:因为电子邮件传输时,无论时无论是发送送的SMTP协议,还是接收时的POP2/POP3协议,都是以明文方式传递的。所以为了邮件的安全,必要要结合SSL(安全套接层),就形成了加密的发送协议SMTPS和加密的接收协议POP3S、IMAPS,但这些加密过程都属于点到点的加密过程,这导致传输的每个环节都需要进行加密.还有一种比较好的方式就是基于端到端的加密过程,如:s/mime(多用途邮件扩展),基于Windows平台,有一种加密软件:PGP;基于Linux操作系统,有一种开源的端到端加密软件:GPG(开源的PGP).
基于地址: 当邮件需要进行中继时,可以基于地址进行有选择的进行中继,以前的邮件系统都是提供中继服务的,但由于垃圾邮件的问题,最后大多数的邮件服务器默认都是不提供中继服务的,只对特定的用户或符合特定规则的用户群体(或域)提供中继服务,不过都是需要进行验证的.(SendMail邮件服务器默认的中继文件存放目录在/etc/mail/access)
问题:这会导致当用户离开特定环境(离职等)时,会导致文件的反复修改,更大的问题是,管理起来相当的困难,因为当前的网络环境中的地址一般都是动态变化的.
基于账号:结合SAAL(简单认证安全层)协议.
Linux操作系统(Red Hat)上提供了相应认证服务软件cyrus-sasl,安装后会形成一个服务程序:saslauthd.
四>防垃圾邮件
SendMail是不具有防垃圾功能的,所以需要结合第三方的软件才可以具有反垃圾能力,例如ASF软件基金会开发的SpamAssian.
五>防病毒分析
SendMail同样也不具有防病毒功能的,所以也需要结合第三方的软件才可以具有防病毒的能力,例如Clamav
注;无论是防垃圾还是防病毒,就算安装了第三方的软件后,SendMail默认也是不会调用的,所以需要第三方的协助:邮件的呼叫器(Caller),比较常用的邮件呼叫器有①Mimedefang②Mailscanner等等.
好了,邮件服务器的基础就先介绍到这吧。
下面我们来详细介绍一下SendMail的配置过程和使用详解!(这也这不过是SendMail的冰山一角!)并结合相关的案例来实现SendMail的应用分析,在接下来的博客中会继续给大家介绍Postfix、ExtMail的具体应用,敬请关注哦!!!!!!
【SendMail的配置与应用详解】
操作平台:Linux Red Hat 5.4
目录结构:SendMail在Red Hat系统上默认是已经安装过的,因为有些监听程序在系统出现问题和系统日常轮训检测结果会通过邮件发送到管理员邮箱,所以默认情况SendMail已经装过了.安装形成的目录位于/etc/mail/,如下图:
说明:
①SendMail的主配置文件是sendmail.cf,是个二级制文件,修改比较麻烦,所以一般通过修改另一个sendmail.mc文件来对SendMail进行配置,然后通过工具将配置在装成二进制文件sendmail.cf,这个工具在Red Hat光盘上已经有了,叫做sendmail-cf,安装后直接修改配置文件,它会自动将修改后的.mc文件转成.cf的二进制文件.
②SendMail的中继主配置文件是access.db,也是个二进制文件修改也是通过修改另外的access文件,然后通过工具将access文件转成access.db文件,这个工具默认在系统已经装过了,叫做m4.
③SendMail的服务器角色文件local-host-names,可以直接进行配置修改.
案例拓扑:
案例说明:
①由于SendMail只是一个发送服务器程序,为了案例的测试与分析,我们需要接收的服务器程序,在Red Hat上自带有比较好的邮件接收服务器:Dovecot我们也需要进行安装和配置,
②由于发送和接受过程都需要进行地址的解析过程,所以DNS服务器也是需要搭建和配置的.
③为了详细俩接SendMail的工作过程,我们将会用两台Linux虚拟机,分别负责不同区域的邮件的接收以及转发,区域1(163.com),区域2(sina.com)
④地址分配 区域一:192.168.145.100 ;区域二:192.168.145.200
⑤为了节省资源,本次实验,我们将把个Linux系统上都承载3台服务器(邮件服务器【发送smtp、接收dovecot】、DNS服务器、认证服务器【身份验证】)
环境搭建(以163区域为例,sina区域配请参照163区域)
1.Linux系统上分别创建邮件服务器的合法用户(下面测试使用)
①负责163区域的Linux系统
useradd user1
echo “123456” | passwd --stdin user1
useradd user2
echo “123456” | passwd --stdin user2
②负责sina区域的Linux系统
useradd user3
echo “123456” | passwd --stdin user3
useradd user4
echo “123456” | passwd --stdin user4
2.服务器环境
邮件服务器
①发送服务器【SendMail的配置、启动】
Step1:安装所需要的工具包(sendmail-cf).
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom/Server
rpm -ivh sendmail-cf-8.13.8-2.e15.i386.rpm
Step2:编辑sendmail的主配置文件sendmai.mc,将监听端口改为0.0.0.0
Step3:编辑sendmail的角色声明文件local-host-names.
重启服务
service sendmail restart
查询端口状态(默认监听在本机127.0.0.1:25,修改后监听在0.0.0.0:25)
Step4:修改服务器的主机名.
vim /etc/sysconfig/network
vim /etc/hosts
这样修改后,需要重启后才能生效,还可以先临时设定下主机名,不需重启.
②接收服务器【Dovecot的安装、启动】
rpm -ivh perl-DBI-1.52-2.el5.i386.rpm
rpm -ivh mysql-5.0.77-3.el5.i386.rpm
rpm -ivh dovecot-1.0.7-7.el5.i386.rpm
service dovecot start (默认配置会将四个监听端口都启动)
chkconfig dovecot on
DNS服务器
①安装DNS服务所需的安装包.
rpm -ivh bind-9.3.6-4.P1.el5.rpm
rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm
rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm
cd /var/named/chroot/etc/
②拷贝生成DNS的主配置文件.
cp -pv named.caching-nameserver.conf named.conf
③配置DNS服务的主配置文件.
④配置DNS服务的区域管理文件,添加新的域(163.com)
④拷贝生成区域文件163.com.zone
cd /var/named/chroot/var/named/
cp -pv localhost.zone 163.com.zone
vim 163.com.zone
⑤启动DNS服务.
service named start
chkconfig named on
⑥DNS解析测试
163地区:
sina地区:
认证服务器cyrus-sasl
①查询系统是否已经安装了该认证服务器的相关软件包.
②启动认证服务器.
service saslauthd start
chkconfig saslauthd on
3.测试主机PC
两台Window xp虚拟机.
(一台作为163区域的邮件客户端,另一台作为sina区域的邮件客户端)
邮件客户端使用的软件:Outlook
下面是新建mail用户的过程(以163区域user1为例,请注意过程!!!!)
好了,目前为止我们测试环境就搭建完成了,下面开始我们今天的SendMail应用案例的配置详述。。。。。。。。(分为不同的阶段实施)
实验目的:由于SendMail的自身特点,使得SendMail必须结合相关的软件(开源、第三方),才能实现身份验证、防垃圾邮件、防病毒的能力.本次实验最终只简单实现了SendMail的身份验证、防垃圾,至于防病毒,有兴趣的博友可以去下载一些开源的软件或者结合第三方软件来实现.
阶段一:实现不同区域间的邮件中继.
为什么要进行中继:由于邮件系统在企业网中的应用非常之广泛,不仅需要在局域网内部进行邮件的接收和转发,当需要进行邮件的对外转发时,就不得不用到中继的概念,当给邮件服务器配置中继后,就能实现不同区域用户之间的邮件的传递.
具体配置:
Step1:编辑SendMail的中继文件,添加中继记录.
cd /etc/mail/
vim access
①163区域
service sendmail restart
②sina区域
service sendmail restart
Step2:修改DNS服务器主配置文档named.conf
说明:由于mail.163.com和mail.sina.com进行邮件中继时,在进行域名解析,由于给个区域都有自己的DNS服务器,所以为了实现不同区域间的邮件传递,有两种方式实现:①进行根提示②开启转发器选项.由于这两个区域都不是根区域,所以在实现时就采用了转发器.
cd /var/named/chroot/etc/
vim named.conf
①163区域
service named restart
②sina区域
service named restart
测试分析:
①同一个区域内的邮件发收测试(163域:user1--->user1).
观察163区域日志,查询发送、接收以及状态信息.
②区域间的邮件发收中继测试.(163域:user1--->sina域:user3)
发送过程(缓慢建立连接而且发送过程很卡顿截图)
观察163区域日志,查询发送、接收、中继以及状态信息.
在sina区域的邮件客户端上进行收取邮件测试,测试中继是否正常.
观察sina区域日志,查询发送、接收以及状态信息.
阶段二:实现邮件中继时的加速.
为什么要对中继进行加速:在上面的中继测试过程中,如果大家去做的话,会发现一个非常奇怪的现象:在进行区域中继时,发送个非常小的邮件会这么慢呢?而同一区域发送却很快速的完成了,没有出现很卡的情况呢?这是由于在进行邮件发送时,要进行DNS地址解析,比如:163区域的邮件在中继到sina地区后,DNS先进行正向解析,将mai.163.com解析成地址192.168.145.100,然后为了进行邮件确认,还要进行反向解析,如果能将192.168.145.100解析成mail.163.com,则会确认邮件确实是163区域的邮件,而我们在sina地区的SendMail的中继配置中添加了163.com区域,这时,sina区域会进行邮件转发,但是我们在两台服务器的DNS上并没有配置反向解析,所以导致在进行反向解析时,时间非常漫长,为了实现快速的邮件中继,所以我们要配置反向解析.
具体配置:
①163区域.
Step1:编辑DNS的区域文件,添加反向区域.
cd /var/named/chroot/etc/
vim named.rfc1912.zones
cd /var/named/chroot/var/named/
cp -pv named.local 192.168.145.local
vim 192.168.145.local
Step2:重新加载配置文件,让新配置生效,然后进行反向解析测试.
②sina区域.
Step1:编辑DNS的区域文件,添加反向区域.
cd /var/named/chroot/etc/
vim named.rfc1912.zones
cd /var/named/chroot/var/named/
cp -pv named.local 192.168.145.local
vim 192.168.145.local
Step2:重新加载配置文件,让新配置生效,然后进行反向解析测试.
测试分析:
①区域间的邮件发收中继加速测试.(163域:user1--->sina域:user3)
发送过程(迅速建立连接并且完成中继过程截图)
在sina区域的邮件客户端上进行收取邮件测试,测试中继加速是否正常.
观察sina区域日志,查询发送、接收以及状态信息.
阶段三:实现邮件的加密传输(以163区域为例,sina区域配置一样)
为什么要进行邮件加密:说永远都没有做来的实在,那么我们通过下面一个非常小的测试来说明邮件传输加密的重要意义.
准备工作:
在sina的服务器上安装Ren Hat光盘自带的抓包工具Wireshark.
rpm -ivh wireshark-1.0.8-1.e15_3.1.i386.rpm
启用抓包.(监听在pop3接收协议的非加密端口110)
在163域内以user1的身份向sina域的user3用户发送邮件.
在sina的邮件客户端上进行接收测试.
查看Wireshark的抓包结果.
抓包结果分析:无论邮件的发送阶段(SMTP)还是接收阶段(pop2/pop3、imap4),都是以的明文方式进行传输的.所以当网络中没有进行端口伪装时,一旦别人知道你的哪些的传输端口是开放的,启用抓包工具,就可以轻而易举的抓取你的服务器的用户名和密码,然后通过此账户进行服务器登录,对服务器的安全性造成威胁,所以传输加密显得尤为重要.
下面我们将对发送阶段和接收阶段分别进行加密,实现点对点的传输安全.
Step1:SMTP加密具体配置【STARTTLS的实现】
①建立证书的办法机构CA的具体步骤.
②生成SendMail服务的证书具体过程.
③修改私钥文件权限,查看目录结构.
④编辑SendMail的主配置文件,将SendMail服务和证书进行捆绑.
service sendmail restart
⑤用Telnet方式进行扩展属性查询,测试SendMail的加密是否正常.
⑥在163区域的邮件客户端软件的用户属性中勾选SSL安全连接选项.
SMTP结合STARTTLS进行加密后的测试分析:
①在163的邮件客户端上向以user1的身份向sina的user3发送邮件测试.
②由于发送过程要求加密传输,服务器会端会出示自己的证书文件.
③在sina的邮件客户端上以user3的身份接收邮件.
④在163的服务器监控日志,查看日志信息.
⑤在163的服务器上安装Wireshark抓包工具,然后启用抓包.
Step2:POP3加密具体配置【POP3S】
①生成Dovecot接受服务的证书具体过程.
②修改私钥文件权限,查看目录结构.
③修改Dovecot的配置文件,将证书和服务进行绑定后,重启服务.
④在163区域的邮件客户端软件的用户属性中勾选接收SSL安全连接选项.
POP3加密后的测试分析:
①在163的邮件客户端上向以user1的身份向自己发送邮件进行接收加密测试.
②由于接收过程要求加密传输,Dovecot服务器会会出示自己的证书文件.
③发送成功后,查看邮件内容.
⑤在163的服务器上启用抓包【监听在pop3s接收协议的加密端口995】.
Step3:IMAP4加密具体配置【IMAPS】
①编辑163区域的DNS区域文件,添加imap的MX记录.
servcie named restart
②生成接收服务器Dovecot基于imap协议的证书文件.
③修改私钥文件的权限,查看目录结构.
④编辑dovecot的配置文件,将服务与证书进行绑定.
servcie dovecot restart
IMAP加密后的测试分析:
①在163区域的邮件客户端上新建mail用户user2.
②user2接收邮件时使用的接受服务器选择为IMAP.
③user2的密码是我们在系统建账号时给定的密码123456.
④设定user2用户的属性,勾选SSL选项.
⑤以user1的身份给user2发送邮件,进行imap加密测试.
⑥user2在接受user1发来的邮件时,服务器端出示了自己的证书文件.
⑦接收邮件成功,擦看邮件内容.
阶段四:实现邮件发送时的用户认证.
为什么要进行身份认证:我们每个人都有自己的邮箱,经常会收到一些垃圾邮件(产品广告等),这让我们非常的反感和厌恶.下面我们做个小小的实验来说明一下垃圾邮件是怎么样出现的,并且了解一下进行邮件的用户认证的重要性.
Step1:Linux平台上没有开启认证前非法用户发送邮件测试.
①Telnet显示当前的配置参数信息,并且以非法用户发送邮件测试.
②切换到user1用户,查看邮件是否被正常发送了.
③查询日志信息,邮件是否被正常发送了.
Step2:Windows平台上没有开启认证前非法用户发送邮件测试.
①新建非法用户4321.
②以4321用户的身份向user1发送垃圾邮件测试.
③查看垃圾邮件是否被正常发送了.
④查看日志,查询邮件的发送状态.
具体配置:
修改SendMail的主配置文档,添加认证选项,并进行强制认证.
测试分析:
Step1:重启服务,Telnet测试配置的参数,查询认证机制生效了没.
Step2:Linux平台再次用非法账号123456进行垃圾邮件发送测试.
Step3:字符终端下认证过程中的用户名和密码信息需要进行base64编码.
Step4:Windows平台再次用非法账号4321进行垃圾邮件发送测试.
因为是非法账号,提示认证被拒绝.
Step5:如果都是合法的用户呢?User1给user2发邮件测试.
也同样被拒绝了.什么原因呢?还记得Linux字符终端下,合法用户发邮件时,是不是有一个base64编码的认证过程呢?在Windows上我们只要在配置中勾选就行了,计算和认证都在后台做了.
Step6:在用户的属性高级选项中结合SSL.
Step7:在用户的属性服务器选项中勾选服务器身份验证选项.
Step8:再次进行发送测试,成功了!!!!!
经过两天的不停奋战,终于把这篇博客给写完了.
不知道你们看的累不累呢?反正我已经精疲力竭了,不过还是很开心的,因为把整个SendMail系统简单的复习了一遍,收获还是挺多的,更重要的是可以把它分享个大家.
如果大家感觉小编写的不错的话,记得帮忙转载啊,把这份收获传递下去,如果有什么宝贵建议,希望广大博友留言讨论哦!!!!!!!!!!!