Bei der Aktualisierung meiner Programme aufgrund der zuletzt bekannt gewordenen Sicherheitslücken in dovecot, openssl usw. war bei mir kurzzeitig die Mailkonfiguration zerschossen. In der Folge konnten einige E-Mails nicht zugestellt werden und deshalb hat exim versucht, die Ursprungsnachricht mit einer Fehlermeldung an den Absender zu schicken. Da das auch nicht funktioniert hat, wurden diese als Nachrichten als frozen im Mailqueue markiert. Diese E-Mails wollte ich nun an den ursprünglichen Empfänger zustellen. Da es glücklicherweise nicht so viele waren, habe ich das kurz folgendermaßen per Hand bewerkstelligt:
Die IDs der frozen messages in Exims Queue auflisten mit
exiqgrep -z -i
Dann die Nachricht der entsprechenden ID anzeigen mit
exim -Mvb ID
Falls es sich um eine Spamnachricht handelt, diese direkt löschen mit
exim -Mrm ID
ansonsten die Ausgabe in eine Datei umleiten mit
exim -Mvb ID > mailcontent
Dann die Datei mailcontent editieren und die oberen Zeilen bis zum Beginn der ursprünglichen Mail löschen. Der „To:“-header darf nur die Mailaddresse des Empfängers enthalten, an den Exim die Mail eigentlich hätte zustellen sollen. Beispielsweise wird aus
1REOlj-0006ED-VH-D
This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
xxx@mydomain
local delivery failed
------ This is a copy of the message, including all the headers. ------
Return-path: <someone@senderdomain>
Received: from abc.com ([aaa.bbb.ccc.ddd])
by mymailserver with esmtp (Exim 4.76)
(envelope-from <someone@senderdomain>)
To: someone@somedomain; anotherone@anotherdomain; xxx@mydomain
...
dann
Return-path: <someone@senderdomain>
Received: from xxx.de ([129.187.xxx.yyy])
by mymailserver with esmtp (Exim 4.76)
(envelope-from <someone@senderdomain>)
To: xxx@mydomain
...
Sobald die Änderungen erfolgt sind, kann die Mail mit einem
cat mailcontent | exim -t
an die Empfänger gemäß dem Mail-Header verschickt werden oder mit einem
cat mailcontent | exim someone@somedomain.com
direkt an den/die definierten Empfänger geschickt werden. Durch ein
exim -Mrm ID
wird die entsprechende frozen E-Mail aus dem Queue gelöscht. Diese Schritte müssen für alle Mails durchgeführt werden.
Wer übrigens nur einen erneuten Zustellversuch der Nachrichten im frozen queue veranlassen möchte, kann dies mit einem einfachen
oder alternativ einem
tun.
Jo, so ein cronjob mit exim -qff sollte man schon haben 🙂
Danke für den Tip! Werde ich mal anlegen.
Das Exim-Cheatsheet von Brad ist übrigens auch sehr hilfreich.
[…] Frozen queue – Mails erneut zustellen: http://www.effinger.org/blog/2011/10/13/e-mails-erneut-zustellen-aus-exims-frozen-queue/ […]
[…] Frozen queue – Mails erneut zustellen: http://www.effinger.org/blog/2011/10/13/e-mails-erneut-zustellen-aus-exims-frozen-queue/ (scheint aber automatisch nach ein paar Tagen auch zu funktionieren) Exim4: SMTP-Login per […]