Postfix 中继到 M365:两个主机列表,一个用于向外部发送身份验证,另一个仅用于向内部发送身份验证

Postfix 中继到 M365:两个主机列表,一个用于向外部发送身份验证,另一个仅用于向内部发送身份验证

我是一名安全管理员,在 Exchange Online(又名 Microsoft 365)上拥有邮箱,不太熟悉邮递,但我必须在本地部署邮递服务,以允许某些设备(内部应用程序、交换机等)通过 Exchange Online 发送电子邮件。

我首选的方法是内部设备(例如:打印机)或应用程序(例如:某些内部服务器)与我的内部后缀对话 SMTP,然后再通过 SMTP 与 Exchange Online 对话。

我在 Exchange 端已完成所有配置,并配有中继连接器,接收电子邮件毫无问题。

我将 postfix 配置为中继,起初它工作正常,只允许文件上的主机使用该服务:

mynetworks = hash:/etc/postfix/hosts_auth_to_relay

但我想维护两个授权列表:

List1:仅授权中继到 Exchange 内部邮箱的主机...标准是将邮件发送到我的域(例如:mycorpdomain.com)。

列表 2:授权中继到所有域的主机(即:gmail.com、hotmail.com 等)

我对 smtpd_recipient_restrictions 和 smtpd_relay_restrictions 感到很困惑,但使用它们时所有邮件都被拒绝了。您知道如何在 main.cf 上声明这两个授权吗?

答案1

经过无数次尝试和错误后,问题得以解决。方法如下:

另外:我不希望允许发件人向本地主机发送任何内容,这就是我有blocked_destinations的原因。

main.cf 相关行:

relay_domains = mydomaincorp.com

relayhost = [mysubdomainonmicrosoft.mail.protection.outlook.com]

mynetworks = hash:/etc/postfix/hosts_auth_to_relay

smtpd_client_restrictions =  check_client_access hash:/etc/postfix/hosts_auth_to_relay, check_client_access hash:/etc/postfix/hosts_auth_to_level1, reject

smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/blocked_destinations, permit_mynetworks, check_recipient_access hash:/etc/postfix/destinations_level1, reject

hosts_auth_to_relay

#My server that e-mail all domains
10.0.0.10      OK

hosts_auth_to_level1

#My server that e-mail only to mydomaincorp.com
10.0.0.20    OK

目的地_级别1

mydomaincorp.com    OK

被阻止的目的地

localhost       REJECT
localhost.mydomaincorp.com    REJECT

如果我尝试从未列出的主机(即 10.0.0.30)向 mydomaincorp.com 发送电子邮件,则响应是554 5.7.1 <10.0.0.30>: Client host rejected: Access denied 这是预期的行为。

不知道这是否是最佳配置,但至少它可以起作用。

相关内容