我是一名安全管理员,在 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
这是预期的行为。
不知道这是否是最佳配置,但至少它可以起作用。