Der Inhaltsfilter vor der Warteschlange fügt keine Daten zurück zu Postfix ein

Der Inhaltsfilter vor der Warteschlange fügt keine Daten zurück zu Postfix ein

Ich habe mit Postfix auf NodeJS einen Before-Queue-Filter erstellt, um die Daten aus ausgehenden E-Mails abzurufen, die Anhänge zu entfernen, sie auf ein CDN hochzuladen und die URLs wieder in die ausgehende E-Mail einzufügen.

Bisher nichts allzu kompliziertes, denke ich, da Postfix dies über dieInhaltsfilter vor der Warteschlange.

Nachdem ich den Filter implementiert und die Postfix-Dokumentation befolgt habe, kann ich ausgehende E-Mails abrufen und an Postfix zurücksenden.

Postfix erkennt jedoch nicht, dass die eingehende E-Mail über die „proxy“-spezifische Konfiguration über den Inhaltsfilter vor der Warteschlange zurückgesendet wird. Es fügt sie zwar weiterhin der Warteschlange hinzu und sendet sie ordnungsgemäß, schließt die vom SMTP-Client geöffnete Sitzung jedoch zunächst nicht.

Ich beschäftige mich seit einigen Wochen mit diesem Fehler und habe das gesamte Internet nach Antworten durchsucht, aber dieses Thema scheint nicht gut dokumentiert zu sein. Ich habe gesehen, dass Milters eine weitere Lösung für das Problem sein könnte, aber es scheint komplizierter zu sein, als einfach SMTP zur Kommunikation mit Postfix zu verwenden.

Hier sind die Konfigurationsdateien:

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

(diese Konfiguration ist für den Einsatz in der Produktion nicht sicher, aber ich habe versucht, so viel Komplexität wie möglich zu entfernen)

127.0.0.1:9830ist der Inhaltsfilterserver vor der Warteschlange und ich habe Postfix so konfiguriert, dass es 127.0.0.1:9821mit der zweiten Konfiguration der Datei auf zurückkehrende E-Mails wartet.

Folgendes sende ich mit meinem Filter an Postfix zurück:

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

Hier ist die Ablaufverfolgung der Filterprotokolle: Protokolliert, wenn eine Mail über den Filter versendet wird

Und hier ist, was ich bei Postfix gesehen habe: Proxy-Reject: Fehler beim Schreiben der Warteschlangendatei

Alle Befehle wurden von Postfix erkannt, als der Filter sie sendete, aber die data=0/1Antwort der ursprünglichen eingehenden E-Mail zeigt an, dass die DATEN nicht empfangen wurden. Tatsächlich scheint der Fehler aufzutreten, wenn der submissionProzess versucht, den Proxy-Inhalt in die Warteschlange einzufügen.

Ich hoffe, dass ich alles klar erklärt habe, da ich hierbei wirklich Hilfe bräuchte ...

verwandte Informationen