有没有办法通过 SMTP 发送到另一台服务器?

问题描述 投票:0回答:2

我们公司的 smtp-server 目前有问题,我们的管理员目前不可用。所以我想尝试从另一台服务器发送邮件。在我们的主服务器上,由于我们自己系统上的黑名单条目,无法建立连接。那么我的脚本中有没有一种方法可以让服务器 B 侦听此请求并将其发送到真正的 smtp 服务器?

这样我就可以在 PHPMailer 中将服务器 A 上的连接设置设置为服务器 B,然后 B 服务器将请求转发/传递到 SMTP 服务器?

有知道的帮忙吗?

问题不在服务器 A 上。可以对其他服务器的所有 SMTP 端口执行 ping 和 telnet 操作。但是来自服务器 B 的 ping 或 telnet 是可能的。

我很感激任何想法。

谢谢, 罗宾

php email smtp port forward
2个回答
1
投票

我只是使用 iptables 将请求从一个端口转发到另一台服务器。

sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -s 1xx.xx.xx.xx -p tcp --dport 587 -j DNAT --to-destination 2xx.xx.xx.xx:587
iptables -t nat -A POSTROUTING -j MASQUERADE

只需用我的两个 IP 地址替换占位符,并使用新服务器作为中继,用 smtp 发送邮件。

谢谢, 罗宾


0
投票

感谢您使用上面的

-j MASQUERADE
选项提供的重要提示。

因为我需要永久转发我想在这里提供

cloud-init.txt
以供进一步参考:

#cloud-config
package_upgrade: true
packages:
   - iptables-persistent
write_files:
  - path: /etc/sysctl.conf
    content: | 
      # added by cloud init
      net.ipv4.ip_forward=1  
    append: true
runcmd:
- sysctl -p
- iptables -t nat -A PREROUTING -s 10.0.1.0/24 -p tcp -m tcp --dport 25 -j DNAT --to-destination 10.0.2.1:25
- iptables -t nat -A PREROUTING -s 10.0.1.0/24 -p tcp -m tcp --dport 567 -j DNAT --to-destination 10.0.2.1:567
- iptables -t nat -A POSTROUTING -d 10.0.2.0/24 -j MASQUERADE
- service netfilter-persistent save
© www.soinside.com 2019 - 2024. All rights reserved.