![postfix:强制服务器将邮件发送到本地主机之外](https://linux22.com/image/572287/postfix%EF%BC%9A%E5%BC%BA%E5%88%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B0%86%E9%82%AE%E4%BB%B6%E5%8F%91%E9%80%81%E5%88%B0%E6%9C%AC%E5%9C%B0%E4%B8%BB%E6%9C%BA%E4%B9%8B%E5%A4%96.png)
我有一个使用 mail() 函数发送邮件的 php 文件。问题是其中一个表单发送到在我的服务器上注册的域,而邮件则在另一台服务器上处理。Postfix 仅在本地查找。当它找不到电子邮件地址时,它会拒绝该消息。如何配置 postfix 以通过互联网而不是本地向所有域发送邮件?
更新
好的。所以这根本不是 postfix 问题。我只需要从命令行关闭发送到该域的邮件。对于任何需要该命令的人来说,它是(至少在我的系统上):
/usr/local/psa/bin/domain --update example.com -mail_service false
答案1
我解决了类似的问题。正如你在更新中写的那样,你必须关闭域名的邮件服务通过/usr/local/psa/bin/domain --update example.com -mail_service false
命令 - 在大多数情况下它应该有效。无论如何,我又犯了一个错误,关闭邮件服务对我来说并不是一个足够的解决方案。
首先我应该检查我的 DNS 设置。我的 DNS 托管在 Plesk 服务器之外,但我在创建域时设置了 DNS 由服务器管理(默认选项)——这是唯一的错误。然后一切都运行正常,除了向 Plesk 管理的域发送邮件。然后邮件从 domain.tld 成功发送到[电子邮件保护]但不是[电子邮件保护]
对我来说解决方案是在 Plesk 控制面板中禁用域的 DNS 服务。可以通过DNS Settings
域控制面板来完成。
答案2
听起来你$mydestination
错了。使用以下命令检查系统上的当前值:
postconf mydestination
默认情况下,postfix 仅将邮件发送到本地主机,而不是整个域:
% postconf -d mydestination
mydestination = $myhostname, localhost.$mydomain, localhost
如果需要调整,请编辑/etc/postfix/main.cf
。
有关常见 Postfix 场景的更多信息,请参阅标准配置示例。您还可以看到信息mydestination
。
答案3
您还可以使用 /etc/postfix/transport 文件来选择性地定义哪个 smtp 服务器应该处理哪些域的邮件。例如,如果您想将 mydomain.com 的电子邮件发送到 smtp.mydomain.com,您可以在 /etc/postfix/transport 中写入:
mydomain.com smtp:[smtp.mydomain.com]
不要忘记随后执行 postmap /etc/postfix/transport,以创建 postfix 使用的 .db 文件。