postfix:smtpd 配置为仅允许发送至/来自本地域的邮件?

postfix:smtpd 配置为仅允许发送至/来自本地域的邮件?

我为我们公司的域设置了一个电子邮件服务器。我们希望能够接收基于域的邮件,但我们也希望能够通过该服务器向任何域发送电子邮件。在 slackware 框上使用 postfix/sasl。未安装 Sendmail。服务器位于公共 A 类 IP 上,与互联网之间没有任何连接。SASL 构建时支持 LOGIN,以便与较旧的 Outlook 客户端兼容,并使用 shadow 作为身份验证方法。我使用 postgres 构建了支持 sql 的 SASL。我计划在解决当前设置中的所有错误后立即迁移到该方法。使用 SASL 的身份验证似乎有效。

我现在的配置作品我们可以正常发送和接收基于域的电子邮件,但任何发送到我们域以外的域的电子邮件都无法发送(我猜“中继”是正确的术语?)。但这很奇怪:我似乎能够向 gmail 和其他域发送电子邮件,但使用 Outlook 2000 在其他位置工作的其他员工无法向我们的域外发送电子邮件。我使用 gmail 和 thunderbird 作为我的发送/接收客户端,我似乎没有遇到问题。你们能看看我的配置并告诉我是否需要添加/删除/调整一些设置吗?此外,如果有任何安全调整需要实施,请告诉我。

以下是 postconf -n 的输出:

alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = all
mail_owner = postfix
mailq_path = /usr/bin/mailq
manpage_directory = /usr/local/man
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain, www.$mydomain
mydomain = mydomain.com
myhostname = mail.mydomain.com
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
notify_classes = resource, software
queue_directory = /var/spool/postfix
readme_directory = no
relay_domains =
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
soft_bounce = no
unknown_local_recipient_reject_code = 550

谢谢!

答案1

据我了解,您有两个站点。Postfix 服务器位于站点 A,所有用户都可以正常使用。但是,从站点 B,用户只能在域内发送邮件,而不能在其他地方发送邮件。

简短的回答是将站点 B 的 IP 地址添加到 main.cf 中的 mynetworks 变量中。

稍微长一点的答案:

Postfix 在 smtpd_recipient_restrictions 中做出中继决定。这是针对传入消息运行的检查列表。

Postfix 接收来自世界各地的邮件,并向世界各地发送邮件。为了确保 Postfix 不是开放中继,默认设置略有限制:

来自全球 (0.0.0.0/0) 的邮件将被转发到配置中明确列出的域。来自白名单 IP 地址的邮件将被转发到任何域,无论该域是否在本地配置。

这些变量的默认值是 mydestination 和 mynetworks。

由于您正在探索 SMTP AUTH,因此您需要添加以下内容:
smtpd_recipient_restrictions = permit_mynetworks、permit_sasl_authenticated、reject_unauth_destination

http://www.postfix.org/SASL_README.html#server_sasl_authz

确保您的远程系统已配置为真正向服务器进行身份验证。

相关内容