如何让 Postfix 发送/转发/中继到位于另一台服务器上的子域?

如何让 Postfix 发送/转发/中继到位于另一台服务器上的子域?

我有一个简单的问题。当向具有我们主服务器子域的电子邮件地址发送电子邮件时,如何设置 postfix 以将电子邮件发送到另一台服务器(Exchange 服务器)。例如,假设我们的主要服务器是 mail.example.com,并且我们设置了一个 Exchange 服务器来接收来自 exchange.example.com 的电子邮件。我们在 DNS 中设置了 MX 记录,如果我们从 GMail 帐户发送,它会正确接收。但是,当我们尝试从 @example.com 帐户发送电子邮件时,我们收到以下错误:

Host or domain name not found. Name service error for name=exchange.example.com type=A: Host not found

我相信 Postfix 首先会检查本地邮箱,如果已设置域,则会将其传送到本地帐户,但在这种情况下,子域帐户位于另一台服务器中。有人知道我需要在 Postfix 中做什么,以便它不会在本地查找 exchange.example.com 邮箱吗?

我在 Postfix 中找到了 reply_domains 指令,但是当我添加子域时它似乎无法解决问题。

感谢您的帮助。

答案1

看起来您正在尝试设置 SMTP 网关,并且不想将您的 Exchange Server 暴露给“外部”网络,对吗?因为通常我只会为域设置适当的 MX 记录。

Postfix 的设计不允许接收来自外部域名的邮件,但如果无法接收,postfix 就不再是 postfix 了。它只是要求您做更多工作,例如,告诉 postfix 哪些电子邮件地址有效(对于子域名,它自己无法确定这一点)。这里解释得很清楚:http://www.knowplace.org/pages/howtos/smtp_gateway_for_multiple_domains_with_postfix.php

答案2

该错误似乎表明 exchange.example.com 在 DNS 中不存在。为了让 postfix 找到 exchange 服务器,它必须能够将 exchange.example.com 域名解析为 IP 地址,这样它才知道将其路由到哪里。

答案3

Relay-domains 确实是正确的参数,但这并不是您需要做的全部。
运行postconf parent_domain_matches_subdomains并检查 Relay_domains 是否存在;如果存在,请将该行添加到 main.cf 并从列表中删除 Relay_domains(或完全取消设置该选项,但请确保您了解后果。)

相关内容