- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Linux shell メール転送エラーの判定)
Linux shell メール転送エラーの判定
このQ&Aのポイント
- Linuxのシェルでメール転送部分を作成しました。宛先アドレスを入力し間違えて、メールが送信できなかった際のエラーをログに残せず困っています。
- メール送信自体は正常終了と判定されてしまいます。送信に失敗したことをログに残すにはどうすればいいでしょうか?
- 質問者は、メール送信に失敗した場合にログにエラーを残す方法を求めています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「送信に失敗した」じゃなくて「送信は成功したが、相手に届いていない」を確認したいのですよね。 手段はありません。 相手に届かない原因によってはエラーメールが返るので、それを受け取ってログに残す。 原因と相手サーバーの設定によってはエラーメールが返らないこともあります。 原因1:@ より後のサーバー名(ドメイン名)が存在しない場合 ⇒エラーメールが返る 原因2:@ より後のサーバー名(ドメイン名)が存在するが通信できない場合 ⇒一定期間、リトライを繰り返して、それでもだめならエラーメールが返る 原因3:@ より後のサーバー名(ドメイン名)が存在して通信できるが、@より前のアカウント名が存在しない場合 ⇒そのサーバーの設定によりエラーメールが返ったり返らなかったりする。普通は返らない設定にする 原因4:@ より後のサーバー名(ドメイン名)が存在して通信でき、@より前のアカウント名が存在するが、目的の送り先と違った場合 ⇒そのアカウントに届くのでエラーメールの返りようが無い 原因1と2の場合は、mailコマンドでは無くて、それなりのプログラムを作ればエラーメールを待つこと無くエラーを判断することも可能です。 STEP1: DNSを引いて、相手サーバーのIPアドレスを求める。求められなければエラー STEP2: そのサーバーのSMTPポートに接続。接続できなければエラー STEP3: SMTPコマンドを使ってメールを送り込む ただし、プロバイダの回線だとSMTPポートがブロックされていますので、だめです。
お礼
回答が遅れ申し訳ありません。 非常に参考になりました。有難うございます。 送信後のエラー判定は今回は導入しないこととしました。