Centos+postfix+opendkim安装DKIM证书

很多时候,我们自行搭建的邮件系统,在发送邮件时,会进入收信方的垃圾箱里,而不是进入收件箱,如果评论者用的QQ邮箱,很可能在垃圾箱里找不到,只能自助查询里找一找。这种情况发生的原因大多是因为我们服务器发的邮件被标记为SPAM。使用这个网站可以查看服务器的发件分数http://www.mail-tester.com/,得分10在没有特殊情况是不会被拦截的。

现在国内发信,首先收件运营商会检测你是不是正常的用户,避免你模仿其他人发垃圾邮件甚至诈骗邮件给用户,避免用户受到损失。

这里最基础的检测是SPF记录以及你邮箱的RDNS记录,DKIM记录主要是保证收发信的传输过程中保证邮件内容不被篡改,目前DKIM记录国内貌似只有比较大的运营商在用,很多小的运营商没有用。

国外一些邮箱尤其是Gmail还会检测你的邮件是否配置了TLS加密,还有DMARC记录等等这里只介绍DKIM。

那DKIM怎么保证邮件内容不被篡改的?

DKIM 技术通过在每封电子邮件上增加加密的数字标志,然后与合法的互联网地址数据库中的记录进行比较。当收到电子邮件后,只有加密信息与数据库中记录匹配的电子邮件,才能够进入用户的收件箱。它还能检查邮件的完整性,避免黑客等未授权者的修改。 DKIM 的基本工作原理同样是基于传统的密钥认证方式,他会产生两组钥匙,公钥(public key)和私钥(private key),公钥将会存放在 DNS 中,而私钥会存放在寄信服务器中。私钥会自动产生,并依附在邮件头中,发送到寄信者的服务器里。公钥则放在DNS服务器上,供自动获得。收信的服务器,将会收到夹带在邮件头中的私钥和在DNS上自己获取公钥,然后进行比对,比较寄信者的域名是否合法,如果不合法,则判定为垃圾邮件。 由于数字签名是无法仿造的(准确的说是DKIM的加密算法特别特别难,几乎没有人可以破解),因此这项技术对于垃圾邮件制造者将是一次致命的打击,他们很难再像过去一样,通过盗用发件人姓名、改变附件属性等小伎俩达到目的。

假定我们的postfix邮件系统已经安装好,在此基础上添加DKIM证书。

配置EPEL yum 源

EPEL,即Extra Packages for Enterprise Linux,这个软件仓库里有很多非常常用的软件,OpenDKIM 也在其中

wget -P /tmp http://mirror.pnl.gov/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh /tmp/epel-release-6-8.noarch.rpm
rm -f /tmp/epel-release-6-8.noarch.rpm

安装OpenDKIM

使用yum命令直接安装

yum install opendkim

配置OpenDKIM

接下来要修改配置文件,文件在/etc/opendkim.conf

AutoRestart             Yes
AutoRestartRate         10/1h
LogWhy                  Yes
Syslog                  Yes
SyslogSuccess           Yes
Mode                    sv
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
SignatureAlgorithm      rsa-sha256
Socket                  inet:8891@localhost
PidFile                 /var/run/opendkim/opendkim.pid
UMask                   022
UserID                  opendkim:opendkim
TemporaryDirectory      /var/tmp

生成公钥和私钥

mydomain.com 替换成你的域名

mkdir /etc/opendkim/keys/mydomain.com
opendkim-genkey -D /etc/opendkim/keys/mydomain.com/ -d mydomain.com -s default
chown -R opendkim: /etc/opendkim/keys/mydomain.com
mv /etc/opendkim/keys/mydomain.com/default.private /etc/opendkim/keys/mydomain.com/default

把mydomain.com添加到/etc/opendkim/KeyTable

default._domainkey.mydomain.com mydomain.com:default:/etc/opendkim/keys/mydomain.com/default

接下来修改/etc/opendkim/SigningTable并添加如下记录

*@mydomain.com default._domainkey.mydomain.com

添加信任主机到/etc/opendkim/TrustedHosts

127.0.0.1
mydomain.com
host.mydomain.com

确保你的域名mydomain.com和服务器名称都是host.mydomain.com

最后给你的域名添加一个TXT记录,记录在/etc/opendkim/keys/mydomain.com/default.txt

default._domainkey      IN      TXT     ( "v=DKIM1; k=rsa; "
          "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDApHRr7ZmXRaAB+RQRbP4VdMwIrIHIP18KFtXRsv/xpWc0Gix6ZXN13fcG03KNGKZo2PY+csPkGC5quDnH5V0JEhDZ78KcDWFsU6u4fr9ktVAdt6P7jWXjcyqdHOZ8+YN4cAeU4lRFNgQvdupIcByYwzPYMgBFHfJm9014HvRqhwIDAQAB" )  ; ----- DKIM key default for mydomain.com

如果你没有添加SPF记录可以顺便添加一下

mydomain.com. 14400 IN TXT "v=spf1 a mx ~all"

可以通过http://dkimcore.org/tools/来检测记录是否正确

配置postfix

为了把OpenDKIM和Postfix整合到一起需要修改/etc/postfix/main.cf

smtpd_milters           = inet:127.0.0.1:8891
non_smtpd_milters       = $smtpd_milters
milter_default_action   = accept
milter_protocol         = 2

重启服务并设置为开机启动  (重启opendkim时,最好不用restart,分别使用stop和start。)

service opendkim start
chkconfig opendkim on
service postfix restart

如果是centos7 则使用以下命令

systemctl start opendkim.service
systemctl enable opendkim.service
systemctl restart postfix.service

测试

1.本地发邮件,查看日志

1)tail -f /var/log/maillog



2)OpenDkim启动时,正常工作输出

opendkim[4397]: OpenDKIM Filter: mi_stop=1

opendkim[4397]: OpenDKIM Filter v2.4.2 terminating with status 0, errno = 0

opendkim[27444]: OpenDKIM Filter v2.4.2 starting (args: -x /etc/opendkim.conf)



3)当发邮件时,正常签名时输出

opendkim[22254]: 53D0314803B: DKIM-Signature header added

2.向 [email protected] 发送一封邮件,会收到自动回复

The Port25 Solutions, Inc. team

==========================================================
Summary of Results
==========================================================
SPF check:          pass
"iprev" check:      pass
DKIM check:         pass
SpamAssassin check: ham

3.或者通过 https://www.mail-tester.com/ 网站来检测垃圾邮件匹配度

[email protected]发送一封邮件,点击下面的 查看你的邮件得分,也可以针对结果进行优化。

反向解析rDNS

反向DNS查找或者反向DNS解析(rDNS)用于判定一个域名与给定IP是否互相关联。有些公司例如AOL会拒绝没有进行反向解析的发件服务器发出的所有消息,所以你必须确保你进行了反向解析。

这货也是决定因素之一,一些国内的IDC是无法提供此服务的。但是如果你用的是阿里云,只需要提交一个工单,提供你的IP和域名要求设置反向解析就OK了。

原文:https://fatesinger.com/1144

猜你喜欢

转载自blog.csdn.net/yetugeng/article/details/83996397
今日推荐