Exim: Fälschung der Absenderadresse verhindern

entro

Registered User
Huhu,

Ich hab da ein kleines Problem entdekt.

Wenn ich auf meinem Debian vServer von S4U (mit exim) Emails versenden will ist dies an jegliche Adresse unter der Domain möglich.

Bsp: meinedomain.de hat zwei Postfächer web1p1 und web1p2

web1p1 erhält die folgende Adresse: info@meinedomain.de
web1p2 erhält: webmaster@meinedomain.de

Das Problem ist, dass web1p1 auch als webmaster und web1p2 auch als info Emails versenden kann.

Gibt es eine Möglichkeit dies zu unterbinden?

Viele Grüße
entro
 
Last edited by a moderator:
Ich kann dir nicht direkt helfen, aber mglw. solltest du den Titel des Threads von "Exim: Absender fälschen" auf "Exim: Fälschung der Absenderadresse verhindern" (o.ä.) umschreiben. Dann wissen andere Mitglieder nicht nur beim Durchlesen des Forum-Indexes, worum es hier geht (und können vielleicht auch eher was zum Verhindern als zum Fälschen beitragen), sondern andere können diesen Thread auch besser finden, wenn sie nach dem gleichen Thema suchen.
 
Hi Elegantly,

danke für den Tip, hab das eben geändert, bin ja aber kein Mod, kann also nicht das ganze Thema ändern.
Ich habe das eben mal bei einem 2. vServer rekonstruiert. Es ist auch der Fall bei einem "frisch" Installierten vServer der Fall.
Kann mir dies jemand bestätigen?
Zu testen ist dies recht einfach: Emailadresse im Emailprogramm ändern (Adresse und Domain müssen vorhanden sein), bei gleichem Usernamen/Passwort

Freue mich über jede Antwort
Maik
 
Last edited by a moderator:
"untrusted_set_sender *" in /etc/exim4/update-exim4.conf.conf bzw /etc/exim4/conf.d/main/02_exim4-config_options auskommentieren und exim neu starten. Dadurch wird die "from:" Zeile automatisch auf den Usernamen des Users gesetzt der die Mail versendet, also z.B. web1p1. Wenn du Aliase haben willst mußt du dir selbst was zusammen basteln...
http://exim.org/exim-html-4.50/doc/html/spec_14.html#IX1543
http://exim.org/exim-html-4.50/doc/html/spec_43.html#SECT43.15
Kann mir dies jemand bestätigen?
Ist die Standarteinstellung vom Debian Exim Packet.
 
Last edited by a moderator:
Hallo HornOx,

danke für die Antwort!
Ich habe das eben mal einfach ausprobiert und es geht so direkt nicht.
Senden kann ich trotzdem noch von jeder auf dem Server befindlichen Adresse aus.

Code:
untrusted_set_sender = ^$sender_ident-

Stellt mich vor eine kleine Frage: Wie kann ich z.B. für mehrere User web1p1-X soetwas formulieren, um zu erreichen, dass einmal info@, webmaster@, support@ usw. zugeordnet werden?

Auch "local_from_check" hat mich irgendwie nicht weitergebracht. Ich seh wahrscheinlich den Wald vor lauter Bäumen nicht. Sorry...

Viele Grüße
entro

edit:
Dadurch wird die "from:" Zeile automatisch auf den Usernamen des Users gesetzt der die Mail versendet, also z.B. web1p1. Wenn du Aliase haben willst mußt du dir selbst was zusammen basteln...
ok, das stand da eben noch nicht....
 
Last edited by a moderator:
Ich habe das eben mal einfach ausprobiert und es geht so direkt nicht.
Du sollst ja auch nicht das Beispiel auf der Exim Dokumentationsseite ausprobieren sondern das machen was ich geschrieben habe(Zeile auskommentieren). Aber da ich leider was durcheinander gebraucht habe ist das der falsche Ansatz: Das obige hilft nur wenn die Mail direkt auf dem Server erstellt wird.

Probier mal folgendes:
/etc/exim4/conf.d/rewrite/31_exim4-config_rewriting bzw den entsprechenden Abschnitt in /etc/exim4/update-exim4.conf.conf öffnen und folgendes einfügen:
Code:
*@+local_domains ${lookup{$authenticated_id}lsearch{/etc/my_email-addresses}{$value}fail} Ffs
(diesmal ohne Links :p)
Dann eine Datei namens /etc/my_email-addresses erstellen, die Dateirechte so anpassen das Exim die Datei lesen darf und ungefähr folgendes reinschreiben:
Code:
web1p1: info@meinedomain.de
web1p2: webmaster@meinedomain.de
Und dann der übliche Exim Neustart.
Ab dann sollten alle Absender umgeschrieben werden, aus einem "Markus Müller <irgendwo@irgendwas.de>" wird ein "Markus Müller <info@meinedomain.de>" wenn er sich bei smtp als web1p1 anmeldet.



Ich habe keine Ahnung was bei SMTP after POP3 passiert, aber das ist AFAIK bei Exim eh nicht aktiviert.
Es wird nicht verhindert das als Absender z.b. papst@vatican.va angegeben wird, keine Ahnung ob du sowas haben willst oder nicht.
Vermutlich könnte man anstatt /etc/my_email-addresses auf die Confixx Datenbank zugreifen aber ich mag Confixx nicht.
Ich habe keine Ahnung ob ein automatisiertes Ändern des Absenders eine Nachrichtenmanipulation im Sinne des Fernmeldegesetztes darstellt, wenn du das gewerblich machst solltest du deine Kunden auf jeden Fall vorher informieren. Vermutlich gibts eine Variante die wirklich bei gefälschten Absendern die Mail gar nicht erst annimmt aber das umschreiben ist IMHO einfacher.
 
Hi HornOx!

Vielen Dank, das ist schonmal ein echt richtig gut erklärter Ansatz.

Vermutlich gibts eine Variante die wirklich bei gefälschten Absendern die Mail gar nicht erst annimmt aber das umschreiben ist IMHO einfacher.
Leider suche ich genau diese Variante...

Die User sollen nur mit den Ihrem Postfach zugeordneten Emailadressen schreiben können. Alle anderen Versuche sollten abgelehnt werden.
Bzw. es würde mir schon reichen, wenn einige bestimme Adressen, wie z.B. info@ und so, auf bestimmte Postfächer beschränkt wären.

Viele Grüße
entro
 
acl/40_exim4-config_check_data vor dem letzten "accept":
Code:
deny condition = ${if eq{$authenticated_id}{}{false}{true}}
     !senders  = ${lookup{$authenticated_id}lsearch{/etc/my_email-addresses}{$value}}
     message   = User $authenticated_id darf nur ${lookup{$authenticated_id}lsearch{/etc/my_email-addresses}{$value}{true}} als Absender haben, $sender_address ist nicht erlaubt.
/etc/my_email-addresses wie oben. Alle Benutzer ohne Eintrag in /etc/my_email-addresses dürfen auch weiterhin beliebige Absender angeben, ist bei Systemmails und Apache/mod_php auch ganz sinnvoll. Solltest du aber gründlich testen bevor du es auf einem produktiven System einsetzt, mit ACLs kenn ich mich kaum aus.

btw, hast du einen SPF Eintrag für deine Domain? http://de.wikipedia.org/wiki/Sender_Policy_Framework
 
acl/40_exim4-config_check_data
Sicher, das da da rein soll?
Ich hab ähnliche Beiträge bei Google gefunden, wo "30_exim4-config_check_rcpt" angesprochen wurde.

Leider hab ich immer noch keine Lösung für das Problem gefunden.

Meine jetzige Fehlermeldung:
User web1p1 darf nur true als absender haben, info@meinedomain.de ist nicht erlaubt.

Das tut er jetzt leider auch, wenn web1p1:info@meinedomain.de in /etc/my_email-addresses steht (auch bei allen anderen).

Ich muss im moment noch gestehen, dass ich mit dieser Syntax nicht wirklich klar komme....

Viele Grüße
entro
 
von da:
Two ACLs are associated with the DATA command, because it is two-stage command, with two responses being sent to the client. When the DATA command is received, the ACL defined by acl_smtp_predata is obeyed. This gives you control after all the RCPT commands, but before the message itself is received. It offers the opportunity to give a negative response to the DATA command before the data is transmitted. Header lines added by MAIL or RCPT ACLs are not visible at this time, but any that are defined here are visible when the acl_smtp_data ACL is run.

You cannot test the contents of the message, for example, to verify addresses in the headers, at RCPT time or when the DATA command is received. Such tests have to appear in the ACL that is run after the message itself has been received, before the final response to the DATA command is sent. This is the ACL specified by acl_smtp_data, which is the second ACL that is associated with the DATA command.
von der Exim Standartkonfiguration:
Code:
### main/02_exim4-config_options
#################################

# This option defines the access control list that is run when an
# SMTP RCPT command is received.
#
acl_smtp_rcpt = acl_check_rcpt

# This option defines the access control list that is run when an
# SMTP DATA command is received.
#
acl_smtp_data = acl_check_data
30_exim4-config_check_rcpt wird überprüft sobald der Empfänger bekannt ist, der Absender ist da aber meist noch unbekannt. Also ist acl/40_exim4-config_check_data wirklich die richtige Stelle.


Meine jetzige Fehlermeldung:
User web1p1 darf nur true als absender haben
Hast du was verändert? Bei meinen Tests hat es eigentlich funktioniert. Was für eine Fehlermeldung bzw "message" bekommst du?
Ich muss im moment noch gestehen, dass ich mit dieser Syntax nicht wirklich klar komme....
ich probiers mal zu erklären:
>deny
Sobald alle folgenden Tests der Reihe nach erfolgreich bzw true sind wird der Empfang verweigert
>condition = ${if eq{$authenticated_id}{}{false}{true}}
Wenn $authenticated_id leer ist wird false zurückgegeben, ansonsten true. Bei false wird, wie schon oben erwähnt, die gesammte Regel ignoriert und die Mail kommt ohne das die nächsten Zeilen getestet werden durch. $authenticated_id ist leer wenn die Mail von einem fremden Server kommt und für einen deiner Useraddressiert ist. Wenn sich einer deiner User anmeldet ist $authenticated_id der Benutzername, also z.b. web1p1
> !senders =
Überprüft ob der Absender in der folgenden Liste enthalten ist, das "!" ist eine Verneinung, d.h. wenn der Absender nicht in der Liste enthalten ist wird der Empfang verweigert
>${lookup{$authenticated_id}lsearch{/etc/my_email-addresses}{$value}}
Schaut in /etc/my_email-addresses nach ob es einen Eintrag für $authenticated_id gibt, wenn ja wird er zurückgegeben. Wenn kein Eintrag existiert wird eine leere Liste zurückgegeben.
>message = User $authenticated_id darf nur ${lookup{$authenticated_id}lsearch{/etc/my_email-addresses}{$value}{true}} als Absender haben, $sender_address ist nicht erlaubt.
Gibt eine Fehlermeldung aus und gibt standardmäßig true zurück.
 
Back
Top