1.电子邮件服务简介:
Sendmail是UNIX/Linux环境中稳定性较好的一款邮件服务器软件,通过对Sendmail服务器的配置可以实现基本的邮件转发功能;dovecot服务器实现了POP3协议,可以与Sendmail服务器配合工作,实现用户对邮件的收取功能;OpenWebmail是网页形式的邮件应用系统,可实现用户对邮件的发送、收取和管理功能。通过对Sendmail、dovecot和OpenWebmail的综合管理,系统管理员可以构建出功能完善的邮件应用系统。
一个完整的电子邮件系统分为以下3个部分:
(1)邮件用户代理,简称MUA,其主要功能就是帮助用户发送和收取电子邮件。目前常用的Outlook,
Outlook Express,Foxmail,Thunderbird。
(2)邮件传送代理。简称MTA。用来监控以及传送电子邮件。基于linxu下的一般有sendmail,Qmail, Postfix。
(3)电子邮件协议。电子邮件客户端和服务器的种类繁多,他们之间的电子邮件协议包括以下几种:
1)SMTP。即简单邮件传输协议。他为用户提供高效,可靠地邮件传输,监听25号端口。它是一个
请求/响应协议,用于接收用户的邮件请求,并与远端邮件服务器建立smtp连接。
2)POP3。即邮局协议。它使用tcp的110端口。用于电子邮件的接收。目前常用的是POP3.
3)IMAP4。是通过互联网获取信息的一种协议。它同样可以提供像POP那样方便的下载邮件服务 。 IMAP还提供一种摘要浏览功能,让用户可以在阅读完邮件的主题,发件人,大小和到达时间等信息后才能决定是否下载。
4)Webmail。Webmail不是一种协议,而是一种专门针对邮件程序被安装在服务器上的WEB支持插件,让用户可以直接通过浏览器查收,阅读和发送邮件。
2.关于sendmail,我们来认识几个人间和必须要安装的包:
在red hat Enterprise Linux 5中,默认已经安装并且可以启动sendmail。
sendmail的配置文件:sendmail的配置文件都放在/etc/mail目录下。
1)/etc/mail/sendmail.cf ,这是sendmail的主配置文件,所有sendmail的配置都保存在这个文件中,不过,这个文件的语法复杂,建议通过修改其他文件参数来由程序生成该主配置文件。
2)/etc/mail/sendmail.mc ,这个文件与sendmail.cf中的内容完全一样,但却拥有比较简单的语法。可以通过程序M4将其转化为sendmail.cf 。
3)/etc/mail/access.db ,访问数据库,用来定义允许访问本地邮件服务器的主机ip地址,以及访问的类型
4)/etc/mail/aliases.db ,即别名数据库,用来定义用户别名。
5)/etc/mail/local-host-names ,该文件用于指定本地接收邮件的域。
需要安装的包:sendmail-cf m4
3.下面就sendmail来举一个案例:有一个位于北京的邮件系统,域名为bj.com ,ip地192.168.5.100,
一个位于上海的邮件系统,域名为sh.com ,ip地址为192.168.5.101,北京有两个用户 user1 和user2 ,域名分别为[email protected] [email protected],上海有两个用户 user3 和user4,域名分别为
[email protected] [email protected],现在要通过加密和认证来实现双方用户的邮件通信。
4.实验步骤:
(1)编辑access文件
[root@localhost Server]# cd /etc/mail
[root@localhost mail]# vim access
将sendmail服务重新启动一下:
service sendmail start
编辑local-host-names 文件,填写负责的区域:
[root@localhost mail]# vim local-host-names
(2)既然牵扯到域,少不了dns服务器的配置:
下面是北京地区dns服务器的配置:
配置之前安装以下包:rpm -ivh bind-9.3.6-4.P1.el5.i386.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
[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
15行 any 27行 any 28行 any 37行 any 38行 any
[root@localhost etc]# vim named.rfc1912.zones #修改区域声明文件
[root@localhost etc]# cd /var/named/chroot/var/named
[root@localhost named]# cp -p localhost.zone bj.com.db
[root@localhost named]# vim bj.com.db
[root@localhost named]# chkconfig named on
[root@localhost named]# service named start
[root@localhost named]# vim /etc/resolv.conf
修改地区名称:
[root@localhost named]# vim /etc/sysconfig/network
hosts文件里的信息也得改:
[root@localhost named]# vim /etc/hosts
[root@localhost named]# init 6 #重新启动
启动完成后确认这几种服务是否开启:
[root@mail ~]# service named status
[root@mail ~]# service sendmail status
建立两个用户user1 user2
[root@mail ~]# echo "123" |passwd --stdin user1
[root@mail ~]# echo "123" |passwd --stdin user2
现在先来测试北京本地用户是否能收发邮件。
至此说明了用户user1接到了自己给自己发送的邮件。
(3)接下来安装接收服务器:
首先我们来安装dovecot包:
[root@mail ~]# yum install -y dovecot
[root@mail ~]# chkconfig dovecot on
[root@mail ~]# service dovecot start #启动dovecot服务
现在我们使用user1给user2发送邮件:
说明user1已经成功将邮件发送给user2.
做到这里,说明北京本地的两个用户已经可以相互发送邮件和接收邮件,那接下的任务就是让北京用户和上海用户可以互相收发邮件。
建立上海邮件服务器的步骤跟北京基本上是一样的,在这里步骤就省略了。
因为私有域名的原因,上海和北京两个地区要满足互相收发邮件,必须开启转发功能:
[root@mail ~]# vim /var/named/chroot/etc/named.conf
同样,上海地区的也一样要改,并且转发的地址为192.168.5.100.
[root@mail ~]# rndc reload
下面我们来测试上海用户user3给北京用户user1发送邮件的结果:
说明上海的user3用户已经成功的将邮件发送给了北京的user1用户,实现了两地用户之间的通信。
(4)为了保证邮件收发的安全性,下面我们队邮件系统的收发进行加密:
启用加密设置:
[root@mail ~]# cd /etc/pki/
[root@mail pki]# cd tls/
[root@mail tls]# vim openssl.cnf
CA证书:
[root@mail pki]# cd CA/
[root@mail CA]# mkdir crl
[root@mail CA]# mkdir certs
[root@mail CA]# mkdir newcerts
[root@mail CA]# touch index.txt serial
[root@mail CA]# echo "01" >serial
[root@mail CA]# openssl genrsa 1024 >private/cakey.pem
[root@mail CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
[root@mail CA]# chmod 600 private/cakey.pem #修改钥匙权限
给sendmail颁发一个证书:
[root@mail CA]# mkdir /etc/mail/certs
[root@mail CA]# cd /etc/mail/certs/
[root@mail certs]# openssl genrsa 1024 >sendmail.key
[root@mail certs]# openssl req -new -key sendmail.key -out sendmail.csr
[root@mail certs]# openssl ca -in sendmail.key -out sendmail.cert
[root@mail certs]# cp /etc/pki/CA/cacert.pem .
[root@mail certs]# cd /etc/mail
[root@mail mail]# vim sendmail.mc
启动134行。
[root@mail mail]# cd certs/
[root@mail certs]# chmod 600 * #修改权限
为了验证TLS是否启动,我们做以下操作:
说明tls已经开启。
(5)下面为接收服务器颁发认证:
[root@mail mail]# mkdir -pv /etc/dovecot/certs
[root@mail mail]# cd /etc/dovecot/certs/
[root@mail certs]# openssl genrsa 1024 >dovecot.key
[root@mail certs]# openssl req -new -key dovecot.key -out dovecot.csr
[root@mail certs]# openssl ca -in dovecot.csr -out dovecot.cert
[root@mail certs]# chmod 600 *
[root@mail certs]# vim /etc/dovecot.conf
[root@mail certs]# service dovecot restart
下面是测试:
我们先走110端口的pop3.
安装抓包工具:wireshark
[root@mail ~]# tshark -ni eth0 -R "tcp.dstport eq 110"
从这里可以看出输入的信息被抓获,非常不安全。
下面我们走993的加密端口,看看会有什么结果:
[root@mail ~]# tshark -ni eth0 -R "tcp.dstport eq 993"
从这里可以看出所输入的信息被SSL加密,保证了安全性。
下面我们也得让客户端接收邮件的时候走的是加密端口。
说明接收邮件也是通过加密来接收的。
上海地区的做法跟北京一样,在这里就不做说明了。