我想强制发件人使用与 SASL 登录用户名相同的信封发件人地址。从Postfix SASL 自述文件我知道我应该在选项中列出smtpd_sender_login_maps
一个具有两个相同列的哈希表并列出所有有效的电子邮件,并reject_sender_login_mismatch
在中指定smtpd_recipient_restrictions
。
但是我有 MySQL 虚拟域和用户表,事情并非如此。对于用户,我有以下内容:
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
其中的内容mysql-virtual_mailboxes.cf
如下:
user = dbuser
password = dbpass
dbname = mail
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'
hosts = dbhost
这将返回类似于domainname.com/userpart/
电子邮件的内容[email protected]
。这未列在允许的格式中Postfix 文档。
我是否应该将查询更改为不同的输出格式,或者我是否只需添加即可使reject_sender_login_mismatch
限制smtpd_recipient_restrictions
生效?我正在尝试以下选项:
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
smtpd_helo_restrictions = permit_mynetworks, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, permit
smtpd_recipient_restrictions = permit_mynetworks, reject_sender_login_mismatch, permit_sasl_authenticated, reject_unauth_destination
smtpd_sender_restrictions = permit_mynetworks, reject_non_fqdn_sender, reject_sender_login_mismatch, reject_unknown_sender_domain, permit