Ich habe einen Mailserver mit postfix
, dovecot
der mysql
auf Debian Buster läuft.
Bisher funktioniert alles einwandfrei, aber ich möchte ein Szenario einrichten, bei dem sich der Anmeldename für die SASL-Authentifizierung vom Benutzerteil der Empfängerdomäne unterscheidet.
Beispiel:
Login name used for SASL auth: myusername
Sender email address: [email protected]
Die Authentifizierung mit Dovecot funktioniert einwandfrei, da ich den Anmeldenamen als Variable in Dovecot zur Verfügung habe.
Aber bevor Postfix die E-Mail tatsächlich absendet, möchte ich überprüfen, ob die Absenderadresse wirklich dem angemeldeten Benutzer gehört. Daher habe ich densmtpd_sender_login_mapsOption für den Übermittlungsdienst in master.cf, die auf eine MySQL-Tabelle verweist.
-o smtpd_sender_login_maps=proxy:mysql:/etc/postfix/mysql/sender-login-maps.cf
Laut dem MySQL-Tabellenhandbuch von Postfix (http://www.postfix.org/mysql_table.5.html), sind die einzigen verfügbaren Variablen %s, %u, %d – die sich alle auf die Absenderadresse beziehen, d. h.:
%s = [email protected]
%u = sender
%d = domain.com
Gibt es eine Möglichkeit, den ursprünglichen SASL-Anmeldenamen ('mein Benutzername') in meiner SQL-Abfrage?
Antwort1
Tatsächlich habe ich herausgefunden, dass der Zugriff auf den SASL-Auth-Benutzernamen für diesen Zweck nicht erforderlich ist.
Laut Benutzerhandbuch smtpd_sender_login_maps
sollten nicht die E-Mail-Adressen des SASL-Benutzers zurückgegeben werden, sondern der SASL-Benutzer, dem die E-Mail-Adresse des Absenders gehört.
http://www.postfix.org/postconf.5.html#smtpd_sender_login_maps
In allen Fällen muss das Ergebnis der Tabellensuche entweder „nicht gefunden“ oder eine durch Komma und/oder Leerzeichen getrennte Liste von SASL-Anmeldenamen sein.
Für eine solche Abfrage wird der SASL-Benutzername als Variable nicht benötigt.