キュー前のコンテンツフィルタはPostfixにデータを戻さない

キュー前のコンテンツフィルタはPostfixにデータを戻さない

私は、送信メールからデータを取得し、添付ファイルを削除し、CDN にアップロードして、送信メールに URL を挿入するための、NodeJS 上の Postfix を使用したキュー前フィルターを構築しています。

今のところ、Postfixがこれをサポートしているので、それほど複雑なことはないと思います。キュー前コンテンツフィルター

フィルターを実装し、Postfix のドキュメントに従った後、送信メールを取得して Postfix に送り返すことができるようになりました。

ただし、Postfix は、「プロキシ」固有の設定を介して受信されたメールが、キュー前のコンテンツ フィルタを介して挿入されたものであることを認識しません。メールはキューに追加され、適切に送信されますが、最初に SMTP クライアントによって開かれたセッションは閉じられません。

私は数週間前からこのバグに注目し、答えを求めて Web 全体を閲覧してきましたが、この件についてはあまり文書化されていないようです。Milters がこの問題の別の解決策になる可能性があると知りましたが、Postfix との通信に SMTP を使用するだけよりも複雑なようです。

設定ファイルは次のとおりです:

マスター.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はキュー前のコンテンツ フィルタ サーバーであり、ファイルの 2 番目の構成で、返されるメールをリッスンするように 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ときにエラーが発生するようです。submission

この件については本当に助けが必要なので、すべてを明確に説明できたことを願っています...

関連情報