一.电子邮件服务简介:
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支持插件,让用户可以直接通过浏览器查收,阅读和发送邮件。
二.关于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
三.下面就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],现在要通过加密和认证来实现双方用户的邮件通信。
实验步骤
1.编辑access文件
2.启动sendmail服务,
编辑local-host-names文件
[root@localhost mail]# vim local-host-names
3.配置北京地区的dns服务器(需要安装下面的包)
[root@localhost etc]#vim named.conf
编辑区域声明文件,修改如下
[root@localhost etc]# vim named.rfc1912.zones
查看端口开启
[root@localhost etc]# vim /etc/resolv.conf
修改地区名称
[root@localhost named]# vim /etc/sysconfig/network
[root@localhost named]# vim /etc/hosts
重新启动linux系统
[root@localhost named]# init 6
查看服务是否开启
4.在家目录下创建两个用户user1,user2,密码为“123”
安装dovecot并重启服务
[root@localhost ~]# yum install -y dovecot
[root@localhost mail]# vim sendmail.cf
修改为这样的一行
测试北京本地用户是否能收发邮件
5.使用Outlook Oxpress工具测试邮件的发送 创建用户user1
点击“完成”
创建邮件
6.安装接收服务器: 首先安装dovecot包:
启动dovecot
创建用户user2,方法步骤跟user1 一样(这里省略)
使用user1给user2 发送邮件
(建立上海邮件服务器同北京)
因为私有域名的原因,上海和北京两个地区要满足互相收发邮件,必须开启转发功能:
[root@mail ~]vim /var/named/chroot/etc/named.conf
同样,上海地区的也一样要改,并且转发的地址为192.168.2.10
[root@mail ~]# rndc reload
测试上海用户user3给北京用户user1发送邮件的结果:
说明上海的user3用户已经成功的将邮件发送给了北京的user1用户,实现了两地用户之间的通信。
为了保证邮件收发的安全性,下面我们对邮件系统的收发进行加密:
启用加密设置:
[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
[root@mail mail]# cd certs/
[root@mail certs]# chmod 600 *
查看ssl是否启动
[root@mail mail]# telnet 127.0.0.1 25
为接收服务器颁发认证:
[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/devecot.conf
[root@mail certs]# service dovecot restart
7.测试:使用110端口的pop3进行测试
首先安装抓包工具:wireshark
[root@mail ~]# tshark -ni eth0 -R "tcp.dstport eq 110"
从这里可以看出输入的信息被抓获,非常不安全。
使用993端口进行测试
[root@mail ~]# tshark -ni eth0 -R "tcp.dstport eq 993"
客户端使用加密端口接收邮件
至此实验完成,如有不对,多谢批评指正!