Postfix/Warteschlangen: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
K Textersetzung - „z.B.“ durch „z. B. “ |
||
(51 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Postfix: Mailwarteschlange ansehen, flushen und leeren == | == Beschreibung == | ||
Alle ausgehenden eMails werden normalerweise in gewisse “Mailqueues” abgelegt und dort versendet. Konnte eine eMail nicht erfolgreich versendet werden, bleibt diese eMail weiterhin in der Warteschlange. Nach einer gewissen Zeit wird erneut versucht, diese eMail zu versenden. Es kommt häufig vor, dass Benutzer in einen Forum einfach falsche (nicht existierende) eMail Adressen eingeben und der Mailserver versucht, die eMail dennoch abzusenden. Dadurch wächst die Mailwarteschlange stetig an. | Wenn eine E-Mail nicht gesendet werden kann, befindet sie sich in einer von zwei Warteschlangen innerhalb von Postfix: ausstehend und zurückgestellt. ... | ||
* Die Warteschlange für verzögerte E-Mails enthält alle Nachrichten, bei denen ein Soft-Fehler aufgetreten ist und die erneut versucht werden müssen (vorübergehender Fehler). | |||
* Postfix versucht, Nachrichten aus der zurückgestellten Warteschlange in festgelegten Intervallen erneut zu senden. | |||
== Befehle für die Warteschlange == | |||
# postqueue -p. ... | |||
# postcat -q "Warteschlangen-ID" ... | |||
# postqueue -p | grep -c ^ [A-Z0-9] | |||
# postqueue -f. | |||
# postsuper -d ALL. | |||
# postsuper -d ALL aufgeschoben. | |||
# postsuper -d "Warteschlangen-ID" | |||
== Warteschlange prüfen == | |||
Überprüfen der E-Mail-Warteschlange von Postfix. | |||
# Zeigen Sie eine Liste der E-Mails in der Warteschlange an, die zurückgestellt und ausstehend sind. | |||
* mailq. | |||
* oder postqueue -p. ... | |||
# Zeigen Sie die Nachricht (Inhalt, Header und Text) in der Postfix-Warteschlange an. | |||
* Angenommen, die Nachricht hat die ID XXXXXXX (Sie können die ID in der Warteschlange sehen) postcat -vq XXXXXXXXXX. ... | |||
# Weisen Sie Postfix an, die Warteschlange jetzt zu verarbeiten. | |||
== Speicherort == | |||
Postfix speichert E-Mails, die darauf warten, gesendet zu werden, im Warteschlangenverzeichnis. | |||
* Postfix verwendet für jede der oben genannten Warteschlangen ein separates Verzeichnis. | |||
* Das Standardverzeichnis für diese Warteschlangen lautet: | |||
/var/spool/postfix/ | |||
active corrupt deferred etc hold lib pid public trace | |||
bounce defer dev flush incoming maildrop private saved usr | |||
Siehe [[postconf]] für den aktuellen Wert. | |||
== Warteschlange löschen == | |||
* Sie sollten den Befehl postsuper verwenden, um Nachrichten aus der Postfix-Warteschlange zu löschen | |||
* Das -d <queueid> Option würde die Nachricht mit der angegebenen Warteschlangen-ID löschen. | |||
== Warteschlange prüfen == | |||
Verwenden Sie den Warteschlangen-Viewer, um die Eigenschaften einer Nachricht anzuzeigen | |||
# Doppelklicken Sie in der Exchange-Toolbox im Abschnitt Nachrichtenfluss-Tools auf Queue Viewer, um das Tool in einem neuen Fenster zu öffnen. | |||
# Wählen Sie in der Warteschlangenanzeige die Registerkarte Nachrichten aus, um die Liste der Nachrichten anzuzeigen, die derzeit in Ihrer Organisation zur Zustellung in die Warteschlange gestellt werden. | |||
== Wie funktioniert der Postfix-Mailserver? == | |||
Netzwerkmail wird über die Server smtpd (8) oder qmqpd (8) in Postfix eingegeben. ... | |||
* Lokale Übermittlungen werden mit dem Kompatibilitätsbefehl Postfix sendmail (1) empfangen und vom privilegierten Befehl postdrop (1) in der Maildrop-Warteschlange in die Warteschlange gestellt. | |||
* Diese Anordnung funktioniert auch, wenn das Postfix-Mailsystem nicht ausgeführt wird. | |||
== Warteschlange anzeigen == | |||
Anzeigen von E-Mails unter Linux mit mailq und postcat von postfix | |||
mailq | |||
Druckt eine Liste aller in der Warteschlange befindlichen E-Mails. | |||
postcat -vq [Nachrichten-ID] | |||
Gibt eine bestimmte Nachricht nach ID aus (Sie können die ID in der Ausgabe von mailq sehen) | |||
postqueue -f | |||
Verarbeitet die in der Warteschlange befindlichen E-Mails sofort. | |||
postsuper -d ALL | |||
Löscht ALLE E-Mails in der Warteschlange (mit Vorsicht verwenden - aber praktisch, wenn ein E-Mail-Versand schief geht!) | |||
== Postfix Mail-Protokolle == | |||
Postfix protokolliert alle fehlgeschlagenen und erfolgreichen Zustellungen in einer Protokolldatei. | |||
* Die Datei heißt normalerweise /var/log/maillog oder /var/log/mail. | |||
* Der genaue Pfadname ist in /etc/syslog definiert. | |||
== Was macht Postfix Flush? == | |||
Mail in der Warteschlange spülen | |||
Um die Mail-Warteschlange zu leeren, verwenden wir den Befehl postqueue -f. | |||
* Dieser Befehl versucht, alle in der Warteschlange befindlichen E-Mails erneut zuzustellen. | |||
* Verwenden Sie den Befehl sparsam. | |||
* Mehrere Löschvorgänge wirken sich auf die Gesamtleistung Ihres Mailservers aus. | |||
== Mailwarteschlange ansehen, flushen und leeren == | |||
Alle ausgehenden eMails werden normalerweise in gewisse “Mailqueues” abgelegt und dort versendet. | |||
* Konnte eine eMail nicht erfolgreich versendet werden, bleibt diese eMail weiterhin in der Warteschlange. | |||
* Nach einer gewissen Zeit wird erneut versucht, diese eMail zu versenden. | |||
* Es kommt häufig vor, dass Benutzer in einen Forum einfach falsche (nicht existierende) eMail Adressen eingeben und der Mailserver versucht, die eMail dennoch abzusenden. | |||
* Dadurch wächst die Mailwarteschlange stetig an. | |||
Dafür gibt es drei wichtige Befehle, die man kennen sollte: | Dafür gibt es drei wichtige Befehle, die man kennen sollte: | ||
Zeile 7: | Zeile 83: | ||
mailq | mailq | ||
'''Mailwarteschlange flushen'''(Mails erneut versuchen zu versenden) | '''Mailwarteschlange flushen''' (Mails erneut versuchen zu versenden) | ||
postfix flush | postfix flush | ||
Zeile 13: | Zeile 89: | ||
postsuper -d ALL | postsuper -d ALL | ||
== Befehle == | |||
== | |||
Installierte Version anzeigen | Installierte Version anzeigen | ||
# postconf mail_version | # postconf mail_version | ||
Zeile 44: | Zeile 115: | ||
Mails in tabellenform anzeigen | Mails in tabellenform anzeigen | ||
# qshape | # [[qshape]] | ||
Einzelne Mail ansehen | Einzelne Mail ansehen | ||
Zeile 64: | Zeile 135: | ||
Hier Verweise ich auf den [http://www.itrig.de/index.php?/archives/1801-Linux-Script-Postfix-Mail-Server-Logauswertung-mit-dem-Postfix-Log-Entry-Summarizer.html Pflogsumm Artikel], welcher immer noch Gültigkeit hat. | Hier Verweise ich auf den [http://www.itrig.de/index.php?/archives/1801-Linux-Script-Postfix-Mail-Server-Logauswertung-mit-dem-Postfix-Log-Entry-Summarizer.html Pflogsumm Artikel], welcher immer noch Gültigkeit hat. | ||
# apt install pflogsumm | # apt install pflogsumm | ||
== Mail-Queue aufräumen == | |||
= | |||
Die Mail-Queue ist voll von Spam E-Mails, mit diesem Beitrag gehen wir dagegen vor und räumen auf. [http://www.postfix.org/ Postfix] liefert eigene Mittel um die Warteschlange zu säubern. | Die Mail-Queue ist voll von Spam E-Mails, mit diesem Beitrag gehen wir dagegen vor und räumen auf. [http://www.postfix.org/ Postfix] liefert eigene Mittel um die Warteschlange zu säubern. | ||
Zeile 126: | Zeile 153: | ||
=== E-Mails ausliefern === | === E-Mails ausliefern === | ||
Alle E-Mails ausliefern | ; Alle E-Mails ausliefern | ||
postqueue -f | postqueue -f | ||
Einzelne E-Mail ausliefern | ; Einzelne E-Mail ausliefern | ||
postqueue -i 53FB7BF0650 | postqueue -i 53FB7BF0650 | ||
Zeile 146: | Zeile 173: | ||
postqueue -p | grep MAILER-DAEMON | awk '{print $1}' | tr -d '*' | postsuper -d - | postqueue -p | grep MAILER-DAEMON | awk '{print $1}' | tr -d '*' | postsuper -d - | ||
'''Dr. Web Status Meldungen löschen''' | '''Dr. | ||
* Web Status Meldungen löschen''' | |||
Die Status Meldungen von [https://adminforge.de/antivir/dr-web/dr-web-antivirus-update-e-mail-abschalten/ Dr. Web wurden deaktiviert], nun folgt das Säubern der Mail-Queue. | Die Status Meldungen von [https://adminforge.de/antivir/dr-web/dr-web-antivirus-update-e-mail-abschalten/ Dr. | ||
* Web wurden deaktiviert], nun folgt das Säubern der Mail-Queue. | |||
postqueue -p | grep DrWEB | awk {'print $1'} | sed s/*//g | postsuper -d - | postqueue -p | grep DrWEB | awk {'print $1'} | sed s/*//g | postsuper -d - | ||
Zeile 160: | Zeile 189: | ||
== Spammer aus Postfix Warteschlange entfernen == | == Spammer aus Postfix Warteschlange entfernen == | ||
; Situation | |||
* Spammer versendet SPAMs über unseren Mail-Server. | |||
* Wahrscheinlich hat ein User ein schwaches Kennwort verwendet, welches vielleicht auch noch bei mehreren Diensten benutzt wurde. | |||
Natürlich bleibt das Verhalten nicht lange unbemerkt. | |||
* Und es werden alle relevanten Maßnahmen ergriffen. | |||
Natürlich bleibt das Verhalten nicht lange unbemerkt. Und es werden alle relevanten Maßnahmen ergriffen. # Kennwort des betroffenen Account ändern | # Kennwort des betroffenen Account ändern | ||
# Warteschlange von den SPAM Mails und den Mail Delivery Meldungen befreien | # Warteschlange von den SPAM Mails und den Mail Delivery Meldungen befreien | ||
# Server aus den Blacklisten befreien | # Server aus den Blacklisten befreien | ||
Das Kennwort ist schnell geändert. Dabei sollte das neue Kennwort eine gewisse Komplexität haben. | Das Kennwort ist schnell geändert. | ||
* Dabei sollte das neue Kennwort eine gewisse Komplexität haben. | |||
Doch wie befreit man die Mail- Queue eines Postfix Server? | Doch wie befreit man die Mail- Queue eines Postfix Server? | ||
Die komplette Warteschlange zu löschen, ist keine Option, also muss eine andere Lösung her: | |||
mailq | grep ABC@SPAMMER.de | cut -d" " -f1 | tr -d '*!' | postsuper -d - | mailq | grep ABC@SPAMMER.de | cut -d" " -f1 | tr -d '*!' | postsuper -d - | ||
Nachdem die Queue wieder sauber ist, können wir schauen auf welchen Blacklisten unserer Server gelandet ist | Nachdem die Queue wieder sauber ist, können wir schauen, auf welchen Blacklisten unserer Server gelandet ist | ||
* z. B. über [https://mxtoolbox.com/blacklists.aspx https://mxtoolbox.com/blacklists.aspx] | |||
=== Postfix Mailqueue === | === Postfix Mailqueue === | ||
Normalerweise muss man an der Mailqueue nichts machen, aber es kann vorkommen, dass man Einfluss nehmen muss. | |||
* Ein Anstoßen einer Email in der Queue oder eine Mail aus der Queue löschen oder möglicherweise sogar die Mailqueue anhalten. | |||
* Das funktioniert mit folgenden Befehlen: | |||
{|| class="wikitable sortable" | |||
|+ | |||
|- | |||
{| | || '''Befehl''' | ||
|- | || '''Beschreibung''' | ||
|| '''Befehl | |- | ||
|| ''' | |||
|- | |||
|| mailq | || mailq | ||
|| Anzeigen der Mailqueue | || Anzeigen der Mailqueue | ||
|- | |- | ||
|| postsuper -d ALL | || postsuper -d ALL | ||
|| Alle Emails aus der Mailqueue löschen | || Alle Emails aus der Mailqueue löschen | ||
|- | |- | ||
|| postsuper -d [ID] | || postsuper -d [ID] | ||
|| Eine einzelne Email löschen | || Eine einzelne Email löschen | ||
|- | |- | ||
|| postsuper -h ALL | || postsuper -h ALL | ||
|| Die Mailqueue anhalten (keine Auslieferung mehr. | || Die Mailqueue anhalten (keine Auslieferung mehr. | ||
|- | |- | ||
|| postsuper -H ALL | || postsuper -H ALL | ||
|| Die Mailqueue weiterlaufen lassen | || Die Mailqueue weiterlaufen lassen | ||
|- | |- | ||
|| postsuper -h [ID] | || postsuper -h [ID] | ||
|| Eine einzelne Mail aus der Queue anhalten | || Eine einzelne Mail aus der Queue anhalten | ||
|- | |- | ||
|| postsuper -H [ID] | || postsuper -H [ID] | ||
|| Eine einzelne Mail aus der Queue weiterlaufen lassen | || Eine einzelne Mail aus der Queue weiterlaufen lassen | ||
|- | |- | ||
|| postqueue -f | || postqueue -f | ||
|| Postfix anweisen alle Mails aus der Queue sofort auszuliefern | || Postfix anweisen alle Mails aus der Queue sofort auszuliefern | ||
|- | |- | ||
|} | |} | ||
Nun kann es sein, dass man alle Mails, die von oder an eine Adresse kommen/gehen gelöscht werden. | |||
Nun kann es sein, dass man alle Mails, die von oder an eine Adresse kommen/gehen gelöscht werden. Dazu muss man auf die RegExp zurückgreifen. | * Dazu muss man auf die RegExp zurückgreifen. | ||
'''mailq | tail +2 | awk 'BEGIN { RS = "" } / user@huschi\.net$/ { print $1 } ' \ | tr -d '*!' | postsuper -d -''' | '''mailq | tail +2 | awk 'BEGIN { RS = "" } / user@huschi\.net$/ { print $1 } ' \ | tr -d '*!' | postsuper -d -''' | ||
oder | |||
'''for i in `mailq | egrep "^[0-9A-F]" | grep 'MAILER-DAEMON' | cut -c1-12 | sed s/\*//g` ; \ do echo "delete msg: $i" ; postsuper -d $i ; done''' | '''for i in `mailq | egrep "^[0-9A-F]" | grep 'MAILER-DAEMON' | cut -c1-12 | sed s/\*//g` ; \ do echo "delete msg: $i" ; postsuper -d $i ; done''' | ||
Ansonsten ist das Tool | Ansonsten ist das Tool '''[[pfqueue]]''' noch interessant. | ||
==== | == Mail-Queue bearbeiten == | ||
Manchmal will man etwas Einfluss auf die Mail-Queue haben | |||
; [http://www.webmin.com/ Webmin] | |||
* Das Webmin-Postfix Modul ist standardmäßig installiert und bietet eine gute Oberfläche zum Verwalten der Mail-Queue | |||
; Mail-Queue ansehen | |||
sicherheitshalber mit less | |||
mailq | less | mailq | less | ||
; Anzahl der Mails in der Queue | |||
mailq | egrep '^--' | mailq | egrep '^--' | ||
; gesamte Mail-Queue löschen | |||
postsuper -d ALL | postsuper -d ALL | ||
; einzelne Mails aus der Queue löschen | |||
mailq | less | mailq | less | ||
entsprechende queue_id merken/kopieren | |||
postsuper -d ID | postsuper -d ID | ||
; Alle Emails von oder zu einer Adresse löschen | |||
mailq | tail +2 | awk 'BEGIN { RS = "" } / user@huschi\.net$/ { print $1 } ' \ | mailq | tail +2 | awk 'BEGIN { RS = "" } / user@huschi\.net$/ { print $1 } ' \ | ||
| tr -d '*!' | postsuper -d - | | tr -d '*!' | postsuper -d - | ||
# oder auch so: | |||
for i in `mailq | egrep "^[0-9A-F]" | grep 'MAILER-DAEMON' | cut -c1-12 | sed s/\*//g` ; \ | for i in `mailq | egrep "^[0-9A-F]" | grep 'MAILER-DAEMON' | cut -c1-12 | sed s/\*//g` ; \ | ||
do echo "delete msg: $i" ; postsuper -d $i ; done | do echo "delete msg: $i" ; postsuper -d $i ; done | ||
==== | ==== Emails auf "hold" legen ==== | ||
Damit verbleiben die Emails in der Queue und werden nicht automatisch weiter verarbeitet: | |||
; Alle Mails auf "hold" | |||
postsuper -h ALL | postsuper -h ALL | ||
; Einzelne Mails auf "hold" | |||
postsuper -h ID | postsuper -h ID | ||
: Alle Mails von "hold" wieder releasen | |||
postsuper -H ALL | postsuper -H ALL | ||
; Einzelne Mails releasen: | |||
postsuper -H ID | postsuper -H ID | ||
Wenn man mal | Wenn man mal zu viele E-Mails auf der Halde liegen hat, möchte man eventuell, dass Postfix nun mal anfängt auszuliefern: | ||
postqueue -f | postqueue -f | ||
== Nachrichten aus der Postfix Warteschlange (mailq) löschen == | == Nachrichten aus der Postfix Warteschlange (mailq) löschen == | ||
Bevor Postfix die Nachrichten verschickt, werden diese in der Queue (Warteschlange) abgelegt. | Bevor Postfix die Nachrichten verschickt, werden diese in der Queue (Warteschlange) abgelegt. | ||
* Wenn Nachrichten nicht sofort zugestellt werden können, verweilen sie in der Queue. | |||
* Mit dem Postfix Kommando postsuper löscht man Nachrichten aus der Warteschlange. | |||
* Bevor wir eine Nachricht löschen, sollten wir alle E-Mails der Warteschlange auflisten: | |||
mailq | mailq | ||
Jetzt erhältst Du alle Mails die in der Warteschlange sind. In der ersten Spalte der Auflistung befindet sich die Queue ID. Mit der Queue ID kannst Du einzelne Nachrichten aus der Warteschlange entfernen: | Jetzt erhältst Du alle Mails die in der Warteschlange sind. | ||
* In der ersten Spalte der Auflistung befindet sich die Queue ID. | |||
* Mit der Queue ID kannst Du einzelne Nachrichten aus der Warteschlange entfernen: | |||
postsuper -d <Queue ID> | postsuper -d <Queue ID> | ||
Zeile 349: | Zeile 325: | ||
== Mail in Postfix Queue zu Empfänger umleiten == | == Mail in Postfix Queue zu Empfänger umleiten == | ||
Postfix E-Mail bleibt in der Warteschlange hängen, die E-Mail soll nun an einen anderen Empfänger umgeleitet werden! | Postfix E-Mail bleibt in der Warteschlange hängen, die E-Mail soll nun an einen anderen Empfänger umgeleitet werden! | ||
Hier kann es hilfreich sein, die E-Mail vorübergehend an einen anderen Empfänger zu senden. Der Beitrag zeigt die Schritte, um eine in der Postfix Queue verbleibende E-Mail an einen alternativen Empfänger zu senden. | * Dieses Szenario kann in Erscheinung treten, wenn zum ursprünglichen Empfänger keine E-Mails zugestellt werden können, zum Beispiel mit Erreichen der Mailbox Speicher Limite, oder der Server mit Fehler antwortet. | ||
Hier kann es hilfreich sein, die E-Mail vorübergehend an einen anderen Empfänger zu senden. | |||
* Der Beitrag zeigt die Schritte, um eine in der Postfix Queue verbleibende E-Mail an einen alternativen Empfänger zu senden. | |||
=== Mail aus Postfix Queue senden === | === Mail aus Postfix Queue senden === | ||
Zuerst sucht man in der Postfix Queue die Queue-ID der betreffenden E-Mail, diese man an eine andere Empfänger Adresse senden möchte. | Zuerst sucht man in der Postfix Queue die Queue-ID der betreffenden E-Mail, diese man an eine andere Empfänger Adresse senden möchte. | ||
$ postqueue -p | grep 'john@example.org' -B 2 | '''user@debian ~ $''' postqueue -p | grep 'john@example.org' -B 2 | ||
* ''Der Parameter -B 2 gibt zusätzlich zwei Zeilen vor gesuchter Parse aus.'' | * ''Der Parameter -B 2 gibt zusätzlich zwei Zeilen vor gesuchter Parse aus.'' | ||
Die Ausgabe kann in etwa wie die folgende aussehen. | Die Ausgabe kann in etwa wie die folgende aussehen. | ||
BCD2C3035D31! 37023 Thu Feb 17 08:59:55 suite102@mailings.daydeal.net | BCD2C3035D31! 37023 Thu Feb 17 08:59:55 suite102@mailings.daydeal.net | ||
(connect to 12.34.56.78[12.34.56.78]:25: Connection timed out) | (connect to 12.34.56.78[12.34.56.78]:25: Connection timed out) | ||
john@example.org | john@example.org | ||
Hier wurde eine E-Mail an ''john@example.org'' gesendet, die ich nun an eine andere Adresse zustellen möchte. Die Queue-ID ist <tt>BCD2C3035D31</tt> die wir im weiteren Verlauf benötigen. | Hier wurde eine E-Mail an ''john@example.org'' gesendet, die ich nun an eine andere Adresse zustellen möchte. | ||
* Die Queue-ID ist <tt>BCD2C3035D31</tt> die wir im weiteren Verlauf benötigen. | |||
Alternativ lassen sich auch alle E-Mails jeder Postfix Queue auflisten. | Alternativ lassen sich auch alle E-Mails jeder Postfix Queue auflisten. | ||
'''user@debian ~ $''' mailq | |||
Um zu verhindern, dass Postfix versucht die E-Mail in der Zwischenzeit auszuliefern, setzen wir diese in Wartestellung mit -h auf on hold. | |||
'''user@debian ~ $''' postsuper -h BCD2C3035D31 | |||
Um zu verhindern dass Postfix versucht die E-Mail in der Zwischenzeit auszuliefern, setzen wir diese in Wartestellung mit -h auf on hold. | |||
$ postsuper -h BCD2C3035D31 | |||
postsuper: BCD2C3035D31: placed on hold | postsuper: BCD2C3035D31: placed on hold | ||
postsuper: Placed on hold: 1 message | postsuper: Placed on hold: 1 message | ||
* Die E-Mails werden mit on hold nicht gelöscht. Das Ausrufezeichen (!) gibt an, das die Nachricht in Wartestellung ist. | * Die E-Mails werden mit on hold nicht gelöscht. | ||
* Das Ausrufezeichen (!) gibt an, das die Nachricht in Wartestellung ist. | |||
Nun extrahiert man die E-Mail und speichert sie in eine temporäre Datei. | Nun extrahiert man die E-Mail und speichert sie in eine temporäre Datei. | ||
'''user@debian ~ $''' postcat -qbh BCD2C3035D31 > /tmp/email.eml | |||
Nachdem die E-Mail extrahiert ist, kann man diese an einen anderen Empfänger als das Original senden. | |||
'''user@debian ~ $''' sendmail -f john@example.org mike@domain.org < /tmp/email.eml | |||
Nachdem die E-Mail | |||
$ sendmail -f john@example.org mike@domain.org < /tmp/email.eml | |||
Die E-Mail wird von ''john@''example.org an ''mike@domain.org'' gesendet. | Die E-Mail wird von ''john@''example.org an ''mike@domain.org'' gesendet. | ||
Die Postfix Deffered Queue nach | Die Postfix Deffered Queue nach aufgeschobenen E-Mails durchsuchen. | ||
$ postqueue -vp | '''user@debian ~ $''' postqueue -vp | ||
Nachdem die Zustellung an die neue E-Mail-Adresse bestätigt wurde, kann die E-Mail aus der Postfix Warteschlange gelöscht werden. | Nachdem die Zustellung an die neue E-Mail-Adresse bestätigt wurde, kann die E-Mail aus der Postfix Warteschlange gelöscht werden. | ||
'''user@debian ~ $''' postsuper -d BCD2C3035D31 | |||
$ postsuper -d BCD2C3035D31 | |||
postsuper: BCD2C3035D31: removed | postsuper: BCD2C3035D31: removed | ||
postsuper: Deleted: 1 message | postsuper: Deleted: 1 message | ||
Die temporäre Datei /tmp/email.eml löschen. | Die temporäre Datei /tmp/email.eml löschen. | ||
'''user@debian ~ $''' rm -f /tmp/email.eml | |||
$ rm -f /tmp/email.eml | |||
== Hilfreiche Postfix Kommandos == | == Hilfreiche Postfix Kommandos == | ||
In die E-Mail schauen mit postcat. | In die E-Mail schauen mit postcat. | ||
$ postcat -vq BCD2C3035D31 | $ postcat -vq BCD2C3035D31 | ||
Zeile 412: | Zeile 385: | ||
postsuper: Released from hold: 1 message | postsuper: Released from hold: 1 message | ||
Warteschlange leeren, es wird versucht alle in der Warteschlange befindlichen E-Mails zuzustellen. | Warteschlange leeren, es wird versucht, alle in der Warteschlange befindlichen E-Mails zuzustellen. | ||
$ postqueue -f | $ postqueue -f | ||
Alle E-Mails in der Postfix deffered queue löschen. | Alle E-Mails in der Postfix deffered queue löschen. | ||
$ postsuper -d ALL deferred | $ postsuper -d ALL deferred | ||
[[Kategorie:Postfix:Architektur]] | [[Kategorie:Postfix/Verwaltung]] | ||
[[Kategorie:Postfix/Architektur]] |
Aktuelle Version vom 19. Mai 2023, 15:53 Uhr
Beschreibung
Wenn eine E-Mail nicht gesendet werden kann, befindet sie sich in einer von zwei Warteschlangen innerhalb von Postfix: ausstehend und zurückgestellt. ...
- Die Warteschlange für verzögerte E-Mails enthält alle Nachrichten, bei denen ein Soft-Fehler aufgetreten ist und die erneut versucht werden müssen (vorübergehender Fehler).
- Postfix versucht, Nachrichten aus der zurückgestellten Warteschlange in festgelegten Intervallen erneut zu senden.
Befehle für die Warteschlange
# postqueue -p. ... # postcat -q "Warteschlangen-ID" ... # postqueue -p | grep -c ^ [A-Z0-9] # postqueue -f. # postsuper -d ALL. # postsuper -d ALL aufgeschoben. # postsuper -d "Warteschlangen-ID"
Warteschlange prüfen
Überprüfen der E-Mail-Warteschlange von Postfix.
- Zeigen Sie eine Liste der E-Mails in der Warteschlange an, die zurückgestellt und ausstehend sind.
- mailq.
- oder postqueue -p. ...
- Zeigen Sie die Nachricht (Inhalt, Header und Text) in der Postfix-Warteschlange an.
- Angenommen, die Nachricht hat die ID XXXXXXX (Sie können die ID in der Warteschlange sehen) postcat -vq XXXXXXXXXX. ...
- Weisen Sie Postfix an, die Warteschlange jetzt zu verarbeiten.
Speicherort
Postfix speichert E-Mails, die darauf warten, gesendet zu werden, im Warteschlangenverzeichnis.
- Postfix verwendet für jede der oben genannten Warteschlangen ein separates Verzeichnis.
- Das Standardverzeichnis für diese Warteschlangen lautet:
/var/spool/postfix/ active corrupt deferred etc hold lib pid public trace bounce defer dev flush incoming maildrop private saved usr
Siehe postconf für den aktuellen Wert.
Warteschlange löschen
- Sie sollten den Befehl postsuper verwenden, um Nachrichten aus der Postfix-Warteschlange zu löschen
- Das -d <queueid> Option würde die Nachricht mit der angegebenen Warteschlangen-ID löschen.
Warteschlange prüfen
Verwenden Sie den Warteschlangen-Viewer, um die Eigenschaften einer Nachricht anzuzeigen
- Doppelklicken Sie in der Exchange-Toolbox im Abschnitt Nachrichtenfluss-Tools auf Queue Viewer, um das Tool in einem neuen Fenster zu öffnen.
- Wählen Sie in der Warteschlangenanzeige die Registerkarte Nachrichten aus, um die Liste der Nachrichten anzuzeigen, die derzeit in Ihrer Organisation zur Zustellung in die Warteschlange gestellt werden.
Wie funktioniert der Postfix-Mailserver?
Netzwerkmail wird über die Server smtpd (8) oder qmqpd (8) in Postfix eingegeben. ...
- Lokale Übermittlungen werden mit dem Kompatibilitätsbefehl Postfix sendmail (1) empfangen und vom privilegierten Befehl postdrop (1) in der Maildrop-Warteschlange in die Warteschlange gestellt.
- Diese Anordnung funktioniert auch, wenn das Postfix-Mailsystem nicht ausgeführt wird.
Warteschlange anzeigen
Anzeigen von E-Mails unter Linux mit mailq und postcat von postfix
mailq
Druckt eine Liste aller in der Warteschlange befindlichen E-Mails.
postcat -vq [Nachrichten-ID]
Gibt eine bestimmte Nachricht nach ID aus (Sie können die ID in der Ausgabe von mailq sehen)
postqueue -f
Verarbeitet die in der Warteschlange befindlichen E-Mails sofort.
postsuper -d ALL
Löscht ALLE E-Mails in der Warteschlange (mit Vorsicht verwenden - aber praktisch, wenn ein E-Mail-Versand schief geht!)
Postfix Mail-Protokolle
Postfix protokolliert alle fehlgeschlagenen und erfolgreichen Zustellungen in einer Protokolldatei.
- Die Datei heißt normalerweise /var/log/maillog oder /var/log/mail.
- Der genaue Pfadname ist in /etc/syslog definiert.
Was macht Postfix Flush?
Mail in der Warteschlange spülen
Um die Mail-Warteschlange zu leeren, verwenden wir den Befehl postqueue -f.
- Dieser Befehl versucht, alle in der Warteschlange befindlichen E-Mails erneut zuzustellen.
- Verwenden Sie den Befehl sparsam.
- Mehrere Löschvorgänge wirken sich auf die Gesamtleistung Ihres Mailservers aus.
Mailwarteschlange ansehen, flushen und leeren
Alle ausgehenden eMails werden normalerweise in gewisse “Mailqueues” abgelegt und dort versendet.
- Konnte eine eMail nicht erfolgreich versendet werden, bleibt diese eMail weiterhin in der Warteschlange.
- Nach einer gewissen Zeit wird erneut versucht, diese eMail zu versenden.
- Es kommt häufig vor, dass Benutzer in einen Forum einfach falsche (nicht existierende) eMail Adressen eingeben und der Mailserver versucht, die eMail dennoch abzusenden.
- Dadurch wächst die Mailwarteschlange stetig an.
Dafür gibt es drei wichtige Befehle, die man kennen sollte:
Mailwarteschlange ansehen
mailq
Mailwarteschlange flushen (Mails erneut versuchen zu versenden)
postfix flush
Mailwarteschlange leeren
postsuper -d ALL
Befehle
Installierte Version anzeigen
# postconf mail_version
Eigene Konfiguration anzeigen
# postconf -n
Standard Konfiguration anzeigen
# postconf -d
Mailwarteschlage anzeigen
# mailq
Anzahl der Mails in der Warteschlange anzeigen
# mailq | tail -1
Mailqueue abarbeiten
# postqueue -f
Einzelne Mails löschen
# postsuper -d QueueID
Alle Mails aus der Queue löschen (Vorsicht walten lassen)
# postsuper -d ALL
Mails in tabellenform anzeigen
# qshape
Einzelne Mail ansehen
# postcat -q QueueID
Bestimmte Mails einer Adresse löschen
$ postqueue -p|grep 'email@beispiel.de'|awk {'print $1'} | grep -v "(host"|tr -d '*!'|postsuper -d -
Postfix Logs ansehen (Ubuntu)
# tailf /var/log/mail.log
Mail Queue in Textdatei umleiten
# mailq > /tmp/mailtext.txt
Postfix Konfiguration neu laden
# systemctl reload postfix
Mails auswerten und Statistiken erstellen
Hier Verweise ich auf den Pflogsumm Artikel, welcher immer noch Gültigkeit hat.
# apt install pflogsumm
Mail-Queue aufräumen
Die Mail-Queue ist voll von Spam E-Mails, mit diesem Beitrag gehen wir dagegen vor und räumen auf. Postfix liefert eigene Mittel um die Warteschlange zu säubern.
E-Mails auflisten
Mit dem Befehl listen wir die Mail-Queue auf
mailq
oder
postqueue -p
Inhalt einer E-Mail anzeigen
53FB7BF0650 ist die Mail ID
postcat -q 53FB7BF0650
E-Mails ausliefern
- Alle E-Mails ausliefern
postqueue -f
- Einzelne E-Mail ausliefern
postqueue -i 53FB7BF0650
E-Mails löschen
Einzelne E-Mails löschen
53FB7BF0650 ist die Mail ID
postsuper -d 53FB7BF0650
Alle E-Mails löschen
postsuper -d ALL
MAILER-DAEMON löschen
Das sind meistens E-Mails ohne gültigen Empfangsserver.
postqueue -p | grep MAILER-DAEMON | awk '{print $1}' | tr -d '*' | postsuper -d -
Dr.
- Web Status Meldungen löschen
Die Status Meldungen von [https://adminforge.de/antivir/dr-web/dr-web-antivirus-update-e-mail-abschalten/ Dr.
- Web wurden deaktiviert], nun folgt das Säubern der Mail-Queue.
postqueue -p | grep DrWEB | awk {'print $1'} | sed s/*//g | postsuper -d -
Connection refused löschen
postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /Connection refused/ { print $1 } \' | tr -d '*!' | postsuper -d -
Empfänger löschen
Ihr könnt @yahoo.com durch jeden beliebigen Wert ersetzen.
postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /@yahoo.com/ { print $1 } \' | tr -d '*!' | postsuper -d -
Spammer aus Postfix Warteschlange entfernen
- Situation
- Spammer versendet SPAMs über unseren Mail-Server.
- Wahrscheinlich hat ein User ein schwaches Kennwort verwendet, welches vielleicht auch noch bei mehreren Diensten benutzt wurde.
Natürlich bleibt das Verhalten nicht lange unbemerkt.
- Und es werden alle relevanten Maßnahmen ergriffen.
- Kennwort des betroffenen Account ändern
- Warteschlange von den SPAM Mails und den Mail Delivery Meldungen befreien
- Server aus den Blacklisten befreien
Das Kennwort ist schnell geändert.
- Dabei sollte das neue Kennwort eine gewisse Komplexität haben.
Doch wie befreit man die Mail- Queue eines Postfix Server?
Die komplette Warteschlange zu löschen, ist keine Option, also muss eine andere Lösung her:
mailq | grep ABC@SPAMMER.de | cut -d" " -f1 | tr -d '*!' | postsuper -d -
Nachdem die Queue wieder sauber ist, können wir schauen, auf welchen Blacklisten unserer Server gelandet ist
- z. B. über https://mxtoolbox.com/blacklists.aspx
Postfix Mailqueue
Normalerweise muss man an der Mailqueue nichts machen, aber es kann vorkommen, dass man Einfluss nehmen muss.
- Ein Anstoßen einer Email in der Queue oder eine Mail aus der Queue löschen oder möglicherweise sogar die Mailqueue anhalten.
- Das funktioniert mit folgenden Befehlen:
Befehl | Beschreibung |
mailq | Anzeigen der Mailqueue |
postsuper -d ALL | Alle Emails aus der Mailqueue löschen |
postsuper -d [ID] | Eine einzelne Email löschen |
postsuper -h ALL | Die Mailqueue anhalten (keine Auslieferung mehr. |
postsuper -H ALL | Die Mailqueue weiterlaufen lassen |
postsuper -h [ID] | Eine einzelne Mail aus der Queue anhalten |
postsuper -H [ID] | Eine einzelne Mail aus der Queue weiterlaufen lassen |
postqueue -f | Postfix anweisen alle Mails aus der Queue sofort auszuliefern |
Nun kann es sein, dass man alle Mails, die von oder an eine Adresse kommen/gehen gelöscht werden.
- Dazu muss man auf die RegExp zurückgreifen.
mailq | tail +2 | awk 'BEGIN { RS = "" } / user@huschi\.net$/ { print $1 } ' \ | tr -d '*!' | postsuper -d -
oder
for i in `mailq | egrep "^[0-9A-F]" | grep 'MAILER-DAEMON' | cut -c1-12 | sed s/\*//g` ; \ do echo "delete msg: $i" ; postsuper -d $i ; done
Ansonsten ist das Tool pfqueue noch interessant.
Mail-Queue bearbeiten
Manchmal will man etwas Einfluss auf die Mail-Queue haben
- Das Webmin-Postfix Modul ist standardmäßig installiert und bietet eine gute Oberfläche zum Verwalten der Mail-Queue
- Mail-Queue ansehen
sicherheitshalber mit less
mailq | less
- Anzahl der Mails in der Queue
mailq | egrep '^--'
- gesamte Mail-Queue löschen
postsuper -d ALL
- einzelne Mails aus der Queue löschen
mailq | less
entsprechende queue_id merken/kopieren
postsuper -d ID
- Alle Emails von oder zu einer Adresse löschen
mailq | tail +2 | awk 'BEGIN { RS = "" } / user@huschi\.net$/ { print $1 } ' \ | tr -d '*!' | postsuper -d -
- oder auch so:
for i in `mailq | egrep "^[0-9A-F]" | grep 'MAILER-DAEMON' | cut -c1-12 | sed s/\*//g` ; \ do echo "delete msg: $i" ; postsuper -d $i ; done
Emails auf "hold" legen
Damit verbleiben die Emails in der Queue und werden nicht automatisch weiter verarbeitet:
- Alle Mails auf "hold"
postsuper -h ALL
- Einzelne Mails auf "hold"
postsuper -h ID
- Alle Mails von "hold" wieder releasen
postsuper -H ALL
- Einzelne Mails releasen
postsuper -H ID
Wenn man mal zu viele E-Mails auf der Halde liegen hat, möchte man eventuell, dass Postfix nun mal anfängt auszuliefern:
postqueue -f
Nachrichten aus der Postfix Warteschlange (mailq) löschen
Bevor Postfix die Nachrichten verschickt, werden diese in der Queue (Warteschlange) abgelegt.
- Wenn Nachrichten nicht sofort zugestellt werden können, verweilen sie in der Queue.
- Mit dem Postfix Kommando postsuper löscht man Nachrichten aus der Warteschlange.
- Bevor wir eine Nachricht löschen, sollten wir alle E-Mails der Warteschlange auflisten:
mailq
Jetzt erhältst Du alle Mails die in der Warteschlange sind.
- In der ersten Spalte der Auflistung befindet sich die Queue ID.
- Mit der Queue ID kannst Du einzelne Nachrichten aus der Warteschlange entfernen:
postsuper -d <Queue ID>
Um alle Nachrichten zu löschen:
postsuper -d ALL
Mail in Postfix Queue zu Empfänger umleiten
Postfix E-Mail bleibt in der Warteschlange hängen, die E-Mail soll nun an einen anderen Empfänger umgeleitet werden!
- Dieses Szenario kann in Erscheinung treten, wenn zum ursprünglichen Empfänger keine E-Mails zugestellt werden können, zum Beispiel mit Erreichen der Mailbox Speicher Limite, oder der Server mit Fehler antwortet.
Hier kann es hilfreich sein, die E-Mail vorübergehend an einen anderen Empfänger zu senden.
- Der Beitrag zeigt die Schritte, um eine in der Postfix Queue verbleibende E-Mail an einen alternativen Empfänger zu senden.
Mail aus Postfix Queue senden
Zuerst sucht man in der Postfix Queue die Queue-ID der betreffenden E-Mail, diese man an eine andere Empfänger Adresse senden möchte.
user@debian ~ $ postqueue -p | grep 'john@example.org' -B 2
- Der Parameter -B 2 gibt zusätzlich zwei Zeilen vor gesuchter Parse aus.
Die Ausgabe kann in etwa wie die folgende aussehen.
BCD2C3035D31! 37023 Thu Feb 17 08:59:55 suite102@mailings.daydeal.net (connect to 12.34.56.78[12.34.56.78]:25: Connection timed out) john@example.org
Hier wurde eine E-Mail an john@example.org gesendet, die ich nun an eine andere Adresse zustellen möchte.
- Die Queue-ID ist BCD2C3035D31 die wir im weiteren Verlauf benötigen.
Alternativ lassen sich auch alle E-Mails jeder Postfix Queue auflisten.
user@debian ~ $ mailq
Um zu verhindern, dass Postfix versucht die E-Mail in der Zwischenzeit auszuliefern, setzen wir diese in Wartestellung mit -h auf on hold.
user@debian ~ $ postsuper -h BCD2C3035D31 postsuper: BCD2C3035D31: placed on hold postsuper: Placed on hold: 1 message
- Die E-Mails werden mit on hold nicht gelöscht.
- Das Ausrufezeichen (!) gibt an, das die Nachricht in Wartestellung ist.
Nun extrahiert man die E-Mail und speichert sie in eine temporäre Datei.
user@debian ~ $ postcat -qbh BCD2C3035D31 > /tmp/email.eml
Nachdem die E-Mail extrahiert ist, kann man diese an einen anderen Empfänger als das Original senden.
user@debian ~ $ sendmail -f john@example.org mike@domain.org < /tmp/email.eml
Die E-Mail wird von john@example.org an mike@domain.org gesendet.
Die Postfix Deffered Queue nach aufgeschobenen E-Mails durchsuchen.
user@debian ~ $ postqueue -vp
Nachdem die Zustellung an die neue E-Mail-Adresse bestätigt wurde, kann die E-Mail aus der Postfix Warteschlange gelöscht werden.
user@debian ~ $ postsuper -d BCD2C3035D31 postsuper: BCD2C3035D31: removed postsuper: Deleted: 1 message
Die temporäre Datei /tmp/email.eml löschen.
user@debian ~ $ rm -f /tmp/email.eml
Hilfreiche Postfix Kommandos
In die E-Mail schauen mit postcat.
$ postcat -vq BCD2C3035D31
E-Mails freigeben, die in die Warteschleife gelegt wurden.
$ postsuper -H BCD2C3035D31 postsuper: BCD2C3035D31: released from hold postsuper: Released from hold: 1 message
Warteschlange leeren, es wird versucht, alle in der Warteschlange befindlichen E-Mails zuzustellen.
$ postqueue -f
Alle E-Mails in der Postfix deffered queue löschen.
$ postsuper -d ALL deferred