字體:  

在 Ubuntu 16.04 安裝 OpenDKIM 郵件驗證

bruceman 發表於: 2018-6-17 10:59 來源: ADJ網路控股集團


隨著垃圾郵件的猖獗,釣魚郵件的犯罪活動,一切已變得不一樣。
Open Relay再不存在,每封郵件都需要經過重重把關才能送到收信者的 Inbox。
否則會被扔到 Spam Folder 甚至直接拒收。

用過 SMTP 的應該都知道 “From” Address 是可以隨便冒認的。
如果銀行等的 Email Address 被冒認來發釣魚網站連結後果就嚴重了!
SPF 和 DKIM 的出現是要解決這保安漏洞。

1. 首先安裝 Postfix 及 opendkim
# apt-get install postfix mailutils opendkim opendkim-tools
    
2. 設定 Mailname 及 Hostname

此步驟很重要,否則 SPF 和 DKIM 都會因為 hostname 不符而 Fail

修改 /etc/mailname,設定為要使用的 FQDN

再修改 /etc/postfix/main.cf ,設定 myhostname 為要使用的 FQDN
myhostname = domain.com

3. 設定 DKIM (DomainKeys Identified Mail)

DKIM 的原理是用公私鑰驗證 Sender 的真偽。
Public Key 放在 DNS TXT Record,而 Private Key 存放在 Server,而每封 Email 帶有 DKIM-Signature。
這樣只要驗證 DKIM-Signature 是否和 Public key 相符就可以知道郵件的真偽。

修改 /etc/default/opendkim, Listen 本地 8891 Port
SOCKET="inet:8891@localhost"

4. 設定 Multi Domain 免除麻煩

如果有多於一個Domain要DKIM簽名:
(DKIM signing multiple domain names)

QUOTE:


為每個新增Domain Name新增一個Directory

# mkdir -p /etc/opendkim/keys/domain1.com
# mkdir -p /etc/opendkim/keys/domain2.com

為每個 Domain 生成 Public key 及 Private key , 使用 2048 bit 的憑證

# cd /etc/opendkim/keys/domain1.com/
# opendkim-genkey -b 2048 -t -s mail -d domain1.com

# cd /etc/opendkim/keys/domain2.com/
# opendkim-genkey -b 2048 -t -s mail -d domain2.com


照樣把各 mail.txt 的內容各自加入到 DNS Zone 或 把引號 ” 內加入到 DNS Server

Name: mail._domainkey
Value: v=DKIM1; k=rsa; t=y; p=MIG...QAB
 
不要忘記修改 Permission 讓 opendkim 讀取 keys

# chown -R opendkim:opendkim /etc/opendkim

修改 /etc/opendkim.conf, 新增以下設定

# Key table
KeyTable           /etc/opendkim/KeyTable
SigningTable       /etc/opendkim/SigningTable

建立 /etc/opendkim/KeyTable, 新增以下設定

mail._domainkey.domain1.com domain1.com:mail:/etc/opendkim/keys/domain1.com/mail.private
mail._domainkey.domain2.com domain2.com:mail:/etc/opendkim/keys/domain2.com/mail.private

建立 /etc/opendkim/SigningTable, 新增以下設定

domain1.com mail._domainkey.domain1.com
domain2.com mail._domainkey.domain2.com


修改 /etc/postfix/main.cf 指示 Postfix 使用 DKIM Sign Outgoing mail
# DKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Start OpenDKIM 及 Restart Postfix
# service opendkim start
# service postfix restart

DKIM 設定完成,之後可再設定完 SPF 再一併測試,請參考這篇說明:
http://dz.adj.idv.tw/thread-136297-1-1.html

然後可以在本機使用 mutt 寄信測試:
# apt install mutt
# echo "test content" | mutt -s "test subject" service@adj.idv.tw

參考資料:
https://blog.tiger-workshop.com/ubuntu-postfix-mail-server-mta-outgoing-spf-dkim-rdns-dmarc/