バウンス アドレス

メール & セキュリティ
電子メールが配信できない場合に、配信不能レポート (バウンス) に使用される返信先アドレス。
← 用語集に戻る

バウンスアドレスとは?

バックパスまたは封筒の送信者とも呼ばれるバウンスアドレスは、メールが配信できない場合、非配達レポート(NDR)を受け取るメールアドレスです。 このアドレスは、受信者に表示される「From」アドレスから分離され、自動配信通知のためにのみ使用されます。

バウンスアドレスの仕組み

メール送信には2つのアドレスを使用します。

Header From(受取人に可)
From: John Doe <[email protected]>

**(SMTPレベル、バウンスに使用されます):

MAIL FROM: <[email protected]>

配達が失敗すると、受信サーバーは、ヘッダ From アドレスではなく、封筒送信者にバウンスを送ります。

SMTP 会話例

Client: MAIL FROM: <[email protected]>

Server: 250 OK

Client: RCPT TO: <[email protected]>

Server: 550 No such user here

Client: QUIT

# Later, server sends bounce to [email protected]

メールバウンスの種類

ハードバウンス

永久的な配達失敗:

アクション: メーリングリストからすぐにアドレスを削除します。

ソフトバウンス

一時的な失敗:

-メッセージが大きすぎる:552メッセージサイズが上限を超えた Action:複数の柔らかいバウンスの後で配達を、取除いて下さい。

ブロックバウンス

実行可能性の問題:

-IP blacklisted: 554 サービスの利用できなくなった; Sender IP ブロック

-スパムとしてフィルタリングされたコンテンツ: 550 スパムスコアも高い

アクション:送信者の評判と認証を調べる。

バウンスアドレスの設定

メールヘッダーのリターンパスの設定

PHP (メール機能):
$to = "[email protected]";

$subject = "Test Email";

$message = "Email body";

$headers = "From: [email protected]\r\n";

$headers .= "Return-Path: [email protected]\r\n";

mail($to, $subject, $message, $headers, "-f [email protected]");

PHPMailer:
$mail = new PHPMailer();

$mail->From = "[email protected]";

$mail->Sender = "[email protected]"; // Return path

$mail->addAddress("[email protected]");

$mail->Subject = "Test Email";

$mail->send();

ポストフィックス(SMTP):
# /etc/postfix/main.cf

sender_canonical_maps = hash:/etc/postfix/sender_canonical

# /etc/postfix/sender_canonical

@example.com [email protected]

# Apply changes

postmap /etc/postfix/sender_canonical

systemctl reload postfix

専用のバウンス処理サービス

ほとんどの電子メールサービスプロバイダはバウンス管理を提供します:

アマゾンSES:
{

"Message": {

"Subject": "Test",

"From": "[email protected]",

"ReturnPath": "[email protected]"

}

}

SendGrid**:
const msg = {

to: '[email protected]',

from: '[email protected]',

replyTo: '[email protected]',

return_path: '[email protected]',

subject: 'Test Email',

text: 'Email body'

};

バウンスアドレスの命名規則

サブドメイン方式

[email protected]           # General bounces

[email protected] # No-reply emails

[email protected] # Returns/receipts

キャンペーン固有のアドレス

キャンペーンごとのバウンスを追跡:

[email protected]

[email protected]

[email protected]

可変エンベロープリターンパス(VERP)

バウンスアドレスで受信者をエンコード:

Sending to: [email protected]

Return path: [email protected]

When bounce arrives at bounces+*, parse to identify failed recipient

バウンスメッセージの処理

自動バウンスパーシング

Pythonの例:
import email

from email import policy

def parse_bounce(raw_email):

msg = email.message_from_string(raw_email, policy=policy.default)

# Extract bounce type

if "550" in msg.get_payload():

return "hard_bounce"

elif "452" in msg.get_payload():

return "soft_bounce"

# Extract failed recipient

for part in msg.walk():

if part.get_content_type() == "message/delivery-status":

# Parse delivery status

pass

return bounce_info

# Integrate with mailing list to remove hard bounces

Webhookベースのバウンス処理

現代ESPはwebhooksを提供します:

SendGrid Webhook:
POST /bounce-webhook

{

"email": "[email protected]",

"event": "bounce",

"reason": "550 5.1.1 User unknown",

"type": "blocked",

"status": "5.0.0"

}

アクション: データベースを更新して、メールをバウンスとしてマークします。

SPFとBounceアドレス

SPFは、ヘッダではなく、封筒の送信者(バウンスアドレス)をチェックします。

Message:

From: [email protected] (header)

Return-Path: [email protected] (envelope)

SPF Check:

Queries: mail-server.com TXT record (not example.com)

Must include sending IP in mail-server.com's SPF

バウンスドメインSPF構成

bounces.example.com.    IN    TXT    "v=spf1 include:_spf.sendgrid.net ~all"

あなたのバウンスサブドメインが、送信インフラに適したSPFレコードを持っていることを確認してください。

バウンスアドレスベストプラクティス

専用バウンスアドレスを使用する

最初のメールをバウンスに使用することはありません。

# Bad

Return-Path: [email protected]

# Good

Return-Path: [email protected]

モニター バウンス率

バウンス率評価評価アクション
< 2%ヘルシーモニタリングの継続
25%のお問い合わせ監査メールリストの品質
5~10%ポアー必要な即時のリストのクリーニング
・10%クリティカルリスクの達成性

バウンス処理を実装する

堅い警備員の取り外しを自動化して下さい:

-- Mark emails with hard bounces

UPDATE mailing_list

SET status = 'bounced', bounce_count = bounce_count + 1

WHERE email IN (SELECT email FROM recent_hard_bounces);

-- Remove after 3 hard bounces

DELETE FROM mailing_list

WHERE bounce_count >= 3;

トランザクションメールとマーケティングメールを分離する

[email protected]  # Order confirmations, receipts

[email protected] # Newsletters, campaigns

各タイプごとに異なるバウンス率が期待されます。

バウンス処理自動化の設定

Cronジョブ例:
#!/bin/bash

# Process bounces every hour

# Fetch bounces from IMAP

fetchmail -c /etc/fetchmailrc

# Parse and update database

/usr/local/bin/process-bounces.py

# Clean up processed bounces older than 30 days

find /var/mail/bounces -mtime +30 -delete

バックスキャッターとバウンスセキュリティ

バックスキャッターの問題

サーバがスパムを受信し、それをバウンスすると、偽造されたアドレスに送信されます。

1. Spammer sends email with forged From

2. Your server accepts it

3. Your server realizes it's spam/invalid

4. Your server bounces to forged From address

5. Innocent party receives bounce (backscatter)

ソリューション: SMTPの時間で注入して下さい、それから跳ね上がりません:
# Postfix: Reject unknown users at SMTP time

smtpd_recipient_restrictions = reject_unauth_destination

local_recipient_maps = hash:/etc/postfix/local_recipients

バウンスの偽造

攻撃者はバウンスメッセージを強制することができます:

評価:

一般的なバウンスシナリオ

シナリオ1: すべてのメールがバウンスする

原因:SPF障害、IPブラックリスト、またはサーバーの評判 チェック:SPFレコード、送信者IPの評判、DMARCレポート

シナリオ2: バウンスを受信できない

原因: バウンスアドレスの誤設定や存在しない チェック: バウンスドメインのMXレコード、メールボックスが存在します

シナリオ3: ソフトバウンス率が高い

原因: 受信サーバーの過負荷、制限速度、大きなメッセージ チェック: レート、メッセージサイズ、受信サーバーエラーの送信

シナリオ4: バウンスループ

原因: バウンスアドレスは自動返信をトリガーし、別のバウンスをトリガーします。 チェック: バウンスアドレスで自動応答を無効にする

バウンス処理のテスト

無効な受信者とテストメールを送信します:
# Test bounce to invalid address

swaks --to [email protected] \

--from [email protected] \

--server mx.test-domain.com

# Check if bounce arrives at [email protected]

バウンスドメインのSPFを検証:
dig bounces.example.com TXT

# Should show SPF record with authorized senders

適切なバウンスアドレス管理は、送信者の評判、リスト衛生、および提供性を維持するために不可欠です。

この知識を実践する

DomScan の API を使用してドメインの可用性、状態などを確認します。