在 GitLab 服务器上

在 GitLab 服务器上

我在云虚拟机上安装了 GitLab,不久后又使用同一提供商 (Hetzner) 启动了第二台虚拟机作为 postfix 服务器

当我回到 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 网络的之外,我不记得做过任何其他事情。

我已经关闭了ufwgitlab 和邮件服务器,但得到了相同的行为。

如果我 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

我在邮件服务器上所做的与网络相关的唯一更改是向 IPV4 和 IPV6 地址添加反向 DNS 地址。

回到我实际的问题。

我希望能够从 GitLab 服务器连接到我的邮件服务器以发送 SMTP 电子邮件。即使ufw在两台服务器上都禁用,GitLab 也无法与邮件服务器通信。我不禁认为该问题与我上面描述的行为有关。

HTTP我的 GitLab 服务器的网络流量运行正常,并且我的邮件服务器可以正常从邮件客户端和其他 SMTP 服务器发送和接收电子邮件。

答案1

找到合适的方法来调试你的问题

测试服务时,最好尝试连接服务,而不是使用ping。虽然ICMP 回显可能有助于诊断某些问题,但它在这里并没有真正说明太多问题,因为它可能响应或不响应的原因太多,而且与实际问题关系不大。

在您的 DNS 中,您有:

;; ANSWER SECTION:
simoncarr.co.uk.        14400   IN      MX      11 mail.simoncarr.co.uk.

;; ADDITIONAL SECTION:
mail.simoncarr.co.uk.   14400   IN      AAAA    2a01:4f8:c2c:a992::
mail.simoncarr.co.uk.   14400   IN      A       188.34.201.61

这意味着您的邮件服务器被宣传为同时具有 IPv6 和 IPv4 连接,但都没有在 SMTP 端口 25 上应答:

$ nc 188.34.201.61 25 -vvv
nc: connect to 188.34.201.61 port 25 (tcp) failed: Connection timed out

$ nc 2a01:4f8:c2c:a992:: 25 -vvv
nc: connect to 2a01:4f8:c2c:a992:: port 25 (tcp) failed: Connection timed out

但是,IPv4 地址在端口 465 上应答(smtps,RFC 8314) 和 587 (提交RFC 6409),但 IPv6 地址却不行:

$ nc 188.34.201.61 465 -vvv
Connection to 188.34.201.61 465 port [tcp/submissions] succeeded!

$ nc 188.34.201.61 587 -vvv
Connection to 188.34.201.61 587 port [tcp/submission] succeeded!
220 mail.simoncarr.co.uk ESMTP Postfix (Ubuntu)

$ nc 2a01:4f8:c2c:a992:: 465 -vvv
nc: connect to 2a01:4f8:c2c:a992:: port 465 (tcp) failed: Connection timed out

$ nc 2a01:4f8:c2c:a992:: 587 -vvv
nc: connect to 2a01:4f8:c2c:a992:: port 587 (tcp) failed: Connection timed out

知道您已禁用防火墙,这表明您的 DNS 中的 IPv6 地址是错误的,或者邮件服务器根本没有 IPv6 连接。通常您可以ifconfig在邮件服务器上使用它来解决这个问题,但我很幸运,因为我的第一个猜测是正确的:

$ nc 2a01:4f8:c2c:a992::1 587 -vvv
Connection to 2a01:4f8:c2c:a992::1 587 port [tcp/submission] succeeded!
220 mail.simoncarr.co.uk ESMTP Postfix (Ubuntu)

如何解决你的问题

  1. 更改AAAADNS 中的记录。可能应该是(请注意附加的1):

    mail.simoncarr.co.uk.   14400   IN      AAAA    2a01:4f8:c2c:a992::1
    
  2. 修复您的邮件服务器。对于传入邮件,您需要让 SMTP 服务器监听 TCP 端口 25。如果您可以从服务器本身连接到此端口,则可能需要询问服务提供商是否允许托管邮件服务器。通常,在未用于传递邮件的连接上阻止端口 25 是一种对抗受感染计算机的垃圾邮件的方法。

相关内容