Ich habe diese Antwort ausprobiert, die genau dieses Problem angeht . Aber Nachrichten scheinen in meiner Version (2.11.0) nicht leicht zu ändern zu sein.
Zum Beispiel gibt es kein / var / spool / mqueue-Verzeichnis, sondern / var / spool / postfix / ...
Ich möchte zwei Dinge klarstellen.
- Zunächst wurde diese Antwort auf sendmail NOT postfix angewendet.
- Zweitens wurde das direkte Manipulieren von Raw-Queue-Dateien überhaupt nicht unterstützt.
Sie haben hier also mehrere Möglichkeiten
1. Parameter smtp_generic_maps
Diese Antwort wurde von dieser hervorragenden Antwort inspiriert . Die alte Adresse wird automatisch in eine neue Adresse umgeschrieben. Sie können eine Datei definieren, um die alte Adresse der neuen Adresse zuzuordnen.
/etc/postfix/main.cf:
smtp_generic_maps = hash:/etc/postfix/generic
/etc/postfix/generic:
[email protected] [email protected]
Vergiss nicht zu postmap /etc/postfix/generic
rennenpostfix reload
- Oberseite: Sie müssen die Nachricht nicht anfordern
- Nachteil: Postfix schreibt die übereinstimmende Absender- und Empfängeradresse neu
[email protected]
.
2. sender_canonical_address
Um den Nachteil der ersten Option zu überwinden, können Sie verwenden sender_canonical_maps
. Diese Lösung basiert auf dem Vorschlag eines Postfix-Autors . Wie bei der ersten Option können Sie eine Datei definieren, um die alte Adresse der neuen Adresse zuzuordnen.
/etc/postfix/main.cf:
sender_canonical_maps = hash:/etc/postfix/sender_canonical
/etc/postfix/sender_canonical:
[email protected] [email protected]
Laufen, postmap /etc/postfix/sender_canonical
dann laufen postfix reload
. Aufgrund des Flusses der Postfix-Warteschlange müssen Sie die betroffene Warteschlange mit dem Befehl erneut in die Warteschlange stellenpostsuper -r queueid
- Oberseite: Postfix schreibt Empfängeradresse nicht neu.
- Nachteil: Sie müssen alle betroffenen Nachrichten anfordern. Sie können jedoch alle mit einem einzigen Befehl zurückgestellten Daten anfordern
postsuper -r ALL deferred
3. direkte Manipulation der Postfix-Warteschlange
Dies sind manuelle alte Methoden zum Ändern der Warteschlange für die erweiterte Verarbeitung. Diese Antwort kam von Postfix-Benutzer-Mailinglisten
Zusamenfassend
Warteschlange extrahieren
# postsuper -h queueid
# postcat -qbh queueid > tempfile.eml
# vi tempfile.eml
Warteschlange erneut senden und alte Warteschlange löschen
# sendmail -f $sender $recipient < tempfile.eml
# postsuper -d queueid
Eine Dokumentation des obigen Befehls finden Sie auf dieser Seite
Hinweis:
Ursprüngliche Lösung aus Postfix-Benutzer-Mailinglisten , postcat -q queueid >tempfile
zum Extrahieren der Warteschlange. Dieser Befehl extrahiert den Header, den Body und die Metainformationen der Warteschlange. Wie unten von Azendale erwähnt , sendmail
wird das Senden dieser fehlerhaften E-Mail aufgrund von Metainformationen abgelehnt.
Wenn Sie -bh
zusätzlich zu den q
Parametern einen Parameter verwenden, filtert der Postcat-Filter nur die Ausgabe nach Header und Body, ohne Metainformationen. Ein Nebeneffekt davon ist, dass die temporäre Datei das Format hat, das die meisten E-Mail-Clients als EML-Format erkennen, sodass Sie die resultierende (bearbeitete) Nachricht anzeigen können.
postcat -qbh queueid >tempfile
. (Nebeneffekt: Es ist dann im EML-Format.) Wenn ich es nur benutzte-q
, schien es nichts zu tun, als ich sendmail ausführte. Postfix Version 2.8.4. Kann jemand das bestätigen? Wenn ja, bearbeiten wir diese Antwort.qbh
, damit sie funktioniert. Hinzufügen der Erklärung in der aktualisierten Antwort ... :)Schreiben erstellen. Ich hatte ein Problem mit einem Mailserver, der einige Tage mit einer schlechten Konfiguration ausgeführt wurde, und daher gab es viele Warteschlangen, die mit einem neuen Empfänger erneut gesendet werden mussten. Also habe ich zwei Einzeiler erstellt, um alle Warteschlangen zu durchlaufen:
Erster, der alle Warteschlangen findet, in die Warteschleife stellt, als EML-Dateien speichert und erneut sendet:
Zweitens zum Löschen der Warteschlangen:
Denken Sie daran, zu überprüfen, ob keine neuen Warteschlangen vorhanden sind, die nicht gehalten werden, bevor Sie diesen letzten Code ausführen. Geben Sie dazu Folgendes aus und suchen Sie nach Warteschlangen-IDs ohne '!' Am Ende:
On konnte diese beiden Einzeiler leicht in einen einfügen, aber ich hatte das Gefühl, mehr Kontrolle zu haben, indem ich überprüfte, ob die E-Mails tatsächlich eingegangen waren, bevor ich die Warteschlangen löschte.
quelle