隨著垃圾郵件的猖獗,釣魚郵件的犯罪活動,一切已變得不一樣。
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)
引用:
為每個新增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 default -d domain1.com
# cd /etc/opendkim/keys/domain2.com/
# opendkim-genkey -b 2048 -t -s default -d domain2.com
照樣把各 default.txt 的內容各自加入到 DNS Zone 或 把引號 ” 內加入到 DNS Server
Name: default._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, 新增以下設定
default._domainkey.domain1.com domain1.com:default:/etc/opendkim/keys/domain1.com/default.private
default._domainkey.domain2.com domain2.com:default:/etc/opendkim/keys/domain2.com/default.private
建立 /etc/opendkim/SigningTable, 新增以下設定
domain1.com default._domainkey.domain1.com
domain2.com default._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/