Sendmail 连接超时

Sendmail 连接超时

我最近设置了一个新的 Debian 服务器,

首次安装并设置 sendmail 后,我无法发送电子邮件。

Reason : Connection timeout.

/var/log/mail.log 的输出:

> May  6 02:42:53 k***** sm-mta[15070]: q465gjxF013677:
> to=<*****@gmail.com>, ctladdr=<*****@*****.ca> (1001/1001),
> delay=01:00:08, xdelay=00:00:00, mailer=esmtp, pri=300329,
> relay=alt4.gmail-smtp-in.l.google.com., dsn=4.0.0, stat=Deferred:
> Connection timed out with alt4.gmail-smtp-in.l.google.com.

netstat 的输出:

tcp        0      0 0.0.0.0:587             0.0.0.0:*   LISTEN   15069/sendmail: MTA
tcp        0      0 0.0.0.0:25              0.0.0.0:*   LISTEN   15069/sendmail: MTA

从另一台计算机(telnet theserver.imworkingon.com 25)运行 Telnet on 25 时也会成功,但如果我尝试从我工作的服务器运行它,则不会成功。这告诉我,不知何故,出站端口 25 似乎被阻止了...

有人有主意吗?

答案1

标准邮件故障排除步骤适用于此处...从日志中,我们看到您能够解析要发送到的 gmail.com 目的地的 MX/DNS 记录。因此这不是 DNS 或路由问题。

由于这是一个基本的 SMTP 传递,请尝试使用 telnet 到端口 25 以确保您能够连接到目标主机...

我会遵循这个顺序:

dig mx gmail.com
# Look for the mail destination IP in the output - "209.85.225.27" in this case

telnet 209.85.225.27 25
# This is an attempt to telnet to port 25 (smtp) on the recipient's server...

您应该会看到类似以下内容的内容:

Trying 209.85.225.27...
Connected to iy-in-f27.1e100.net (209.85.225.27).
Escape character is '^]'.
220 ***************************************

如果您没有看到上述内容,则表示您的出站端口 25 smtp 流量在机器级别(检查 iptables 等)或网络级别(检查网络防火墙或 ISP 策略)被阻止。

如果你看到类似的消息,那么您就可以传递邮件并且不会收到超时错误。

答案2

与知名服务的连接超时通常意味着以下两种情况之一:

1- 您无法连接到任何 SMTP 服务器的端口 25,因为您的 ISP 阻止了该端口。请咨询您的 ISP,您的机器是否被允许直接发送电子邮件或通过中继发送电子邮件。如果您的 ISP/托管服务提供商提供中继,请在您的中间某处添加以下行/etc/mail/sendmail.mc文件:

define(`SMART_HOST', `[relay.your.isp.provides]')dnl

接下来以 root 身份运行sendmailconfig并检查是否有效。

2- 您可能需要解决 TCP 窗口缩放问题。这可能是电缆、以太网卡驱动程序、卡本身、电缆、交换机以及介于两者之间的任何路由器,并且作为 heisenbug,它只能出现在您的特定配置中。您可以尝试通过将以下行添加到/etc/sysctl.conf

net.ipv4.tcp_rmem = 4096 87380 174760
net.ipv4.tcp_wmem = 4096 16384 131072
net.ipv4.tcp_window_scaling = 0

接下来以 root 身份运行sysctl -p并再次检查这是否解决了问题。

答案3

此外,您还需要检查您的客户端选项是否禁止通过定义的接口发送邮件:

O 客户端端口选项=地址=1.2.3.4,名称=XXX

如果您的收件人位于错误的网络中,则无法接通。

相关内容