- Abraxas - http://www.effinger.org/blog -

E-Mails erneut zustellen aus Exims frozen queue

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.