信件老是被退?但願另外mail server相信我寄出的信?那麼你可以設定dkim。
dkim 是什麼?
DKIM (Domain Keys Identified Mail),網域金鑰認證郵件。
DKIM 和ssl(https)的運作機制相似,一樣採用公私鑰數位簽章體式格局。在發送郵件時由發佩服務器對郵件以私鑰進行簽章,而在郵件領受伺務器上,會透過 DNS 查詢寄件者網域的dkim 公鑰資料,然後對這封郵件做簽章解碼,若是解碼成功,代表郵件確切為原始郵件伺服器所寄出。
此舉可以避免假冒的伺服器寄信者濫觞,讓該網域確實由授權的伺服器所寄出,削減email被偽造濫觞的可能。
簡單來講 dkim 是用來驗證寄件者是不是來自於正當伺服器的方法。
安裝dkim服務
採用 opendkim 套件來支援dkim
安裝 opendkim
- yum -y install epel-release
- yum install opendkim
複製代碼
產生公私鑰
今天要替 @tshopping.com.tw 的email建樹 dkim,所以創設一個以此網域定名的目次匣
# mkdir /etc/opendkim/keys/tshopping.com.tw
產生公私鑰
# opendkim-genkey -D /etc/opendkim/keys/tshopping.com.tw/ -d tshopping.com.tw -s 20221222
參數的意義
-D 產生的公私鑰目次
-d 網域名
-s 稱之為選擇器(selector),可以隨意取,我用今天日期20221222
履行後不會有回應是正常的,搜檢目次下產生的檔案
- ls -al /etc/opendkim/keys/tshopping.com.tw
複製代碼
- drwxr-xr-x. 2 opendkim opendkim 50 12月 23 10:37 .
- drwxr-x---. 3 root opendkim 30 12月 22 22:33 ..
- -rwx--x---. 1 root root 891 12月 22 22:32 20221222.private <== 私鑰
- -rwx--x---. 1 root root 322 12月 22 22:32 20221222.txt <== 公鑰 dns txt記實
複製代碼
利用者和群組改為 opendkim
- chown -R opendkim:opendkim /etc/opendkim/keys/tshopping.com.tw/
複製代碼
設定opendkim
設定 opendkim,設定檔在 /etc/opendkim.conf
設定 opendkim.conf
先備份 opendkim.conf
網頁設計
- cp -p /etc/opendkim.conf /etc/opendkim.conf.org
複製代碼
點竄 opendkim.conf
- # 修改為 Mode s,他有3種模式,Mode s, Mode v, Mode sv。s代表寄出時簽章、v代表收信時檢查簽章。
- Mode s
-
- # 加上註解
- #KeyFile /etc/opendkim/keys/default.private
-
- # 以下項目移除註解
- KeyTable /etc/opendkim/KeyTable
- SigningTable refile:/etc/opendkim/SigningTable
- InternalHosts refile:/etc/opendkim/TrustedHosts
複製代碼
網頁設計
設定 KeyTable
- vi /etc/opendkim/KeyTable
複製代碼
加上一行
- 20221222._domainkey.tshopping.com.tw tshopping.com.tw:20221222:/etc/opendkim/keys/tshopping.com.tw/20221222.private
-
複製代碼
[選擇器名]._domainkey.[網域名] [網域名]:[選擇器名]:[私鑰檔路徑]
設定 SigningTable
- vi /etc/opendkim/SigningTable
複製代碼
加上一行
- *@tshopping.com.tw 20221222._domainkey.tshopping.com.tw
-
複製代碼
設定 TrustedHosts
- vi /etc/opendkim/TrustedHosts
複製代碼
加上本身的ip,此文範例是利用InternalHosts,因此清單中寄信的起原ip都要加上簽章。
這兩個參數的意義多是:
ExternalIgnoreList 設定寄出的信都不要加上簽章
InternalHosts 寄出的信都要加上簽章
啟動 opendkim
開機啟動 opendkim
- systemctl enable opendkim
複製代碼
設定postfix
修改
在最後加上
- ### DKIM Settings
- smtpd_milters = inet:127.0.0.1:8891
- non_smtpd_milters = $smtpd_milters
- milter_default_action = accept
複製代碼
從新啟動postfix
- systemctl restart postfix
複製代碼 網頁設計
確認參數有無啟動
設定dns的記錄
接下來設定dns的記錄,dkim首要要新增二筆。
第一筆是把/etc/opendkim/keys/tshopping.com.tw/20221222.txt 打開,裡面或許長這樣:
- 20221222._domainkey IN TXT ( "v=DKIM1; k=rsa; "
- "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQEjrzWkJrIABJ6fKwZjcIvHsFRAEjrnfdM/ZiS23nGx73NkS1acbwFxP9otS/xNgJ2kyWS6tsh+mItM6QF0U7LV3iVFUDbFtJL0nZbDC+bExMCYpvIZRgPwcAZoTHFgjfQ+m5wvSlKR/lbYP0z2pmKZwqdDjZOPWndhtmg/n+hwIDAQAB" ) ; ----- DKIM key 20221222 for tshopping.com.tw
-
複製代碼
把他新增到你的dns中,例如我的網域是 tshopping.com.tw 完全紀錄就是
- 20221222._domainkey.tshopping.com.tw. TXT 3600 "v=DKIM1; k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQEjrzWkJrIABJ6fKwZjcIvHsFRAEjrnfdM/ZiS23nGx73NkS1acbwFxP9otS/xNgJ2kyWS6tsh+mItM6QF0U7LV3iVFUDbFtJL0nZbDC+bExMCYpvIZRgPwcAZoTHFgjfQ+m5wvSlKR/lbYP0z2pmKZwqdDjZOPWndhtmg/n+hwIDAQAB"
-
複製代碼
再加一筆adsp [2],Author Domain Signing Practices(adsp) 簡單來講就是dkim的認證機制
dkim= 的值可以用 ”all””unknown””discardable”
網頁設計
- _adsp._domainkey.tshopping.com.tw TXT 3600 "dkim=unknown"
複製代碼
"all" 指定所有此網域的信城市有簽章
"discardable" 指定所有此網域的信城市有簽章,如果沒有的話請抛棄(最嚴格)。如要dkim 成心義的運作,最好把他設為這個。
"unknown" 指定所有此網域的信有可能會有簽章 (最寬鬆對待,等於沒設)。
測試及驗證
操縱伺服器寄出一封信給本身試試,我利用 mutt 來完成,或是你要用你的郵件軟體也能夠。
原始碼
查看 /var/log/maillog 的寄出記實
-
- Dec 22 21:38:57 dns postfix/smtpd[1373975]: warning: hostname grieving.medyamol.com does not resolve to address 141.98.11.67
- Dec 22 21:38:57 dns postfix/smtpd[1373975]: connect from unknown[141.98.11.67]
- Dec 22 21:38:57 dns postfix/smtpd[1373975]: discarding EHLO keywords: CHUNKING
- Dec 22 21:39:02 dns postfix/smtpd[1373975]: warning: unknown[141.98.11.67]: SASL PLAIN authentication failed:
- Dec 22 21:39:02 dns postfix/smtpd[1373975]: disconnect from unknown[141.98.11.67] ehlo=1 auth=0/1 quit=1 commands=2/3
- Dec 22 21:39:13 dns postfix/smtpd[1374031]: warning: hostname netyea.com does not resolve to address 202.39.11.212
- Dec 22 21:39:13 dns postfix/smtpd[1374031]: connect from unknown[202.39.11.212]
- Dec 22 21:39:13 dns postfix/smtpd[1374031]: discarding EHLO keywords: CHUNKING
- Dec 22 21:39:13 dns postfix/smtpd[1374031]: 1AF2D400EE51: client=unknown[202.39.11.212], sasl_method=PLAIN, sasl_username=service
- Dec 22 21:39:13 dns postfix/cleanup[1374461]: 1AF2D400EE51: message-id=<003301d91677$be28e250$3a7aa6f0$@tshopping.com.tw>
- Dec 22 21:39:13 dns opendkim[1239361]: 1AF2D400EE51: DKIM-Signature field added (s=20221222, d=tshopping.com.tw) <span style="font-size: large; background-color: rgb(255, 255, 255);"><== 已加上簽章</span>
- Dec 22 21:39:13 dns postfix/qmgr[1250017]: 1AF2D400EE51: from=<service@tshopping.com.tw>, size=4285, nrcpt=1 (queue active)
- Dec 22 21:39:13 dns postfix/local[1374510]: 1AF2D400EE51: to=<woff@tshopping.com.tw>, relay=local, delay=0.13, delays=0.12/0.01/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
- Dec 22 21:39:13 dns postfix/qmgr[1250017]: 1AF2D400EE51: removed
-
複製代碼
檢測器
諸多線上檢測器可使用,替你檢測你的dkim能不能正常運作。
文章來自:
留言列表