![通过 Dovecot 进行 Postfix SASL 身份验证 - 我可以在我的 Postfix SQL 查询中使用 SASL 登录名吗?](https://linux22.com/image/761831/%E9%80%9A%E8%BF%87%20Dovecot%20%E8%BF%9B%E8%A1%8C%20Postfix%20SASL%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%20-%20%E6%88%91%E5%8F%AF%E4%BB%A5%E5%9C%A8%E6%88%91%E7%9A%84%20Postfix%20SQL%20%E6%9F%A5%E8%AF%A2%E4%B8%AD%E4%BD%BF%E7%94%A8%20SASL%20%E7%99%BB%E5%BD%95%E5%90%8D%E5%90%97%EF%BC%9F.png)
我有一个邮件服务器postfix
,dovecot
并mysql
在 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 用户名不需要作为变量。