Skip to content

Gea-Suan Lin's BLOG

幹壞事是進步最大的原動力

Gea-Suan Lin's BLOG

Tag: verify

用 procmail 判斷信件是否有過 DKIM Signature

這年頭自己維護 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 月開的,總算解掉他了...

Author Gea-Suan LinPosted on January 10, 2019Categories Computer, Mail, Murmuring, Network, Security, SpamTags account, dkim, mail, procmail, python, verifyLeave a comment on 用 procmail 判斷信件是否有過 DKIM Signature

Recent Comments

  • AWS 的 T4g 系列機器增加服務區域 – Gea-Suan Lin's BLOG on AWS 推出了 ARM 平台上 T 系列的機器
  • AWS 跳出來決定繼續搞 Elasticsearch 了 – Gea-Suan Lin's BLOG on Elasticsearch 與 Kibana 也變成非 Open Source 軟體
  • gugod on tw.bbs.* 的轉信
  • Wayne on Elasticsearch 與 Kibana 也變成非 Open Source 軟體
  • Firefox 86 預設支援 AVIF 影像格式 – Gea-Suan Lin's BLOG on WebP 的檔案大小未必比 JPEG 小...

Archives

  • January 2021 (20)
  • December 2020 (38)
  • November 2020 (42)
  • October 2020 (40)
  • September 2020 (23)
  • August 2020 (32)
  • July 2020 (35)
  • June 2020 (22)
  • May 2020 (36)
  • April 2020 (33)
  • March 2020 (18)
  • February 2020 (28)
  • January 2020 (34)
  • December 2019 (43)
  • November 2019 (22)
  • October 2019 (24)
  • September 2019 (33)
  • August 2019 (30)
  • July 2019 (40)
  • June 2019 (37)
  • May 2019 (39)
  • April 2019 (30)
  • March 2019 (62)
  • February 2019 (35)
  • January 2019 (38)
  • December 2018 (36)
  • November 2018 (45)
  • October 2018 (19)
  • September 2018 (37)
  • August 2018 (28)
  • July 2018 (29)
  • June 2018 (25)
  • May 2018 (37)
  • April 2018 (36)
  • March 2018 (30)
  • February 2018 (57)
  • January 2018 (53)
  • December 2017 (84)
  • November 2017 (117)
  • October 2017 (93)
  • September 2017 (60)
  • August 2017 (37)
  • July 2017 (41)
  • June 2017 (37)
  • May 2017 (59)
  • April 2017 (55)
  • March 2017 (55)
  • February 2017 (35)
  • January 2017 (42)
  • December 2016 (48)
  • November 2016 (32)
  • October 2016 (35)
  • September 2016 (78)
  • August 2016 (69)
  • July 2016 (19)
  • June 2016 (42)
  • May 2016 (61)
  • April 2016 (51)
  • March 2016 (74)
  • February 2016 (87)
  • January 2016 (31)
  • December 2015 (36)
  • November 2015 (61)
  • October 2015 (72)
  • September 2015 (53)
  • August 2015 (42)
  • July 2015 (38)
  • June 2015 (30)
  • May 2015 (18)
  • April 2015 (57)
  • March 2015 (41)
  • February 2015 (50)
  • January 2015 (35)
  • December 2014 (50)
  • November 2014 (56)
  • October 2014 (41)
  • September 2014 (37)
  • August 2014 (37)
  • July 2014 (28)
  • June 2014 (50)
  • May 2014 (32)
  • April 2014 (46)
  • March 2014 (38)
  • February 2014 (29)
  • January 2014 (52)
  • December 2013 (50)
  • November 2013 (45)
  • October 2013 (40)
  • September 2013 (48)
  • August 2013 (22)
  • July 2013 (25)
  • June 2013 (13)
  • May 2013 (16)
  • April 2013 (28)
  • March 2013 (37)
  • February 2013 (36)
  • January 2013 (57)
  • December 2012 (44)
  • November 2012 (10)
  • October 2012 (12)
  • September 2012 (21)
  • August 2012 (21)
  • July 2012 (25)
  • June 2012 (8)
  • May 2012 (10)
  • April 2012 (11)
  • March 2012 (10)
  • February 2012 (11)
  • January 2012 (5)
  • December 2011 (13)
  • November 2011 (12)
  • October 2011 (10)
  • September 2011 (7)
  • August 2011 (5)
  • July 2011 (11)
  • June 2011 (21)
  • May 2011 (22)
  • April 2011 (36)
  • March 2011 (43)
  • February 2011 (23)
  • January 2011 (24)
  • December 2010 (34)
  • November 2010 (19)
  • October 2010 (16)
  • September 2010 (15)
  • August 2010 (10)
  • July 2010 (12)
  • June 2010 (3)
  • May 2010 (3)
  • April 2010 (4)
  • March 2010 (8)
  • February 2010 (14)
  • January 2010 (13)
  • December 2009 (16)
  • November 2009 (28)
  • October 2009 (24)
  • September 2009 (12)
  • August 2009 (7)
  • July 2009 (10)
  • June 2009 (11)
  • May 2009 (22)
  • April 2009 (21)
  • March 2009 (18)
  • February 2009 (7)
  • January 2009 (32)
  • December 2008 (19)
  • November 2008 (12)
  • October 2008 (15)
  • September 2008 (14)
  • August 2008 (15)
  • July 2008 (18)
  • June 2008 (20)
  • May 2008 (19)
  • April 2008 (27)
  • March 2008 (22)
  • February 2008 (21)
  • January 2008 (15)
  • December 2007 (22)
  • November 2007 (17)
  • October 2007 (29)
  • September 2007 (31)
  • August 2007 (34)
  • July 2007 (31)
  • June 2007 (36)
  • May 2007 (23)
  • April 2007 (22)
  • March 2007 (30)
  • February 2007 (50)
  • January 2007 (75)
  • December 2006 (48)
  • November 2006 (59)
  • October 2006 (89)
  • September 2006 (29)
  • August 2006 (48)
  • July 2006 (14)
  • June 2006 (35)
  • May 2006 (62)
  • April 2006 (63)
  • March 2006 (72)
  • February 2006 (83)
  • January 2006 (56)
  • December 2005 (46)
  • November 2005 (60)
  • October 2005 (27)
  • September 2005 (54)
  • August 2005 (83)

Tags

  • amazon
  • api
  • aws
  • browser
  • ca
  • cdn
  • certificate
  • chrome
  • cloud
  • cloudflare
  • cpu
  • data
  • database
  • db
  • dns
  • ec2
  • facebook
  • firefox
  • github
  • google
  • http
  • https
  • image
  • instance
  • javascript
  • js
  • linux
  • mysql
  • network
  • open
  • percona
  • performance
  • php
  • privacy
  • rdbms
  • security
  • server
  • service
  • source
  • speed
  • ssl
  • storage
  • tls
  • ubuntu
  • web

Blogroll

  • Ashley's BLOG
  • Gea-Suan Lin’s BLOG for Class^H^H^H^H^H ACG
  • Gea-Suan Lin’s BLOG for Networking
  • Gea-Suan Lin’s BLOG for Work
  • Gea-Suan Lin's Wiki
  • Zonble
  • 蔡依林的部落格
Gea-Suan Lin's BLOGProudly powered by WordPress