2017-05-04 7 views
1

Pythonで失敗した配信試行の電子メール返信やその他の自動応答をどのように検出しますか?バウンス電子メールを検出する方法

私は、カスタムWebアプリケーション内で電子メールやコメントの間でメッセージを中継するための簡単なサーバーを実装しています。私のコメントモデルは "すべての人に返信"機能をサポートしているので、コメントスレッドの2つの電子メールが無効になると、システムが電子メールを送信し、バウンスバック電子メールを取得し、これを他の人に中継する無限の電子メールチェーンが存在する可能性があります無効な電子メール、バウンスバック電子メールを受信し、これを最初の広告無限に中継します。

私はこれを避けたいと思います。 Pythonのimaplibパッケージで理想的にチェックできる電子メールのバウンスまたは拒否に標準エラーコードが使用されていますか?

答えて

1

Wikipediaは、この問題に関するいくつかの良い情報を持っています。 RFC6522は、SMTPサーバーからの任意の管理メッセージのエラーコードをエラー500としています。
エラー500でエラーメッセージを聞くことができます。それはうまくいくはずです。

人間が読める:管理メッセージの報告のためのフォーマットは RFC 6522. A DSNで定義され

ウィキペディアを引用
は、MIMEマルチパート/レポート 三つの部分で構成メッセージであってもよいです説明;マシンは解析可能な メッセージ/配信ステータス、 がいくつかの可能なフィールドを記述する "名前:タイプ;値"の行のリスト。元のメッセージ、またはその一部分 を、メッセージ/ rfc822タイプのエンティティとして送信します。 DSN の2番目の部分もかなり読みやすくなっています。どのMTAがどの役割を果たしたのか理解することは不可欠です。 Reporting-MTAは、DSNを構成し、送信する責任を負います( )。

SMTPトランザクション中にRemote-MTAがメッセージを拒否した場合は、smtpタイプの フィールドDiagnostic-Codeフィールドを使用してその値を報告できます。 数値3桁の値の横には、SMTP応答 には人間が読み取り可能な部分が含まれています。情報

リモートMTA:dns; smtp.store.example [192.0.2.3]診断コード:smtp; smtp.store.example [192.0.2.3] RCPT TOに話している間、ここでそのようなユーザーは、時々、例えば、として報告されていない:< < < 550ここではそのようなユーザー

私はわからないん私はPythonの初心者ですから、imaplibについて。

1

SMTPエンベロープのアドレスは、RFC822のヘッダーのアドレスと同じであってはなりません。 SMTPエラーはバウンスアドレスに送られますが、実際のメールは差出人アドレスに送られます。メーリングリストの管理者は、配送ごとに異なる封筒のFromアドレスを使用して、問題を検出するのにVERPを使用します。

0

そのReturn-PathFromではない場合、またはそのAuto-SubmittedまたはX-Loopヘッダフィールドを含むメッセージに反応しないようにするか、それはタイプのマルチパート/レポートとボディ部を持っています。

送信メールにAuto-Submitted: auto-generatedを指定することもできます。 Maxが言っているようにすれば、それは問題の世話をしますが、Auto-Submittedは高価ではないと私は期待しています。

関連する問題