Фильтр содержимого перед очередью не будет вставлять данные обратно в Postfix

Фильтр содержимого перед очередью не будет вставлять данные обратно в Postfix

Я создаю фильтр перед постановкой в ​​очередь с помощью Postfix на NodeJS, чтобы извлекать данные из исходящих писем, удалять вложения, загружать их на CDN и вставлять URL-адреса обратно в исходящие письма.

Пока, я думаю, ничего сложного, так как Postfix поддерживает это черезФильтр содержимого перед очередью.

После внедрения фильтра и соблюдения документации Postfix я могу извлекать исходящие письма и отправлять их обратно в Postfix.

Однако Postfix не распознает входящую почту через конфигурацию, специфичную для "proxy", как вставленную обратно через фильтр содержимого до очереди. Он все равно добавит ее в очередь и отправит ее должным образом, но не закроет сеанс, открытый клиентом SMTP.

Я уже несколько недель смотрю на эту ошибку и просматриваю весь интернет в поисках ответов, но эта тема, похоже, не очень хорошо документирована. Я видел, что Milters может быть другим решением проблемы, но это кажется более сложным, чем просто использование SMTP для связи с Postfix.

Вот файлы конфигурации:

мастер.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:9830является сервером фильтрации содержимого перед очередью, и я настроил Postfix на прослушивание возвращаемых писем 127.0.0.1:9821с помощью второй конфигурации файла.

Вот что я отправляю обратно в 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пытается добавить содержимое прокси в очередь.

Надеюсь, я все понятно объяснил, так как мне действительно понадобится помощь по этому вопросу...

Связанный контент