如何设置 sendmail 的出站 IP 地址?

如何设置 sendmail 的出站 IP 地址?

如何设置 sendmail 的出站 ip 地址?

有几十个教程,但大多数只是告诉你要设置什么,而没有解释任何内容,并且大多数假设你正在运行虚拟机并且只有一个静态 IP。

设置 服务器是一台运行 centos 7 的物理机,在 LAN 上打开了端口 25,并在 SElinux 中启用了从 apache 发送电子邮件的选项。当我尝试发送出站电子邮件时,我总是收到超时错误。我已经在 gmail、yahoo 和 godaddy 电子邮件上进行了测试。

当我使用nmap --traceroutecURL 进行测试时,我发现我的出站连接正在通过动态 IP 地址,该地址的端口 25 被 ISP 阻止。

我仍然需要从 LAN 进行连接,因为 ssh 和大多数其他端口都对外界关闭。端口 25、80、443 和其他几个端口对外界开放。除了端口 25 之外,所有端口似乎都由其相关应用程序正确处理。

输出ip show

$ ip route show
default via 192.168.1.254 dev enp4s0f0 proto static metric 100
default via 108.223.xxx.222 dev enp4s0f1 proto static metric 101
default via 108.223.xxx.222 dev enp4s0f3 proto static metric 102
108.223.xxx.217 dev enp4s0f1 proto kernel scope link src 108.223.xxx.217 metric 100
108.223.xxx.217 dev enp4s0f3 proto kernel scope link src 108.223.xxx.217 metric 101
108.223.xxx.218 dev enp4s0f1 proto kernel scope link src 108.223.xxx.218 metric 100
108.223.xxx.218 dev enp4s0f3 proto kernel scope link src 108.223.xxx.218 metric 101
108.223.xxx.219 dev enp4s0f1 proto kernel scope link src 108.223.xxx.219 metric 100
108.223.xxx.219 dev enp4s0f3 proto kernel scope link src 108.223.xxx.219 metric 101
108.223.xxx.220 dev enp4s0f1 proto kernel scope link src 108.223.xxx.220 metric 100
108.223.xxx.220 dev enp4s0f3 proto kernel scope link src 108.223.xxx.220 metric 101
108.223.xxx.221 dev enp4s0f1 proto kernel scope link src 108.223.xxx.221 metric 100
108.223.xxx.221 dev enp4s0f3 proto kernel scope link src 108.223.xxx.221 metric 101
108.223.xxx.222 dev enp4s0f1 proto static scope link metric 100
108.223.xxx.222 dev enp4s0f3 proto static scope link metric 101
192.168.1.0/24 dev enp4s0f0 proto kernel scope link src 192.168.1.71 metric 100
192.168.1.71 dev enp4s0f3 proto kernel scope link src 192.168.1.71 metric 100

来自邮件日志的错误

Dec 16 18:14:53 localhost sendmail[77855]: vBGNErI1077873: [email protected], ctladdr=cdata (1000/1000), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30014, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (vBGNErDq077874 Message accepted for delivery)
Dec 16 18:24:12 localhost sendmail[77855]: vBGGdu99077513: to=<[email protected]>, ctladdr=<[email protected]> (1000/1000), delay=06:44:16, xdelay=00:10:00, mailer=esmtp, pri=750469, relay=alt4.gmail-smtp-in.l.google.com. [108.177.15.26], dsn=4.0.0, stat=Deferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.
Dec 16 18:24:12 localhost sendmail[77855]: vBGGAGt4077433: to=<[email protected]>, ctladdr=<[email protected]> (1000/1000), delay=07:13:56, xdelay=00:00:00, mailer=esmtp, pri=840469, 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.
Dec 16 18:24:12 localhost sendmail[77855]: vBGFweLX077340: to=<[email protected]>, ctladdr=<[email protected]> (1000/1000), delay=07:25:32, xdelay=00:00:00, mailer=esmtp, pri=930469, 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 -tuplen | grep 25检查端口 25 是否打开

$ sudo netstat -tuplen | grep 25
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          93443      10849/sendmail: acc

编辑:这个答案被标记为重复,谈论转发 Gmail 电子邮件。我不认为这是我想要的。我正在尝试从我的服务器、我的域和 IP 地址上发起一封电子邮件,并将其发送到远程电子邮件服务器。我读过那个答案,并试图收集一些见解,但我认为它不相关。如果相关,请解释它是如何相关的。

接受答案后编辑:答案在CentOS 6.2 sendmail:如何控制将邮件中继到 mx.google.com 时使用的 IP 号码实际上是正确答案,但我永远不会意识到这一点,因为我不认为我在转发一封电子邮件。感谢大家帮助我完成这件事。

答案1

看一下https://www.unix-ninja.com/p/Changing_the_Source_IP_Address_in_Sendmail并确保完全遵循格式,前面需要一个反撇号Family(它没有出现在您的评论中,所以也许您忘记了?)。根据经验,将它放在dnl语句末尾会有所帮助,因此请尝试以下方法:

CLIENT_OPTIONS(`Family=inet, Address=203.0.113.2')dnl

只需用连接到您的服务器的 IP 替换该 IP(并确保没有防火墙切断来自该 IP 的传出连接)。

然后:

  1. make在适当的目录中,例如/etc/mail
  2. 重新启动sendmail

制作完成后,您可以直观地检查 .cf 文件,您应该可以在其中看到您的 IP,这表明它CLIENT_OPTIONS已被正确考虑在内。

至于将其放在哪里,它可能确实相关,您的文件可能已经记录在案,否则您需要显示更多当前文件.mc

相关内容