Postfix 不使用 sender_login_maps 检查“发件人:”地址

Postfix 不使用 sender_login_maps 检查“发件人:”地址

我正在尝试设置一个后缀配置,其中(虚拟)用户只能使用他们拥有的“发件人:”地址进行发送。所以我投入reject_authenticated_sender_login_mismatchsmtpd_sender_restrictions.

使用

query = SELECT goto FROM alias WHERE address='%s' and active=1;

在我的中,sender_login_maps.cf我可以使用我想要的任何发件人地址发送邮件,甚至是类似madeup@not_my_domain.com.

然而,

postmap -q "madeup@not_my_domain.com" mysql:/etc/postfix/sql/sender_login_maps.cf 

没有按预期返回任何内容。

现在,如果我将查询更改为

SELECT goto FROM alias WHERE address='notinthedatabaseforsure' and active=1; 

我根本无法发送任何邮件。到目前为止,一切都很好。但日志说

postfix/smtps/smtpd[11683]: NOQUEUE: reject: RCPT from...: 553 5.7.1 <[email protected]>: 
  Sender address rejected: not owned by user [email protected]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[192.168.2.103]>

即使我尝试从 发送madeup@not_my_domain.com[email protected]是登录名,[email protected]收件人。

在正确的设置中我会期望类似的东西

postfix/smtps/smtpd[11683]: NOQUEUE: reject: RCPT from ...: 553 5.7.1 <madeup@not_my_domain.com>: 
  Sender address rejected: not owned by user [email protected]; from=<madeup@not_my_domain.com> to=<[email protected]> proto=ESMTP helo=<[192.168.2.103]>

所以看起来 postfix 使用登录名来搜索登录名,而不管发件人地址如何,这解释了为什么我可以使用我首先提到的查询以任何发件人地址发送。

更新:我检查了我的 sql 日志,确实,MySQL 服务器从未看到过madeup@not_my_domain.com.它只获取登录地址和收件人地址的查询[email protected]

以下是 master.cf 和我的 main.cf 中的 smtps 部分:

smtps inet n - - - - smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=是
  -o tls_preempt_cipherlist=是
  -o smtpd_tls_security_level=加密
  -o smtpd_sasl_auth_enable=是
  -o smtpd_client_restrictions=permit_sasl_authenticated,拒绝
  -o milter_macro_daemon_name=起源
  -o smtpd_sasl_type=鸽子
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_relay_restrictions=reject_non_fqdn_recipient、reject_unknown_recipient_domain、permit_mynetworks、permit_sasl_authenticated、拒绝
  -o milter_macro_daemon_name=起源
  -o cleanup_service_name=提交标头清理
我的网络 = 127.0.0.0/8
inet_interfaces = 全部
mydomain = 域名.com
myhostname = mail.domain.com
我的起源 = $我的域名
我的目的地=
中继主机 =


smtpd_relay_restrictions=permit_mynetworks、permit_sasl_authenticated、reject_unauth_destination、reject_non_fqdn_recipient

smtpd_recipient_restrictions =
 允许我的网络,
 允许_sasl_验证,
 reject_non_fqdn_hostname,
 拒绝非 FQDN 发送者,
 拒绝非 FQDN 收件人,
 拒绝_unauth_目的地,
 拒绝_unauth_pipelined,
 拒绝无效主机名

smtpd_发件人限制=
 拒绝非 FQDN 发送者,
 拒绝未知发件人域,
 拒绝_unauth_pipelined,
 reject_authenticated_sender_login_mismatch,
 允许_sasl_authenticated

smtpd_helo_required = 是
smtpd_helo_restrictions=permit_mynetworks
                            拒绝_invalid_helo_主机名
                            reject_non_fqdn_helo_主机名
                            拒绝_未知_helo_主机名

smtpd_data_restrictions =拒绝_unauth_pipelined

smtpd_sasl_auth_enable = 是
smtpd_sasl_security_options = noanonymous、noplaintext
smtpd_sasl_type = 鸽舍
smtpd_sasl_path = 私有/身份验证

postscreen_access_list=permit_mynetworks
                                cidr:/etc/postfix/postscreen_access
postscreen_blacklist_action = 删除
postscreen_greet_action = 放下

postscreen_dnsbl_threshold = 2
postscreen_dnsbl_sites = dnsbl.sorbs.net*1、bl.spamcop.net*1、ix.dnsbl.manitu.net*2、zen.spamhaus.org*2
postscreen_dnsbl_action = 删除

virtual_alias_maps = mysql:/etc/postfix/sql/aliases.cf
virtual_mailbox_maps = mysql:/etc/postfix/sql/accounts.cf
virtual_mailbox_domains = mysql:/etc/postfix/sql/domains.cf
中继域 = mysql:/etc/postfix/sql/relay_domains.cf
smtpd_sender_login_maps = mysql:/etc/postfix/sql/sender_login_maps.cf


virtual_uid_maps = 静态:3000
virtual_gid_maps = 静态:3000
virtual_mailbox_base = /home/vmail

# 禁用 NIS 查找警告
alias_maps=哈希值:/etc/aliases

附加点_mydomain = 否
收件人分隔符 = +

答案1

如果具有登录名的用户[email protected]只能按照您之前[email protected]应该使用的方式发送reject_sender_login_mismatchpermit_sasl_authenticated

smtpd_sender_restrictions = 
    # ... skip ...
    reject_sender_login_mismatch
    permit_sasl_authenticated

这个选项包括功能两者 reject_authenticated_sender_login_mismatchreject_unauthenticated_sender_login_mismatch.

此外,检查用户的 SQL 查询是否返回他的电子邮件(也称为登录名),postfix 将为其运行测试。如果它只是返回1或其他“真实”值,它可能无法按预期工作。

答案2

解决方案是将其放在reject_authenticated_sender_login_mismatch现场smtpd_client_restrictions

PS:请注意,smtpd_client_restrictions与 不同smtpd_sender_restrictions

相关内容