harukiです。
メールを送信するサイトの場合、メールアドレスのクリーニングは定期的に行うべきです。 そのためにはエラーメールを解析しなければなりません。
そこで、エラーメールの種類をまとめてみました。
SMTPエラー
存在しないメールアドレスや、正しい形式でないメールアドレスの場合は、 DoCoMo,au,SoftBankの3キャリアともSMTPエラーになります。
例として、以下の条件でメールを送信したとします。
From: sender@example.com
Return-Path: bounce@example.com
To: アドレス@docomo.ne.jp
MTAにより異なりますので、ここではPostfixを例にします。
Postfixではmultipart/reportのメールがbounce@example.comに届きます
(※ 必要な情報のみに省略しています)
From: MAILER-DAEMON@example.com (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: bounce@example.com
Content-Type: multipart/report; report-type=delivery-status;
boundary="boudary/example.com"
This is a MIME-encapsulated message.
--boudary/example.com
Content-Description: Notification
Content-Type: text/plain
(メッセージ)
<アドレス@docomo.ne.jp>: host mfsmax.docomo.ne.jp[203.138.180.240] said: 550
Unknown user アドレス@docomo.ne.jp (in reply to end of DATA command)
--boudary/example.com
Content-Description: Delivery report
Content-Type: message/delivery-status
X-Postfix-Sender: rfc822; sender@example.com
Final-Recipient: rfc822; アドレス@docomo.ne.jp
Action: failed
Status: 5.0.0
Diagnostic-Code: X-Postfix; host mfsmax.docomo.ne.jp[203.138.180.240] said: 550
Unknown user アドレス@docomo.ne.jp (in reply to end of DATA
command)
--boudary/example.com
Content-Description: Undelivered Message
Content-Type: message/rfc822
(ヘッダ)
From: sender@example.com
To: アドレス@docomo.ne.jp
(本文)
--boudary/example.com--
Content-Type: message/rfc822のToから、「アドレス@docomo.ne.jp」を取得できます。
特殊なエラーメール
auとSoftBankでは、上記のエラーに加えて、一旦受信されてから送り返されてくるものがあります。
種類は4つあります。
(※ ここでも必要な情報のみに省略しています)
- 1. multipart/report
- 2. text/plain
- 3. multipart/mixed
- 4. multipart/mixed(自動転送先)
1. multipart/report
Postfixの例で書いたものがサーバから送られてきます。
auとSoftBankにこのタイプがあります。
2. text/plain
拒否している場合のauのエラーメールです。
※ <アドレス@ezweb.ne.jp>の行がない場合もあります。
Content-Type: text/plain; charset=iso-2022-jp
From: Postmaster@ezweb.ne.jp
To: bounce@example.com
Subject: Mail System Error - Returned Mail
次のあて先へのメッセージはエラーのため送信できませんでした。
<アドレス@ezweb.ne.jp>
送信先メールアドレスが見つからないか、
送信先メールサーバの事由により送信できませんでした。
メールアドレスをご確認の上、再送信してください。
Each of the following recipients was rejected by a remote mail server.