技术解析

能否为 postfix 设置代理, How?
0
2021-07-02 18:23:31
idczone
在一台国内的机器上用 postfix 通过 gmial 网关发邮件,发送总是失败。

当然连接 vpn 后发送邮件是没有问题的。

问题是如果不使用 vpn ,有什么办法设置代理吗?

谢谢!
配置参考了 https://www.linode.com/docs/email/postfix/postfix-smtp-debian7
中 “ Configuring the Relay Server ”这一节。

我用 postfix + gox gmail 在 Mac 下没问题

不过 postfix 比较霸道 有时候开 3 个代理软件他直接横在最下层

gox gmail 是什么?能否具体说一下?

在外旅游回去发给你

好,谢谢。

transport_maps 表
不过你打算用哪个 transport 来发呢?似乎没法表达“通过 VPN ”这个意思

我说通过 VPN 连接的意思是,机器连接上 vpn 后,是可以通过 gmail 的 smtp 服务器发邮件。
国内 gmail 的 smtp 服务器基本上是不可用的状态,至少我这里是这样的。
所以才想问是否可能有代理的方式做到。

首先你可能分不清 submission 和 MX 两种 smtp 服务的区别。其次,你可以开 vpn 但不放“所有”流量过去,只放个别 IP 过去,然后把 gmail 列入

是的,我不太清楚这两种服务的区别,还请指教。
第二点我大概知道怎么做,要做策略路由,还得抗 DNS 污染,比较麻烦,所以就不是太想搞。

我其实主要想问的是不是有通过代理达到我想要的。比如之前收邮件也是也很麻烦,我收邮件用是 mbsync ,但是有 proxychains 这个工具就简单多了,直接一条命令搞定了。

能一条命令搞定,那就好说了。你设置一下 transport_maps ,把 gmail 的域名单独列出来用这个命令发

能说的具体一点吗?

别太懒,我连要用什么都告诉你了,你应该自己去查一下怎么用它

查过 transport_map 的用法了,根据我的理解及需求设置 transport_maps 和 设置 relay_host 的作用是一样的。所以,你的方案并不解决我的问题。
因为我的问题在于这里,见日志。
Oct 5 22:53:36 x301 postfix/qmgr[27162]: 496A184528: from=<*@gmail.com>, size=401, nrcpt=1 (queue active)
Oct 5 22:53:36 x301 postfix/smtp[27167]: connect to smtp.gmail.com[2404:6800:4008:c02::6d]:587: Network is unreachable
Oct 5 22:54:06 x301 postfix/smtp[27167]: connect to smtp.gmail.com[74.125.204.109]:587: Connection timed out
Oct 5 22:54:36 x301 postfix/smtp[27167]: connect to smtp.gmail.com[74.125.204.108]:587: Connection timed out
Oct 5 22:54:36 x301 postfix/smtp[27167]: 496A184528: to=<*@*>, relay=none, delay=372, delays=311/0.18/60/0, dsn=4.4.1, status=deferred (connect to smtp.gmail.com[74.125.204.108]:587: Connection timed out)

设置 relay_host 是把“所有邮件都”发到指定的 SMTP 服务器去。 transport_maps 是把指定的邮件用指定的方法发出去。这俩怎么可能一样呢?你的文档阅读理解能力比较堪忧啊

你说的很对。但是请注意我的原话,”根据我的理解与需求“。
我的需求就是把所有的邮件通过 gmail smtp 服务器发出,而在这个意义下两者的效果对来说是一样的。
所以,我说你的方案对我来说并没有帮助。

我看了原话了,我的答案是没错的。你自己说“有 proxychains 这个工具就简单多了,直接一条命令搞定了”,那你可以把这条命令做成一个 transport ,然后把“所有”邮件都用这个 transport 发出去。说到底还是你懒,不愿意去读文档

我觉得跟你的讨论可以终止了。

哈哈哈哈
那你得不到别的答案了
邮件服务器虽然不难,但也没几个人真正研究过
我敢说本论坛不会有人比我更懂 postfix

看着感觉相对省心的,也就是这个了,
http://serverfault.com/questions/363605/how-can-i-route-postfix-through-a-socks-proxy
应该没啥简单的方法,直接给 smtp 进程设置代理了.
理论上应该可以通过修改 master.cf 添加自己的 external delivery method
搞定,没实践过,只能当是提个建议了

https://www.void.gr/kargig/blog/2014/05/10/smtp-over-hidden-services-with-postfix/
可以参考参考这个链接上的做法

非常感谢! Really helpful.

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服