我有一个带有postfix
,dovecot
并mysql
在 Debian buster 上运行的邮件服务器。
到目前为止,一切工作正常,但我想设置一个场景,其中 SASL 身份验证的登录名与收件人域的用户部分不同。
例子:
Login name used for SASL auth: myusername
Sender email address: [email protected]
使用 dovecot 的身份验证工作正常,因为我在 dovecot 中将登录名用作变量。
但在 postfix 实际提交电子邮件之前,我想验证发件人地址是否真的由登录的用户拥有。因此,我在 master.cf 中的提交服务中添加了smtpd_sender_login_maps选项,指向一个 mysql 表。
-o smtpd_sender_login_maps=proxy:mysql:/etc/postfix/mysql/sender-login-maps.cf
根据 postfix 的 mysql-table 手册(http://www.postfix.org/mysql_table.5.html),唯一可用的变量是 %s, %u, %d - 它们都与发件人地址有关,即:
%s = [email protected]
%u = sender
%d = domain.com
有没有办法在我的 SQL 查询中使用原始 SASL 登录名 ( 'myusername' )?
实际上,我发现为此目的不需要访问 sasl auth 用户名。
根据用户手册,
smtpd_sender_login_maps
不应返回 sasl 用户拥有的电子邮件地址 - 它应该返回拥有发件人电子邮件地址的 sasl 用户。http://www.postfix.org/postconf.5.html#smtpd_sender_login_maps
对于这样的查询,sasl 用户名不需要作为变量。