Postfix:使用 MySQL 虚拟用户时如何使用 rejection_sender_login_mismatch?

Postfix:使用 MySQL 虚拟用户时如何使用 rejection_sender_login_mismatch?

我想强制发件人使用与 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

相关内容