close

信件老是被退?但願另外mail server相信我寄出的信?那麼你可以設定dkim。

dkim 是什麼?
DKIM (Domain Keys Identified Mail),網域金鑰認證郵件。

DKIM 和ssl(https)的運作機制相似,一樣採用公私鑰數位簽章體式格局。在發送郵件時由發佩服務器對郵件以私鑰進行簽章,而在郵件領受伺務器上,會透過 DNS 查詢寄件者網域的dkim 公鑰資料,然後對這封郵件做簽章解碼,若是解碼成功,代表郵件確切為原始郵件伺服器所寄出。

此舉可以避免假冒的伺服器寄信者濫觞,讓該網域確實由授權的伺服器所寄出,削減email被偽造濫觞的可能。

簡單來講 dkim 是用來驗證寄件者是不是來自於正當伺服器的方法。



安裝dkim服務
採用 opendkim 套件來支援dkim

安裝 opendkim

  1. yum -y install epel-release
  2. 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

履行後不會有回應是正常的,搜檢目次下產生的檔案
 

  1. ls -al /etc/opendkim/keys/tshopping.com.tw
複製代碼
  1. drwxr-xr-x. 2 opendkim opendkim  50 12月 23 10:37 .
  2. drwxr-x---. 3 root     opendkim  30 12月 22 22:33 ..
  3. -rwx--x---. 1 root root 891 12月 22 22:32 20221222.private <== 私鑰
  4. -rwx--x---. 1 root root 322 12月 22 22:32 20221222.txt <== 公鑰 dns txt記實
複製代碼



利用者和群組改為 opendkim
 

  1. chown -R opendkim:opendkim /etc/opendkim/keys/tshopping.com.tw/
複製代碼




設定opendkim
設定 opendkim,設定檔在 /etc/opendkim.conf

設定 opendkim.conf
先備份 opendkim.conf

 

網頁設計
  1. cp -p /etc/opendkim.conf /etc/opendkim.conf.org
複製代碼


點竄 opendkim.conf
 

  1. # 修改為 Mode s,他有3種模式,Mode s, Mode v, Mode sv。s代表寄出時簽章、v代表收信時檢查簽章。
  2. Mode    s
  3.  
  4. # 加上註解
  5. #KeyFile    /etc/opendkim/keys/default.private
  6.  
  7. # 以下項目移除註解
  8. KeyTable    /etc/opendkim/KeyTable
  9. SigningTable    refile:/etc/opendkim/SigningTable
  10. InternalHosts   refile:/etc/opendkim/TrustedHosts
複製代碼

網頁設計

設定 KeyTable

  1. vi /etc/opendkim/KeyTable
複製代碼



加上一行

  1. 20221222._domainkey.tshopping.com.tw tshopping.com.tw:20221222:/etc/opendkim/keys/tshopping.com.tw/20221222.private
  2.  
複製代碼



[選擇器名]._domainkey.[網域名] [網域名]:[選擇器名]:[私鑰檔路徑]

設定 SigningTable

  1. vi /etc/opendkim/SigningTable
複製代碼



加上一行

  1. *@tshopping.com.tw 20221222._domainkey.tshopping.com.tw
  2.  
複製代碼





設定 TrustedHosts

  1. vi /etc/opendkim/TrustedHosts
複製代碼



加上本身的ip,此文範例是利用InternalHosts,因此清單中寄信的起原ip都要加上簽章。

這兩個參數的意義多是:

ExternalIgnoreList   設定寄出的信都不要加上簽章
InternalHosts   寄出的信都要加上簽章

啟動 opendkim

 

  1. systemctl start opendkim
複製代碼


開機啟動 opendkim
 

  1. systemctl enable opendkim
複製代碼



設定postfix
修改

  1. vi /etc/postfix/main.cf
複製代碼



在最後加上
 

  1. ### DKIM Settings
  2. smtpd_milters = inet:127.0.0.1:8891
  3. non_smtpd_milters = $smtpd_milters
  4. milter_default_action = accept
複製代碼


從新啟動postfix
 

  1. systemctl restart postfix
複製代碼
網頁設計



確認參數有無啟動
 

  1. postconf -n
複製代碼


設定dns的記錄
接下來設定dns的記錄,dkim首要要新增二筆。

第一筆是把/etc/opendkim/keys/
tshopping.com.tw/20221222.txt 打開,裡面或許長這樣:
 

  1. 20221222._domainkey     IN      TXT     ( "v=DKIM1; k=rsa; "
  2.           "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQEjrzWkJrIABJ6fKwZjcIvHsFRAEjrnfdM/ZiS23nGx73NkS1acbwFxP9otS/xNgJ2kyWS6tsh+mItM6QF0U7LV3iVFUDbFtJL0nZbDC+bExMCYpvIZRgPwcAZoTHFgjfQ+m5wvSlKR/lbYP0z2pmKZwqdDjZOPWndhtmg/n+hwIDAQAB" )  ; ----- DKIM key 20221222 for tshopping.com.tw
  3.  
複製代碼


把他新增到你的dns中,例如我的網域是 tshopping.com.tw 完全紀錄就是

  1. 20221222._domainkey.tshopping.com.tw.  TXT 3600 "v=DKIM1; k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQEjrzWkJrIABJ6fKwZjcIvHsFRAEjrnfdM/ZiS23nGx73NkS1acbwFxP9otS/xNgJ2kyWS6tsh+mItM6QF0U7LV3iVFUDbFtJL0nZbDC+bExMCYpvIZRgPwcAZoTHFgjfQ+m5wvSlKR/lbYP0z2pmKZwqdDjZOPWndhtmg/n+hwIDAQAB"
  2.  
複製代碼


再加一筆adsp [2],Author Domain Signing Practices(adsp) 簡單來講就是dkim的認證機制

dkim= 的值可以用 ”all””unknown””discardable”

 

網頁設計
  1. _adsp._domainkey.tshopping.com.tw  TXT 3600 "dkim=unknown"
複製代碼


"all" 指定所有此網域的信城市有簽章

"discardable" 指定所有此網域的信城市有簽章,如果沒有的話請抛棄(最嚴格)。如要dkim 成心義的運作,最好把他設為這個。

"unknown" 指定所有此網域的信有可能會有簽章 (最寬鬆對待,等於沒設)。

測試及驗證
操縱伺服器寄出一封信給本身試試,我利用 mutt 來完成,或是你要用你的郵件軟體也能夠。

原始碼
查看 /var/log/maillog 的寄出記實

  1.  
  2. Dec 22 21:38:57 dns postfix/smtpd[1373975]: warning: hostname grieving.medyamol.com does not resolve to address 141.98.11.67
  3. Dec 22 21:38:57 dns postfix/smtpd[1373975]: connect from unknown[141.98.11.67]
  4. Dec 22 21:38:57 dns postfix/smtpd[1373975]: discarding EHLO keywords: CHUNKING
  5. Dec 22 21:39:02 dns postfix/smtpd[1373975]: warning: unknown[141.98.11.67]: SASL PLAIN authentication failed:
  6. 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
  7. Dec 22 21:39:13 dns postfix/smtpd[1374031]: warning: hostname netyea.com does not resolve to address 202.39.11.212
  8. Dec 22 21:39:13 dns postfix/smtpd[1374031]: connect from unknown[202.39.11.212]
  9. Dec 22 21:39:13 dns postfix/smtpd[1374031]: discarding EHLO keywords: CHUNKING
  10. Dec 22 21:39:13 dns postfix/smtpd[1374031]: 1AF2D400EE51: client=unknown[202.39.11.212], sasl_method=PLAIN, sasl_username=service
  11. Dec 22 21:39:13 dns postfix/cleanup[1374461]: 1AF2D400EE51: message-id=<003301d91677$be28e250$3a7aa6f0$@tshopping.com.tw>
  12. 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>
  13. Dec 22 21:39:13 dns postfix/qmgr[1250017]: 1AF2D400EE51: from=<service@tshopping.com.tw>, size=4285, nrcpt=1 (queue active)
  14. 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)
  15. Dec 22 21:39:13 dns postfix/qmgr[1250017]: 1AF2D400EE51: removed
  16.  
複製代碼

DKIM.png


檢測器
諸多線上檢測器可使用,替你檢測你的dkim能不能正常運作。



文章來自:
arrow
arrow
    文章標籤
    網頁設計
    全站熱搜
    創作者介紹
    創作者 hpxvrus 的頭像
    hpxvrus

    桃園網頁設計

    hpxvrus 發表在 痞客邦 留言(0) 人氣()