質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
IMAP

IMAP (Internet Message Access Protocol) とは、メールサーバー上の電子メールデータを操作するためのプロトコルです。

POP

POP(Post Office Protocol)とは、電子メールで使用される受信プロトコル(通信規約)です。SMTPで転送されたメールを一時的に保管し、そのメールをサーバから取り出す際に使用します。

SMTP

SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

Q&A

解決済

5回答

7358閲覧

メールの送信側は正常でも受信側に届かないことはあり得るのか

退会済みユーザー

退会済みユーザー

総合スコア0

IMAP

IMAP (Internet Message Access Protocol) とは、メールサーバー上の電子メールデータを操作するためのプロトコルです。

POP

POP(Post Office Protocol)とは、電子メールで使用される受信プロトコル(通信規約)です。SMTPで転送されたメールを一時的に保管し、そのメールをサーバから取り出す際に使用します。

SMTP

SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

0グッド

1クリップ

投稿2018/10/04 06:38

編集2018/10/04 06:58

システム上のメール送信で、送信側(プログラムの送信メソッドの戻り値等)は正常で、受信側に到達しないということはあり得るのでしょうか?
あり得るとすれば送信側は対策をどのように行うべきかも「任意」でお答えいただけると幸いです。今回は受信側の立場でしたが、それがシェアされ、エンジニアとして今後開発する上で教訓となればと思います。

先日、あるサービスの新規登録(仮会員→本会員という流れ)を行う際に、メールアドレスの確認メールがサービス側からこちらに届かないということがありました。

サービスの問い合わせ窓口に問い合わせたところ、結論として以下の回答が来ました。
事前に登録したメールアドレスとシステムの送信先が一致しているか確認(結果:一致)を取っています

弊社のシステム上で自動送信しておりますため、送信履歴の確認は行なえませんが、正常に動作しておりますことを確認しております。

しかしながら、迷惑メールフォルダ等含めいくらメールボックスを調べてもメールは届いていませんでした。
受信拒否もしていません。

こちらのメールボックスを見せるわけにはいかないですし、先方もシステムのアーキテクチャやログ等を開示しないため、このまま先方の言っている(受信側のメーラー等に原因があるという)ことを受け入れるしかないという状況です。

先方がメールをシステム上で自動送信しているといっているので、
ここで正常と言っているのは「システム上のプログラムの送信メソッドが例外なく処理された」ということだと思うのですが、この送信メソッドが何を持って(送信側のSMTPサーバからどの時点の判定結果をもって)正常とするのか理解することが解決の道だと思っています。

半日ほど調べて、メール送信はSMTPというプロトコルでやり取りされ、そのプロトコルの概要までは自力で調べることができたのですが、送信側のSMTPサーバがどのタイミングの判定結果(OK or NG)でレスポンスを返すのか調べてもわかりませんでした。自分でも考えましたがタイミングは以下しか思いつきませんでした。

  • 送信側のSMTPサーバがメールを保存したタイミング(プログラム↔送信側SMTPサーバ)
  • 受信側のSMTPサーバがメールを保存したタイミング(プログラム↔送信側SMTPサーバ↔受信側SMTPサーバ)
  • POPまたはIMAPでクライアントが取得したタイミング(プログラム↔送信側SMTPサーバ↔受信側SMTPサーバ↔メールクライアント)

本当は、何が原因でメールがどこでロストしたのか特定したいのですが、双方非公開の環境のため諦めています。
ですので、冒頭の質問に対して論理的に説明出来る方いらっしゃいましたら、ご回答願います。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

インターネットメールの流れを順にたどると、
送信元のメールが、メールクライアント(あるいはコマンドライン等)から、送信元のメールサーバーに送信される
→送信元のメールサーバーが、宛先のメールサーバーを特定する(DNS MX レコード)
→送信元から宛先のメールサーバーに送信する (※このとき、中継メールサーバーをいくつも経由している場合もあります)
→受信者が、宛先のメールサーバーから取り出す

という流れになります。
そしてインターネットメールは、基本的に「直接アクセスしているサーバー」以外の動作状況を知ることができません。送信者は自分のメールが送信元メールサーバに受け取られたことは分かるのですが、極端な話をすれば送信元から先に進んだかどうかさえ必ずしも知ることができません。

さらに言えば各メールサーバーの挙動として、宛先不明だった場合に突っ返すか、あるいは受け取って無視するか、どっちで動いているか知ることもできません。
※後者の挙動は主に迷惑メールなどの対策用で、「生きているメールアドレスかどうか分からなくする」ためにやっていたりします

なので、開封確認をお願いでもしていない場合は、各メールサーバーの送受信ログでも取っていなければ届いているかどうかは分からないでしょう。

投稿2018/10/04 07:58

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

むしろ数えきれないくらいあります。

 受信サーバのメールボックスを受信後に消してしまえば、そういう事象になりますし。
ある基準により別のサーバに転送することもあります。
あるいは、メールアドレスが1文字違って 別の誰かに送信されていたり。

 送信側・受信側のサーバの中身を見られない限り、実際に何が起きたかを説明することは不可能に近いでしょう。

投稿2018/10/04 07:03

showkit

総合スコア1638

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

auだとよくありますね。しかも気づかない
https://matome.naver.jp/odai/2147045052147274001

やっとのことで原因を突き止めたのに、迷惑メールがうざいからと言って設定を変更せず、いまだに電話でやり取りしている人がいます。

投稿2018/10/04 07:38

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2018/10/04 07:01

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

システム上のメール送信で、送信側(プログラムの送信メソッドの戻り値等)は正常で、受信側に到達しないということはあり得るのでしょうか?

はい、たとえばこの前に、ソフトバンク宛のメールが誤って消去される事件がありましたが、これも送信側では判別できません。

投稿2018/10/04 06:52

maisumakun

総合スコア145930

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2018/10/04 06:55

PHPのmail関数のヘルプにも、「(返り値は)メールの配送が受け入れられたかどうかが基準であることに注意しましょう。 メールが実際にあて先に届いたかどうかでは『ありません』。」と、その旨が明記してあります。 http://php.net/manual/ja/function.mail.php
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問