postfix
私はこのコマンドを使用して外部電子メールを送信するプログラムを作成しており、電子メールが指定されたアドレスに送信されたことを確認mail -s
する必要があります。
postfix
この場合、エラーがすぐに報告されるのか、電子メールが送信されないのか、postfix
有効な電子メールだけがあるのか疑問に思います。[Eメール保護])を入力した後、ログファイルに報告されたり、電子メールが送信されない原因になりますか?
また、ネットワーク接続が失われて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はまだ成功を返します。これはバグではなく機能です:-)