2013-06-18 9 views
15

Ich bin neu bei Exim und ich benutze es als Smarthost (um E-Mails von Benutzern zu erhalten und an meinen ISP zu senden). enter image description hereExim - Viele gefrorene Nachrichten ohne Absender

Das System funktioniert ok, aber ich habe einige Probleme mit eingefrorenen Nachrichten. Ich beobachte die Warteschlange manchmal und es gibt einige eingefrorene Nachrichten ohne Absender, also kann Exim sie nicht senden, weil wenn es keinen Absender gibt, kann sie nicht mit dem ISP authentifizieren.

Wo kann ich mit dem Debuggen beginnen?

Dank eine Millon.

Antwort

20

Dies sind Bounce-Nachrichten. Etwas sendet Nachrichten über Ihren Mail-Server, aber der Empfänger akzeptiert sie nicht, daher generiert Ihr System eine Bounce-Nachricht. Diese Bounce-Nachrichten werden ebenfalls abgelehnt, so dass sie von der Exim-MTA "eingefroren" werden. Sie müssen herausfinden, woher die Nachrichten ursprünglich stammen und den Fluss dieser nicht autorisierten Nachrichten stoppen.

exigrep 1UorWC-0002Nz-Mz /var/log/exim/main.log (oder was auch immer Ihr Weg ist)

, dass die Bounce-Nachricht in den Mail-Protokollen finden. Ich nahm eine gefrorene Nachricht in der Post-Warteschlange als ein Beispiel (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) 

Die erste Zeile sagt, dass die Bounce-Nachricht 1UosOk-0000ej-KG in Reaktion auf die Nachricht erstellt wurde 1UosOf -0000bX-B (das ist, was der R = Ausdruck in der < = Zeile bedeutet). Suchen Sie nun nach THAT Nachrichten-ID, um herauszufinden, woher diese Nachricht tatsächlich kam. In meinem Fall war es keine Bounce-Nachricht, es war ein Autoresponder des Kunden:

# 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 

Sobald Sie herausfinden, was Prozess benutzt wird, diese Nachrichten durch das System zu schicken, können Sie Schritte unternehmen, um zu verhindern, angenommen, dass es sich nicht um gültige Nachrichten handelt. Welche Schritte Sie unternehmen, hängt stark davon ab, was Sie finden.

Normalerweise möchten Sie nicht versuchen, diese eingefrorenen Nachrichten erneut zu senden. Wenn die Nachrichten jedoch aufgrund eines temporären Netzwerk- oder Konfigurationsfehlers eingefroren wurden und Sie möchten, dass exim sie erneut sendet, müssen Sie eine Liste der eingefrorenen Nachrichten erstellen und Exim anweisen, sie zuzustellen. Der einfachste Weg ist mit dem exiqgrep-Programm:

exiqgrep -z -i | xargs -n 1 exim -M 
+0

Hallo, habe ich heute erlebt. Gut erklärt. Wie senden Sie diese eingefrorenen Nachrichten erneut? Und welche Schritte werden unternommen, um sie normalerweise genau zu verhindern? Vielen Dank! – jagc

+0

Hinzugefügt einen Absatz, der erklärt, wie man erneut sendet. –

13

Frozen-Mails sind in Exim-Warteschlange nutzlos. Sie können alle entfernen, um die Liste der exim-Warteschlangen zu reduzieren.

Der folgende Befehl alle gefrorenen Mails entfernen:

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

oder

exiqgrep -z -i | xargs exim -Mrm

Wenn Sie gefrorene Mails, die älter als eine bestimmte Stunden entfernt werden soll, beispielsweise 24 Stunden :

exiqgrep -zi -o 86400 | xargs exim -Mrm

86400 steht für 24 Stunden in Sekunden. Das kann entsprechend geändert werden.

+2

Das sind gute Vorschläge zur Warteschlangenverwaltung. IMHO, der Befehl exiqgrep ist immer besser zu verwenden als die Ausgabe von exim -bpr (aka 'mailq' Befehl). Es wird immer eine konsistente und kontrollierte Ausgabe erzeugen. –

5

Eingefrorene Bounces können automatisch durch exim gelöscht werden, indem die Konfigurationsoption ignore_bounce_errors_after auf einen geeigneten Wert gesetzt wird, z.

ignore_bounce_errors_after = 12h 

werden diese Bounce-Fehler nach 12 Stunden automatisch entfernen.

+0

Sie sollten auch 'timeout_frozen_after = 1d' hinzufügen, um eingefrorene Nachrichten, die älter als ein Tag sind, abzubrechen (zu entfernen). – andreszs

Verwandte Themen