利用xinetd解决Gmail无法收发邮件问题

因为一直是用的macOS,邮件收发用的是系统自带的mail.app,之前还用的好好的,这段时间不知道什么时候开始发现就无法正常使用Gmail收发邮件了。本来以为是寡妇网一时半会抽风就没管,但是最近发现情况越来越严重了,严重影响邮件的收发,只能想办法通过自己的服务器收发邮件了。

本来想看看mail.app自身是否支持代理设置的,但是找了一圈再加上Google了一把之后发现这货本身不支持走代理。但是之前看有网友说,开启SS之后可以正常使用mail.app,于是打开许久不用的SS之后发现,有的时候还真能正常收发邮件了。
但是走SS之后还是发现有问题,还是会间歇性的收不到邮件或者有延迟,于是我又在想,能不能通过强大的Nginx来解决这个问题。
Google了一把之后发现,用Nginx还是太麻烦,但是发现了一个更有效的办法,就是使用xinetd通过端口转发的方式将Gmail相关流量通过代理服务器转发给Gmail实现正常收发Gmail。
安装xinetd也很简单,一行命令就解决,拿了手上一个Virmach家的128MB KVM VPS试了下,系统是Debian9,一行命令就解决:

apt install xinetd

然后增加配置:

cd /etc/xinetd.d/
vim gmail
service imap
{
    type = UNLISTED
    port = 993
    bind = 0.0.0.0
    socket_type = stream
    wait = no
    user = nobody
    redirect = imap.gmail.com 993
    per_source = UNLIMITED
    cps = 100 2
}
service smtp-465
{
    type = UNLISTED
    port = 465
    bind = 0.0.0.0
    socket_type = stream
    wait = no
    user = nobody
    redirect = smtp.gmail.com 465
    per_source = UNLIMITED
    cps = 100 2
}
service smtp-587
{
    type = UNLISTED
    port = 587
    bind = 0.0.0.0
    socket_type = stream
    wait = no
    user = nobody
    redirect = smtp.gmail.com 587
    per_source = UNLIMITED
    cps = 100 2
}

保存之后,重启一下xinetd:

systemctl restart xinetd

因为我只需要本地的邮件客户端使用,于是只要在本地hosts文件添加两行记录就行:

sudo vim /etc/hosts
xxx.xxx.xxx.xxx smtp.gmail.com
xxx.xxx.xxx.xxx imap.gmail.com

退出mail.app再次打开,发现就能正常使用了,完美~