Docker转发SMTP端口
如果企业防火墙策略ban掉了机器到远程465端口的出站连接,可以使用以下方法进行中转。
前提:
- 有一台可以连接到SMTP服务器的机器(中转机)
- 中转机配置好了Docker
步骤:
- 中转机在任意地方创建文件夹
http.conf.d
以及stream.conf.d
。在stream.conf.d
文件夹内,创建一个myotherservice.conf
文件。 - 在
myotherservice.conf
中粘贴进如下内容(把<smtp_server_addr>
换成实际想要访问的smtp服务器的域名,根据需要改动目标端口号465):server { listen 60465; proxy_pass <smtp_server_addr>:465; }
- Docker执行:
docker run -d -p 60465:60465 -v <path_of_http.conf.d>:/opt/nginx/http.conf.d -v <path_of_stream.conf.d>:/opt/nginx/stream.conf.d --name nginx tekn0ir/nginx-stream
- 把
和 换成你第一步创建的两个文件夹的路径 - 根据需要改动60465端口(冒号前面的端口)为你想要中转机提供中转服务的端口
- 把
- 中转机如果有防火墙,打开60465端口
- 在需要访问smtp的机器上,在hosts中添加一行
<中转机ip地址> <smtp服务器域名>
为什么不在需要访问smtp的机器上直接修改服务器地址呢?因为主流的smtp服务都要求ssl认证,单纯把域名更换为中转机的ip地址往往会导致连接失败。通过改hosts的方式,可以有效解决ssl错误问题。
Leave a comment