[Postfixbuch-users] "From" verifizieren

Maximilian Grobecker max at grobecker-wtal.de
Do Jan 16 20:38:01 CET 2014


Hallo,

genau dies habe ich so bei mir umgesetzt - direkt aus der
MySQL-Datenbank heraus, weil es schlichtweg schneller über alle Server
hinweg repliziert wird.


Was du suchst sind die "smtpd_sender_login_maps" - das ist eine einfache
Key-Value-Datei (oder eben eine MySQL-Map), in der eine Kombination aus
Benutzername und erlaubten Adressen hinterlegt ist.
Taucht die Kombination, mit der der Benutzer um die Ecke geritten kommt
in der Datei nicht auf, wird die Mail mit sinnvoller Fehlermeldung
abgelehnt.


Wenn du das direkt aus MySQL heraus füttern willst, ist hier ein Beispiel:

-- main.cf --

smtpd_sender_login_maps = \
proxy:mysql:/path/to/mysql_virtual_sender_login_mismatch_maps.cf

-- /main.cf


Mein Datenbanklayout sieht so aus, dass ich zwei Tabellen habe: Eine mit
den Benutzernamen und der "Haupt"-Mail-Adresse und eine weitere
"Alias"-Tabelle, mit der Aliase reps. Weiterleitungen definiert sind.
In der SQL-Anweisung prüfe ich, ob die vom Benutzer angegebene Adresse
irgendwie auf den Verwendeten Account verweist, denn wenn der Nutzer
darunter Mails empfangen kann will man i.d.R. auch, dass er damit welche
versenden können darf.

Login-Daten stehen in "mailboxes",
Aliase/Weiterleitungen in "aliase"


mailboxes.username = Der Benutzername;
aliases.address = Die Empfängeradresse;
aliases.goto = Die Zieladresse für Aliase/Weiterleitungen.


-- mysql_virtual_sender_login_mismatch_maps.cf --

query = \
SELECT CONCAT(`username`, " ") \
FROM `mailboxes` \
LEFT JOIN `aliases` \
ON `mailboxes`.`username` = `aliases`.`goto`  \
WHERE (`mailboxes`.`username` = "%s" OR `aliases`.`address` = "%s")  \
OR (`mailboxes`.`username` = CONCAT(SUBSTRING_INDEX('%s', '+', 1), '@',
SUBSTRING_INDEX('%s', '@', -1) )  \
OR `aliases`.`address` = CONCAT(SUBSTRING_INDEX('%s', '+', 1), '@',
SUBSTRING_INDEX('%s', '@', -1) ) );

-- /mysql_virtual_sender_login_mismatch_maps.cf --


Ich verwende bei mir das "+" als Delimiter zwischen Local-Part und
Adress-Tag, daher wird die SQL-Anweisung relativ komplex - dafür kann
man aber dann auch Absender wie "heini+irgendwas at doofkopp.tld" verwenden ;-)

Funktioniert wirklich großartig und greift auch nur, wenn der Benutzer
sich authentifiziert hat, um Mails zu versenden.
Systeme, die in mynetworks stehen werden von der Konfiguration ignoriert
und können senden wie sie wollen.


Btw: Wenn du öfter mit spammenden Accounts zu kämpfen hast, sieh dir mal
die Parameter "smtpd_client_message_rate_limit" und
"smtpd_client_recipient_rate_limit" an - die dürften dir helfen, das
Volumen in Grenzen zu halten bis man den Account gesperrt hat.



Viele Grüße aus dem Tal

Max Grobecker




Am 16.01.2014 11:30, schrieb Leander Sukov:
> Hallo,
>  
> auf einem Server läuft Postfix 2.5.5 mit mysql-Unterstützung. Alles
> funktioniert so, wie es soll. Allerdings gibt es viele User, die sich
> per tls/ssl einloggen und von den Clients senden. Manchmal sind die
> Clientrechner vervirt und verwurmt. Das erzeugt Spam. Eine ausgehende
> Filterung ist nicht möglich, weil wir damit den Versand behindern würden.
> In vielen Fällen sind die FROM-Angaben beim Spam nicht identisch mit den
> FROM-Angaben der User (also wie sie sein müssten). Ich würde deshalb
> gerne überprüfen ob eine rausgehende Mail eine erlaubte Absenderangabe
> im FROM hat. Die FROMs habe ich ja in der Datenbank und kann sie
> jederzeit in einen File schreiben, den Postfix dann überprüft. Das ist
> aber bei Postfix nicht vorgesehen. Postfix hat entweder "Negativlisten"
> (man kann ausschließen) oder sieht nach allen FROMS (Eingang und
> Ausgang). Oder ich stehe auf dem Schlauch.
> Hat jemand eine Idee, wie ich Postfix sage, dass es vor dem Versand
> nachsehen soll, ob ein FROM in einem hash vorkommt und ansonsten den
> Versand verwirft?
>  
> Kopfkratzend
> Leander Sukov
>  
> 
> ------------------------------------------------------------------------
> 
> 
> Ich bei Facebook (klick drauf)
> 
> https://www.facebook.com/leander.sukov
> 
> Kulturmaschinen bei Facebook (klick drauf)
> 
> 
> https://www.facebook.com/kulturmaschinen
> 
> Franz Josef Degenhardt bei Facebook (klick drauf)
> 
> https://www.facebook.com/Franz.Josef.Degenhardt
> 
> ----------------------------
> 
> Kontaktinformationen:
> 
> Mobil 0178 1305531
> 
> Fax 030 498 09 158
> 
> Yahoo-Messenger: leandersukov
> 
> ICQ-Messenger: 648222780
> 
> Skype: leander.sukov
> 
>  
> 
> 



Mehr Informationen über die Mailingliste Postfixbuch-users