V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
通过以下 Referral 链接购买 DigitalOcean 主机,你将可以帮助 V2EX 持续发展
DigitalOcean - SSD Cloud Servers
zp872571679
V2EX  ›  VPS

1Panel 自建邮局教程: Docker Mailserver + Roundcube 部署指南

  •  
  •   zp872571679 · 1 天前 · 393 次点击

    前言:

    我相信很多人都有搭建邮局的需求,但是除了直接购买邮局服务器,还是有很大一部分人是想要自己搭建自己的邮局的。今天有空就准备写一篇基于 Mailserver+Roundcube 搭建邮局的教程。最主要的原因还是帮助大家一点一点的提升自己,掌握更多 VPS 的玩法。

    但在此之前,必须先泼一盆冷水。

    自建邮局有以下缺陷:

    1. 配置复杂,技术门槛高: 涉及 DNS 各类记录( A, MX, SPF, DKIM, DMARC )、反向解析( PTR )、SSL 证书以及 Linux 运维知识。
    2. 维护成本高: 需要定期更新和维护服务器,防止被漏洞利用成为肉鸡。
    3. 邮件送达率不稳定: 即使你配置得当,IP 也很容易被大厂( Gmail, Outlook )拉黑,或者直接进入垃圾邮件箱。IP 预热是一个漫长的过程。
    4. 端口封锁: 绝大多数云服务商默认封锁 25 端口,需要提交工单申请解封,且审核严格。

    如果这些缺点你都能接受,或者只是想单纯的学习一下邮局的搭建,那请继续的看下去吧


    第一步:环境准备

    在开始之前,请确保满足以下条件:

    1. 服务器( VPS ): 安装了 1Panel 面板。这里可以学习我以前的文章:告别“环境污染”! Debian 服务器安装 1Panel 面板教程:专治 Docker 困难户
    2. 域名: 拥有域名的管理权限(用于修改 DNS ),可以去 spaceship 、namecheap 或者国内的阿里云、腾讯云购买。我这里是托管在了 CloudFlare 方便解析和安全,不同的托管平台可能配置不一样但是也是大同小异的。

    购买域名教程:Spaceship 域名注册优惠购买使用教程

    1. 25 端口: 确认服务器的 25 端口是开放的(使用 telnet smtp.gmail.com 25 测试,如果通了就是开放的,不通请找服务商申请)。

    开发 25 端口的商家我推荐:RackNerd 、Netcup 、CloudClone 、BWH (搬瓦工),有一些默认没开需要申请,有一些默认开启了。RackNerd 的 rDNS 需要工单开启、Netcup 可以在服务器后台自主设置 rDNS 信息。

    在我的传家宝监控都可以找到:传家宝 VPS 监控

    image


    第二步:安装 Docker Mailserver

    1. 登录 1Panel 面板
    2. 点击侧边栏 应用商店
    3. 搜索 Mailserver 并点击 安装

    image

    1. 配置参数:
      • 名称: 保持默认 mailserver

      • OVERRIDE_HOSTNAME: 输入你的邮件服务器主机名,例如 mail.yuhuiculture.icu(请替换为你自己的域名)。 image

      • 端口: 保持默认( 25, 143, 587, 993 等)。

      • 高级设置: 建议勾选“端口外部访问”。

    2. 点击 确认 进行安装,等待容器启动显示“已启动”。

    image


    第三步:创建账户与生成 DKIM

    1. 创建首个账户

    点击 1Panel 侧边栏 容器,找到 mailserver 容器,点击右侧的 终端 图标进入容器命令行。

    image

    输入以下命令创建邮箱账户(将 [email protected]密码 替换为你自己的):

    # 语法: setup email add <邮箱地址> <密码>
    setup email add [email protected] yourstrongpassword
    

    2. 生成 DKIM 密钥

    继续在终端输入命令生成 DKIM 密钥:

    setup config dkim
    

    生成成功后,DKIM 密钥文件位于容器内的 /tmp/docker-mailserver/opendkim/keys/ 目录下。 对应 1Panel 主机(宿主机)的路径通常为: /opt/1panel/apps/mailserver/mailserver/data/dms/config/opendkim/keys/

    image

    进入宿主机的该目录,找到 mail.txt 文件,下载或查看内容,我们需要将里面的内容导入到 DNS 解析中。这个地方的内容在后续的 DNS 解析里很重要,所以可以下载到本地。


    第四步:配置 DNS 解析

    这是最关键的一步,请登录你的域名服务商后台(如阿里云、腾讯云、Cloudflare ),添加以下记录,我这里是使用 Cloudflare 作为演示,所以可能和你的不一样但是添加记录的方式都是一样的。

    假设你的域名是 yuhuiculture.icu,邮件服务器 IP 是 154.26.209.188

    1. A 记录

    将邮件服务器域名指向 IP 。

    • 记录类型: A
    • 主机记录: mail 、roundcube
    • 记录值: 154.26.209.188

    这里顺带也可以把 roundcube 的二级域名添加上去,后续搭建 web 面板使用的时候,就不需要在过来添加域名解析了,如果不喜欢 roundcube 也可以缓存你自己喜欢的二级域名绑定。

    2. MX 记录

    告诉互联网你的邮件由哪台服务器接收。

    • 记录类型: MX
    • 主机记录: @
    • 记录值: mail.yuhuiculture.icu
    • 优先级: 10

    3. SPF 记录 (TXT)

    授权该 IP 发送邮件,防止他人冒用。

    • 记录类型: TXT
    • 主机记录: @
    • 记录值: v=spf1 mx ~all

    解释: v=spf1 版本号;mx 表示授权 MX 记录对应的 IP 发信;~all 表示宽容策略(软失败),如果 IP 不匹配则标记为垃圾邮件而不是直接拒收,v=spf1 mx ~all这里的 IP 也可以使用你服务器的 IP ,具体的规则需要参考文档,如果发现出现问题可以把报错信息给 AI ,协助你处理。

    4. DKIM 记录 (TXT)

    打开刚才生成的 mail.txt 文件。 手动添加 DNS 记录时注意:需合并文件内的记录值,去掉双引号和换行符,将其合并成一行长字符串。

    • 记录类型: TXT
    • 主机记录: mail._domainkey (注意:如果是默认生成的,通常是 mail 作为选择器,请检查文件名确认)
    • 记录值: v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BA...(此处省略长串公钥)...IDAQAB

    image

    5. DMARC 记录 (TXT)

    告诉接收方如何处理未通过 SPF 或 DKIM 验证的邮件。

    • 记录类型: TXT
    • 主机记录: _dmarc
    • 记录值: v=DMARC1; p=none; sp=none;

    解释: p=none 表示目前只监控不拦截(适合初期调试)。稳定后可改为 p=quarantine(隔离)或 p=reject(拒绝)。

    image


    第五步:部署 Roundcube (Webmail 客户端)

    为了方便在网页上收发邮件,我们需要部署 Roundcube ,想必大家可能见过这个界面,主色调蓝白色可以很方便的收发邮件,而且很多插件配合是一个很好的邮件管理 web 项目。

    1. 回到 1Panel 应用商店
    2. 搜索 Roundcube 并点击 安装
    3. 配置参数:
      • 名称: roundcube
      • 数据库: 1Panel 会自动创建,保持默认即可。
      • IMAP 服务器、SMTP 服务器: 填写 Mailserver 容器的连接地址。
        • 推荐: 填写宿主机的内网 IP 或公网 IP ,例如 154.26.209.188我这里是绑定了域名,所以直接使用域名就好了。

    image

    *   **端口:**
        *   IMAP 端口:143 (非加密) 或 993 (SSL)
        *   SMTP 端口:25 (非加密) 或 587 (TLS)
    *   **端口外部访问:** 勾选,并在外部端口填入一个你喜欢的端口(如 8080 ),或者随后通过 1Panel 的“网站”功能做反向代理绑定域名(例如 `roundcube.yuhuiculture.icu`),在前面我已经添加了 roundcube 面板的地址,所以我这里也直接填入域名。
    

    如果你不想绑定域名,也可以选择开放端口,然后使用http://IP+端口的方式访问,默认端口是8080。但是我建议配置反代,开启 HTTPS 保证安装防护。

    额外说明

    Roundcube 安装的时候会让你选择数据库,如果你没有安装 mysql 数据库,可以在应用市场搜索 mysql ,然后默认选择安装,安装成功之后在点击 roundcube 安装,就可以选择安装的数据库了。

    其实也可以使用 SQLite 但是 1Panel 的镜像默认是使用 mysql 的。


    第六步:验证与测试

    1. 登录 Roundcube 的 web 客户端

    在浏览器访问 https://roundcube.yuhuiculture.icu 我这里的地址是开启了 HTTPS ,如果你没有开启或者绑定域名请使用 IP+端口的方式访问。

    如果能成功登录,说明 Roundcube 连接 Mailserver 成功。

    image

    2. 接收测试邮件

    你可以尝试用你的 Gmail 或 QQ 邮箱给邮局发送一封邮件。

    • 如果发送失败,请检查防火墙是否放行了 25, 143, 587 等端口,如果发送失败也有一封返回的邮件内容,根据报错优化相关的错误就好了。

    image

    3. 邮件体检

    访问 Mail-Tester

    1. 它会给你一个临时邮箱地址。
    2. 用你的 Roundcube 给这个地址发一封邮件。
    3. 点击“查看你的得分”。
    4. 目标是 10/10 分。如果分数低,它会详细列出是 DKIM 错误、SPF 错误还是缺少 PTR 记录。我这里显示只有7.7分是因为 rDNS 我没有去修改绑定,还有一些必要的 DNS 记录没有添加。因为每一个 IDC 厂家的 rDNS 修改法都不一样,所以我没有具有的记录操作。

    image


    预告

    走到最后一步,也就是说明了你的邮箱搭建完成了,可以使用 Roundcube 去查看邮箱和发送邮箱,你自己的邮局也就搭建好了。但是如果你想要公开给别人访问或者注册还缺了一些步骤,限于篇幅原因我也就不细讲了。

    后续我也会持续更新使用宝塔面板搭建邮局的教程,还有全自动的邮箱搭建脚本,不需要像现在一样这么麻烦去一步一步的设置安装组件。

    有了自己的邮局也不是说就可以为所欲为了,很多服务器商家都有自己的 TOS ,发送垃圾邮件轻则关机警告重则删除服务器封号,所以还是要注意自己的使用。如果不想折腾也可以完全购买现成的邮箱服务,稳定而且还安全唯一缺点就是现在发送频率。

    4 条回复    2026-03-07 14:50:54 +08:00
    PeiXyJ
        1
    PeiXyJ  
       1 天前
    这是我见过最长的帖子了
    zp872571679
        2
    zp872571679  
    OP
       1 天前
    @PeiXyJ 你就说够不够细把
    orion1
        3
    orion1  
    PRO
       1 天前
    可以用来无限发广告吗
    cyp0633
        4
    cyp0633  
       1 天前
    @orion1 部分云厂商给你开 25 端口之前就会让你提供预计发信频率的,没有合适的理由也会被打回
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2714 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:19 · PVG 18:19 · LAX 03:19 · JFK 06:19
    ♥ Do have faith in what you're doing.