Procmail Pipe to Python Script
我們每天都在收信,那有沒有某些信件是你想挑出來,特別處理的?有的話可以使用 procmail 這個程式來幫你。
首先你家目錄下的 .forward
檔案內容必須是
"|/usr/local/bin/procmail"
確定信件會被 pipe 給 procmail 處理。
那現在重點會擺在 .procmailrc
這個檔案,這裡只會粗淺的講一下實現「用 procmail 將信件傳遞給 script 執行」。
假設我想要將從 ken8203@love.com
寄來的信傳至 mail_processing.py
做處理
:0Wc:
* ^From.*ken8203@love.com
| /usr/local/bin/python $HOME/mail_processing.py
如此一來就可以正確的執行了,更細節的 filter 寫法可以到網路上查查,挺多的!
OK,那 mail_processing.py
的改怎麼寫,才可以接住 pipe 過來的內容
# -*- coding: utf-8 -*-
import sys
import email
full_msg = sys.stdin.readlines()
msg = email.message_from_string(''.join(full_msg))
with open('mail.txt', 'w') as fout:
fout.write(msg['to'] + '\n')
fout.write(msg['from'] + '\n')
fout.write(''.join(full_msg))
就是這麼簡單!
Note
如果你的 mail.txt
遲遲不出來(有時候會 delay 一下,讓子彈飛一會兒),你可以考慮寫進 log 看看問題在哪,修改一下 .procmailrc
VERBOSE=on
LOGFILE=$HOME/procmail.log
:0Wc:
* ^From.*ken8203@love.com
| /usr/local/bin/python $HOME/mail_processing.py
加入1~2行,就能自己 debug 囉!