rhel5下为sendmail添加SSL/TLS加密功能
按照这篇文档配置sendmail http://hi.baidu.com/kolex/blog/item/25004935d36f26325ab5f54e.html
一、配置 dovecot
用简单的/etc/shadow 文件的认证
[root@nana /]# dovecot -n
# /etc/dovecot.conf
protocols: pop3s
login_dir: /var/run/dovecot/login
login_executable: /usr/libexec/dovecot/pop3-login
login_greeting: FreeLAMP.com Day Day Up
mail_location: mbox:~/mail:INBOX=/var/mail/%u
mail_executable: /usr/libexec/dovecot/pop3
mail_plugin_dir: /usr/lib/dovecot/pop3
auth default:
mechanisms: plain login
cache_size: 1024
passdb:
driver: shadow
userdb:
driver: passwd
这里只用了 pop3s 协议,也就是 995 端口。
配置 dovecot 证书
[root@nana /]# vi /etc/pki/dovecot/dovecot-openssl.cnf
[root@nana /]# mv /etc/pki/dovecot/private/dovecot.pem /etc/pki/dovecot/private/dovecot.pem.orig
[root@nana /]# mv /etc/pki/dovecot/certs/dovecot.pem /etc/pki/dovecot/certs/dovecot.pem.orig
生成新的自己 domain 的证书
[root@nana /]# /usr/share/doc/dovecot-1.0/examples/mkcert.sh
[root@nana /]# mv /etc/pki/dovecot/private/dovecot.pem /etc/pki/dovecot/private/mydomain.pem
[root@nana /]# mv /etc/pki/dovecot/certs/dovecot.pem /etc/pki/dovecot/certs/mydomain.pem
主要修改的地方是:
[root@nana /]#vi /etc/dovecot.conf
ssl_disable=no
ssl_cert_file=/etc/pki/dovecot/certs/mydomain.pem
ssl_key_file=/etc/pki/dovecot/private/mydomain.pem
ssl_parameters_regenerate=168
verbose_ssl=no
这样,POP3S 收取邮件时,就可以在 /etc/log/maillog 里看到这样的日志:
Oct 8 22:22:40 freelamp dovecot: pop3-login: Login: user=, method=PLAIN, rip=::ffff:61.171.62.106, lip=::ffff:61.152.249.2, TLS
至此,POP3 的加密完成。下面介绍 SMTP 的加密。
二、配置sendmail
1. 生成 CA 证书
[root@nana /]# cd /etc/pki/tls/misc
[root@nana /]#./CA -newca
根据提示输 入,Common Name 输入自己的邮件服务器主机名字,mail.yourdomain.com
会生成两个文件:
/etc/pki/CA/cacert.pem (CA证书,你可以和其他通信的机构交换这个证书)
/etc/pki /CA/private/cakey.pem(密码保护的私密证书,用来签名和撤销证书)
2.生成私密和证书签名请求(CSR)
[root@nana /]#./CA -newreq
在 /etc/pki/tls/misc 目录下生成两个文件:
/etc/pki/tls/misc/newreq.pem
/etc/pki/tls/misc/newkey.pem
3.签名:
[root@nana /]#./CA -sign
这一步生成 /etc/pki/CA/newcerts/.pem 和 /etc/pki/tls/misc/newcert.pem 2个一样的文件。
4.拷贝证书到 sendmail 的证书目录下,并修改文件权限
[root@nana /]# mkdir /etc/mail/certs
[root@nana /]# cp /etc/pki/CA/cacert.pem /etc/mail/certs
[root@nana /]# cp /etc/pki/tls/misc/newcert.pem /etc/mail/certs/mycert.pem
[root@nana /]# openssl pkcs8 -in newkey.pem -topk8 -nocrypt -out mykey.pem (解决 SSL_CTX_use_PrivateKey_file Error 问题)
[root@nana /]# cp /etc/pki/tls/misc/mykey.pem /etc/mail/certs
[root@nana /]# chmod -R 700 /etc/mail/certs
[root@nana /]# chown -R root:sys /etc/mail/certs
5.配置 sendmail,并重启
修改 /etc/mail/sendmail.mc
define(`confCACERT_PATH’, `/etc/mail/certs’)
define(`confCACERT’, `/etc/mail/certs/cacert.pem’)
define(`confSERVER_CERT’, `/etc/mail/certs/mycert.pem’)
define(`confSERVER_KEY’, `/etc/mail/certs/mykey.pem’)
测试 Sendmail 是否编译支持 STARTTLS:
[root@nana /]# sendmail -bt -d0.8 < /dev/null
Compiled with: DNSMAP HESIOD HES_GETMAILHOST LDAPMAP LOG MAP_REGEX
MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6
NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF STARTTLS TCPWRAPPERS
USERDB USE_LDAP_INIT
[root@nana /]# m4 /etc/mail/sendmail.mc >/etc/mail/sendmail.cf
[root@nana /]# service sendmail restart
6.从客户端检查:
[root@nana /]# telnet mail.freelamp.com 25
EHLO your_hostname
应该看到:
250-STARTTLS
至此, SMTP 的加密功能完成