이메일을 특정 주소로 보낼 수 없는 경우 postfix가 mail 명령을 사용하여 보고합니까?

이메일을 특정 주소로 보낼 수 없는 경우 postfix가 mail 명령을 사용하여 보고합니까?

postfix나는 이 명령을 사용하여 외부 이메일을 보내는 프로그램을 작성 중이며 mail -s이메일이 지정된 주소로 전송되었는지 확인해야 합니다.

postfix이 경우 오류가 즉시 보고되는지, 이메일이 전송되지 않는지, postfix유효한 이메일만 있는 것인지 궁금합니다 ([이메일 보호됨])을 입력한 후 로그 파일에 보고되거나 이메일이 전송되지 않는 원인이 됩니까?

또한 네트워크 연결이 끊어진 경우 postfix에도 유효한 이메일 주소를 사용하면 성공이 반환됩니까, 아니면 실패가 즉시 보고됩니까?

답변1

postfix 구성이 로그로 설정된 경우 로그를 확인하여 메시지 상태를 확인할 수 있습니다.

여기에는 다음 정보가 포함됩니다.

Mar 25 16:07:40 serverName postfix/smtp[3113]: B169ZZZ24F: host foo.net.mx1.name.foo.net[1.2.3.4] refused to talk to me: 421 Offline: HELO/FDNS

Mar 25 16:07:40 serverName postfix/smtp[3036]: 7ZZZFC2440: to=<[email protected]>, relay=mtaz.amz.yahoodns.net[66.196.118.35]:25, delay=11, delays=0.35/0/0.6/9.9, dsn=2.0.0, status=sent (250 ok dirdel)

Mar 25 16:07:36 serverName postfix/smtp[3073]: ZZZZ3C623E: to=<[email protected]>, relay=none, delay=0.55, delays=0.35/0/0.2/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for name=customer.com type=A: Host not found)

이 정보는 다음 줄이 포함된 스크립트를 통해 검색할 수 있습니다. (내 직업이 아닙니다. 누구 덕분에 이 정보가 매일 사용됩니다.)

grep 'status=sent' /var/log/mail.log | awk '{print $7}' | sed 's/to=<//g' | sed 's/>,//g'

grep 'status=deferred' /var/log/mail.log | awk '{print $7}' | sed 's/to=<//g' | sed 's/>,//g'

grep 'status=bounced' /var/log/mail.log | awk '{print $7}' | sed 's/to=<//g' | sed 's/>,//g'

답변2

일부 심각한 오류(예: 메시지 내용을 읽는 I/O 오류 또는 매우 심각한 해결되지 않은 메시지/주소)는 실패한 종료로 즉시 보고될 수 있지만 일반적으로 그렇지 않으며 이를 믿을 수 없습니다.

배송이 실패할 경우,~해야 한다반송 메시지는 수신되지만(메시지를 보낸 사용자에게 다시 전송됨) Postfix가 메시지를 다른 메일 전송 에이전트에 성공적으로 전달하고 오류가 오프라인에서 발생하는 경우 Postfix의 제어 범위를 벗어날 수도 있습니다. 반동은 몇 분 또는 며칠 후에 발생할 수 있습니다.

네트워크가 실패하더라도 Postfix는 여전히 성공을 반환합니다. 이것은 버그가 아닌 기능입니다 :-)

관련 정보