대기열 이전 콘텐츠 필터는 데이터를 Postfix에 다시 주입하지 않습니다.

대기열 이전 콘텐츠 필터는 데이터를 Postfix에 다시 주입하지 않습니다.

나는 보내는 메일에서 데이터를 검색하고, 첨부 파일을 제거하고, CDN에 업로드하고 보내는 메일에 URL을 다시 삽입하기 위해 NodeJS에서 Postfix를 사용하여 대기열 전 필터를 구축했습니다.

Postfix가대기열 전 콘텐츠 필터.

필터를 구현하고 Postfix 문서를 따른 후에는 보내는 메일을 검색하여 Postfix로 다시 보낼 수 있습니다.

그러나 Postfix는 "프록시" 관련 구성을 통해 들어오는 메일이 대기열 전 콘텐츠 필터를 통해 다시 삽입되는 것으로 인식하지 않습니다. 여전히 대기열에 추가되어 제대로 전송되지만 처음에는 SMTP 클라이언트가 연 세션을 닫지 않습니다.

나는 몇 주 동안 이 버그를 살펴보고 답변을 찾기 위해 전체 웹을 탐색했지만 이 주제에 대한 문서는 많지 않은 것 같습니다. Milters가 문제에 대한 또 다른 해결책이 될 수 있다는 것을 알았지만 Postfix와 통신하기 위해 SMTP를 사용하는 것보다 더 복잡해 보입니다.

구성 파일은 다음과 같습니다.

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:9830는 대기열 이전 콘텐츠 필터 서버이며 127.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원본 인바운드 메일의 응답은 데이터가 수신되지 않았음을 나타냅니다. 실제로 submission프로세스가 프록시 콘텐츠를 대기열에 추가하려고 할 때 오류가 발생하는 것 같습니다.

이 문제에 대해서는 정말 도움이 필요하므로 모든 것을 명확하게 설명했으면 좋겠습니다.

관련 정보