postfixでバウンスを収集する方法


15

これはこの質問に関連しています:

linux-ニュースレターアプリケーションのバウンスバックレポートを取得する方法 -サーバー障害

ニュースレターを送信してバウンスを特定し、ニュースレターから購読を解除するときに、次のようなメールアドレスを生成するとします。bounce-123456789@ example.com

リターンパスでこれを使用すると思いますか?

次に、「bounce-」というプレフィックスが付いたこれらすべてのアドレスを1つのメールボックスに収集するようにpostfixでどのように設定しますか?

最後に、私は人々がソフトバウンス対ハードバウンスに言及しているのを聞いたことがあります。誰かがその違いを説明し、メールニュースレターから誰かをいつ永久に削除するかを知るためにどのようにカウントすべきかを説明できますか?


「バウンス」という単語を含む電子メールアドレスは、「yuck」...(スパム)として表示されることもありMessage-Idます。誰が誰であるかを確認するのに十分です。
アレクシスウィルケ

回答:


17

質問に対する正確な回答(bounce-xxx@example.comアドレスの処理)は、サーバーがメールを受信するように構成されている方法によって異なります。場合example.comあなたができる最善の収集内のメッセージである仮想ドメインでbounce@example.comのメールボックス(仮定recipient_delimiter = -)。

場合example.com(メールが実際のシステムは、アカウントに配信された)サーバーのローカルに配信ドメインである、あなたは追加できる.forwardのホームディレクトリにファイルをbounceバウンス情報を解析し、データベースやファイルに記録するプログラムに提供し、ユーザー、 。形式のman local詳細.forwardとプログラムへの配信方法については、こちらをご覧ください。

多数のドメインにメッセージを送信するため、bounces.example.com私たちが行うことは、VERPドメインとして使用することです。このドメインをに追加する必要がありますrelay_domains/etc/postfix/transport_mapsこのコンテンツで作成:

bounces.example.com             bulkbounce:

次に、次のような行を追加します/etc/postfix/master.cf

バルクバウンスUNIX-nn--パイプ
  user = nobody argv = / usr / local / bin / bounce_handler.py $ {recipient}

bounce_handler.pyスクリプトは、そのコマンドラインオプションとしてVERPアドレスを受け入れ、それを解析し、バウンスを記録するために必要なデータベースの更新を行います。


ああ、受信者のデリミターを使ってグループ化するアイデアが好きです。通常、+が使用されますか?うまくいくと思います、ありがとう!
ブライアンアームストロング

11

実際、多くの異なるドメインをサポートしたい場合、Instyleの答えを実装するのは非常に難しく、それは次の理由により間違っています。

a)の例ではtransport_maps、そのドメインに送信されるすべての電子メールは、その電子メールがバウンス電子メールであるかどうかに関係なく、その特定のサービスに送信されます。特定のドメイン名を使用するため、実際にはバウンスされた電子メールのみである必要があります...しかし、そのように保証することはできません。

b)スクリプトに送信されるデータは、バウンスメッセージではなく、メール自体です。言い換えれば、あなたのコードは、なぜメールがバウンスされたのか分からないかもしれません(つまり、ローカルバウンスは元のメールのみを送信します)。


postfixでその設定を行う正しい方法は、バウンス通知クラスを使用することです。

1)/etc/postfix/main.cf

notify_classes = bounce
bounce_notice_recipient = bounces@example.com
transport_maps = hash:/etc/postfix/transport_maps

2)/ etc / postfix / transport_maps

# when you make changes to this file, run:
#   sudo postmap /etc/postfix/transport_maps
bounces@example.com bulkbounce:

ご覧のとおりbounces@example.com、メールがバウンスされるたびにpostfixを使用するようになりました。次に、トランスポートマップで、へのbulkbounce電子メールアドレスを処理するサービスとして使用しbounces@example.comます。

最後にbulkbounce、スクリプトで定義できます。

3)/etc/postfix/master.cf

bulkbounce unix -       n       n       -       -       pipe
  flags=FRq user=bounce argv=/home/bounce/bin/snapbounce --sender ${sender} --recipient ${recipient}

このスクリプトでは、ユーザーが必要です。nobody良い選択です。特定のユーザーが必要な場合は、次の方法で作成できます。

useradd bounce

のスクリプトがないmaster.cf場合、メールはバルクバウンスアカウントに送信されます。したがって、ファイルから電子メールを解析するスクリプトがある場合、これは変更なしで機能transport_mapsmaster.cfます。


以下のコメントから:

fyi-re:double bounces ...
リターンアドレス(などのVERPアドレス)を変更する場合、スクリプトでのみバウンスの解析に関心がある場合は、のuser+id@fromdomain.com行をコメントアウトする必要があります。main.cfbounce_notice_recipient+id


あなたの方法を使用して、私は何らかの方法で2回バウンスを受け取ります.1回はbounce + id @ ...で、1回はbounce @ ...でダブルバウンスから-(ユーザーバウンスは実際にはシステムに存在しません-私は意図しないのでこれらのメールを「保存」します)。電子メールは、bounce + id @のReturn-pathで送信されます。
-RVandersteen

@RVandersteenなぜあなたはそれを二度手に入れるかわからない あるもの+id@は何らかの包み込みかもしれませんか?
アレクシスウィルク

デフォルトの「送信元」アドレスを使用すると、バウンスはbounce@example.comおよびoriginalfrom@example.comに送信されます(リターンパスはもう追加されません)
RVandersteen

1
将来の参照のために、notify_classesを追加しても、バウンスメッセージをFROM /リターンパスに送信するMTAの動作は変わりません。その上に動作を追加します(notify_bounce_recipientにも送信します)。私が来て、二重のメールを持っていた理由はここにあるの上に私の質問(複数可)を答えるどの。
RVandersteen

1
fyi-re:double bounces ..返信アドレス( 'user+id@fromdomain.com'などのVERPアドレス)を変更している場合は、main.cfの 'bounce_notice_recipient'の行をコメントアウトします。スクリプトでのみ+ idバウンスの解析に興味がある場合
-sarora

1

最新のメーリングリストソフトウェアは、MTAがメーリングリストソフトウェアにメッセージを返すように適切に設定されている場合、VERPメッセージを処理する方法をすでに知っています。の場合GNU Mailman「-delimiter(Postfix recipient_delimiter)でVERPを使用するにはどうすればよいですか?」という適切な名前のFAQページをチェックアウトする必要があります。

これを処理するために独自のカスタムニュースレターソフトウェアを作成している場合は、タスクを既に簡単に処理できる既存のアプリケーションを使用するのではなく、なぜ車輪を再発明するのかを自問する必要があります。


うん、私は自分のニュースレターソフトウェアを作っています。正当な理由があります!
ブライアンアームストロング

次に、VERPを使用してバウンスを適切に処理することを検討する必要があります。
ジェレミーブーゼ2009

こんにちはジェレミー、あなたは正しいと思います。ここではVERPが標準的なソリューションです。ただし、送信者と受信者を特定することだけが役立つようです。この場合、バウンスの原因となった特定のメッセージも特定する必要があるため、アドレスに独自のIDを使用してカスタムソリューションを実行する必要があると思います。受信者デリミタを使用した以下のソリューションにより、1つのバウンスアカウントにグループ化できると思います。助けてくれて感謝していますが、対応してくれてありがとう!
ブライアンアームストロング

Insyteのソリューションは、中核にある修正されたVERPです。バウンスハンドラーがそれを識別するのに十分な一意の識別子を提供することを確認する必要があります。ほとんどのメーリングリストソフトウェアでは、これはメールアドレスですが、自分で設計しているので何でもかまいません。
ジェレミーボーズ2009
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.