簡體   English   中英

Postfix如何過濾email(DKIM)而不將消息保留在memory中並且不將其寫入磁盤兩次?

[英]How can Postfix filter email (DKIM) without keeping the message in memory and without writing it to disc twice?

我需要 DKIM 簽署可能是巨大的電子郵件(最多 150MB)。 我正在運行 Postfix,到目前為止希望保留該 MTA。

從概念上講,DKIM 需要 go 超過 email 兩次:一次用於計算和簽署校驗和,一次將其與上一步的結果寫入標題中。 1

DKIM 簽名者可以通過將消息保存在 memory 中(對我來說不行)或將其寫入文件來做到這一點。

對於手頭的任務,我想使用后綴(過濾器)機制,它允許我做到這一點,而無需將消息保留在 memory 中,也無需將其寫入光盤兩次

到目前為止,我看到隊列后內容過濾器機制迫使您再次將 email 寫入磁盤,並且沒有充分的理由,它應該將可搜索的文件描述符傳遞給過濾器的標准輸入。 但實施並沒有做到這一點。

替代方案,隊列前的 milter ,對於我來說沒有足夠的文檔來查看它是否避免將消息保留在 memory 中並避免將原始郵件寫入文件兩次。 – 這就是我在標簽中opendkim的原因:也許那些專家知道 milter API如何避免以及opendkim確實如何避免這些陷阱。


1 ...因為 Posix 文件系統沒有前置操作

Postfix 隊列文件不是平面郵件。 添加 header 不需要重寫。 要利用這一點,請使用milter 接口 后綴用戶那里得到的答案讓我相信在 milter 處理期間郵件也沒有保存在 memory 中。 至少不是通過 Postfix。

如問題中所述,將 pipe 機制與隊列后內容過濾器一起使用不會做到這一點。 寫出文件以避免 memory 中的郵件可能足夠合理,並且比將其保存在 memory 中更好。

請注意,當您需要根據主體本身修改 email 主體時,milter 會出現與管道相同的問題。 您只能讀取一次正文(也不能立即替換它)。 但是,DKIM 不會修改主體。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM