foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

存在しない宛先へ送信してしまった際のメール アドレスを判定する

問題

存在しない宛先へ何度もメールを送らないようにしたい。
そのため、宛先不明で戻ってきたエラーメールのアドレスを判定したい。

解決方法

Error-To カスタムヘッダを利用する。
Error-To という既定のヘッダがあるのだと勘違いしてました。
RFC で定義しているヘッダ名と衝突しなければ、ヘッダ名は任意でいいみたいです。

Error-To ヘッダ

名前から「エラー発生時にメッセージを転送するアドレス」であると捉えてしまいそうだが、実際にはメールの転送は起きない。
あらかじめ Error-To に送信先と同じアドレスをセットしておく。
エラー時発生にメッセージは送信元へ戻る。
この時、戻ってきたメッセージの Error-To には送信時の内容が記録されている。

Return-Path

似たような名前で Return-Path ヘッダがある。
しかし、このヘッダは今回の目的には利用できない。
Return-Path ヘッダは送信先のサーバが設定するヘッダである。
実際には、送信先サーバで Envelope-From を Return-Path へ設定するらしい。