在 Postfix 中将邮件中继到本地主机上的不同端口

在 Postfix 中将邮件中继到本地主机上的不同端口

目前,我有一台 Postfix 服务器监听端口 2525 上的外发邮件,另一台监听端口 25 上的收件邮件,它们在同一台机器上的 SSH 隧道后面运行。我希望进入 2525 服务器的所有邮件(主要是“邮件无法送达”消息)都转发到端口 25,因为只有 25 上的服务器拥有所有邮箱。我尝试设置local_transport或按照互联网上其他人的建议smtp:127.0.0.1:25执行等效操作,但我得到的只是2525 服务器的日志。transport_maps(mail for 127.0.0.1 loops back to myself)

我尝试在互联网上搜索答案,但找不到任何答案。我该如何消除此错误消息?

答案1

因此,我下载了最新版本的 Postfix 3.7.x 源代码,并仔细查看以寻找答案。很快,我发现,要出现“X 的邮件回发给我自己”错误消息,必须满足以下两个条件之一:

  1. 目标端口为 25,目标地址位于 inet_interfaces 或 proxy_interfaces 中
  2. 目标端口为 25,EHLO 响应中发送的目标主机名是 Postfix 自己的主机名,并且目标支持 ESMTP

我懒得亲自修补源代码,所以我选择的解决方案是在 2525 的服务器配置中添加以下几行:

mydestination = mydomain.com, localhost
local_transport = relay:127.0.0.1:25
inet_interfaces =

在 25 号服务器上:

myhostname = mail.mydomain.com
mydestination = mydomain.com, localhost

现在它运行得很好。我还为 mail.mydomain.com 添加了指向 mydomain.com 的 MX 记录,以防万一。

编辑(2022-03-27):所以我的设置在两周后就坏了,Postfix 开始给我以下错误:fatal: /etc/postfix/master.cf: line X: no valid IP address found: 2525。我对 2525 服务器的配置应用了以下修复,它又可以正常工作了。

local_transport = relay:mydomain.com:25
inet_interfaces = 127.0.0.1

编辑(2022-04-02):它又坏了,我决定从源代码构建 Postfix 并修补我需要的东西。我按照以下指南操作:https://wiki.debian.org/BuildingTutorial(如果您没有使用 Debian,则必须按照适合您自己发行版的教程进行操作)并将预处理器宏的值更改SMTP_MISC_FLAG_LOOP_DETECTsrc/smtp/smtp.h0。我还将所有 Postfix 服务器的配置改回其原始的、合理的值。

相关内容