sendmail简介:
sendmail是最重要的邮件传输代理程序。理解电子邮件的工作模式是非常重要的。一般情况下,我们把电子邮件程序分解成用户代理,传输代理和投递代理。 用户代理用来接受用户的指令,将用户的信件传送至信件传输代理,如:outlook express、foxmail等。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱,如:procmail。
sendmail工作原理:
电子邮件系统的相关术语:
mua 邮件用户代理
Msa:邮件提交代理
Mta:邮件传输代理
Mda:邮件投递代理
Maa:邮件访问代理
电子邮件系统的相关协议:
SMTP
– Simple Mail Transfer Protocol-简单邮件传输协议
– 用于发送和接收邮件
– 端口号25
POP3
– Post Office Protocol v3-邮局协议版本3
– 用于客户端接收邮件
– 端口号110
Imap
网际消息访问协议4,提供邮件下载服务。支持pop所有功能。
Sendmail的安装 :
Sendmail相关的软件包
–sendmail
Sendmail服务器程序的安装包
–m4
包括了配置Sendmail服务器的必要工具
–sendmail-cf
包括了重新配置Sendmail服务器的必要配置文件
–sendmail-doc
包括了sendmail服务器的说明文档
Sendmail主要配置文件:
配置目录:
–Sendmail的所有配置文件都保存在配置目录中
/etc/mail
配置文件:
–sendmail.cf
Sendmail服务器的主配置文件,手工配置难度很大
/etc/mail/sendmail.cf
–sendmail.mc
修改sendmail.mc文件后,通过m4命令可生成新的sendmail.cf配置文件
# m4 sendmail.mc > sendmail.cf
配置Sendmail的一般步骤:
–修改sendmail.mc文件中的设置内容
–使用m4命令生成新的sendmail.cf文件
–重新启动sendmail服务器程序,使新的配置生效
数据库文件:
–数据库文件的后缀是“.db”
/etc/mail/access.db
–数据库文件辅助进行sendmail服务器的配置
–数据库文件是通过makemap文件生成的
# makemap hash access.db <access
邮件服务器的安全性(一):
对邮件发送和接收进行加密实现邮件安全性:
输出服务详细信息:
[root@mail ~]# sendmail -d0.1 –bv
[root@mail ~]# telnet 127.0.0.1 25
创建邮件验证密匙:
[root@mail ~]# cd /etc/pki/
[root@mail pki]# vim tls/openssl.cnf
创建相关文件夹:
[root@mail pki]# cd CA/
[root@mail CA]# mkdir crl certs newcerts
[root@mail CA]# touch serial index.txt
[root@mail CA]# echo "01" >serial
证书的创建与签发:
[root@mail CA]# openssl genrsa 1024 >private/cakey.pem
[root@mail CA]# chmod 600 private/*
[root@mail CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
[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.csr -out sendmail.cert
[root@mail certs]# cp /etc/pki/CA/cacert.pem .
修改sendmail配置文件:
[root@mail certs]# cd ..
[root@mail mail]# vim sendmail.mc
[root@mail mail]# service sendmail restart
[root@mail mail]# cd certs/
[root@mail certs]# chmod 600 *
[root@mail certs]# service sendmail restart
抓包工具的安装与使用:
[root@mail certs]# mount /dev/cdrom /mnt/cdrom/
[root@mail certs]# cd /mnt/cdrom/Server/
[root@mail Server]# yum install –y wareshark
抓去eth0网卡的110端口信息:
[root@mail Server]# tshark -ni eth0 -R "tcp.dstport eq 110"
外部主机用户user1的创建:
用户user1,创建并向user1发送邮件:
抓包结果:(能够抓取用户信息,不安全)
实现邮件安全性配置:
dovecot证书的创建与签发:
[root@mail ~]# mkdir -pv /etc/dovecot/certs
[root@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 *
修改dovecot配置文件:
[root@mail certs]# vim /etc/dovecot.conf
监听端口:
[root@mail certs]# netstat -tupln |grep dov
修改配置信息,启用imaps:
[root@mail certs]# vim /etc/dovecot.conf
[root@mail certs]# service dovecot restart
[root@mail certs]# netstat -tupln |grep dov
外部主机用户测试:
抓包结果:(CA证书颁发后,已经无法抓去用户信息,从而保证了用户信息安全)
外部主机邮件服务器通过993端口测试:
抓取eth0的993端口信息:
[root@mail Server]# tshark -ni eth0 -R "tcp.dstport eq 993"
用户user1的配置信息:
启用imaps协议:
证书的验证过程:
993端口抓包结果:(没有抓取到用户信息,所有的都经过tls加密)
邮件服务器的安全性(二):
通过对用户的认证来实现邮件安全性:
搜索与验证有关的软件包信息:
[root@mail ~]# rpm -qa |grep sasl
[root@mail ~]# cd /mnt/cdrom/Server/
[root@mail Server]# ll |grep sasl
端口状态查看:
[root@mail Server]# chkconfig --list |grep sasl
[root@mail Server]# service saslauthd start
[root@mail Server]# chkconfig saslauthd on
设置验证方法配置文件:
[root@mail Server]# vim /usr/lib/sasl2/Sendmail.conf
修改sendmail配置信息:
[root@mail Server]# vim /etc/mail/sendmail.mc
[root@mail Server]# service sendmail restart
通过本地telnet查看认证:
[root@mail Server]# telnet 127.0.0.1 25
多出一种验证方式:
mail from要求用户验证:
外部主机合法用户user1测试:
创建和发送邮件:
能够顺利发送邮件:
外部主机非法用户user10测试:
user10配置信息:
创建并发送邮件:
不能够顺利发送邮件要求用户名和密码: