MENU

解决谷歌邮箱SMTP发信IP泄漏问题

November 28, 2023 • Read: 570 • 随心笔记

在部分项目中使用了谷歌邮箱提供的SMTP发信服务,但最近偶然测试发现客户端IP被暴露,在印象中是隐藏的不然也不会使用。
项目外部使用了Cloudflare用来负责恶意流量攻击问题,但结果通过Gmail这一操作,简直让CDN形同虚设;吐槽归吐槽,问题还是得解决,因为服务器一直在正常运行,不想在原有服务器做太多操作以免造成更多事故,所以决定在两者之间加一个转发服务器隐藏源真实IP,流程如下:

SMTP转发服务器.png

源服务器配置

源服务器主要通过与smtp.gmail.com:587进行TLS通信,现在加了转发,只需要在让其DNS强制解析为转发服务器即可,其它不需要做任何修改。
服务器文件/etc/hosts追增一条记录1.1.1.1 smtp.gmail.com,这里的1.1.1.1是转发服务器演示IP,酌情修改。

转发服务器配置

转发服务器其实只做了一个工作,那就是TCP流量转发,实际上只需要依靠iptables配置即可,但这里我用了Gost,主要是方便配置管理以及日志观察,当然iptables同样也可以,看自己喜好了。

Gost手动安装

使用的服务器环境是debian11,架构amd64;截止目前最新版本:v3.0.0-nightly.20231127 Pre-release

cd ~

# 下载
wget https://github.com/go-gost/gost/releases/download/v3.0.0-nightly.20231126/gost_3.0.0-nightly.20231126_linux_amd64.tar.gz

# 解压
tar -zxvf gost_3.0.0-nightly.20231126_linux_amd64.tar.gz

# 给予权限
chmod +x ./gost  

# 移至系统执行目录 
mv ./gost /usr/local/bin/

# 测试是否安装成功
gost -V

如果能正确看到版本号输出说明安装成功。
gost-v.png

Gost 配置转发

创建目录/usr/local/gost/,建立配置文件config.json;完整路径:/usr/local/gost/config.yaml,写进以下内容:

services:
  - name: gmail-stmp-tls
    addr: :587
    handler:
      type: tcp
    listener:
      type: tcp
    forwarder:
      nodes:
        - name: gmail-stmp-remote
          addr: smtp.gmail.com:587
log:
  level: info
  format: text
  output: /var/log/gost.log
  rotation:
    maxSize: 100
    maxAge: 10
    maxBackups: 3
    localTime: false
    compress: false

配置非常简单,将本地端口587的所有流程转发至远程smtp.gmail.com:587,本地日志路径:/var/log/gost.log,配置写完可以通过执行/usr/local/bin/gost -C /usr/local/gost/config.yaml,观察日志用以判断是否配置正确。

Gost 配置自启

创建文件/etc/systemd/system/gost.service写入以下内容保存:

[Unit]
Description=GO Simple Tunnel
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/gost -C /usr/local/gost/config.yaml
Restart=always

[Install]
WantedBy=multi-user.target

最后执行:systemctl enable gost && systemctl start gost && systemctl status gost,观察结果,如图所示即为成功启动:

gost.png

目前就可以在项目中测试发送邮件判断客户端IP是不是转发服务器啦。

其它事项

  • 以上所有操作步骤只适合在网络没有污染且通畅的情况下使用
  • 此方法虽然隐藏了源服务器IP,但依然会暴露转发服务器IP
  • 转发服务器可通过白名单或使用 Cloudflare WARP加强防护