Postfix 與 DKIM

接續上一篇mail server的文章

這邊要來說DKIM的設定

安裝套件同樣是第一件事情,但記得要先裝EPEL

yum install opendkim

主設定檔

# /etc/opendkim.conf

Mode    sv

# 不要用tcp可以用unix socket
# Socket  local:/var/run/opendkim/socket

### 把KeyFile註解掉

#KeyFile        /etc/opendkim/keys/default.private

### 把以下註解拿掉

KeyTable        /etc/opendkim/KeyTable
SigningTable    refile:/etc/opendkim/SigningTable
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts   refile:/etc/opendkim/TrustedHosts

因為這個服務僅有內部可以使用,所以要限制存取來源

這個檔案是以refile的形式讀取,意思是可以用Regex表示,例如*.example.com

# /etc/opendkim/TrustedHosts

# 裡面預設是長這樣
# 沒有需求不用修改

127.0.0.1
#host.example.com
#192.168.1.0/24

接著來產生Keypair

#!/bin/bash

# myselector是可以自己取名的,只是所有設定當中要一致
opendkim-genkey -b 2048 -r -s myselector -d example.com -D /etc/opendkim/keys/
# -b 2048 是產出 2048 bits rsa key的意思
# 如果DNS不支援這麼長的TXT,再考慮降低成1024,但這樣有安全性風險

接著告訴opendkim哪些key是要給哪些網域用的

# /etc/opendkim/SigningTable

# 可以用regex,因為剛剛設定用refile來讀取
*@example.com myselector._domainkey.example.com
# /etc/opendkim/KeyTable

# myselector依照產生時的值做修改
myselector._domainkey.example.com example.com:myselector:/etc/opendkim/keys/myselector.private

如此一來,opendkim本身就設定好了

剛剛產生Keypair的時候,除了myselector.private之外,還會有一個txt檔,內容大概像這樣

# /etc/opendkim/keys/myselector.txt

myselector._domainkey   IN      TXT     ( "v=DKIM1; k=rsa; s=email; "
          "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ" )  ; ----- DKIM key myselector for example.com

裡頭有兩組字串,把中間兩個雙引號去掉,將兩個字串接在一起,然後把那一串新增到DNS的TXT記錄

主機名稱填「myselector._domainkey」,內容就是那一串

好了之後就可以用dig查到

#!/bin/bash

dig +short myselector._domainkey.example.com TXT

最後剩下與postfix整合

# /etc/postfix/main.cf

### DKIM ###

# 如果還有其他milter,用逗號隔開
# 這邊的port要和opendkim那邊一樣
smtpd_milters           = inet:127.0.0.1:8891
# 用unix socket的話這樣寫
# smtpd_milters         = unix:/var/run/opendkim/socket
non_smtpd_milters       = $smtpd_milters
milter_default_action   = accept
milter_protocol         = 2

最後重開postfix和opendkim服務就行了

留言

粗體斜體刪除線連結引用圖片程式碼

注意:您的電子信箱將不會被公開,且網站連結不會被搜尋引擎採計