设置 PostFix Relay_host 仅用于发送邮件

设置 PostFix Relay_host 仅用于发送邮件

我建立了一个带有 PostFix 邮件服务器和加密网关的架构。

我正在通过中的参数将所有传出的 SMTP 流量(甚至从mydomain.com发送到 的邮件mydomain.com)中继到加密网关。relay_host/etc/postfix/main.cf

架构描述

邮件正在到达外部用户:例如,我可以回复发送至[email protected]的邮件[email protected]

问题是答案没有传达给我的用户(由于无限的中继循环)。

此问题还会影响从内部用户发送到内部用户的邮件(即从@mydomain.comTO @mydomain.com)。此类流量经过以下路线:(1)客户端 -> (2)PostFix -> (3)加密网关 -> (4)PostFix -> 加密网关 -> PostFix -> 等(循环)。经过一定数量的跳转后,邮件将被加密网关自动删除,即未投递。

我如何告诉 PostFix 不要中继来自 10.0.0.66 的邮件,而是将它们直接发送到 Cyrus-IMAP(也托管在 10.0.0.13 上)?

答案1

我认为,这无法在一个 MTA 中实现。您需要另一个 MTA 来发送。

(2016/05/03)追加评论

我尝试在 master.cf(如下)中启用submission端口(587/TCP)作为仅发送 smtpd,并relayhost在 main.cf 中禁用。

submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o myhostname=localhost
  -o mydestination=localhost
  -o local_recipient_maps=
  -o relayhost=[nnn.nnn.nnn.nnn]

当我向提交端口发送一条消息时,它进入了 smtpd(25/TCP)的同一个队列,并被传送到本地假脱机(糟糕的结果)。

因此,我们不仅要分离 smtpd 进程,还必须分离队列和每个进程(cleanupqmgrsmtp、 ... master)。在典型的 Linux 发行版中,我认为这很难实现。但是,我认为可以结合 postfix(25/TCP,spool)和另一个 MTA(587/TCP,仅发送,例如 sendmail)来实现。

相关内容