質問: システム上のメール送信で、送信側(プログラムの送信メソッドの戻り値等)は正常で、受信側に到達しないということはあり得るのでしょうか? あり得るとすれば送信側は対策をどのように行うべきかも「任意」でお答えいただけると幸いです。今回は受信側の立場でしたが、それがシェアされ、エンジニアとして今後開発する上で教訓となればと思います。 先日、あるサービスの新規登録(仮会員→本会員という流れ)を行う際に、メールアドレスの確認メールがサービス側からこちらに届かないということがありました。 サービスの問い合わせ窓口に問い合わせたところ、**結論として以下の回答**が来ました。 ※**事前に**登録したメールアドレスとシステムの送信先が一致しているか確認(結果:一致)を取っています > > 弊社のシステム上で自動送信しておりますため、送信履歴の確認は行なえませんが、正常に動作しておりますことを確認しております。 > > > しかしながら、迷惑メールフォルダ等含めいくらメールボックスを調べてもメールは届いていませんでした。 受信拒否もしていません。 こちらのメールボックスを見せるわけにはいかないですし、先方もシステムのアーキテクチャやログ等を開示しないため、このまま先方の言っている(受信側のメーラー等に原因があるという)ことを受け入れるしかないという状況です。 先方がメールをシステム上で自動送信しているといっているので、 ここで正常と言っているのは「システム上のプログラムの送信メソッドが例外なく処理された」ということだと思うのですが、この送信メソッドが何を持って(送信側のSMTPサーバからどの時点の判定結果をもって)正常とするのか理解することが解決の道だと思っています。 半日ほど調べて、メール送信はSMTPというプロトコルでやり取りされ、そのプロトコルの概要までは自力で調べることができたのですが、送信側のSMTPサーバがどのタイミングの判定結果(OK or NG)でレスポンスを返すのか調べてもわかりませんでした。自分でも考えましたがタイミングは以下しか思いつきませんでした。 * 送信側のSMTPサーバがメールを保存したタイミング(プログラム↔送信側SMTPサーバ) * 受信側のSMTPサーバがメールを保存したタイミング(プログラム↔送信側SMTPサーバ↔受信側SMTPサーバ) * POPまたはIMAPでクライアントが取得したタイミング(プログラム↔送信側SMTPサーバ↔受信側SMTPサーバ↔メールクライアント) 本当は、何が原因でメールがどこでロストしたのか特定したいのですが、双方非公開の環境のため諦めています。 ですので、冒頭の質問に対して論理的に説明出来る方いらっしゃいましたら、ご回答願います。 よろしくお願いいたします。
回答: むしろ数えきれないくらいあります。 受信サーバのメールボックスを受信後に消してしまえば、そういう事象になりますし。 ある基準により別のサーバに転送することもあります。 あるいは、メールアドレスが1文字違って 別の誰かに送信されていたり。 送信側・受信側のサーバの中身を見られない限り、実際に何が起きたかを説明することは不可能に近いでしょう。