Problem mit smtpd_sender_login_maps
Martin Sebald
msebald at hot-chilli.net
Di Nov 8 18:11:40 CET 2016
Hallo zusammen,
habe ein Problem mit smtpd_sender_login_maps. Irgendwie will das nicht so, wie
ich möchte und denke, dass es funktiniert.
Verwende ISPConfig als ISP Hilfsmittel. Greift nicht allzu tief ins System
ein, macht einem das Leben aber leichter. Nun gibt es hier eine neue Sache,
die ich vorher schon manuell drinnen hatte - und nun geht es auf einmal nicht
mehr. Nämlich die Sache mit den smtpd_sender_login_maps um zu verhindern, dass
ein SASL User mit beliebigen Absendeadressen versenden darf.
In der main.cf steht folgendes:
smtpd_sender_login_maps =
proxy:mysql:/etc/postfix/mysql-virtual_sender_login_maps.cf
hash:/etc/postfix/controlled_envelope_senders
Der fragliche Ausschnitt von /etc/postfix/mysql-virtual_sender_login_maps.cf:
query = SELECT destination FROM mail_forwarding WHERE source = '%s' AND active
= 'y' AND allow_send_as = 'y' AND server_id = 1 UNION SELECT email FROM
mail_user WHERE email = '%s' AND disablesmtp = 'n' AND server_id = 1;
In der Datei /etc/postfix/controlled_envelope_senders definiere ich noch ein
paar Ausnahmen, die hier fragliche Sache ist die Abfrage auf die Datenbank. Es
wird abgefragt, ob ein Mailalias direkt auf die Mailbox (= SASL User)
umgeleitet wird. Falls ja, darf versendet werden.
Dies funktioniert auch wunderbar, wenn es nur ein Weiterleitungsziel gibt.
Stehen mehrere drin, also z.B. alias at domain.tld geht an mailbox1 at domain.tld
und mailbox2 at domain.tld, klappt die Abfrage nicht mehr.
Im Datenbankfeld stehen die mehreren Ziele mit \n Zeilenumbrüchen drin. Und
komischerweise ging es vor dem Update auf die letzte Version von ISPConfig.
Eventuell hat sich etwas in der Datenbank geändert, ich weiß es nicht. Dachte
mir also, ich mache aus "destination" in der Abfrage das hier:
REPLACE(destination,'\n',',')
Denn hier http://www.postfix.org/postconf.5.html#smtpd_sender_login_maps habe
ich folgendes gelesen:
"In all cases the result of table lookup must be either 'not found' or a list
of SASL login names separated by comma and/or whitespace."
Tja, hm, warum geht das also nicht? Habe die Abfrage mal direkt auf die
Datenbank ausgeführt und sie ergibt auch das gewünschte Ergebnis. Beide Ziele
mit Komma dazwischen. Mit Leerstelle habe ich auch versucht, klappte auch nicht.
Wäre toll, wenn mir jemand auf die Sprünge helfen könnte. Vermutlich ist es
nur ne Kleinigkeit oder ein ganz grundsätzlicher Denkfehler. Meinte Frage habe
ich auch schon im ISPConfig Forum gestellt, leider aber bisher keine
verwertbare Antwort erhalten.
Danke und viele Grüße,
Martin
Mehr Informationen über die Mailingliste postfix-users