Ubuntu 16에 Posfix 이메일 SMTP 서버를 설정했는데 작동 중입니다. 예전에는 호스팅 회사의 SMTP 서버를 사용했는데, 자체 서버를 사용하는 것을 선호합니다.
Java Mail을 사용하여 이메일을 보내고 있는데 차이점은 호스팅 회사를 통해 보낼 때 수신자 주소가 잘못된 경우 다음과 같은 메시지가 표시된다는 것입니다.
com.sun.mail.smtp.SMTPAddressFailedException: 450 4.1.2: 수신자 주소가 거부됨: 도메인을 찾을 수 없음
하지만 Postfix를 사용하여 보내면 예외가 발생하지 않습니다. Postfix 로그를 확인했는데 메시지는 다음과 같습니다.
조치: 실패 상태: 5.4.4 진단 코드: X-Postfix 호스트 또는 도메인을 찾을 수 없습니다. 이름 서비스 오류[이메일 보호됨]유형=AAAA: 호스트를 찾을 수 없습니다.
그러나 이는 Java 예외로 전파되지 않습니다.
동일한 동작을 나타내도록 Postfix를 설정하는 방법을 아는 사람이 있습니까?
고마워요, 휴고
답변1
reject_unknown_recipient_domain
푸틴smtpd_recipient_restrictions
앞으로 permit_mynetworks
, permit_sasl_authenticated
및/또는 permit_tls_clientcerts
.
reject_unknown_sender_domain
구성에서 누락되었거나 이전 permit_*
에 존재하는 reject_unknown_sender_domain
경우 Postfix는 허용 규칙과 일치하는 모든 클라이언트 발신자가 수신자 도메인을 확인하지 않고 이메일을 보낼 수 있도록 허용합니다. Postfix는 들어오는 메일을 받아 대기열에 넣은 다음 메일을 배달하려고 할 때 도메인이 존재하지 않는다는 사실만 확인한 다음 메일을 반송합니다.
먼저 발생 하면 reject_unknown_sender_domain
규칙 일치 여부에 관계없이 모든 클라이언트를 확인 permit_*
하고 5xx 코드로 이메일을 거부합니다.
접미사에서는 규칙의 순서가 항상 중요합니다.
예:
다음과 같은 경우 main.cf
:
smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/junk,
check_client_access hash:/etc/postfix/junk,
check_helo_access hash:/etc/postfix/junk,
reject_unauth_pipelining,
permit_tls_clientcerts,
permit_sasl_authenticated,
permit_mynetworks
reject_unknown_recipient_domain
라인 앞 어딘가에 추가하세요 permit
. 예를 들면 다음과 같습니다.
smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/junk,
check_client_access hash:/etc/postfix/junk,
check_helo_access hash:/etc/postfix/junk,
reject_unauth_pipelining,
reject_unknown_recipient_domain,
permit_tls_clientcerts,
permit_sasl_authenticated,
permit_mynetworks
smtpd_recipient_restrictions
아직 규칙이 없으면 추가하세요. 예를 들면 다음과 같습니다.
smtpd_recipient_restrictions = reject_unauth_pipelining,
reject_unknown_recipient_domain,
permit_mynetworks
그러나 postfix 구성에 대해 더 많은 조사를 해야 합니다.