PHPやPerlでメール配信システムを構築しています。
バウンスメールに対してプログラムを起動させ、配信出来なかったメールアドレスは次回以降の配信時に除外するようにしています。
具体的には、送信時にReturn-pathに専用のメールアドレスを指定し、メールサーバの転送設定でそのメールアドレスに届いた場合は規定のプログラムにメールの内容を渡すようにしています。
それを受け取ったプログラムはメールのヘッダ情報から配信先や各種情報を読み取り、データベースを更新して次回以降無効なメールアドレス宛にメールを送らないようになっています。
ここまではネット上の情報を頼りにして希望の機能が実現出来ましたが、不明な点も出てきました。
リターンパスの専用メールアドレス(ドメイン)はDNSにMXレコードの設定を行っていません。
それでもこの仕組が機能するのは、ローカル配送のおかげでしょうか?
もしその場合、全てのバウンスメールは必ずローカル配送となるのでしょうか?
私が疑問に思ったのは、まずメール配送の仕組みが、下記の様になっていると考えていたからです。
- sender@example.comがreceiver@example.jpにメール送信
- sender@example.comの送信したメールはsender@example.comのサーバからインターネット上に出て、receiver@example.jpのサーバを探す
- receiver@example.jpのサーバがユーザー不在や何らかの原因で受信拒否をした場合、receiver@example.jpのサーバがsender@example.comのサーバに(バウンス)メールを送信
- sender@example.comのサーバはバウンスメールを受信し、sender@example.comのユーザーは届かなかった事に気付く
(ポストに投函した郵便は宛先住所に届いたが、当人は引っ越ししていてもうその住所にはいない為、そこの住人がもう居ないと差出人に返信するイメージ)
上記の様な流れであれば、receiver@example.jpのサーバはsender@example.comの宛先サーバが分からなければバウンスメールを届けられ(返せ)ないのではないかと心配をしたのですが、前述の通り、example.comのMXレコードは設定していません。
(つまり郵便物に差出人住所を記載していない)
それでも上手く行くと言う事は、上記のやりとりは郵便の様に非対面・非同期で行われているのではなく、対面で同期実行されているのではないかと言う仮説にいたりました。
(郵便受取時に郵便屋さんに受け取り拒否をしたので郵便屋さんがsender@example.comに差し戻すイメージ)
しかし、バウンスメールの全てが上記の仮説通りであれば問題ないのですが、一部の理由の場合1~4の様な流れを取っているケースが存在すれば、現在はバウンスメールを受け取る事が出来ず、相手先に届いたと判断しているのではないかと言う不安が残ります。
実際のところ、メール配送の仕組みはどの様なものなのでしょうか?
サルでもわかるようにご説明いただけるか、参考になるサイトを教えていただけると助かります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/21 23:19