将端口 587 与 sendmail 一起使用

thi*_*ter 7 linux smtp sendmail mail-transport-agent

我一直在使用 sendmail 使用内部可用的邮件服务器发送邮件。但目前出于安全原因,端口 25 被阻止。

我想知道是否有办法在 sendmail 实用程序中指定端口号。我正在尝试使用安全的 SMTP-MSA 端口 587 作为替代方案,假设我可以打开该端口。

我在 sendmail 的手册页中找不到任何内容。是否有任何替代实用程序可以做到这一点?

HBr*_*ijn 9

除非另外明确配置,否则邮件将通过端口 25 传输。

您可以使用其他端口,甚至 SMTP 以外的其他协议来路由邮件,但这通常只能在您自己的网络中使用。来自预期收件人的邮件服务器很可能只接受通过端口 25 上的 SMTP 传入的电子邮件。

例如,当我将 sendmail 配置为侦听端口 587 时,它通常只会在用户通过身份验证后接受通过该端口传入的电子邮件。

 DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')
Run Code Online (Sandbox Code Playgroud)

大多数限制传入和/或传出 SMTP 流量的网络(消费者 ISP 和企业网络的良好和常见做法,以防止开放邮件中继、垃圾邮件和其他滥用行为)提供中继服务器,允许您发送邮件,但并非不受限制。中继服务器可能会检查内容(病毒、垃圾邮件)或执行策略(添加标准免责声明、存档消息以确保合规性、限制收件人)等。

如果您有中继服务器;在称为智能主机并配置的 sendmail 中

# sendmail.mc
define(`SMART_HOST',`relay.example.com`)dnl
Run Code Online (Sandbox Code Playgroud)

如果您的中继服务器正在侦听端口 587,该端口变为:

# sendmail.mc
define(`SMART_HOST',`relay.example.com`)dnl
define(`RELAY_MAILER',`esmtp')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
Run Code Online (Sandbox Code Playgroud)

假设是 sendmail 将您所有的电子邮件流量转发到中继,中继将消息传输到预期的收件人和不需要身份验证的中继服务器。

您可以使用 mailertable 微调您的电子邮件路由。


要将一些电子邮件域路由到一个远程 TCP 端口并将其他域的邮件发送到另一个需要在 sendmail.cf 中进行一些编辑以设置新的邮件程序。从现有的 esmtp 邮件程序复制设置并添加端口号:

  # sendmail.cf
  # <snip>
  Mesmtp587,         P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
                  T=DNS/RFC822/SMTP,
                  A=TCP $h 587
  Mesmtp2525,         P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
                  T=DNS/RFC822/SMTP,
                  A=TCP $h 2525
Run Code Online (Sandbox Code Playgroud)

传输通道esmtp587现在将传送到端口 587 而不是默认的 25 或类似于 2525 或您指定的任何替代端口。

然后在您的邮件表中:

 example.com    esmtp587:example.com
 example2.com   esmtp2525:example2.com
Run Code Online (Sandbox Code Playgroud)

上面的行将允许 sendmail 查找 example.com 的 MX 记录,如果 example.com 只有一个(中继)smtp 服务器支持非默认端口,则语法将变为:

 example.com   esmtp587:[smtp.example.com]
Run Code Online (Sandbox Code Playgroud)

括号告诉 sendmail 忽略 smtp.example.com 可能的 MX 记录并将@example.com 的所有邮件路由到 smtp.example.com:587。