通过 Dovecot 进行 Postfix SASL 身份验证 - 我可以在我的 Postfix SQL 查询中使用 SASL 登录名吗?

通过 Dovecot 进行 Postfix SASL 身份验证 - 我可以在我的 Postfix SQL 查询中使用 SASL 登录名吗?

我有一个邮件服务器postfixdovecotmysql在 Debian buster 上运行。

到目前为止一切都运行良好,但我想设置一个场景,其中 SASL 身份验证的登录名与收件人域的用户部分不同。

例子:

Login name used for SASL auth: myusername
Sender email address: [email protected]

由于我已将登录名作为 dovecot 中的变量使用,因此 dovecot 的身份验证工作正常。

但在 postfix 实际提交电子邮件之前,我想验证发件人地址是否确实属于登录的用户。因此,我添加了smtpd_sender_login_mapsmaster.cf 中的提交服务选项,指向 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

有没有办法使用原始 SASL 登录名(‘我的用户名’) 在我的 SQL 查询中?

答案1

实际上,我发现为此目的不需要访问 sasl auth 用户名。

根据用户手册,不应 smtpd_sender_login_maps返回 sasl 用户拥有的电子邮件地址 - 它应该返回拥有发件人电子邮件地址的 sasl 用户。

http://www.postfix.org/postconf.5.html#smtpd_sender_login_maps

在所有情况下,表查找的结果都必须是“未找到”或者以逗号和/或空格分隔的 SASL 登录名列表。

对于这样的查询,sasl 用户名不需要作为变量。

相关内容