技术解析
为了防止邮件被判定为垃圾邮件,可以给邮件系统增加DKIM(DomainKeys Identified Mail)功能,其主要的原理通俗的说,就是在发送邮件的时候通过私钥在邮件头写一段加密信息,然后公钥放到DNS国外服务器上,邮件的接收方通过邮件头的加密信息来和DNS上的公钥比对来判定邮件来源是否合法。这个计数貌似是雅虎提出的,被Yahoo! Mail和Gmail等厂商采用。
可以在http://sourceforge.net/projects/dkim-milter/ 下载源代码:
[root@mail dkim]# ll
total 736
-rw-r--r-- 1 root root 748415 Jul 13 2011 dkim-milter-2.8.3.tar.gz
[root@mail dkim]# tar zxvf dkim-milter-2.8.3.tar.gz
也可以通过下载RPM安装包安装,比较简单:
#Centos5
[root@mail dkim]#rpm -ivh http://download4.fedora.redhat.com/pub/epel/5/`uname -i`/dkim-milter-2.8.3-4.el5.`uname-i`.rpm
#Centos6
[root@mail dkim]#rpm -ivh http://download4.fedora.redhat.com/pub/epel/6/`uname -i`/dkim-milter-2.8.3-4.el5.`uname-i`.rpm
安装完成后,首先要生成公钥和私钥两个文件,可以使用源码包里的一个脚本,其路径在:
dkim-milter-2.8.3/dkim-filter/dkim-genkey.sh
参数为要使用发信的域名:
[root@mail dkim]# ./dkim-genkey.sh -r -d mail.banping.com
[root@mail dkim]# ll
total 1024
-rw------- 1 root root 887 Jul 13 12:47 default.private
-rw------- 1 root root 308 Jul 13 12:47 default.txt
然后把这个default.txt的内容组织一下放到DNS上,增加一条domain=default._domainkey.mail.banping.com的txt记录,内容类似这样:
v=DKIM1;p=MIGfMA0GCSqGSIb898L9LKJ7dDFGNADCBiQKBgQCU1iD47S+n92ZeXKL444Kg7VzkczqN5xZnx6px1C+
/hImMNoQvF3X6HXLG1+OzO7s8Odf3lhpqgGWq+atFKT3YUZUY3vAL983LIKJIWo+
988QIB5iw1cotBretF0TFWVdf4weNyPrC1Qtvm8kQswIDAQAB" ;
把私钥放到想要的位置:
[root@mail dkim]# mv default.private /etc/mail/dkim-milter/keys/default
修改keylist配置文件:
[root@mail dkim]# vi /etc/mail/dkim-milter/keys/keylist
*@mail.rtmail.cn:mail.rtmail.cn:/etc/mail/dkim-milter/keys/default
也可以不动这个文件,把私钥位置配置在dkim-filter.conf文件中,由KeyFile参数指定:
[root@mail dkim]# vi /etc/mail/dkim-milter/dkim-filter.conf
AutoRestart yes
Domain mail.banping.com
Selector default
Socket inet:20118@localhost
Syslog Yes
X-Header Yes
KeyFile /etc/mail/dkim-milter/keys/default
至此DKIM配置完成,再修改postfix中的配置,在发信的时候启用加密功能:
[root@mail dkim]# vi /etc/postfix/main.cn
smtpd_milters = inet:localhost:20118
non_smtpd_milters = inet:localhost:20118
milter_protocol = 2
milter_default_action = accept
OK,现在启动DKIM和PostFix服务就可以了:
[root@mail dkim]# service dkim-milter start
[root@mail keys]# service postfix reload
Reloading postfix: [ OK ]
除了DKIM,还可以在DNS上增加SPF配置来提高邮件发送成功的几率,比如:
v=spf1 ip4:110.120.130.140 ~all
可以查看DNS上的配置是否成功:
[root@mail postfix]# dig -t txt mail.banping.com
; QUESTION SECTION:
;mail.banping.com. IN TXT
;; ANSWER SECTION:
mail.banping.com. 600 IN TXT "v=spf1 ip4:110.120.130.140 ~all"
可以到以下地址来测试DKIM和SPF服务是否正常:
http://www.brandonchecketts.com/emailtest.php
http://www.openspf.org/Why?show-form=1