ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

メールが送信できないときに試したこと

納品したプログラムを新しい環境に移行したら、メールが送信できなくなったので連絡があったので調査しました。

設定確認

古い環境と新しい環境の両方の設定ファイルを比較して確認しましたが、メールサーバーのアドレスやSMTPのポート番号は同じになっていました。
設定の間違いではなさそうです。

動作確認

新旧の環境でメール送信直前にデバッグ文を追加して動作を確認したところ、同じ内容で送ろうとしていても、新しい環境ではメールを送信でエラーになっていました。

接続確認

TELNETで、SMTPポートを指定してメールサーバーに接続したところ、新旧どちらの環境でも接続はできていました。
接続先のアドレスは、どちらも設定ファイルの値を使ったので、メールサーバーアドレスのタイプミスではありません。

SMTPコマンドでのメール送信確認

TELNETで接続できたので、新旧の環境でSMTPコマンドを使ってメール送信テストをしてみました。
古い環境では、メールの送信ができ、受信も確認できました。
新しい環境では、

RCPT TO:me@example.com
553 sorry, that domain isn't in my list of allowed rcpthosts

となり、メールの送信ができませんでした。
お客さんのメールアドレスを指定してもメールの送信ができませんでした。

この結果から、メールサーバーに新しい環境からのメール送信の許可が設定されていないと判断し、お客さんに伝えました。

解決

お客さんのメールサーバーの管理者の方が、新しい環境からのメール送信の許可を追加したら、メールが送信できたと連絡があり、解決しました。


SMTPコマンドを調べて入力するということができなかったら、解決までにさらに時間がかかっていたと思います。
プロトコルをうっすらと知っていたので、試そうと思いつけてよかったです。