Problem mit smtpd_sender_login_maps
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@domain.tld geht an mailbox1@domain.tld und mailbox2@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
Hallo zusammen,
bitte alles wieder vergessen...
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;
allow_send_as war nicht auf "y" gesetzt. Auch ne neue Funktion, auf diese hatte ich nicht geachtet.
Die einzige Info, die ich nun sinnvoll beitragen kann ist, dass Postfix also auch Listen mit \n getrennt akzeptiert. Eventuell kann das hier http://www.postfix.org/postconf.5.html#smtpd_sender_login_maps ja aufgenommen werden.
Viele Grüße, Martin
On 2016-11-08 18:28:49, Martin Sebald wrote:
Die einzige Info, die ich nun sinnvoll beitragen kann ist, dass Postfix also auch Listen mit \n getrennt akzeptiert. Eventuell kann das hier http://www.postfix.org/postconf.5.html#smtpd_sender_login_maps ja aufgenommen werden.
\n zählt meines Wissens zu "whitespaces"[1]:
"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." [2]
[1] https://en.wikipedia.org/wiki/Whitespace_character [2] http://www.postfix.org/postconf.5.html#smtpd_sender_login_maps
participants (2)
-
Marco Dickert
-
Martin Sebald