本篇文章只写了编译安装opendkim并配置加密的方式
现在国内发信,首先收件运营商会检测你是不是正常的用户,避免你模仿其他人发垃圾邮件甚至诈骗邮件给用户,避免用户受到损失。
这里最基础的检测是SPF记录以及你邮箱的RDNS记录,DKIM记录主要是保证收发信的传输过程中保证邮件内容不被篡改,目前DKIM记录国内貌似只有比较大的运营商在用,很多小的运营商没有用。
国外一些邮箱尤其是Gmail还会检测你的邮件是否配置了TLS加密,还有DMARC记录等等这里只介绍DKIM。
那DKIM怎么保证邮件内容不被篡改的?
DKIM 技术通过在每封电子邮件上增加加密的数字标志,然后与合法的互联网地址数据库中的记录进行比较。当收到电子邮件后,只有加密信息与数据库中记录匹配的电子邮件,才能够进入用户的收件箱。它还能检查邮件的完整性,避免黑客等未授权者的修改。 DKIM 的基本工作原理同样是基于传统的密钥认证方式,他会产生两组钥匙,公钥(public key)和私钥(private key),公钥将会存放在 DNS 中,而私钥会存放在寄信服务器中。私钥会自动产生,并依附在邮件头中,发送到寄信者的服务器里。公钥则放在DNS服务器上,供自动获得。收信的服务器,将会收到夹带在邮件头中的私钥和在DNS上自己获取公钥,然后进行比对,比较寄信者的域名是否合法,如果不合法,则判定为垃圾邮件。 由于数字签名是无法仿造的(准确的说是DKIM的加密算法特别特别难,几乎没有人可以破解),因此这项技术对于垃圾邮件制造者将是一次致命的打击,他们很难再像过去一样,通过盗用发件人姓名、改变附件属性等小伎俩达到目的。
安装opendkim
cd /usr/local/src/tar -zxf opendkim-2.10.3.tar.gzcd opendkim-2.10.3./configure --prefix=/usr/local/opendkimmake && make install
中间发现了这几个依赖,根据报错需求安装
第一个
错误提示:configure: error: no strlcpy/strlcat found
安装这个工具:libbsd-0.8.6.tar
第二个
错误提示:checking for OpenSSL library and includes... configure: error: OpenSSL not found
实际上openssl 已经安装 但是缺少工具包
apt-get install libssl-dev
第三个
错误提示:error: milter not found
下载地址: ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.14.5.tar.gz
这个安装有点不太一样,这是安装过程: # tar zxf sendmail-8.14.5.tar.gz# cd sendmail-8.14.5/libmilter/# ./Build# ./Build install
cp /usr/local/opendkim/sbin/* /usr/bin/ #我犯懒了,最好自己一个一个的copy.....
cp /usr/local/opendkim/sbin/opendkim /etc/init.d/opendkim
配置opendkim
以下所有的$domain 换成自己的域
所有的$domain_name 换成自己的发信邮箱
创建以下目录
mkdir /etc/opendkim/keys/$domain_name -p
mkdir /var/run/opendkim/ -p
新增以下文件,并配置,默认都是没有的,文件位置根据自己的需要来
vim /etc/opendkim.conf
AutoRestart YesAutoRestartRate 10/1hCanonicalization relaxed/simpleExternalIgnoreList refile:/etc/opendkim/TrustedHostsInternalHosts refile:/etc/opendkim/TrustedHostsKeyTable refile:/etc/opendkim/KeyTableLogWhy YesMinimumKeyBits 1024Mode svPidFile /var/run/opendkim/opendkim.pidSigningTable refile:/etc/opendkim/SigningTableSocket inet:8891@127.0.0.1Syslog YesSyslogSuccess YesLogWhy YesTemporaryDirectory /var/tmpUMask 022UserID opendkim:opendkimMacroList 192.168.198.100,192.168.198.0/24 #如果涉及转发邮件功能,这里配置转发IP或者签名的IP段,否则转发的邮件不会被签名
vim /etc/opendkim/TrustedHosts
127.0.0.1
vim /etc/opendkim/KeyTable
default._domainkey.$domain $domain:default:/etc/opendkim/keys/$domain_name/default.private
vim /etc/opendkim/SigningTable
*@$domain default._domainkey.$domain
vim /etc/postfix/main.cf #追加以下内容
smtpd_milters = inet:127.0.0.1:8891non_smtpd_milters = inet:127.0.0.1:8891milter_protocol = 2milter_default_action = accept
生成秘钥
opendkim-genkey -D /etc/opendkim/keys/$domain_name/ -d $domain -s default #生成随机密钥useradd opendkimchown opendkim.opendkim /etc/opendkim -Rchown opendkim.opendkim /etc/opendkim.conf/etc/init.d/opendkim -Dx /etc/opendkim.conf/etc/init.d/postfix restart
配置DNS TXT记录
生成的公钥截图
DNSpod配置
主机记录:default._domainkey ,上图文中的内容。记录值:上图所示()里的内容,记得把换行符删掉,双引号不要,分号保留。
DKIM效果检测
检测DKIM配置有没有成功:http://www.mail-tester.com #每天每个IP只能测试三次,多了要收费
发信测试: swaks 这个工具没有可以安装一下,很方便。swaks -f “你的发信地址” -t “收信地址” -s "发信IP"例如: swaks -f 123456@qq.com -t 654321@qq.com -s localhost
另外gmail,网易,sina的邮件信头里也有标识,看到DKIM PASS字样也证明DKIM配置成功。