1. 程式人生 > >Centos+postfix+opendkim安裝DKIM證書

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:[email protected]
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