У меня есть почтовый сервер с postfix
, dovecot
работающий mysql
на Debian Buster.
Пока все работает нормально, но я хотел бы настроить сценарий, в котором имя пользователя для аутентификации SASL отличается от пользовательской части домена получателя.
Пример:
Login name used for SASL auth: myusername
Sender email address: [email protected]
Аутентификация с помощью dovecot работает нормально, поскольку имя пользователя доступно в качестве переменной в dovecot.
Но прежде чем Postfix фактически отправит электронное письмо, я хотел бы проверить, действительно ли адрес отправителя принадлежит пользователю, который вошел в систему. Поэтому я добавилsmtpd_sender_login_mapsопция для службы отправки в master.cf, указывающая на таблицу mysql.
-o smtpd_sender_login_maps=proxy:mysql:/etc/postfix/mysql/sender-login-maps.cf
Согласно руководству по mysql-table postfix (http://www.postfix.org/mysql_table.5.html), единственными доступными переменными являются %s, %u, %d, которые все относятся к адресу отправителя, т. е.:
%s = [email protected]
%u = sender
%d = domain.com
Есть ли способ использовать оригинальное имя входа SASL ('myusername') в моем SQL-запросе?
решение1
На самом деле, я понял, что доступ к имени пользователя sasl-аутентификации для этой цели не требуется.
Согласно руководству пользователя, smtpd_sender_login_maps
не следует возвращать адреса электронной почты, принадлежащие пользователю sasl, а следует возвращать пользователя sasl, которому принадлежит адрес электронной почты отправителя.
http://www.postfix.org/postconf.5.html#smtpd_sender_login_maps
Во всех случаях результатом поиска в таблице должно быть либо «не найдено», либо список имен входа SASL, разделенных запятыми и/или пробелами.
Для такого запроса имя пользователя sasl в качестве переменной не требуется.