You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过轻量Docker方案搭建透明邮件代理,实现自定义域名邮件前置过滤后转发至目标MX服务器

如何通过轻量Docker方案搭建透明邮件代理,实现自定义域名邮件前置过滤后转发至目标MX服务器

当然可行!我之前帮朋友搭建过类似的透明邮件代理,刚好匹配你的需求——用Docker跑一个轻量SMTP服务器当前置过滤层,先接住所有发往自定义域名的邮件,完成过滤后再转发到Google的MX服务器,整个过程对发件人和收件人完全透明,不会影响后端Gmail组织邮箱的正常使用。下面给你一步步拆解实现方法:

一、核心思路梳理

简单来说就是把自定义域名的MX记录指向你的Docker服务器,让所有邮件先流入这里;用轻量SMTP服务(比如Postfix)执行过滤规则,再把合规邮件转发到Google的官方MX服务器,最终还是会进入你的Gmail组织邮箱。

二、选择轻量Docker镜像

推荐用boky/postfix这个镜像,体积小、配置简单,完美满足轻量需求;如果后续需要更智能的反垃圾邮件过滤(比如SpamAssassin),再考虑扩展即可。

三、编写Docker Compose配置

用Docker Compose管理最省心,新建一个docker-compose.yml文件:

version: '3.8'
services:
  email-filter-proxy:
    image: boky/postfix
    container_name: email-filter-proxy
    environment:
      # 替换成你的自定义域名
      - MY_DOMAIN=your-custom-domain.com
      # 允许所有互联网IP连接(要接收外部邮件必须开)
      - MY_NETWORKS=0.0.0.0/0
    volumes:
      # 挂载自定义过滤规则文件
      - ./header_checks:/etc/postfix/header_checks
      - ./body_checks:/etc/postfix/body_checks
      # 挂载转发规则文件
      - ./transport:/etc/postfix/transport
    ports:
      # 暴露SMTP默认25端口,必须开放
      - "25:25"
    restart: always
    # 启动时自动生成转发规则的哈希文件(Postfix要求)
    command: sh -c "postmap /etc/postfix/transport && postfix start-fg"

四、配置过滤与转发规则

  1. 转发规则(transport文件):指定把自定义域名的邮件转发到Google的MX服务器,内容如下:
your-custom-domain.com smtp:aspmx.l.google.com

Google官方的MX服务器可以用aspmx.l.google.com,如果需要冗余备份,也可以添加alt1.aspmx.l.google.com等备用地址。

  1. 邮件头部过滤(header_checks文件):比如拦截垃圾邮件主题、拒收特定发件人:
# 直接丢弃主题包含SPAM的邮件
/^Subject:.*SPAM/ DISCARD
# 拒收来自恶意发件人的邮件
/^From:.*bad-sender@example.com/ REJECT
# 给疑似垃圾邮件添加自定义标记
/^X-Spam-Flag: YES/ PREPEND X-Custom-Filter: Marked-as-Spam
  1. 邮件内容过滤(body_checks文件):过滤正文中的敏感内容或钓鱼链接:
# 丢弃包含钓鱼链接的邮件
/https?:\/\/fake-phish-site\.com/ DISCARD

这些规则用正则表达式编写,你可以根据自己的需求灵活修改。

五、修改DNS MX记录

登录你的域名管理后台,把MX记录改成你的Docker服务器公网IP(或者指向服务器的域名),优先级设为最小的数值(比如10,数值越小优先级越高),确保所有邮件优先发到你的代理服务器。

六、关键注意事项

  • 端口开放:务必确保服务器防火墙开放了25端口(SMTP默认端口),否则外部邮件无法送达代理服务器。
  • 黑名单检查:一定要确认你的服务器IP没有被列入垃圾邮件黑名单(比如RBL),否则Google可能会拒收你转发的邮件,可以用常用的黑名单查询工具自查。
  • 日志排查:如果遇到问题,用docker logs email-filter-proxy查看Postfix的日志,很容易定位问题所在。
  • 功能扩展:如果需要更智能的反垃圾过滤,可以搭配SpamAssassin容器,或者换成功能更全的docker-mailserver镜像(体积会大一点,但自带很多成熟的过滤工具)。

七、测试验证

用外部邮箱发两封测试邮件到你的自定义域名邮箱:

  1. 先发一封包含过滤关键词的邮件,检查是否被正确拦截;
  2. 再发一封正常邮件,检查是否能顺利转发到Gmail组织邮箱。

备注:内容来源于stack exchange,提问作者Ted

火山引擎 最新活动