我正在尝试设置一个在 DMZ 中运行 Postfix 的邮件中继,以将所有传入邮件转发到内部 LAN 连接的邮件服务器。
我希望能够在网关处拒绝不存在的用户的来信,我认为这是最好的选择。
问题是,即使对于未包含在用户表中的用户,Postfix 仍会接受邮件。
我的配置:
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
local_recipient_maps =
local_transport = error:local delivery disabled
mydomain = ***
myhostname = merlin.***
mynetworks = 127.0.0.0/8 10.7.0.0/16
myorigin = /etc/mailname
parent_domain_matches_subdomains = debug_peer_list smtpd_access_maps
relay_domains = $transport_maps
relay_recipient_maps = mysql:/etc/postfix/mysql-relay_recipient_maps.cf
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
transport_maps = hash:/etc/postfix/transport_maps
我已彻底检查该relay_recipient_maps
功能是否有效(使用postmap -q
)。我正尝试向以下地址发送noone@***
邮件swaks
:
- 本地机器(邮件服务器本身)
- 10.7.11.x 网络中的主机
两次尝试都成功(Postfix 中继了邮件)。
怎么了?
编辑:
日志显示(“连接被拒绝”错误无关紧要;问题在于 Postfix 中继noone@***
):
Aug 3 13:20:44 merlin postfix/smtp[10166]: CE7E2C6E: to=<noone@***>, relay=none, delay=1642, delays=1642/0.01/0/0, dsn=4.4.1, status=deferred (connect to xaver.***[10.7.7.21]:25: Connection refused)
Aug 3 13:20:44 merlin postfix/smtp[10171]: connect to xaver.***[10.7.7.21]:25: Connection refused
答案1
经过几个小时的搜索,我发现查找结果至少被丢弃了八次,我终于意识到,我用来检查用户是否存在的存储函数在未找到匹配条目时返回 0。而对于 Postfix 来说,这意味着找到了用户。