[Dovecot-de] Backscatter-Gefahr durch "Delivered-To"-Header!

Maximilian Grobecker max at grobecker-wtal.de
Mo Apr 7 21:52:52 CEST 2014


Hallo zusammen,

ich habe gestern einige unzustellbare Bounces im Postmaster-Postfach
gehabt, aus denen ersichtlich wurde, dass MEIN Server die Bounces
generiert und an den vermeintlichen Absender geschickt hat.

Überall hat mein Server reingeschrieben:
Diagnostic-Code: X-Postfix; mail forwarding loop for user at domain


Da die User selbst keine Weiterleitungen einrichten können war das vom
Prinzip her schonmal ungewöhnlich. Der Grund ist auch tatsächlich keine
Forwarding-Loop sondern ein "Bug" in der Dovecot-Dokumentation auf
http://wiki2.dovecot.org/LDA/Postfix
(Unter "Virtual users", der Teil der in die master.cf kommt)

Es kann auch tendenziell auch andere Transports betreffen, wenn diese
NACH dem Einfügen in die Queue kommen und dieses "D"-Flag gesetzt haben.



Ich verwende Dovecot als LDA, Postfix stellt darüber dann alle Mails ins
Postfach zu. Ich habe, wie in besagtem Wiki empfohlen, einen
dovecot-Transport eingerichtet und dort auch "flags=DRhu" gesetzt.
Toll, funktioniert :-)

Schade, erzeugt leider provozierbare Fehler für die Postfix dann lokale
Bounces generiert und verschickt, weil diese erst NACH der Einlieferung
in die Queue auftreten.

Der Schlüssel zum Glück ist: Der unscheinbare "Delivered-To"-Header.
Das Flag "D" sorgt nicht nur dafür dass es diesen Header gibt, sondern
auch dass Postfix etwas damit macht - nämlich prüfen, ob es eine Loop gibt.

Nun haben Spammer (entweder intentionell oder aus purem Unvermögen)
E-Mails bei mir eingeworfen, die bereits einen solchen Header enthalten,
in dem auch die E-Mail-Adresse des Empfängers Erwähngung findet. Weil es
nun also bei der Übergabe an Dovecot diesen Header gibt, geht Postfix
fälschlicherweise davon aus, dass es eine Loop ist und lässt die TARDIS
explodieren. Oder wenigstens einen Bounce erzeugen.


Das kann jeder bei sich "relativ" leicht testen, wenn er halbwegs
fließend SMTP spricht ;-)


Man nehme handelsübliche E-Mail-Header:

----------------------------------------------------------
From: <user1 at domain1>
To: <user2 at domain2>
Delivered-To: <user2 at domain2>
Date: Mon,  7 Apr 2014 21:45:00 +0200 (CEST)
Subject: Stanley stepped into the Broom Closet

But there was nothing here, so he turned around and
got back on track!

.

----------------------------------------------------------

Wichtig ist, dass der "Delivered-To"-Header dem "To"-Header entspricht
und auch das tatsächliche finale Ziel ist (Alias-Adressen oder
Weiterleitungen funktionieren NICHT).

Falls der Remote-Mailserver DSN verschickt und dabei wirklich alles
ausplaudert, hätte man damit z.B. einen Anhaltspunkt ;-)


Jedenfalls öffnet man nun eine Telnet-Konsole (am Besten von einem
*NIX-System aus) und stellt eine Verbindung zum Ziel-Mailserver her:


telnet remote.mailserver.tld smtp



Ab dann muss man vernünftiges SMTP sprechen:

EHLO deinfqdn.tld
...
MAIL FROM: <user1 at domain1>
...
RCPT TO: <user2 at domain2>
...
DATA
<< hier die Mail von oben einfügen, ggf. noch einmal Zeilenumbruch
hinzufügen >>



Mit ein bisschen Glück/Pech bekommt man eine Unzustellbarkeitsnachricht,
die vom Zielserver generiert und zurückgeschickt wurde - im Anhang die
originale E-Mail.


Die schnellste Lösung dafür ist, das "D"-Flag für den Dovecot-Transport
zu entfernen, aber es ist nicht zwingend die cleverste Lösung, immerhin
verhindert es Weiterleitungsschleifen.
Auf der anderen Seite begibt sich Postfix ab dem 20. (?) Received-Header
in Streik und weigert sich die E-Mail anzufassen.

Momentan suche ich noch nach einer für mich optimalen Lösung....
Wer Ideeen hat: Ich bin da offen für alles :-)



Viele Grüße aus dem Tal
 Max



Mehr Informationen über die Mailingliste Dovecot