问:因为众所周知的原因,早在几年前,Gmail 就无法正常登录了;但彼时尚能够通过邮件客户端(Foxmail、Outlook、Mail、ThunderBird)收发邮件。但是,从昨天(2014-12-27)开始,此类客户端也无法正常收发邮件。
因为邮件使用 POP3、IMAP、SMTP 等协议并不能通过 HTTP 代理,因此考虑使用 Socks 代理来解决此问题。考虑到 Mail.app 并没有提供单独的代理设置界面,所以只得使用 PAC 来配置代理。
代理配置完毕之后,如果设置全部流量都通过 Socks 代理,则 Mail.app 可以正常工作,收发 Gmail 邮箱的邮件。然则若通过 PAC 来配置代理,Safari 可以「正常」上网,但 Mail.app 依旧无法正常收发邮件。
请教应当如何配置,或是还需要提供什么信息。
System Info:
OS X 10.9.5
Mail.app 7.3 (1878.6)
回答1: 用 Proxifier,或proxychains 或者类似物。
回答2: 恰好碰到这个问题。有某个本地的socks proxy就够了,根本不需要其他答案提到的Proxifier。
见图:https://pic1.zhimg.com/50/v2-8d6571a148befe1872c6eb94e28b7088_720w.jpg
后续:
我发现重启后这个设置需要重新填写。这个设置也可以通过命令行解决,假设要设置 Wi-Fi 网络:
sudo networksetup -setsocksfirewallproxy "Wi-Fi" localhost 1080
如果要完全解决这个问题,可以使用 cronjob 去执行下面这段 ruby 代码,这样一来重启有效,二来有时候切换成全局模式再切回自动模式,cron 脚本也会帮你自动设置 proxy。
require 'socket'
require 'timeout'
def is_port_open?(ip, port)
begin
Timeout::timeout(1) do
begin
s = TCPSocket.new(ip, port)
s.close
return true
rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
return false
end
end
rescue Timeout::Error
end
return false
end
if is_port_open?('localhost', 1080)
if `/usr/sbin/networksetup -getsocksfirewallproxy "Wi-Fi" `.include?("Enabled: No")
puts "set proxy"
`/usr/sbin/networksetup -setsocksfirewallproxy "Wi-Fi" localhost 1080`
end
else
puts "unset proxy"
`/usr/sbin/networksetup -setsocksfirewallproxy "Wi-Fi" "" ""`
end
Cron job 添加方法:
crontab -e
然后填入
* * * * * ruby /path1/path2/set_proxy.rb
(假设上面的文件保存为set_proxy.rb, 完整路径是/path1/path2/set_proxy.rb)
回答3: Mail.app不支持SOCKS5代理,这是苹果的设计缺陷。
或者说,这是苹果产品一贯的设计思路,他是想让你使用系统全局代理。
来自:https://www.zhihu.com/question/27289501
No comments:
Post a Comment