yanchang
yanchang
发布于 2026-05-29 / 33 阅读
0
0

完整版自建邮局架构笔记 (Poste.io + Brevo)

碎碎念

之前虽然部署过相当于是自建邮局的项目,但是本身原理是域名托管,实际上数据都不是在自己的服务器上,只是相当于是冠名而已,本身还是使用别人成熟的产品罢了。现在使用另一种方式,通过使用邮件转发的方式,当然接受邮件还是自己的服务器接受。这样的话邮件数据无论如何都是存储到自己的服务器上的。

核心架构逻辑

  • 入站(收信): 外部邮件 -> 域名 DNS MX 记录 -> 云服务器公网 IP -> 防火墙放行 25 端口 -> Poste.io 容器直接接收。(保证了数据绝对私有和实时到达)。

  • 出站(发信): Poste.io 容器 -> 内部组装邮件 -> 通过 587 端口加密发送给 Brevo 中继服务器 -> Brevo 盖章后发往全球。(完美绕开国内云厂商屏蔽发信 25 端口的死局,并且不进垃圾箱)。

第一步:打通发信大动脉(配置 Brevo)

我们需要借助 Brevo(原 Sendinblue)这个专业的邮件分发平台来替我们发信,它的免费套餐提供每天 300 封的发信额度,对个人或小型团队绰绰有余。

  1. 注册账号: 前往 Brevo 官网 注册一个服务账号(建议使用你的主力邮箱注册,比如 QQ、网易或 Gmail)。后面套餐的话,选择最下面的一个免费套餐,每天有300邮件的发信额度

  2. 验证域名所有权:

    • 登录后,点击右上角头像出现设置

    • 在 Brevo 左侧菜单找到 Senders, domains, IPs(发件人与域名)。

    • 添加你的域名(例如 yanchang.pw),按照页面提示,去你的域名解析控制台添加几条 TXT 记录,完成所有权验证。

  1. 获取真正的 SMTP 密码:

    • 登录后,点击左侧的栏目,进入 Transactional

    • 配置界面,会给你提供SMTP的server、Port、Login、Password记住这些千万不要忘记。

wdda

第二步:域名解析配置(DNS)

打开你的域名解析面板(如阿里云解析、Cloudflare 等),添加以下两条核心记录,告诉全世界你的邮局开在哪里:

  1. A 记录(指向服务器):

    • 主机记录:mail

    • 记录类型:A

    • 记录值:填写你的云服务器公网 IP

  2. MX 记录(收信指路牌):

    • 主机记录:@

    • 记录类型:MX

    • 记录值:mail.你的域名(例如 mail.yanchang.pw

    • 优先级:10

第三步:部署 Poste.io 单容器邮局

相比于动辄启动近十个容器的重型项目,Poste.io 采用全能单容器架构,管理极其清爽。

  1. 创建项目目录:

Bash

mkdir -p /opt/poste
cd /opt/poste
  1. 创建 Docker 配置文件:

Bash

sudo nano docker-compose.yml
  1. 填入专属优化配置: 将以下内容完整复制进去(注意修改 hostname 为你自己的域名):

YAML

services:
  mailserver:
    image: analogic/poste.io:latest
    container_name: poste_mail
    hostname: mail.yanchang.pw  # 改成你的邮件域名
    restart: always
    ports:
      # --- 核心邮件端口 ---
      - "25:25"
      - "110:110"
      - "143:143"
      - "465:465"
      - "587:587"
      - "993:993"
      - "995:995"
      # --- 网页访问端口 ---
      # 如果 80/443 被系统里的 Nginx 博客等占用了,请改为 "8080:80" 和 "8443:443"
      - "80:80"
      - "443:443"
    environment:
      - TZ=Asia/Shanghai
      # 🚨 救命稻草:强制关闭防病毒引擎,防止小内存服务器直接崩溃!
      - DISABLE_CLAMAV=TRUE
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /opt/poste/data:/data  # 数据持久化目录,重装不丢数据

保存并退出。

  1. 一键启动:

sudo docker compose up -d

第四步:图形化初始化与自动 SSL 证书

  1. 访问后台: 浏览器打开 https://mail.你的域名(提示不安全请点击“继续前往”)。

  2. 初始化向导: 页面会弹出一个非常漂亮的设置界面。

    • Server hostname: 默认即可(如 mail.yanchang.pw)。

    • Admin email: 设置超级管理员邮箱(如 admin@yanchang.pw)。

    • Password: 设置你的后台管理密码。

    • 点击 Submit 完成初始化!

  3. 一键申请安全证书(消除不安全警告):

    • 进入后台,左侧菜单点击 System settings -> TLS Certificate

    • 切换到 Let's Encrypt 标签页。

    • 点击 Request certificate 按钮。

    • 等待 10 秒后强制刷新浏览器,你的后台就拥有合法的绿色小锁 🔒 了!

第六步:接通 Brevo 中继(完成闭环)

这是最关键的一步,把我们的发信流量交给 Brevo 处理。

  1. 在 Poste.io 左侧菜单点击 System settings -> Routing

  2. 页面下滑找到 Default SMTP route (Smarthost) 区域。

  3. 勾选 Route all outgoing emails through an external mailserver?

  4. 填写以下信息:

    • Target SMTP server hostname: smtp-relay.brevo.com

    • SMTP port: 587

    • 勾选 need authentication?

    • Username: 填入第一步在 Brevo 里获取的 SMTP Login

    • Password: 填入第一步生成的那串超长 SMTP key

  5. 翻到页面最底部,点击保存!

🎉 大功告成!

恭喜你!现在你可以点击左侧的 Webmail 进入网页邮箱客户端,尝试给自己的微信或 QQ 邮箱发送一封测试信。它将经由极其安全、可靠的通道瞬间送达。


评论