如何调试 postfix 连接超时

如何调试 postfix 连接超时

我用了博客文章配置 postfix 以使用身份验证将邮件转发到特定服务器。在 main.cf 中进行了以下设置:

# sender-dependent sasl authentication
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay

# default relayhost setting
relayhost = [fully.qualified.target.server]:587

# smtp authentication settings
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = lmdb:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_tls_CAfile = /var/lib/ca-certificates/ca-bundle.pem
smtp_use_tls = yes
smtp_tls_security_level = encrypt

我创建了 /etc/postfix/sender_relay,内容如下:

[email protected]    [fully.qualified.target.server]:587
[email protected]    [fully.qualified.target.server]:587
[email protected]   [fully.qualified.target.server]:587
[email protected]     [fully.qualified.target.server]:587

并将其编码为 lmdb,postmap sender_relay以便在 /etc/postfix/ 中创建 sender_relay.lmdb

我创建了 /etc/postfix/sasl_passwd,内容如下:

[email protected]   [email protected]:password1
[email protected]   [email protected]:password2
[email protected]   [email protected]:password3
[email protected]   [email protected]:password4

[fully.qualified.target.server]:587   [email protected]:passwordDefault

并使用 对其进行编码postmap sasl_passwd

现在,当我尝试使用该中继发送电子邮件时,我收到:

1 月 16 日 11:57:08 邮件 postfix/qmgr[12939]: 199FA1206D3:[电子邮件保护],大小=454,nrcpt=1(队列活动)
1 月 16 日 11:57:38 邮件 postfix/smtp[12952]: 连接到 fully.qualified.target.server[ip.of.target.server]:587: 连接超时
1 月 16 日 11:57:38 邮件 postfix/smtp[12952]: 199FA1206D3:[电子邮件保护]、relay=none、delay=1062、delays=1032/0.03/30/0、dsn=4.4.1、status=deferred(连接到 fully.qualified.target.server[ip.of.target.server]:587:连接超时)

虽然我编辑了 master.cf 以获取调试输出,但我没有获得更多信息:

smtp      inet  n       -       n       -       -       smtpd -v

我使用 openssl 检查了证书/连接:

openssl s_client -connect fully.qualified.target.server:587 -starttls smtp -crlf

并且没有发现任何问题。我还能做什么来调试这种情况?

平台是 openSuse Leap 15.3

答案1

仅供对此感到困惑的人参考:这确实是另一个系统的防火墙问题。它阻止了邮件通信。

正如 Nikita 在评论中所建议的,我使用 tcpdump 检查连接并发现 telnet / openssl 使用接口 eth0 而 postfix 使用接口 tun0(该机器上有一个 VPN 隧道)。

并且 VPN 隧道的“端点”阻止了所有 SMTP 端口。

我让流量通过正确的接口,现在 postfix 可以执行其应有的操作并且调试也能正常进行。

我只是感到困惑,因为当底层 tcpip 连接被阻止时,postfix 不会显示任何调试输出。因此我认为我的调试参数没有被 postfix 使用。

相关内容