LINUX-sendmail

本文详细介绍了邮件系统的安全性和加密技术,包括SMTP、POP3、IMAP的基本原理及安全挑战,以及如何通过STARTTLS、SMTPS实现邮件传输的安全加密。同时,文章指导读者如何在本地和远程邮件服务器上安装并配置Sendmail、DNS和Dovecot,以确保邮件的正常收发和安全性。此外,还涵盖了邮件服务器认证机制和证书颁发过程,以及如何在邮件传输过程中实现加密和认证。

MAIL 邮件模型
MUA  (message user agent)  邮件用户代理 泛指邮件客户端  常见的如 SENDMAIL、QMAIL、POSTFIX、EXIM等;Windows的Exchange、imail等。 
--从MTA取的信,或者通过POP,IMAP把信发到MTA上
MTA (message transfer agent)  邮件传输代理 就是发送服务器
--监视MUA的请求 ,找出对方的MTA,把信传到对方MTA服务器,或者把信收到邮件队列
MDA (message deliver agent)  转发代理 邮件的投递员 
---把信最终投递到具体的用户
MAA 接收服务器
---dovecot
 
相关协议:
smtp: 简单邮件传输协议(simple   mail transport   protocol) , 发邮件用的协议,明文传输,基于tcp服务的应用层
应用的端口号:TCP 25
基础使用方法:
telnet 127.0.0.1 25      // 如果连接成功,服务器会返回一个表示通信连接成功的 220 应答代码 , 如果 telnet 不到,就察看 25 端口有没有打开。  
helo 127.0.0.1     // 向服务器表识发件人的身份,成功会收到 250 应答代码,这一步可以省略。
mail from :abc@bj.com     //指定发件人,成功就会返回250应答代码.  
rcpt to :yyy@bj.com     // 指定收件人地址 , 成功就会返回 250 应答代码 .  
data     //发送data命令,准备开始传输邮件内容,成功会返回354应答代码,表示准备接收邮件内容,可以在下一行开始输入邮件内容。  
it's test!
      邮件内容写完后回车并输入 . 结束  
quit   结束,退出。
pop3 和imap:收邮件用的协议 明文传输
应用的端口号pop3: TCP 110,imap:TCP 143
lmtp: 本地邮件传输协议

sendmail
是最重要的邮件传输代理程序。理解电子邮件的工作模式是非常重要的。一般情况下,我们把电子邮件程序分解成用户代理,传输代理和投递代理。 用户代理用来接受用户的指令,将用户的信件传送至信件传输代理,如:outlook express、foxmail等。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱,如:procmail。
 
与sendmail相关的软件包:
sendmail  //sendmail服务器程序的安装包,默认已安装
m4  //包括了配置Sendmail服务器的必要工具,默认已安装
sendmail-cf   //包括了重新配置Sendmail服务器的必要配置文件
sendmail-doc  s//endmail服务器说明文档
 
sendmail  中几个比较重要的文件:
sendmail.cf  // 主配置文件,但该文件配置难度很大,一般修改sendmail.mc  然后通过运行m4 sendmail.mc > sendmail.cf 来重新生成
local-host-names  // 设置sendmail 服务器提供邮件服务的域名。
access  // 设置中继的数据库配置文件
/var/log/maillog  //日志文件

案例
不同地方使用sendmail实现mail的收发

 

北京mail服务器配置:
安装sendmail相关软件:
[root@server ~]# chkconfig --list |grep sendmail        sendmail 默认安装
sendmail        0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
[root@server ~]# service sendmail status
sendmail (pid  3715) 正在运行...
[root@server ~]# netstat -tupln |grep sendmail
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      3715/sendmail: ace
[root@server ~]# rpm -qa |grep sendmail
sendmail-8.13.8-2.el5     已经安装
[root@server ~]# rpm -qa |grep m4
m4-1.4.5-3.el5.1     已经安装
 
[root@server ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@server ~]# cd /mnt/cdrom/Server
[root@server Server]# ll sendmail*
-r--r--r-- 278 root root 646627 2007-01-18  sendmail-8.13.8-2.el5.i386.rpm
-r--r--r-- 278 root root 318825 2007-01-18  sendmail-cf-8.13.8-2.el5.i386.rpm
-r--r--r-- 327 root root 131258 2007-01-18  sendmail-devel-8.13.8-2.el5.i386.rpm
-r--r--r-- 278 root root 668921 2007-01-18  sendmail-doc-8.13.8-2.el5.i386.rpm
 
 
[root@server Server]# rpm -ivh sendmail-cf-8.13.8-2.el5.i386.rpm
 
三个文件需要修改:
 
[root@server Server]# cd /etc/mail
[root@server mail]# vim sendmail.mc   配置监听

 

--默认是本机监听25号端口,需要更改才能使非本地用户使用sendmail发送邮件
--Dnl # 是注视文字
--Dnl 是打开可以使用的
--末尾dnl 去除空格
[root@server mail]# service sendmail restart
[root@server mail]# vim access   中继文件

 

-- ok 无条件接受, relay 中继, reject是拒绝

 

[root@server mail]# vim local-host-names   域名比对,表示本地域名

 

安装DNS
[root@server Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm
[root@server Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm
[root@server Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm
 
[root@server Server]# cd /var/named/chroot/etc
[root@server etc]# cp -p named.caching-nameserver.conf named.conf      拷贝模
板文件
[root@server etc]# vim named.conf

 

[root@server etc]# vim named.rfc1912.zones

 

为了避免垃圾邮件 服务器会反复的进行正向和反向的解析,这样会造成速度很慢 所以还需要设置反向解析

 

[root@server etc]# cd /var/named/chroot/var/named
[root@server named]# cp -p localhost.zone bj.com.db      产生数据库
[root@server named]# vim bj.com.db

 

[root@server named]# vim 192.168.101.db

 

[root@server named]# chkconfig named on      设置开机启动
[root@server named]# service named start
 
[root@server named]# vim /etc/resolv.conf       在邮件服务器上做dns指向

 

[root@server named]# hostname     查看自己的主机名
server.li.com
[root@server named]# vim /etc/sysconfig/network      修改自己的主机名,改成dns
可以解析的名字

 

[root@server named]# vim /etc/hosts   修改原来hosts文件里留的信息

 

[root@server named]# init 6  重启系统

 

 

安装接收服务器:
[root@server ~]# yum list all |grep dov       用yum安装,有很强的依赖性
This system is not registered with RHN.
RHN support will be disabled.
dovecot.i386                                1.0.7-7.el5                  rhel-server
[root@server ~]# yum install -y dovecot.i386
[root@server ~]# chkconfig dovecot on      设置开机自动启动
[root@server ~]# service dovecot start
启动   Dovecot Imap                                          [ 确定]
[root@server ~]# netstat -tupln |grep dovecot
tcp          0        0 :::993                        :::*                          LISTEN       5318/dovecot        
tcp            0        0 :::995                        :::*                          LISTEN       5318/dovecot        
tcp          0        0 :::110                        :::*                          LISTEN       5318/dovecot        
tcp          0        0 :::143                          :::*                          LISTEN        5318/
[root@server ~]# grep 995 /etc/services

 

[root@server ~]# grep 993 /etc/services 

 

[root@server ~]# vim /etc/dovecot.conf    只用明文的110和143 两个端口

 

 

上海mail服务器配置:(基本同北京,只需将北京服务器配置克隆过来,做如下修改)

[root@server Server]# cd /etc/mail

[root@server mail]# vim access   中继文件

[root@server Server]# vim /var/named/chroot/etc/name.conf

[root@server Server]# vim /var/named/chroot/etc/name.rfc.zones

 

[root@server etc]# cd /var/named/chroot/var/named
[root@server named]# vim sh.com.db

 

[root@server named]# vim /etc/resolv.conf     //dns指向

[root@server named]# vim /etc/sysconfig/network 

[root@server named]# vim /etc/hosts 

 [root@server named]# init 6  重启系统

 

测试:

 
本地sendmail:


异地sendmail:

 

 sendmail安全(加密和认证)

邮件系统的安全性
(SMTP使用25号端口,POP3使用110号端口,IMAP使用143号端口)
基本的smtp协议没有验证用户身份的能力。虽然信封上的寄件人地址已经隐含了发信者的身份,然而,由于信封地址实在太容易假造,所以不能当成身份凭据。 为了判断客户端是否有权使用转发服务(relay),服务器端必须确认客户端(寄件人)是否当真是对方所自称的那个人。在不能以寄件人地址为身份证书的前 提下,smtp势必需要其他补充机制,才能验证客户端的身份。

 

smtps
1. 465端口  (smtps)  (使用SSL加密的邮件系统,其SMTPS使用465号端口,POP3S使用995号端口,IMAPS使用993号端口)
2. smtp+ssl   (starttls)  实际上在25端口加密.STARTTLS是对纯文本通信协议的扩展。它将纯文本连接升级为加密连接(TLS或SSL),而不是使用一个单独的加密通信端口。

 

# sendmail -d0.1 -bv  输出详细信息 显示版本,支持哪些加密认证
 
认证  sasl 简单认证安全层 点到点的机制。
--减少垃圾邮件的攻击, 避免任何一个用户都可以向外发信
 
 
应用:

 

 

搭建sendmail服务器,以及dns服务器和接收服务器:

安装sendmail相关软件:

[root@server ~]# chkconfig --list |grep sendmail        sendmail 默认安装
sendmail        0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
[root@server ~]# service sendmail status
sendmail (pid  3715) 正在运行...
[root@server ~]# netstat -tupln |grep sendmail
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      3715/sendmail: ace
[root@server ~]# rpm -qa |grep sendmail
sendmail-8.13.8-2.el5     已经安装
[root@server ~]# rpm -qa |grep m4
m4-1.4.5-3.el5.1     已经安装
 
[root@server ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@server ~]# cd /mnt/cdrom/Server
[root@server Server]# ll sendmail*
-r--r--r-- 278 root root 646627 2007-01-18  sendmail-8.13.8-2.el5.i386.rpm
-r--r--r-- 278 root root 318825 2007-01-18  sendmail-cf-8.13.8-2.el5.i386.rpm
-r--r--r-- 327 root root 131258 2007-01-18  sendmail-devel-8.13.8-2.el5.i386.rpm
-r--r--r-- 278 root root 668921 2007-01-18  sendmail-doc-8.13.8-2.el5.i386.rpm
 
 
[root@server Server]# rpm -ivh sendmail-cf-8.13.8-2.el5.i386.rpm
 
三个文件需要修改:
 
[root@server Server]# cd /etc/mail
[root@server mail]# vim sendmail.mc   配置监听

 

[root@server mail]# service sendmail restart
[root@server mail]# vim access   中继文件

 

[root@server mail]# vim local-host-names   域名比对,表示本地域名

 

安装DNS
[root@server Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm
[root@server Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm
[root@server Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm
 
[root@server Server]# cd /var/named/chroot/etc
[root@server etc]# cp -p named.caching-nameserver.conf named.conf   拷贝模
板文件
[root@server etc]# vim named.conf

 

[root@server etc]# vim named.rfc1912.zones

 

 

[root@server etc]# cd /var/named/chroot/var/named
[root@server named]# cp -p localhost.zone bj.com.db      产生数据库
[root@server named]# vim bj.com.db

 

 

[root@server named]# vim 192.168.101.db

[root@server named]# chkconfig named on      设置开机启动
[root@server named]# service named start
 
[root@server named]# vim /etc/resolv.conf       在邮件服务器上做dns指向

 

[root@server named]# vim /etc/sysconfig/network      修改自己的主机名,改成dns 可以解析的名字

 

[root@server named]# vim /etc/hosts   修改原来hosts文件里留的信息

 

[root@server named]# init 6  重启系统

 

 

安装接收服务器:
[root@server ~]# yum list all |grep dov       用yum安装,有很强的依赖性
This system is not registered with RHN.
RHN support will be disabled.
dovecot.i386                                1.0.7-7.el5                  rhel-server
[root@server ~]# yum install -y dovecot.i386
[root@server ~]# chkconfig dovecot on      设置开机自动启动
[root@server ~]# service dovecot start
 
STARTTLS 步骤: 
建立CA
[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 index.txt serial
[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 -key private/cakey.pem -x509 -out cacert.pem -days 3650  产生证书
-----
Country Name (2 letter code) [GB]: CN
State or Province Name (full name) [Berkshire]: BEIJING
Locality Name (eg, city) [Newbury]: BEIJING
Organization Name (eg, company) [My Company Ltd]: SECCENTER
Organizational Unit Name (eg, section) []: TEC
Common Name (eg, your name or your server's hostname) []: rootca.net.net

 

发送的加密:为sendmail颁发证书
[root@mail CA]# cd /etc/mail
[root@mail mail]# mkdir certs  创建一个目录
[root@mail mail]# cd certs
[root@mail certs]# openssl genrsa 1024 >sendmail.key     产生钥匙
[root@mail certs]# openssl req -new -key sendmail.key -out sendmail.csr    请求文件
-----
Country Name (2 letter code) [GB]: CN
State or Province Name (full name) [Berkshire]: HENAN
Locality Name (eg, city) [Newbury]: ZHENGZHOU
Organization Name (eg, company) [My Company Ltd]: ZZDX
Organizational Unit Name (eg, section) []: TEC
Common Name (eg, your name or your server's hostname) []: mail.bj.com
Email Address []:
 
[root@mail certs]# openssl ca -in sendmail.csr -out sendmail.cert   颁发证书
[root@mail certs]# cp /etc/pki/CA/cacert.pem ./   把机构的证书和服务器的证书放在一起
[root@mail certs]# chmod 600 *
[root@mail certs]# cd /etc/mail
[root@mail mail]# vim sendmail.mc

134行打开

[root@mail mail]# telnet 127.0.0.1 25   通过telnet查看 STARTTLS已经启动

 

接收的加密:为接收服务器创建证书
[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
-----
Country Name (2 letter code) [GB]: CN
State or Province Name (full name) [Berkshire]: HENAN
Locality Name (eg, city) [Newbury]: ZHENGZHOU
Organization Name (eg, company) [My Company Ltd]: ZZDX
Organizational Unit Name (eg, section) []: TEC
Common Name (eg, your name or your server's hostname) []: pop3.bj.com
Email Address []:
 
[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
[root@mail certs]# netstat -tupln |grep dovecot
tcp        0      0 :::993                      :::*                        LISTEN      6438/dovecot       
tcp        0      0 :::110                      :::*                        LISTEN      6438/dovecot       
tcp        0      0 :::143                      :::*                        LISTEN      6438/dovecot       
 
 
测试:
 
发送加密:
[root@mail Server]# tail -f /var/log/maillog

 

接收加密:(需要安装抓包工具)
[root@mail ~]# yum list all |grep wir
This system is not registered with RHN.
RHN support will be disabled.
wireless-tools.i386                       1:28-2.el5                 installed 
wireless-tools-devel.i386                 1:28-2.el5                 rhel-server
wireshark.i386                            1.0.8-1.el5_3.1            rhel-server
wireshark-gnome.i386                      1.0.8-1.el5_3.1            rhel-server
[root@mail ~]# yum install wireshark.i386

 

认证步骤:
服务名称saslauthd,默认是没有启用的
要测试是否启用了认证

[root@mail mail]# cd /mnt/cdrom/Server
[root@mail Server]# rpm -qa |grep sasl
cyrus-sasl-lib-2.1.22-5.el5
cyrus-sasl-2.1.22-5.el5      主包
cyrus-sasl-devel-2.1.22-5.el5
cyrus-sasl-plain-2.1.22-5.el5        包含验证方法
 
[root@mail Server]# chkconfig --list |grep sasl
saslauthd       0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭  
验证的服务器程序
 
[root@mail Server]# service saslauthd start
启动 saslauthd:                                           [确定]
[root@mail Server]# chkconfig saslauthd on
 
[root@mail Server]# vim /usr/lib/sasl2/Sendmail.conf
在里面可以写出检测的方法
比如添加mech_list:LOGIN PLAIN  不写也行,系统默认值
 
[root@mail Server]# vim /etc/mail/sendmail.mc 

 

 

[root@mail Server]# service sendmail restart
 
测试: 
编码账号:
[root@mail Server]# echo -n "user1" |openssl base64
dXNlcjE=
[root@mail Server]# echo -n "123" |openssl base64
MTIz
 
[root@mail Server]# telnet 127.0.0.1 25

 

 

 

转自

http://lulu1101.blog.51cto.com/4455468/814303

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值