我在服务器上安装了 Postfix,可以发送电子邮件,但无法接收任何电子邮件。我还注意到,我无法从其他计算机或服务器本身通过端口 25 远程登录到服务器。我收到“没有到主机的路由当我从远程机器尝试时,它显示“消息,外部主机关闭连接“当我从服务器尝试时。当我尝试列出正在使用的端口时,我得到了以下结果:
$ ss -lntu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 0 *:22 *:*
tcp LISTEN 0 0 *:25 *:*
tcp LISTEN 0 0 *:80 *:*
当我尝试使用外部电子邮件检查器时,我也得到了同样的结果“没有到主机的路由“输入电子邮件地址后出现错误消息。
我使用两个外部文件来参数化 Postfix,一个文件包含我期望收到电子邮件的域列表,另一个文件包含虚拟收件箱列表。以下是 main.cf 文件的几个示例:
mynetworks = 127.0.0.0/8
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
inet_protocols = all
inet_interfaces = all
virtual_alias_domains = hash:/etc/postfix/virtual_domains
virtual_alias_maps = hash:/etc/postfix/virtual_mailboxes
我还更改了 DNS 记录并创建了一个指向 mail.mydomain.com 的新 MX 条目
这是我的 DNS 文件:
@ A 104.xxx.xxx.xxx
dev A 104.xxx.xxx.xxx
mail A 104.xxx.xxx.xxx
blog CNAME blogs.vip.gandi.net.
imap CNAME mail.mydomain.com.
pop CNAME mail.mydomain.com.
smtp CNAME mail.mydomain.com.
webmail CNAME webmail.gandi.net.
www CNAME webredir.vip.gandi.net.
@ MX mail.mydomain.com. (50)
我也尝试过这个
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
如果我遗漏了什么或者您需要更多信息,请告诉我。
谢谢
答案1
没有到主机的路由意味着问题不在于您的 postfix 或防火墙。可能是某些 DNS 记录错误。
- 测试 domain.com 是否有指向 mail.mydomain.com 的 MX 记录
- 测试 mail.mydomain.com 是否有 A 记录(MX 地址不允许使用 CNAME)
- 测试是否可以 ping mail.mydomain.com(可能不行)
- 如果您确定 IP 正确,请测试到 mail.mydomain.com 的跟踪路由,并查看它在哪里停止。