這年頭自己維護 mail account 的情況比較少了,所以資料不太好找,測出來寫下來讓其他人也可以用...
這邊說的是透過 procmail 判斷信件是否符合 DKIM Signature,然後加上 header。
如果是 Ubuntu 環境,首先在要裝上 python-dkim (不是 python3-dkim):
sudo apt install -y python-dkim
我們需要裡面的 dkimverify
程式透過 stdin 讀信件進去,然後透過 exit code 告知有沒有成功。
對應的 .procmailrc
是這樣:
# DKIM :0 * ^DKIM-Signature: { :0BHWf * ? /usr/bin/dkimverify | /usr/bin/formail -A "X-Procmail-DKIMVerify: pass" :0Ef | /usr/bin/formail -A "X-Procmail-DKIMVerify: bad" }
裡面大多數的設定說明可以參考 procmailrc 的 manpage,這邊只就 magic keyword 說明一下。
BH
是 body 與 header 都要判斷,而 f
是把程式當作 filter,把信件從 stdin 丟進去,然後將 stdout 輸出的結果往下繼續處理,W
是看程式執行執行結果 (看 exit code) 決定要不要跑設定的指令。
E
表示上面的那格沒有跑到的話就跑自己這格,類似於 if-then-else 裡面的 else。
我發現這個需求在我的 issue tracking system 內是 2016 年 10 月開的,總算解掉他了...