TShopping

 找回密碼
 註冊
搜索
查看: 706|回復: 0
打印 上一主題 下一主題

[CentOS] Centos 8 postfix+DKIM 設定(主從式架構可用)

[複製鏈接]
跳轉到指定樓層
1#
發表於 2022-12-23 10:47:27 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
信件總是被退?希望別的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. #KeyFile    /etc/opendkim/keys/default.private

  5. # 以下項目移除註解
  6. KeyTable    /etc/opendkim/KeyTable
  7. SigningTable    refile:/etc/opendkim/SigningTable
  8. 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
複製代碼


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

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


加上一行

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




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


加上自己的ip,此文範例是使用InternalHosts,因此清單中寄信的來源ip都要加上簽章。
如果有多個IP,就都加入
如下加入
  1. 127.0.0.1
  2. ::1
  3. xxx:xxx:xxx:xxx
  4. aaa:aaa:aaa:aaa
複製代碼


這兩個參數的意義可能是:

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
複製代碼

把他新增到你的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"
複製代碼

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



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

https://www.dmarcanalyzer.com/dkim/dkim-checker/


參考文章http://n.sfs.tw/content/index/15784




 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-28 11:35 , Processed in 0.048574 second(s), 30 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表