我们正在从旧的赛门铁克消息网关迁移到 debian/postfix 机器。
symantec 中的规则如下:
- 从本地域到同一个域,接受所有域然后将所有域转发到 outlook.com 服务器。
-从本地到非本地域,仅接受来自特定 IP 地址的请求,然后中继所有 outlook.com 365 服务器。
“将所有转发到 outlook.com”部分已完成,但我不明白第二条规则如何通过 ip 进行过滤。
这是我的实际 main.cf:
inet_protocols = ipv4
myorigin = /etc/mailname
alias_maps = hash:/etc/aliases
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 3.6
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination
myhostname = xxx.yyy.it
mynetworks = 0.0.0.0/0
mailbox_size_limit = 0
recipient_delimiter = +
mynetworks_style = subnet
relayhost = zzz.mail.protection.outlook.com]
mydestination =
谢谢
答案1
限制谁可以使用服务器进行中继
您当前正在接受任何目的地的任何消息
smtpd_relay_restrictions = permit_mynetworks
mynetworks = 0.0.0.0/0
如果您有一个 IP 地址192.0.2.10
和一个网络198.51.100.0/24
,并且只允许使用此电子邮件网关进行中继,则您可以使用:
mynetworks = 192.0.2.10/32 198.51.100.0/24
您还可以使用SASL 身份验证用于访问控制。
中继特定域的所有邮件
Postfix 有relay_domains
控制...
系统将把邮件转发到哪些目标域(及其子域)。有关如何
relay_domains
使用该值的详细信息,请参阅permit_auth_destination
和reject_unauth_destination
SMTP 收件人限制。
了解了这一点,你可以使用
smtpd_relay_restrictions =
permit_auth_destination,
permit_mynetworks,
permit_sasl_authenticated,
reject
或者
smtpd_relay_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
和
relay_domains = example.com
relayhost = [example-com.mail.protection.outlook.com]
先前配置mynetworks
的(和/或 SASL 身份验证)可防止其他人将此网关用于所有目的地,但可以relay_domains
接受已配置域的任何消息。
限制发件人域
旧版 Symantec Messaging Gateway 还对每个发件人域的访问进行了额外限制。在 Postfix 中,这可以在两个不同的级别上进行限制。
信封发件人
SMTP 中使用的域MAIL FROM
(RFC 5321,4.1.1.2) 命令可以限制使用check_sender_access
从smtpd_sender_restrictions
。
前几个阶段的限制可以应用于后面的阶段,因此这可以在smtpd_relay_restrictions
或内应用smtpd_recipient_restrictions
。请记住...
从 Postfix 2.10 开始,中继权限规则最好用 来实现
smtpd_relay_restrictions
,这样, 下的宽松垃圾邮件阻止策略smtpd_recipient_restrictions
将不再导致宽松的邮件中继策略。
例如,这将被添加为
smtpd_relay_restrictions =
check_sender_access regexp:/etc/postfix/sender_access
包含/etc/postfix/sender_access
/@example.com$/ OK
// REJECT Relay allowed only from our domain.
标头发送者
发件人地址邮件用户代理(MUA)向用户显示的不是信封发件人,而是来自 Internet 邮件格式的标题 发起者字段 From
(RFC 5322, 3.6.2)。作为电子邮件标头,可以使用以下方式进行限制header_checks
. 以下配置需要Postfix PCRE 支持Debian 软件包自带的postfix-pcre
。
header_checks = pcre:/etc/postfix/header_checks
该文件包含:
if /^From:/
!/^From: .*@example\.com/ REJECT Relay allowed only from our domain.
endif
综合起来
将前面的所有内容放在一起,可以构建一个与 Symantec Messaging Gateway 的旧设置类似的配置。在main.cf
:
mynetworks = 192.0.2.10/32 198.51.100.0/24
relay_domains = example.com
relayhost = [example-com.mail.protection.outlook.com]
header_checks = pcre:/etc/postfix/header_checks
smtpd_relay_restrictions =
check_sender_access regexp:/etc/postfix/sender_access,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject
这将允许所有符合以下条件的消息并拒绝其余消息:
- 信封发件人是
*@example.com
AND - 标题
From
有*@example.com
AND - 以下任何一种:
- 收件人是
*@example.com
OR - 客户端 IP 是以下
192.0.2.10
任一情况 - 客户端 IP 在网络中
198.51.100.0/24
- 收件人是
接受的消息被转发到智能主机example-com.mail.protection.outlook.com
。
Microsoft 365 注意事项
默认情况下,example-com.mail.protection.outlook.com
仅接受邮件(来自互联网)为了 example.com
。 看设置连接器以在 Microsoft 365 或 Office 365 与你自己的电子邮件服务器之间路由邮件。
从您自己的电子邮件服务器到 Office 365 的连接器
设置此连接器后,Microsoft 365 或 Office 365 将接受来自组织的电子邮件服务器的邮件,并代表您将邮件发送给收件人。此收件人可能是 Microsoft 365 或 Office 365 中组织的邮箱,也可能是 Internet 上的收件人。为了完成此方案,您还需要配置电子邮件服务器以将电子邮件直接发送到 Microsoft 365 或 Office 365。
这第 2 部分:配置邮件从电子邮件服务器流到 Microsoft 365 或 Office 365有两种方式可以验证你的服务器:
- 选择以下两个选项之一
- 通过验证发送服务器用于向 Office 365 进行身份验证的证书上的主题名称是否与下面文本框中输入的域相匹配(推荐)并
- 通过验证发送服务器的 IP 地址是否与以下 IP 地址之一匹配,该地址专属于您的组织。
该连接器可以example-com.mail.protection.outlook.com
用作智能主机您的电子邮件网关的 SMTP 中继。