我有一個郵件伺服器postfix
,在 Debian buster 上運行dovecot
。mysql
到目前為止,一切工作正常,但我想設定一個場景,其中 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 使用者名稱作為變數。