web-dev-qa-db-ja.com

Exim-送信者なしの大量の凍結メッセージ

私はEximを初めて使用し、スマートホストとして使用しています(ユーザーからの電子メールを受信して​​ISPに送信するため)。 enter image description here

システムは問題なく動作していますが、メッセージがフリーズする問題があります。私は時々キューを監視し、送信者のいないフリーズされたメッセージがいくつかあるので、Eximはそれらを送信できません。送信者がいない場合、ISPで認証できないためです。

これをどこからデバッグできますか?

ミロンに感謝します。

17

これらはバウンスメッセージです。何かがメールサーバーを介してメッセージを送信していますが、受信者はそれを受け入れていないため、システムは返送メッセージを生成します。これらのバウンスメッセージも拒否されているため、exim MTAによって「凍結」されます。メッセージが元々どこから来たかを把握し、それらの不正なメッセージの流れを止める必要があります。

exigrep 1UorWC-0002Nz-Mz /var/log/exim/main.log(またはパスが何であれ)

メールログでバウンスメッセージが見つかります。例としてメールキュー内のフリーズされたメッセージを選択しました(1UosOk-0000ej-KG):

# exigrep 1UosOk-0000ej-KG /var/log/exim/main.log
+++ 1UosOk-0000ej-KG has not completed +++
2013-06-18 09:40:22 1UosOk-0000ej-KG <= <> R=1UosOf-0000bX-BV U=www P=local S=894 
2013-06-18 09:40:24 1UosOk-0000ej-KG ** [email protected] P=<> R=dnslookup_forwarder 
  T=remote_smtp_forwarder: SMTP error from remote mail server after RCPT TO:<[email protected]>: 
  Host mail.example.biz [80.76.197.72]: 554 5.7.1 <[email protected]>: Relay access denied
2013-06-18 09:40:24 1UosOk-0000ej-KG Frozen (delivery error message)

最初の行は、バウンスメッセージ1UosOk-0000ej-KGがメッセージ1UosOf-0000bX-Bに応答して作成されたことを示しています(これは<=のR =句です)行を意味します)。 [〜#〜] that [〜#〜]メッセージIDを検索して、このメッセージが実際にどこから送信されたかを確認します。私の場合、それは返送メッセージではなく、顧客の自動応答でした。

# exigrep 1UosOf-0000bX-BV /var/log/exim/main.log
2013-06-18 09:40:18 1UosOf-0000bX-BV H=example.biz [62.189.29.157] Warning: SPF PASS (pass) to m.ivenue.com: 
  domain of example.biz designates 62.189.29.157 as permitted sender
2013-06-18 09:40:22 1UosOf-0000bX-BV <= [email protected] H=example.biz [62.189.29.157] P=esmtp S=17624
2013-06-18 09:40:22 1UosOf-0000bX-BV => /netapp3/mail/maildirs/b/o/y/boyexample.com/sarah/Maildir/ 
  ([email protected]) <[email protected]> P=<[email protected]> R=virtual_user T=address_directory
2013-06-18 09:40:22 1UosOf-0000bX-BV => sarah <[email protected]> P=<[email protected]> 
  R=autoresponder_always T=autoresponder_always_t
2013-06-18 09:40:22 1UosOf-0000bX-BV Completed

システムを介してこれらのメッセージを送信するために使用されているプロセスを見つけたら、それらが最初から有効なメッセージではないと想定して、メッセージを防ぐための手順を実行できます。どのような手順を踏むかは、見つけた内容によって大きく異なります。

通常は、これらの凍結されたメッセージを再送しようとは思わないでしょう。ただし、一時的なネットワークエラーまたは構成エラーが原因でメッセージが凍結され、eximに再送信させる場合は、凍結されたメッセージのリストを生成し、Eximにそれらを配信するように指示する必要があります。最も簡単な方法は、exiqgrepプログラムを使用することです。

exiqgrep -z -i | xargs -n 1 exim -M
23
Todd Lyons

凍結されたメールはeximキューでは使用されません。これらすべてを削除して、eximキューリストを減らすことができます。

次のコマンドは、凍結されたメールをすべて削除します。

exim -bpr | grep frozen | awk {'print $3'} | xargs exim -Mrm

または

exiqgrep -z -i | xargs exim -Mrm

たとえば24時間など、特定の時間より古い凍結メールを削除する場合は、次のようにします。

exiqgrep -zi -o 86400 | xargs exim -Mrm

86400は24時間を秒で表したものです。これは適宜変更できます。

15
Leo Prince

凍結されたバウンスは、設定オプションignore_bounce_errors_afterを適切な値に設定することで、eximによって自動的に削除できます。

ignore_bounce_errors_after = 12h

これらのバウンスエラーは12時間後に自動的に削除されます。

5
krisku