메일 수신 컨테이너를 안정적으로 작동시키는 데 큰 어려움을 겪고 있습니다. 개인 GMail 계정에서 보낸 답장은 의도대로 잘 작동하지만, 직장인의 Office 365 웹앱에서 보낸 이메일은 거부되고 있습니다. 제 설정 문제인지, 아니면 직장 측의 이메일 라우팅 방식에 특이한 점이 있는지 판단이 서지 않습니다.
./launcher logs mail-receiver 출력물을 확인하는 것은 처음인데, 이 발췌분은 전달 실패 시 일반적인 이벤트 순서를 보여주는 것 같습니다:
Jan 27 17:19:13 myvps-mail-receiver postfix/spawn[363]: warning: command /usr/bin/policyd-spf exit status 120
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: warning: problem talking to server private/policyd-spf: Connection timed out
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: NOQUEUE: reject: RCPT from mail-server.employer.tld[XX.XXX.XX.XX]: 451 4.3.5 <4eb16fb194e4f56c53b738dd8b3f3411@reply.my_domain.tld>: Recipient address rejected: Server configuration problem; from=<me@employer.tld> to=<4eb16fb194e4f56c53b738dd8b3f3411@reply.my_domain.tld> proto=ESMTP helo=<mail-server.employer.tld>
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: using backwards-compatible default setting smtpd_relay_before_recipient_restrictions=no to reject recipient "4eb16fb194e4f56c53b738dd8b3f3411@reply.my_domain.tld" from client "mail-server.employer.tld[XX.XXX.XX.XX]"
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: disconnect from mail-server.employer.tld[XX.XXX.XX.XX] ehlo=1 mail=1 rcpt=0/1 data=0/1 rset=1 quit=1 commands=4/6
<22>Jan 27 17:20:56 policyd-spf[367]: : prepend Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=XX.XXX.XX.XX; helo=mail-server.employer.tld; envelope-from=me@employer.tld; receiver=reply.my_domain.tld <22>Jan 27 17:20:56 policyd-spf[367]: Traceback (most recent call last):
Jan 27 17:20:56 myvps-mail-receiver postfix/spawn[366]: warning: command /usr/bin/policyd-spf exit status 120
첫 번째, 두 번째, 그리고 마지막 줄을 보면 SPF 정책 데몬이 작동하지 않는 것으로 보입니다. 작동하지 않는 이유에 대한 진단 정보를 찾을 수 없습니다. 또한 이것이 필수적인지 여부도 확실하지 않습니다. GMail에서 온 이메일은 잘 통과하고 있기 때문입니다.
저는 Cloudflare DNS와 Brevo의 트랜잭션 이메일을 사용하는 VPS에서 셀프 호스팅을 하고 있습니다.
로그의 해당 줄을 전부 ask.Discourse.com에 붙여넣은 결과에 대한 응답입니다…
Postfix 및 Policyd-SPF 문제 해결AI
denvergeeks:
이 에러가 나타내는 내용:
Jan 27 17:19:13 myvps-mail-receiver postfix/spawn[363]: warning: command /usr/bin/policyd-spf exit status 120
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: warning: problem talking to server private/policyd-spf: Connection timed out
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: NOQUEUE: reject: RCPT from mail-server.employer.tld[XX.XXX.XX.XX]: 451 4.3.5 <4eb16fb194e4f56c53b738dd8b3f3411@reply.my_domain.tld>: Recipient address rejected: Server configuration problem; from=me@employer.tld to=<4eb16fb194e4f56c53b738dd8b3f3411@reply.my_domain.tld> proto=ESMTP helo=<mail-server.employer.tld>
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: using backwards-compatible default setting smtpd_relay_before_recipient_restrictions=no to reject recipient “4eb16fb194e4f56c53b738dd8b3f3411@reply.my_domain.tld” from client “mail-server.employer.tld[XX.XXX.XX.XX]”
Jan 27 17:20:21 myvps-mail-receiver postfix/smtpd[356]: disconnect from mail-server.employer.tld[XX.XXX.XX.XX] ehlo=1 mail=1 rcpt=0/1 data=0/1 rset=1 quit=1 commands=4/6
<22>Jan 27 17:20:56 policyd-spf[367]: : prepend Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=XX.XXX.XX.XX; helo=mail-server.employer.tld; envelope-from=me@employer.tld; receiver=reply.my_domain.tld <22>Jan 27 17:20:56 policyd-spf[367]: Traceback (most recent call last):
Jan 27 17:20:56 myvps-mail-receiver postfix/spawn[366]: warning: command /usr/bin/policyd-spf exit status 120
DiscourseHelper:
검색 중
검색 내용: postfix policyd-spf exit status 120 server configuration problem connection timed out 원인 및 해결책
에러 로그에 postfix와 policyd-spf 관련 문제가 있는 것으로 보입니다. 구체적으로:
policyd-spf의 Exit Status 120:
이는 일반적으로 policyd-spf의 구성이나 권한 문제에서 비롯됩니다. Policyd-SPF는 발신자 정책 프레임워크(SPF)에 기반하여 수신되는 이메일을 검증하는 데 사용됩니다. Exit status 120은 애플리케이션 오류 또는 SPF 검증 요구사항을 처리할 수 없는 상태를 의미하는 경우가 많습니다.
private/policyd-spf에 대한 연결 시간 초과:
postfix가 policyd-spf 서비스와 통신할 수 없을 때 발생하며, 그 원인은 다음과 같습니다:
통신 소켓에 대한 잘못된 경로 또는 구성.
policyd-spf를 위한 spawn 프로세스가 올바르게 설정되지 않았거나 초기화에 실패한 경우.
상태 코드 451과 함께 RCPT 거부:
"서버 구성 문제"로 인해 수신자 이메일 주소가 거부됩니다. 이는 SPF 검증 실패로 인해 postfix가 수신자를 수락할 수 없다는 것을 시사합니다.
해결 단계:
policyd-spf 구성 확인:
/etc/postfix/main.cf(또는 동등한 파일)의 SPF 관련 구성이 올바른 정책 서비스로 지정되어 있는지 확인하세요:
policy-spf unix - n n - - spawn
user=nobody argv=/usr/bin/policyd-spf
argv 명령 경로(/usr/bin/policyd-spf)가 잘못되었다면 수정하세요.
서비스 및 로그:
policyd-spf 서비스를 다시 시작하세요:
systemctl restart policyd-spf
구체적인 문제를 찾기 위해 policyd-spf의 추가 로그를 검토하세요:
journalctl -u policyd-spf
Postfix 구성:
postfix가 policyd-spf를 올바르게 사용하고 있는지 확인하세요. /etc/postfix/master.cf에서 다음을 검증하세요:
smtp inet n - n - - smtpd
-o smtpd_recipient_restrictions=permit_mynetworks,reject_unauth_destination,check_policy_service=unix:private/policyd-spf
/etc/postfix 및 소켓 경로의 파일 권한을 확인하세요.
SPF 테스트:
외부 도구나 CLI(dig 명령)를 사용하여 SPF 레코드를 수동으로 검증해 보세요:
dig +short txt yourdomain.com
이메일 SPF 레코드가 올바른지 확인하세요.
소켓 통신:
private/policyd-spf 소켓이 존재하고 접근 가능한지 확인하세요:
ls /var/spool/postfix/private/policyd-spf
# 파일이 존재하면 권한을 조정하세요:
chown postfix:postfix /var/spool/postfix/private/policyd-spf
chmod 770 /var/spool/postfix/private/policyd-spf
소켓 파일이 없으면 다시 연결하거나 재생성하세요.
구성 오류:
/etc/policyd-spf/policyd-spf.conf의 기본 매개변수를 검토하고, 사용 사례에 맞는지 확인하세요.
해당 응답들을 바탕으로 할 수 있는 모든 방법을 시도해 보았지만, 문제가 해결되지 않습니다. policyd-spf의 Python traceback 내용을 로그 파일에 기록하는 방법을 알려주신다면 가장 도움이 될 것 같습니다. 어떤 제안이 있을까요? 이건 그저 무관한 문제일까요?
오래된 주제를 꺼내 드려 죄송합니다. 저도 비슷한 상황을 겪고 있습니다. 최근 개인 이메일을 Gmail에서 셀프호스팅 이메일 환경으로 이전했는데, 여기서 원포스터(OP)와 동일한 문제에 부딪혔습니다. Gmail에서 제 Discourse 사이트로 이메일을 보내는 것은 가능하지만, 셀프호스팅 메일 서버에서 보낼 수는 없습니다. 대신 바운스(bounce)가 발생하며, 메일 수신 로그에 OP와 동일한 오류가 표시됩니다.
셀프호스팅 이메일은 다소 어려울 것(이메일은 어렵죠!)이라고 예상했지만, 일단 시도해 보았습니다. 이제 몇 달이 지났고, 지금까지는 다른 곳으로 이메일이 잘 전달되고 있으며, mxtoolbox.com 보고서를 확인해보니 제 도메인과 IP에 대해 모든 항목이 녹색(정상)으로 표시되고 있습니다.
도움 주실 수 있는 조언이 있다면 감사하겠습니다!
수정: 실제로 제 오류 메시지가 약간 다르다는 것을 깨달았습니다.
<22>Apr 3 18:14:28 policyd-spf[130]: : 550 5.7.23 Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.net/Why?s=mfrom;id=user@example.org;ip=192.0.2.1;r=example-site.example.orgApr 03 18:14:28 discourse-mail-receiver-example-site postfix/smtpd[122]: NOQUEUE: reject: RCPT from unknown[192.0.2.1]: 550 5.7.23 <staff@example-site.example.org>: Recipient address rejected: Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.net/Why?s=mfrom;id=user@example.org;ip=192.0.2.1;r=example-site.example.org; from=<user@example.org> to=<staff@example-site.example.org> proto=ESMTP helo=<discourse.example.org>
Apr 03 18:14:28 discourse-mail-receiver-example-site postfix/smtpd[122]: using backwards-compatible default setting smtpd_relay_before_recipient_restrictions=no to reject recipient "staff@example-site.example.org" from client "unknown[192.0.2.1]"
Apr 03 18:14:28 discourse-multisite-mail-receiver-example-site postfix/smtpd[122]: disconnect from unknown[192.0.2.1] ehlo=1 mail=1 rcpt=0/1 data=0/1 rset=1 quit=1 commands=4/6
http://www.openspf.net/Why?s=mfrom;id=user@example.org 링크가 작동하지 않습니다. openspf.net가 더 이상 존재하지 않는 것 같습니다.