当我在 ubuntu 服务器上使用 postfix 设置电子邮件服务器时,如何确保它不会是开放中继?
答案1
开放中继意味着你接受来自未经认证不属于以下域的用户您管理的域名。
Postfix 有一些非常简单的配置选项可以帮助: 我的网络和mynetworks_style它们之间决定了从哪个网络地址发往任何目的地的消息将被接受。 我的目的地用于指定哪些域是您管理的域(即,您应该接受这些域的消息,因为它们是您的)。
最简单的设置如下:
mydomain = yourexampledomain.com
mydestination = $myhostname, $mydomain
mynetworks = 127.0.0.1/32
smtpd_recipient_restrictions =
permit_mynetworks,
reject_unauth_destination
这将接受邮件仅有的:
- 为了myexampledomain.com 和为了主机本身的主机名,从任何可以访问你的邮件服务器的机器
- 从邮件服务器上的任何客户端(127.0.0.1/32),为了任何主机,任何地点。
并会拒绝其他任何事物。
这是我能想到的最基本的设置。您需要在 postconf(5) 中读取 mydomain、mydestination、mynetworks{_style} 的条目。
如果您需要能够通过网络以外的任何其他标准(例如用户名和密码或 Kerberos 票证)接受来自客户端的邮件,则需要阅读SMTP_身份验证。
答案2
我相信您需要在 Postfix 配置文件中设置mynetworks_style
、mynetworks
和relay_domains
设置。基本上,前两个控制 Postfix 将从哪些服务器接受邮件,最后一个控制它将邮件转发到哪些服务器。确切的设置取决于您希望如何配置邮件服务器(即谁有权通过服务器发送电子邮件),但一般来说,relay_domains
应该仅设置为邮件服务器本身的主机名(与 相同mydestinations
),并且mynetworks_style
可以设置为host
,这意味着只接受来自本地主机本身的电子邮件。
有一些测试列在http://articles.slicehost.com/2008/8/7/postfix-checking-for-an-open-relay你可以使用它来检查你的服务器是否正在运行开放中继。(有些链接可能已经失效,但我确信至少有一个仍然有效……但我不记得是哪一个了)
以下是我的服务器的 Postfix 配置的摘录:
luser_relay= mydestination = $myhostname, $mydomain, localhost, localhost.$mydomain mynetworks = 127.0.0.1/32 [服务器的 IP 地址]/32 mynetworks_style = 主机 myorigin = $mydomain 中继域 = $我的目的地 smtpd_helo_restrictions = permit_mynetworks, 拒绝非完全限定域名主机名, 拒绝无效的主机名 smtpd_recipient_restrictions = permit_sasl_authenticated, 允许我的网络, 拒绝未授权目的地, check_policy_service unix:private/postgres, check_policy_service unix:private/policyd-spf, 拒绝_rbl_客户端 sbl-xbl.spamhaus.org