如何将 smtp 端口从一个 IP 上的 25 重定向到另一个外部 mail.domain.com 上的端口 2525?
例如:我的 ip 是 xxx.xx.xx.xxx,smtp 的监听端口是 25,现在我想将此端口上的请求转发或重定向到域上的端口 2525 mx1.somefreehosting.com
。
是否可以使用像 Web 服务器一样的 nginx 来实现,还是需要使用 iptables?我想确保群发邮件或垃圾邮件得到妥善处理。我提到这个问题,但由于我的声誉点数较少,因此无法对此发表评论。
目的是在我的诺基亚 Lumia 上设置电子邮件帐户,但无法通过 smtp 发送电子邮件(可能是由于端口问题)。
编辑:(参见 Nils 的评论)我想创建一个中间机器,它只是将 SMTP 连接转发到某个外部 MTA。我不是专家,所以可能无法写出技术上正确的文字。
我的 vps 会监听 myip:25 并将其重定向到外部 ip:2525。不知道这样可行吗?
答案1
Postfix 可以很容易地配置为这样做,但我不确定其他邮件服务器是否能做到这一点。根据我的经验,大多数邮件服务器的灵活性都不太好。
基于 iptables 的解决方案非常简单,类似于我们在这还有问题:
iptables -t nat -A OUTPUT -d ip.of.target.mx -p tcp --dport 25 -j DNAT --to-destination ip.of.target.mx:2525
这个解决方案的缺点是它重定向全部去往此端口的流量,而不仅仅是您的 mx 发出的流量。
如果存在的话,也许有人会提出直接基于 mx-config 的解决方案。
网络提供商非常乐意过滤出 tcp 端口 25 的流量。他们这样做是因为这些端口主要被病毒感染的机器用来发送垃圾邮件。如果您希望将流量发送到端口 25,则需要使用网络提供商的 MX,但该端口的配置并不总是很好(例如,您无法通过它向需要身份验证的邮件服务器发送邮件)。
遇到您的问题时,我通常会在另一个端口上设置我的 post(例如,在端口 24 上)。使用 postfix,这非常简单。
如果你想这样做,但使用 iptables,你需要重定向你的传入流量,而不是传出流量。如果你想在内部将传入的 tcp 端口 2525 重定向到 25,你可以阅读这个问题:
iptables -A PREROUTING -t nat -i -p tcp --dport 2525 -j REDIRECT --to-port 25
答案2
从您的评论中“中间机,仅将 SMTP 连接转发到某个外部 MTA“ 和 ”我的 vps 将监听 myip:25 并将其重定向到外部 ip:2525“我假设这是您需要在 SMTP 转发中间机器上执行的操作:
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination IP_OF_EXTERNAL_MTA:2525
iptables -t nat -A POSTROUTING -p tcp -d IP_OF_EXTERNAL_MTA --dport 2525 -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1
第一个是端口转发本身,第二个是确保与外部 MTA 的连接使用源 IP(如果您的 VPS)进行伪装,最后一个是启用 IP 数据包转发。
我在这里假设没有其他已建立的 iptables 规则,例如由某些防火墙框架(如“firewalld”或“ufw”)。
但我有点怀疑这是否真的是您想要的。您确定不是反过来的吗?您的 VPN 应该监听 2525(以防止端口阻塞),而外部 MTA 监听 25?
再次强调,绕过 25 端口封锁的一个更简单的方法是使用 465/SMTPS 或 587/submission