佇列前內容過濾器不會將資料注入回 Postfix

佇列前內容過濾器不會將資料注入回 Postfix

我一直在 NodeJS 上使用 Postfix 建立一個佇列前過濾器,以檢索外發郵件中的資料、刪除附件、將它們上傳到 CDN 並將 URL 注入外發郵件中。

到目前為止,我想沒有什麼太複雜的,因為 Postfix 支援通過隊列前內容過濾器

實施過濾器並遵循 Postfix 文件後,我能夠檢索外發郵件並將其發送回 Postfix。

但是,Postfix 不會將透過「代理」特定配置的傳入郵件識別為透過佇列前內容過濾器注入回來。它仍然會將其新增至佇列並正確傳送,但不會關閉 SMTP 用戶端首先開啟的會話。

我已經研究這個錯誤幾個星期了,並瀏覽了整個網路尋找答案,但這個主題似乎沒有太多記錄。我看到 Milters 可能是該問題的另一種解決方案,但它似乎比僅使用 SMTP 與 Postfix 通訊更複雜。

以下是設定檔:

master.cf:

submission inet n                               -                               -                               -      smtpd
        -o syslog_name=postfix/submissions
        -o smtpd_proxy_filter=127.0.0.1:9830
        -o smtpd_proxy_ehlo=mail.clebard.cloud
        -o smtpd_proxy_options=speed_adjust
        -o smtpd_tls_auth_only=no
        -o smtpd_tls_dh1024_param_file=${config_directory}/dh2048.pem
        -o smtpd_enforce_tls=no
        -o smtpd_tls_security_level=may
        -o smtpd_sasl_auth_enable=yes
        -o smtpd_client_restrictions=permit_sasl_authenticated,reject
127.0.0.1:9821  inet    n                       -                       -                       -                      smtpd -v
        -o smtpd_authorized_xforward_hosts=127.0.0.0/8
        -o syslog_name=postfix/afterfilter
        -o smtpd_enforce_tls=no
        -o smtpd_tls_auth_only=no
        -o smtpd_tls_dh1024_param_file=${config_directory}/dh2048.pem
        -o smtpd_enforce_tls=no
        -o smtpd_tls_security_level=may
        -o smtpd_sasl_auth_enable=yes
        -o smtpd_client_restrictions=permit_sasl_authenticated,reject

(此配置在生產中使用是不安全的,但我嘗試盡可能消除複雜性)

127.0.0.1:9830127.0.0.1:9821是佇列前內容過濾器伺服器,我將 Postfix 設定為使用檔案的第二個設定偵聽回傳郵件。

以下是我使用過濾器發回 Postfix 的內容:

EHLO localhost
AUTH PLAIN {token}
XFORWARD HELO={client_name} NAME={client_name} ADDR={client_addr} PROTO=SMTP
XFORWARD IDENT={message_id}
MAIL FROM: {sender}
RCPT TO: {recipient}
DATA
...
.
QUIT

這是過濾器日誌上的追蹤: 使用過濾器傳送郵件時記錄

這是我在 Postfix 上看到的: proxy-reject :佇列檔案寫入錯誤

當過濾器發送命令時,Postfix 已偵測到所有命令,但data=0/1原始入站郵件的回應表示尚未收到 DATA。事實上,當submission進程嘗試將代理內容新增到佇列時,似乎會發生錯誤。

我希望我能清楚地解釋一切,因為我真的需要一些幫助...

相關內容