我已经在云虚拟机上安装了 GitLab,不久之后,我用同一提供商 (Hetzner) 建立了第二台虚拟机作为后缀服务器
当我回到 GitLab 服务器以启用 SMTP 电子邮件并且没有发送任何内容时,我首先注意到一个问题,甚至邮件服务器上没有任何日志表明已尝试连接。
在 GitLab 服务器上
我试图从 gitlab ping 邮件服务器,但无论我等待多长时间,都只得到一个响应并且没有进一步的响应。
root@gitlab:~# ping mail.simoncarr.co.uk
PING mail.simoncarr.co.uk(2a01:4f8:c2c:a992:: (2a01:4f8:c2c:a992::)) 56 data bytes
如您所见,这是一个 IPV6 响应。我不记得除了启用ufw
会影响 gitlab 网络的其他任何事情。
我已经关闭ufw
了 gitlab 和邮件服务器,并且得到了相同的行为。
如果我 ping 外部服务器,我仍然会收到 IPV6 响应,但我至少会收到多个响应。
root@gitlab:~# ping bbc.co.uk
PING bbc.co.uk(2a04:4e42:600::81 (2a04:4e42:600::81)) 56 data bytes
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=1 ttl=58 time=3.68 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=2 ttl=58 time=3.47 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=3 ttl=58 time=3.52 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=4 ttl=58 time=3.50 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=5 ttl=58 time=3.49 ms
在邮件服务器上
如果我 ping gitlab 服务器,我会得到 IPV4 响应,并且它们会按照您的预期重复。
PING gitlab.simoncarr.co.uk (168.119.124.76) 56(84) bytes of data.
64 bytes from static.76.124.119.168.clients.your-server.de (168.119.124.76): icmp_seq=1 ttl=58 time=0.878 ms
64 bytes from static.76.124.119.168.clients.your-server.de (168.119.124.76): icmp_seq=2 ttl=58 time=0.463 ms
64 bytes from static.76.124.119.168.clients.your-server.de (168.119.124.76): icmp_seq=3 ttl=58 time=0.353 ms
64 bytes from static.76.124.119.168.clients.your-server.de (168.119.124.76): icmp_seq=4 ttl=58 time=0.419 ms
如果我从邮件服务器 ping 外部服务器,我会再次收到 IPV6 响应。
root@mail:~# ping bbc.co.uk
PING bbc.co.uk(2a04:4e42:600::81 (2a04:4e42:600::81)) 56 data bytes
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=1 ttl=58 time=6.68 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=2 ttl=58 time=6.24 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=3 ttl=58 time=6.23 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=4 ttl=58 time=6.16 ms
我在邮件服务器上更改的唯一与网络相关的是将反向 DNS 地址添加到 IPV4 和 IPV6 地址。
回到我的实际问题。
我希望能够从 GitLab 服务器连接到我的邮件服务器以发送 SMTP 电子邮件。即使ufw
在两台服务器上都禁用,GitLab 也不会与邮件服务器通信。我不禁认为这个问题与我上面描述的行为有关。
HTTP
到我的 GitLab 服务器的网络流量工作正常,我的邮件服务器从邮件客户端和其他 SMTP 服务器发送和接收电子邮件也正常。
关于调试问题的合适方法
测试服务时,最好尝试连接到服务,而不是使用
ping
. 虽然ICMP 回显可能有助于诊断一些问题,但它在这里并不能说明太多,因为它可能响应或不响应的原因太多了,而且它与实际问题的关系不大。在您的 DNS 中,您有:
这意味着您的邮件服务器被宣传为具有 IPv6 和 IPv4 连接,但在 SMTP 端口 25 上都没有响应:
但是,IPv4 地址在端口 465(smtps,RFC 8314)和 587(submission,RFC 6409)上回答,但 IPv6 地址没有:
知道您已禁用防火墙,这表明您的 DNS 中有错误的 IPv6 地址,或者邮件服务器完全没有 IPv6 连接。通常你可以
ifconfig
在邮件服务器上使用来解决这个问题,但我很幸运,因为我的第一个猜测是正确的:如何解决您的问题
更改
AAAA
DNS 中的记录。它可能应该是(注意附加的1
):修复您的邮件服务器。对于传入的邮件,您需要让 SMTP 服务器侦听 TCP 端口 25。如果您可以从服务器本身连接到此端口,您可能需要询问服务提供商是否允许托管邮件服务器。通常会在不用于传递邮件的连接上阻止端口 25,以此来对抗来自受感染计算机的垃圾邮件。