Postfix/Warteschlangen: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
== Postfix: Mailwarteschlange ansehen, flushen und leeren ==
== Postfix: 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.
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 71: Zeile 75:
Damit die Konfiguration passt, hier eine Übersicht sinnvoller Einträge für die main.cf.
Damit die Konfiguration passt, hier eine Übersicht sinnvoller Einträge für die main.cf.


<nowiki>#SMTP daemon absichern - Mailempfang</nowiki>
#SMTP daemon absichern - Mailempfang
  smtpd_tls_security_level = may
  smtpd_tls_security_level = may
  smtpd_tls_mandatory_ciphers = high
  smtpd_tls_mandatory_ciphers = high
Zeile 77: Zeile 81:
  smtpd_tls_protocols = !SSLv2 !SSLv3
  smtpd_tls_protocols = !SSLv2 !SSLv3
  smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC3-SHA, KRB5-DES, CBC3-SHA
  smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC3-SHA, KRB5-DES, CBC3-SHA
<nowiki>#SMTP absichern - Mailsender</nowiki>
#SMTP absichern - Mailsender
  smtp_tls_protocols = !SSLv2, !SSLv3
  smtp_tls_protocols = !SSLv2, !SSLv3
  smtp_tls_security_level = may
  smtp_tls_security_level = may
  smtp_tls_mandatory_ciphers = high
  smtp_tls_mandatory_ciphers = high
  smtp_tls_mandatory_protocols = !SSLv2 !SSLv3
  smtp_tls_mandatory_protocols = !SSLv2 !SSLv3
<nowiki>#Einstellungen für relaying</nowiki>
#Einstellungen für relaying
   smtp_sasl_auth_enable = yes
   smtp_sasl_auth_enable = yes
   smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
   smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
   smtp_sasl_security_options = noanonymous
   smtp_sasl_security_options = noanonymous
<nowiki>#Verify wird nicht benötigt</nowiki>
#Verify wird nicht benötigt
   disable_vrfy_command=yes
   disable_vrfy_command=yes
<nowiki>#Interface auf lokal schalten</nowiki>
#Interface auf lokal schalten
   inet_interfaces=127.0.0.1
   inet_interfaces=127.0.0.1
<nowiki>#Ipv6 abschalten wenn nicht benötigt</nowiki>
#Ipv6 abschalten wenn nicht benötigt
   inet_protocols = ipv4
   inet_protocols = ipv4
<nowiki>#Serverbegrüßung einschalten</nowiki>
#Serverbegrüßung einschalten
   smtpd_helo_required=yes
   smtpd_helo_required=yes


== Logjam in Postfix verhindern ==
== Logjam in Postfix verhindern ==
Um die Logjam Lücke zu schließen, muss der Diffie Hellmann Key Exchange neu konfiguriert werden. Dazu wird folgendes generiert.
Um die Logjam Lücke zu schließen, muss der Diffie Hellmann Key Exchange neu konfiguriert werden.  
* Dazu wird folgendes generiert.
  # openssl dhparam -out /etc/postfix/dhparams.pem 2048
  # openssl dhparam -out /etc/postfix/dhparams.pem 2048


Zeile 146: Zeile 151:
  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 164: Zeile 171:
Wahrscheinlich hat ein User ein schwaches Kennwort verwendet, welches vielleicht auch noch bei mehreren Diensten benutzt wurde.  
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  
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  
# 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? Die komplette Warteschlange zu löschen ist keine Option :-).
Doch wie befreit man die Mail- Queue eines Postfix Server? Die komplette Warteschlange zu löschen ist keine Option :-).
Zeile 180: Zeile 189:
=== 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:
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"
{| style="border-spacing:0;width:14.019cm;"
|-  
|- style="border:none;padding:0.049cm;"
|| '''Befehl:'''
|| '''Befehl:'''
|| '''Auswirkung:'''
|| '''Auswirkung:'''
|- style="border:none;padding:0.049cm;"
|-  
|| mailq
|| mailq
|| Anzeigen der Mailqueue
|| Anzeigen der Mailqueue
|- style="border:none;padding:0.049cm;"
|-  
|| postsuper -d ALL
|| postsuper -d ALL
|| Alle Emails aus der Mailqueue löschen
|| Alle Emails aus der Mailqueue löschen
|- style="border:none;padding:0.049cm;"
|-  
|| postsuper -d [ID]
|| postsuper -d [ID]
|| Eine einzelne Email löschen
|| Eine einzelne Email löschen
|- style="border:none;padding:0.049cm;"
|-  
|| postsuper -h ALL
|| postsuper -h ALL
|| Die Mailqueue anhalten (keine Auslieferung mehr.
|| Die Mailqueue anhalten (keine Auslieferung mehr.
|- style="border:none;padding:0.049cm;"
|-  
|| postsuper -H ALL
|| postsuper -H ALL
|| Die Mailqueue weiterlaufen lassen
|| Die Mailqueue weiterlaufen lassen
|- style="border:none;padding:0.049cm;"
|-  
|| postsuper -h [ID]
|| postsuper -h [ID]
|| Eine einzelne Mail aus der Queue anhalten
|| Eine einzelne Mail aus der Queue anhalten
|- style="border:none;padding:0.049cm;"
|-  
|| postsuper -H [ID]
|| postsuper -H [ID]
|| Eine einzelne Mail aus der Queue weiterlaufen lassen
|| Eine einzelne Mail aus der Queue weiterlaufen lassen
|- style="border:none;padding:0.049cm;"
|-  
|| postqueue -f
|| postqueue -f
|| Postfix anweisen alle Mails aus der Queue sofort auszuliefern
|| Postfix anweisen alle Mails aus der Queue sofort auszuliefern
|- style="border:none;padding:0.049cm;"
|-  
|| &nbsp;
|| &nbsp;
|| &nbsp;
|| &nbsp;
Zeile 217: Zeile 227:
|}
|}


 
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
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'''
Zeile 228: Zeile 238:
Ansonsten ist das Tool "pfqueue" noch interessant.
Ansonsten ist das Tool "pfqueue" noch interessant.


= Postfix Mail Queue Management =
== Postfix Mail Queue Management ==


== Wie verarbeite ich die Mail-Warteschlange in Postfix?? ==
=== Wie verarbeite ich die Mail-Warteschlange in Postfix?? ===


Postfix verwendet für jede der oben genannten Warteschlangen ein separates Verzeichnis. Das Standardverzeichnis für diese Warteschlangen lautet:# / var / spool / postfix / maildrop. / var / spool / postfix / hold. ...  
Postfix verwendet für jede der oben genannten Warteschlangen ein separates Verzeichnis.  
  # <nowiki># postqueue -p. ... </nowiki>
* Das Standardverzeichnis für diese Warteschlangen lautet:# / var / spool / postfix / maildrop. / var / spool / postfix / hold. ...  
  # <nowiki># postcat -q "Warteschlangen-ID" ... </nowiki>
  # postqueue -p. ...  
  # <nowiki># postqueue -p | grep -c ^ [A-Z0-9]</nowiki>
  # postcat -q "Warteschlangen-ID" ...  
  # <nowiki># postqueue -f.</nowiki>
  # postqueue -p | grep -c ^ [A-Z0-9]
  # <nowiki># postsuper -d ALL.</nowiki>
  # postqueue -f.
  # <nowiki># postsuper -d ALL aufgeschoben.</nowiki>
  # postsuper -d ALL.
  # <nowiki># postsuper -d "Warteschlangen-ID"</nowiki>
  # postsuper -d ALL aufgeschoben.
  # postsuper -d "Warteschlangen-ID"


== Was ist die Postfix-Warteschlange? ==
=== Was ist die Postfix-Warteschlange? ===
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.
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.


== Wie überprüfe ich meine Postfix-Warteschlange? ==
=== Wie überprüfe ich meine Postfix-Warteschlange? ===
Überprüfen der E-Mail-Warteschlange von Postfix.
Ü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 eine Liste der E-Mails in der Warteschlange an, die zurückgestellt und ausstehend sind.  
# 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. ...  
* 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.
# Weisen Sie Postfix an, die Warteschlange jetzt zu verarbeiten.


== Wo speichert Postfix E-Mails in der Warteschlange? ==
=== Wo speichert Postfix E-Mails in der Warteschlange? ===
2 Antworten. Postfix speichert E-Mails, die darauf warten, gesendet zu werden, im Warteschlangenverzeichnis . Siehe postconf für den aktuellen Wert. Ich vermute, es ist irgendwo / var / spool / mail / $ USER.
2 Antworten.  
* Postfix speichert E-Mails, die darauf warten, gesendet zu werden, im Warteschlangenverzeichnis .  
* Siehe postconf für den aktuellen Wert.  
* Ich vermute, es ist irgendwo / var / spool / mail / $ USER.


== Wie lösche ich die Postfix-Mail-Warteschlange? ==
=== Wie lösche ich die Postfix-Mail-Warteschlange? ===
2 Antworten. 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.
2 Antworten.  
* 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.


== Wie überprüfe ich meine E-Mail-Warteschlange? ==
=== Wie überprüfe ich meine E-Mail-Warteschlange? ===
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.
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.
# 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? ==
=== 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.
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.


== Verwendet Postfix Sendmail? ==
=== Verwendet Postfix Sendmail? ===
Das 1998 erstmals veröffentlichte Postfix sollte eine Alternative zu dem seit 1982 weit verbreiteten Sendmail MTA sein. Sendmail und Postfix sind in der Tat beide Mail Transfer Agents (MTAs).
Das 1998 erstmals veröffentlichte Postfix sollte eine Alternative zu dem seit 1982 weit verbreiteten Sendmail MTA sein.  
* Sendmail und Postfix sind in der Tat beide Mail Transfer Agents (MTAs).


== Was ist die Verwendung von Postfix? ==
=== Was ist die Verwendung von Postfix? ===
Die Postfix-Notation wird verwendet, um algebraische Ausdrücke darzustellen. Die in Postfix-Form geschriebenen Ausdrücke werden im Vergleich zur Infix-Notation schneller ausgewertet, da in Postfix keine Klammern erforderlich sind.
Die Postfix-Notation wird verwendet, um algebraische Ausdrücke darzustellen.  
* Die in Postfix-Form geschriebenen Ausdrücke werden im Vergleich zur Infix-Notation schneller ausgewertet, da in Postfix keine Klammern erforderlich sind.


== Wie finde ich meine SMTP-Warteschlange unter Linux? ==
=== Wie finde ich meine SMTP-Warteschlange unter Linux? ===
Anzeigen von E-Mails unter Linux mit mailq und postcat von postfix
Anzeigen von E-Mails unter Linux mit mailq und postcat von postfix
# mailq - druckt eine Liste aller in der Warteschlange befindlichen E-Mails.
# mailq - druckt eine Liste aller in der Warteschlange befindlichen E-Mails.
Zeile 276: Zeile 300:
# postsuper -d ALL - löscht ALLE E-Mails in der Warteschlange (mit Vorsicht verwenden - aber praktisch, wenn ein E-Mail-Versand schief geht!)
# postsuper -d ALL - löscht ALLE E-Mails in der Warteschlange (mit Vorsicht verwenden - aber praktisch, wenn ein E-Mail-Versand schief geht!)


== Wie überprüfe ich mein Postfix-Mail-Protokoll? ==
=== Wie überprüfe ich mein Postfix-Mail-Protokoll? ===
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 im Verzeichnis / etc / syslog definiert.
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 im Verzeichnis / etc / syslog definiert.


== Was macht Postfix Flush? ==
=== Was macht Postfix Flush? ===
Mail in der Warteschlange spülen
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.
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.


== Postfix: Mail-Queue bearbeiten  ==
== Postfix: Mail-Queue bearbeiten  ==
Zeile 290: Zeile 319:
; Lösungen
; Lösungen


==== [http://www.webmin.com/ Webmin] ====
=== [http://www.webmin.com/ Webmin] ===
* Eine einfache klicki-bunti-Lösung!
* Eine einfache klicki-bunti-Lösung!
* Das Webmin-Postfix Modul ist standardmäßig installiert und bietet eine gute Oberfläche zum verwalten der Mail-Queue
* Das Webmin-Postfix Modul ist standardmäßig installiert und bietet eine gute Oberfläche zum verwalten der Mail-Queue


==== Commandozeile ====
=== Commandozeile ===


Aber es geht auch in der Commandozeilen:
Aber es geht auch in der Commandozeilen:


<nowiki>#Mail-Queue ansehen (sicherheitshalber mit less):</nowiki>
#Mail-Queue ansehen (sicherheitshalber mit less):
  mailq | less
  mailq | less


<nowiki>#Anzahl der Mails in der Queue:</nowiki>
#Anzahl der Mails in der Queue:
  mailq | egrep '^--'
  mailq | egrep '^--'


<nowiki>#gesamte Mail-Queue löschen:</nowiki>
#gesamte Mail-Queue löschen:
  postsuper -d ALL
  postsuper -d ALL


<nowiki>#einzelne Mails aus der Queue löschen:</nowiki>
#einzelne Mails aus der Queue löschen:
mailq | less
mailq | less
<nowiki>#die entsprechende queue_id merken/kopieren</nowiki>
#die entsprechende queue_id merken/kopieren
  postsuper -d ID
  postsuper -d ID


<nowiki>#Trickreicher wird es wenn man alle Emails von oder zu einer Adresse löschen möchte:</nowiki>
#Trickreicher wird es wenn man alle Emails von oder zu einer Adresse löschen möchte:
  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 -


<nowiki>#oder auch so:</nowiki>
#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


==== Experten feeling... ====
==== Experten feeling... ====
Postfix erlaubt aber noch weitere Späße mit Mails in der Queue. Z.B. besitzt es die Fähigkeit Emails auf "hold" zu legen. Damit verbleiben die Emails in der Queue und werden nicht automatisch weiter verarbeitet:
Postfix erlaubt aber noch weitere Späße mit Mails in der Queue.  
* Z.B.  
* besitzt es die Fähigkeit Emails auf "hold" zu legen.  
* Damit verbleiben die Emails in der Queue und werden nicht automatisch weiter verarbeitet:


<nowiki>#alle Mails auf "hold":</nowiki>
#alle Mails auf "hold":
  postsuper -h ALL
  postsuper -h ALL


<nowiki>#einzelne Mails auf "hold":</nowiki>
#einzelne Mails auf "hold":
  postsuper -h ID
  postsuper -h ID


<nowiki>#alle Mails von "hold" wieder releasen:</nowiki>
#alle Mails von "hold" wieder releasen:
  postsuper -H ALL
  postsuper -H ALL


<nowiki>#einzelne Mails releasen:</nowiki>
#einzelne Mails releasen:
  postsuper -H ID
  postsuper -H ID


Zeile 339: Zeile 371:


== 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.&nbsp;Wenn Nachrichten nicht sofort zugestellt werden können, verweilen sie in der Queue. Mit dem Postfix Kommando postsuper löscht&nbsp;man Nachrichten aus der Warteschlange.Bevor wir eine Nachricht löschen, sollten wir alle E-Mails der Warteschlange auflisten:
Bevor Postfix die Nachrichten verschickt, werden diese in der Queue (Warteschlange) abgelegt.&nbsp;Wenn Nachrichten nicht sofort zugestellt werden können, verweilen sie in der Queue.  
* Mit dem Postfix Kommando postsuper löscht&nbsp;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 351: Zeile 386:
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.
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.
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 ===
Zeile 365: Zeile 401:
                             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.
Zeile 377: Zeile 414:
  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.
Zeile 417: Zeile 455:
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]]

Version vom 23. Juni 2022, 22:41 Uhr

Postfix: 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

Voraussetzung ist ein funktionierender fertig-eingerichteter Postfix-Mailserver.

Wichtige und praktische Befehle und Sicherheitseinstellungen

Zum Wochenende eine kleine Übersicht praktischer Postfix Befehle, damit es mit dem eigenen Mailserver oder Mailrelay besser klappt.

Übersicht Postfix 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 

"qshape"

Sicherheit und Härtung der Postfix Einstellungen

Damit die Konfiguration passt, hier eine Übersicht sinnvoller Einträge für die main.cf.

  1. SMTP daemon absichern - Mailempfang
smtpd_tls_security_level = may
smtpd_tls_mandatory_ciphers = high
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2 !SSLv3
smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC3-SHA, KRB5-DES, CBC3-SHA
  1. SMTP absichern - Mailsender
smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_security_level = may
smtp_tls_mandatory_ciphers = high
smtp_tls_mandatory_protocols = !SSLv2 !SSLv3
  1. Einstellungen für relaying
 smtp_sasl_auth_enable = yes
 smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
 smtp_sasl_security_options = noanonymous
  1. Verify wird nicht benötigt
 disable_vrfy_command=yes
  1. Interface auf lokal schalten
 inet_interfaces=127.0.0.1
  1. Ipv6 abschalten wenn nicht benötigt
 inet_protocols = ipv4
  1. Serverbegrüßung einschalten
 smtpd_helo_required=yes

Logjam in Postfix verhindern

Um die Logjam Lücke zu schließen, muss der Diffie Hellmann Key Exchange neu konfiguriert werden.

  • Dazu wird folgendes generiert.
# openssl dhparam -out /etc/postfix/dhparams.pem 2048

Danach muss der Parameter nur noch in die main.cf eingetragen werden.

smtpd_tls_dh1024_param_file = /etc/postfix/dhparams.pem

Sind alle Einstellungen gesetzt und die Konfiguration neu geladen kann getestet werden.

"posttls-finger"

Verschlüsselte Verbindung eines Postfix Servers testen

Um eine Verbindung zu überprüfen bietet sich das Tool posttls-finger an, damit erspart sich ein Admin eventuell das Anpassen von Logeinstellungen oder die Verwendung von Telnet.

# posttls-finger smtp.testserver.de

Postfix 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

Jeder kennt die Situation: Ein 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
  1. Warteschlange von den SPAM Mails und den Mail Delivery Meldungen befreien
  2. 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: Auswirkung:
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.

Postfix Mail Queue Management

Wie verarbeite ich die Mail-Warteschlange in Postfix??

Postfix verwendet für jede der oben genannten Warteschlangen ein separates Verzeichnis.

  • Das Standardverzeichnis für diese Warteschlangen lautet:# / var / spool / postfix / maildrop. / var / spool / postfix / hold. ...
# 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"

Was ist die Postfix-Warteschlange?

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.

Wie überprüfe ich meine Postfix-Warteschlange?

Überprüfen der E-Mail-Warteschlange von Postfix.

  1. Zeigen Sie eine Liste der E-Mails in der Warteschlange an, die zurückgestellt und ausstehend sind.
  • mailq.
  • oder postqueue -p. ...
  1. 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. ...
  1. Weisen Sie Postfix an, die Warteschlange jetzt zu verarbeiten.

Wo speichert Postfix E-Mails in der Warteschlange?

2 Antworten.

  • Postfix speichert E-Mails, die darauf warten, gesendet zu werden, im Warteschlangenverzeichnis .
  • Siehe postconf für den aktuellen Wert.
  • Ich vermute, es ist irgendwo / var / spool / mail / $ USER.

Wie lösche ich die Postfix-Mail-Warteschlange?

2 Antworten.

  • 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.

Wie überprüfe ich meine E-Mail-Warteschlange?

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.

  1. 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.

Verwendet Postfix Sendmail?

Das 1998 erstmals veröffentlichte Postfix sollte eine Alternative zu dem seit 1982 weit verbreiteten Sendmail MTA sein.

  • Sendmail und Postfix sind in der Tat beide Mail Transfer Agents (MTAs).

Was ist die Verwendung von Postfix?

Die Postfix-Notation wird verwendet, um algebraische Ausdrücke darzustellen.

  • Die in Postfix-Form geschriebenen Ausdrücke werden im Vergleich zur Infix-Notation schneller ausgewertet, da in Postfix keine Klammern erforderlich sind.

Wie finde ich meine SMTP-Warteschlange unter Linux?

Anzeigen von E-Mails unter Linux mit mailq und postcat von postfix

  1. mailq - druckt eine Liste aller in der Warteschlange befindlichen E-Mails.
  2. postcat -vq [Nachrichten-ID] - Gibt eine bestimmte Nachricht nach ID aus (Sie können die ID in der Ausgabe von mailq sehen)
  3. postqueue -f - verarbeitet die in der Warteschlange befindlichen E-Mails sofort.
  4. postsuper -d ALL - löscht ALLE E-Mails in der Warteschlange (mit Vorsicht verwenden - aber praktisch, wenn ein E-Mail-Versand schief geht!)

Wie überprüfe ich mein Postfix-Mail-Protokoll?

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 im Verzeichnis / 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.

Postfix: Mail-Queue bearbeiten

Problem

Manchmal will man etwas Einfluß auf die Mail-Queue haben

Lösungen

Webmin

  • Eine einfache klicki-bunti-Lösung!
  • Das Webmin-Postfix Modul ist standardmäßig installiert und bietet eine gute Oberfläche zum verwalten der Mail-Queue

Commandozeile

Aber es geht auch in der Commandozeilen:

  1. Mail-Queue ansehen (sicherheitshalber mit less):
mailq | less
  1. Anzahl der Mails in der Queue:
mailq | egrep '^--'
  1. gesamte Mail-Queue löschen:
postsuper -d ALL
  1. einzelne Mails aus der Queue löschen:

mailq | less

  1. die entsprechende queue_id merken/kopieren
postsuper -d ID
  1. Trickreicher wird es wenn man alle Emails von oder zu einer Adresse löschen möchte:
mailq | tail +2 | awk  'BEGIN { RS = "" } / user@huschi\.net$/ { print $1 } ' \
   | tr -d '*!' | postsuper -d -
  1. 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

Experten feeling...

Postfix erlaubt aber noch weitere Späße mit Mails in der Queue.

  • Z.B.
  • besitzt es die Fähigkeit Emails auf "hold" zu legen.
  • Damit verbleiben die Emails in der Queue und werden nicht automatisch weiter verarbeitet:
  1. alle Mails auf "hold":
postsuper -h ALL
  1. einzelne Mails auf "hold":
postsuper -h ID
  1. alle Mails von "hold" wieder releasen:
postsuper -H ALL
  1. einzelne Mails releasen:
postsuper -H ID

Wenn man mal zuviele Emails auf der Halde liegen hat, möchte man eventuell, daß 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.

$ 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.

$ mailq

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: 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.

$ postcat -qbh BCD2C3035D31 > /tmp/email.eml

Nachdem die E-Mail nun extrahiert ist, kann man diese an einen anderen Empfänger als das Original senden.

$ 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 aufgeschoben E-Mails durchsuchen.

$ 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.

$ postsuper -d BCD2C3035D31
postsuper: BCD2C3035D31: removed
postsuper: Deleted: 1 message

Die temporäre Datei /tmp/email.eml löschen.

$ 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