在 Ubuntu/Postfix 上配置发送邮件到端口 587

在 Ubuntu/Postfix 上配置发送邮件到端口 587

我正在使用有线连接的本地网络上配置备份服务器。有线 ISP 正在过滤所有端口 25 (smtp) 流量。

uname -a

Linux myhost 4.4.0-119-generic #143-Ubuntu SMP Mon Apr 2 16:08:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

结果,我的外发邮件交易超时了,因为(我怀疑)默认的 Postfix 配置使用端口 25。(我基本上使用 shell 中的 sendmail 命令从该服务器发送状态报告)

我已确认可以通过 telnet 连接到目标服务器的 587 端口:

# telnet myserver.net 587

Trying x.x.x.x...
Connected to myserver.net.
Escape character is '^]'.
EHLO 220 myserver.net ESMTP Sendmail 8.14.7/8.14.7; Mon, 7 May 2018 18:16:08 
-0500 (CDT)
myhost.net
250-myserver.net Hello hostname [x.x.x.x], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP

我如何更新我的 Postfix 安装,以便它使用端口 587 并且与上述服务器的协议兼容?(除非已经支持加密,否则不需要/要求加密 - 不要相信 TLS 在这方面)

我尝试编辑 /etc/postfix/master.cf 并取消注释此行:

smtpd     pass  -       -       y       -       -       smtpd

但我仍然收到超时错误,表明它没有使用 587。我现在没有启用 ufw,所以这可能不是问题。

我认为我需要一些额外的配置选项来修复这个问题?

答案1

我认为您正在尝试使用以下方式通过外部邮件服务器中继所有出站邮件提交(端口587)。其他任何内容都没有意义,因为提交用于 向 客户 端 提供 经过 验证 的 SMTP , 而 MTA 之间 的 正常 通讯 是 使用 SMTP 端口 进行 的25.

提交配置用于/etc/postfix/master.cf为您的客户提供提交 smtpd,并且不会改变 Postfix 发送出站邮件的行为。

相反,你需要配置非本地邮件的下一跳目的地IErelayhost以及main.cf此连接的身份验证,例如

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:USERNAME:PASSWORD
smtp_sasl_security_options = noanonymous 
smtp_tls_security_level = encrypt

relayhost = [198.51.100.10]:587

Postfix 标准配置示例本地网络有这些信息,可能很难解释。幸运的是,有很多针对此特定用途的详细教程,包括:

答案2

以下是我弄清楚如何做到这一点的方法。有许多页面建议编辑 /etc/postfix/master.cf,但这些页面无法解决通过非过滤端口重新路由 smtp 流量(对于进行过滤的 ISP)的问题。

因此,要配置 postfix,您必须将其添加到 /etc/postfix/main.cf

relayhost = [yourserver.com]:587

然后,配置端口 25 DMZ 之外的其他服务器以转发离主机邮件。(如有必要)

答案3

我遇到了同样的问题,并通过以下方式修复它

注意:在尝试此方法之前,请考虑尝试上面的其他答案。此解决方案可能会破坏您的系统,我仅将其用于演示目的。

脚步:

  1. vim/etc/services
  2. 在此处更改此行:

smtp 25/tcp 邮件

smtp 587/tcp 邮件

  1. 重新启动你的 postfix(就我而言,我使用 docker,因此我重新启动整个 docker 容器)

注意:我确实在网上看到一些文章说修改文件并不理想/etc/services,因为它应该预先分配给 Linux。

相关内容