我想讓postfix發送所有郵件到一個python腳本來掃描郵件。Python:Postfix stdin
但是,如何將輸出從postfix輸出到python?
什麼是Python的標準輸入?
你能給一個代碼示例嗎?
我想讓postfix發送所有郵件到一個python腳本來掃描郵件。Python:Postfix stdin
但是,如何將輸出從postfix輸出到python?
什麼是Python的標準輸入?
你能給一個代碼示例嗎?
從後綴推送郵件到Python腳本,加上這樣一行到你的postfix別名文件:
# send to [email protected]
emailname: "|/path/to/script.py"
的python email.FeedParser
module可以構造一個對象,表示從標準輸入一個MIME電子郵件消息,通過執行類似這樣的:
# Read from STDIN into array of lines.
email_input = sys.stdin.readlines()
# email.FeedParser.feed() expects to receive lines one at a time
# msg holds the complete email Message object
parser = email.FeedParser.FeedParser()
msg = None
for msg_line in email_input:
parser.feed(msg_line)
msg = parser.close()
從這裏,你需要遍歷的msg
的MIME部分,並相應地採取行動。有關您需要的方法,請參閱the documentation on email.Message
objects。例如email.Message.get("Header")
返回標頭值Header
。
而不是調用sys.stdin.readlines()
,然後按照Michael的建議循環並傳遞行到email.FeedParser.FeedParser().feed()
,您應該將文件對象直接傳遞給電子郵件解析器。
爲此目的,標準庫提供對話功能email.message_from_file(fp)
。因此,你的代碼變得更簡單:
import email
msg = email.message_from_file(sys.stdin)
現在的問題是,我希望這發生在每一封電子郵件中,而不僅僅是存在的emaildomains。是否有所有域的wlddcard? –
@LucasKauffman這是一個後綴配置問題。可能最好在serverfault.com上詢問,因爲我沒有答案。 –
此外,您可能需要像這樣調用python解釋器:'emailname:「| python path/to/script.py」'。至少這就是我們在othello所要做的。 – swandog