sendmail的出站ip地址怎么设置?
有几十个教程,但大多数只是告诉你设置什么而没有解释任何内容,并且大多数都假设你正在运行虚拟机并且只有一个静态 IP。
设置 服务器是运行 centos 7 的物理机,在 LAN 和 SElinux 中打开端口 25,并启用从 apache 发送电子邮件的选项。当我尝试发送出站电子邮件时,我不断收到超时错误。我已经在 gmail、yahoo 和 godaddy 电子邮件上进行了测试。
当我使用nmap --traceroute
cURL 进行测试时,我看到我的出站连接正在通过动态 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 号码实际上是正确的答案,但我永远不会这样认为,因为我不认为我正在转发一封电子邮件。感谢大家帮助我完成它。
看看https://www.unix-ninja.com/p/Changing_the_Source_IP_Address_in_Sendmail并确保绝对遵循格式,您之前需要一个反撇号
Family
(它没有出现在您的评论中,所以也许您忘记了?)。根据经验,它可以帮助您将其放在dnl
语句的末尾,因此请尝试以下操作:只需将 IP 替换为连接到您的服务器的 IP(并确保没有防火墙切断来自该 IP 的传出连接)。
然后:
make
在适当的目录中,例如/etc/mail
在 make 之后,您可以直观地检查 .cf 文件,您应该会在其中看到您的 IP,表明
CLIENT_OPTIONS
已正确考虑了 IP。至于放在哪里,它确实可能是相关的,您的文件可能已经记录在案,否则您需要显示更多当前
.mc
文件。