我的OpenVZ容器中的SMTP有问题。
我在OVH的专用服务器上创build了Proxmox的OpenVZ容器。 这个容器将作为邮件服务器。 所以我创build了“母服务器”规则将端口传递给容器(IP:192.168.0.100):
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 192.168.0.100:25 iptables -t nat -A PREROUTING -p tcp --dport 587 -j DNAT --to-destination 192.168.0.100:587 iptables -t nat -A PREROUTING -p tcp --dport 110 -j DNAT --to-destination 192.168.0.100:110 iptables -t nat -A PREROUTING -p tcp --dport 143 -j DNAT --to-destination 192.168.0.100:143 iptables -t nat -A PREROUTING -p tcp --dport 995 -j DNAT --to-destination 192.168.0.100:995 iptables -t nat -A PREROUTING -p tcp --dport 993 -j DNAT --to-destination 192.168.0.100:993 iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE
我可以收到邮件,但我不能发送。 我只能发送到本地域 – 为了testing我使用calcparty.com。
在/etc/postfix/main.cf我已经设置:
inet_interfaces = all
我可以使telnet localhost 25,但我不能让telnet smtp.gmail.com。 从“母服务器”,我可以使telnet smtp.gmail.com 25。
我做错了什么?
root@mail:~# telnet smtp.gmail.com 25 Trying 64.233.166.108... Trying 64.233.166.109... Trying 2a00:1450:400c:c09::6d... telnet: Unable to connect to remote host: Connection timed out
文件 – /etc/resolv.conf:
search mail.calcparty.com nameserver 8.8.4.4 nameserver 8.8.8.8 nameserver 213.186.33.99
伪装规则是错误的:
iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE
这是说, 从 vmbr0接口和192.168.0.0/24 出去的数据包应该被伪装。
但是没有数据包会匹配这个,因为他们不会去vmbr0接口! 相反,他们正在走出你的物理界面。
改变这个来引用物理接口上的数据包,例如:
iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o enp3s0f0 -j MASQUERADE