2017-07-21 320 views
1

我正在运行一堆Debian/Ubuntu服务器,其中一个核心主服务器与所有其他Web服务器连接。但是,现在,当我们的核心服务器发送一封电子邮件时(如通过我们的管理Web GUI发送电子邮件的人),第一个“Received:”标题列出了我们要避免的主服务器的地址。如何通过其他服务器发送SMTP电子邮件?

所以我的计划是设置一种方式发送电子邮件通过服务器,它应该真的来自。因此,当我们通过www.backend.com上的软件发送电子邮件时,我希望标题反映www.frontend.com。我尝试查找Ubuntu的SMTP代理,但没有发现太多,除了寻找称为MTA的东西。

我玩过nullmailer和msmtp,但我似乎无法按我期待的方式工作,例如,请在www.backend.com上为此帐户设置SMTP凭据,以指向www.frontend.com并让前端服务器连接到我们的电子邮件提供商。我正在尝试做什么?


编辑 TL; DR

我一直在试图建立SMTP中继服务器,但我无法连接到我的后缀SMTP服务器远程。如何在Debian Ubuntu上设置简单的电子邮件中继服务器?不知道这是甚至正确的词,因为似乎有数百篇文章解释如何,但我不能得到一个单一的工作

回答

1

你的MTA是后缀,你想要使用它两次;作为INTRANET主机和边缘中继。因此,第一步是而不是删除收到的标头,但要确保继电器被允许并发生,将在标头中添加“前端”中继。一旦中继功能正常,继电器可以移除或替换标题行。

中继

在继电器(FRONTEND) docs#relay_from

mynetworks = 127.0.0.0/8 IP_OF_BACKEND/32 ...others? 

在发送者(BACKEND) relayhost

relayhost = [www.frontend.com] 

过滤继电器

对于简单˚F ilters,header_checks就足够了。

header_checks = pcre:/etc/postfix/header_checks 

(PCRE - 确保后缀-PCRE支持安装,或按照下一环节的POSIX正则表达式调试)

它通常最好是消毒头,而不是将其删除,所以例如该文件的内容消毒是here,但它应该匹配,只能重写从backend而不是所有主机.*收到的标头。

所以检查实际接收的头后要更换,并决定哪些部分(S)保持为正则表达式组,您的替代可能是这样简单的东西:

/^Received: from www.backend.com.*id\s(\w+).*/ 
    REPLACE Received: from [127.0.0.1] (localhost [127.0.0.1]) with SMTP id $1 

取出的接收的头基本上是相同,但可以使用IGNORE操作而不是REPLACE,并且需要更简单的正则表达式,因为没有替代标头可以生成。但是,在添加Milters等以满足以后的要求时,删除标题更有可能导致问题。

+1

使用它两次!哇,甚至没有跨过我的脑海。我将这个想法放到测试中,并在有结果时回来 –

+0

看起来好像我的主要问题是首先在前端设置了后缀服务器。我遵循https://help.ubuntu.com/lts/serverguide/postfix.html,但在telnet附近,我没有看到“250-STARTTLS”或“250-AUTH LOGIN PLAIN”行 –

+0

You'您可能需要使用sysytemctl重新启动它,查看日志,检查netstat -an并检查是否有任何答案违反了它生成的配置行。如果日志未指向特定问题,则使用diff与默认配置从您的其他机器可能有助于限制您需要查看哪些线路。 – lossleader

相关问题