V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Pangdouya
V2EX  ›  Linux

能否为 postfix 设置代理, How?

  •  
  •   Pangdouya · Oct 1, 2016 · 4433 views
    This topic created in 3507 days ago, the information mentioned may be changed or developed.
    在一台国内的机器上用 postfix 通过 gmial 网关发邮件,发送总是失败。

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

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

    谢谢!
    23 replies    2016-10-07 21:13:42 +08:00
    Pangdouya
        1
    Pangdouya  
    OP
       Oct 1, 2016
    配置参考了 https://www.linode.com/docs/email/postfix/postfix-smtp-debian7
    中 “ Configuring the Relay Server ”这一节。
    lygmqkl
        2
    lygmqkl  
       Oct 1, 2016 via iPhone
    我用 postfix + gox gmail 在 Mac 下没问题
    lygmqkl
        3
    lygmqkl  
       Oct 1, 2016 via iPhone
    不过 postfix 比较霸道 有时候开 3 个代理软件他直接横在最下层
    Pangdouya
        4
    Pangdouya  
    OP
       Oct 1, 2016
    @lygmqkl gox gmail 是什么?能否具体说一下?
    lygmqkl
        5
    lygmqkl  
       Oct 1, 2016 via iPhone
    @Pangdouya 在外旅游回去发给你
    Pangdouya
        6
    Pangdouya  
    OP
       Oct 1, 2016
    @lygmqkl 好,谢谢。
    julyclyde
        7
    julyclyde  
       Oct 1, 2016
    transport_maps 表
    不过你打算用哪个 transport 来发呢?似乎没法表达“通过 VPN ”这个意思
    Pangdouya
        8
    Pangdouya  
    OP
       Oct 2, 2016
    @julyclyde 我说通过 VPN 连接的意思是,机器连接上 vpn 后,是可以通过 gmail 的 smtp 服务器发邮件。

    国内 gmail 的 smtp 服务器基本上是不可用的状态,至少我这里是这样的。

    所以才想问是否可能有代理的方式做到。
    julyclyde
        9
    julyclyde  
       Oct 2, 2016
    @Pangdouya 首先你可能分不清 submission 和 MX 两种 smtp 服务的区别。其次,你可以开 vpn 但不放“所有”流量过去,只放个别 IP 过去,然后把 gmail 列入
    Pangdouya
        10
    Pangdouya  
    OP
       Oct 5, 2016
    @julyclyde 是的,我不太清楚这两种服务的区别,还请指教。

    第二点我大概知道怎么做,要做策略路由,还得抗 DNS 污染,比较麻烦,所以就不是太想搞。
    Pangdouya
        11
    Pangdouya  
    OP
       Oct 5, 2016
    @julyclyde 我其实主要想问的是不是有通过代理达到我想要的。比如之前收邮件也是也很麻烦,我收邮件用是 mbsync ,但是有 proxychains 这个工具就简单多了,直接一条命令搞定了。
    julyclyde
        12
    julyclyde  
       Oct 5, 2016
    @Pangdouya 能一条命令搞定,那就好说了。你设置一下 transport_maps ,把 gmail 的域名单独列出来用这个命令发
    Pangdouya
        13
    Pangdouya  
    OP
       Oct 5, 2016
    @julyclyde 能说的具体一点吗?
    julyclyde
        14
    julyclyde  
       Oct 5, 2016
    @Pangdouya 别太懒,我连要用什么都告诉你了,你应该自己去查一下怎么用它
    Pangdouya
        15
    Pangdouya  
    OP
       Oct 5, 2016
    @julyclyde 查过 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)
    julyclyde
        16
    julyclyde  
       Oct 5, 2016
    @Pangdouya 设置 relay_host 是把“所有邮件都”发到指定的 SMTP 服务器去。 transport_maps 是把指定的邮件用指定的方法发出去。这俩怎么可能一样呢?你的文档阅读理解能力比较堪忧啊
    Pangdouya
        17
    Pangdouya  
    OP
       Oct 6, 2016
    @julyclyde 你说的很对。但是请注意我的原话,”根据我的理解与需求“。

    我的需求就是把所有的邮件通过 gmail smtp 服务器发出,而在这个意义下两者的效果对来说是一样的。

    所以,我说你的方案对我来说并没有帮助。
    julyclyde
        18
    julyclyde  
       Oct 6, 2016
    @Pangdouya 我看了原话了,我的答案是没错的。你自己说“有 proxychains 这个工具就简单多了,直接一条命令搞定了”,那你可以把这条命令做成一个 transport ,然后把“所有”邮件都用这个 transport 发出去。说到底还是你懒,不愿意去读文档
    Pangdouya
        19
    Pangdouya  
    OP
       Oct 6, 2016
    @julyclyde 我觉得跟你的讨论可以终止了。
    julyclyde
        20
    julyclyde  
       Oct 6, 2016
    哈哈哈哈
    那你得不到别的答案了
    邮件服务器虽然不难,但也没几个人真正研究过
    我敢说本论坛不会有人比我更懂 postfix
    is
        21
    is  
       Oct 7, 2016   ❤️ 1
    看着感觉相对省心的,也就是这个了,

    http://serverfault.com/questions/363605/how-can-i-route-postfix-through-a-socks-proxy

    应该没啥简单的方法,直接给 smtp 进程设置代理了.

    理论上应该可以通过修改 master.cf 添加自己的 external delivery method
    搞定,没实践过,只能当是提个建议了
    is
        22
    is  
       Oct 7, 2016
    Pangdouya
        23
    Pangdouya  
    OP
       Oct 7, 2016
    @is 非常感谢! Really helpful.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3201 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 10:57 · PVG 18:57 · LAX 03:57 · JFK 06:57
    ♥ Do have faith in what you're doing.