自己搭邮件服务器有多难?我用 Mailu 跑通了整套企业邮箱

作者:GetcharZp日期:2026/2/3

从“为什么要自建邮箱”讲起,拆解 Mailu 的架构、优缺点,以及普通人也能照着做的安装实战。

Github:github.com/Mailu/Mailu

官网:mailu.io/

b4104652304a1f868421518e475c6c1d.png

这几年,越来越多团队开始重新审视一件事:邮箱,到底要不要掌握在自己手里?

用第三方企业邮箱当然省事,但账号封禁、功能限制、隐私不可控的问题,一旦遇到,几乎没有回旋余地。于是,自建邮件服务器这件事,又被不少技术团队重新捡了起来。

而在一堆方案里,Mailu 是被频繁提到的一个名字。

Mailu 是什么?一句话先讲明白

Mailu 是一套基于 Docker 的开源邮件服务器整体解决方案。

它不是某一个单独的软件,而是把收信、发信、反垃圾、Web 邮箱、管理后台这些组件,全部拆分成容器,再用一套统一的方式帮你组装好。

你不用再自己去拼 Postfix + Dovecot + SpamAssassin + Webmail,也不用被复杂的配置文件折磨,Mailu 的目标很直接:
让“自建邮件服务器”这件事,变得工程化、可复制。

Mailu 内部是怎么工作的?

Mailu 本质上是一套“邮件系统拼装模板”,核心组件包括:

  • Postfix:负责邮件发送(SMTP)
  • Dovecot:负责邮件接收(IMAP / POP3)
  • Rspamd:反垃圾、反病毒
  • Webmail(Roundcube 或 RainLoop) :网页邮箱
  • Admin 管理后台:域名、用户、别名统一管理
  • Redis / MariaDB:状态和数据存储

所有组件都通过 Docker 运行,你看到的不是一堆零散服务,而是一套已经编排好的系统。

这也是 Mailu 最大的特点:
它不是“教你怎么搭”,而是“直接给你一套能跑的”。

Mailu 的基本安装思路(不踩坑版)

整体流程其实很清晰:

第一步:配置 DNS

假设域名为 example.com,服务器IP为 1.2.3.4

  • A 记录
1# 主机记录           记录类型  IP  
2mail.example.com    A    1.2.3.4  
  • MX 记录
1# 主机记录@    记录类型  优先级  记录值  
2example.com    MX    10 mail.example.com  

核心是配置 A、MX 记录,这是邮件系统成败的关键一步,不能省。另外还有 SPF、DKIM、DMARC 可以按需配置。

第二步:启动 Mailu

  • 创建 mailu 文件夹
1mkdir /mailu  
2cd /mailu  
  • 访问 setup.mailu.io/ 填写域名信息后(参考以下截图填写主域名、二级域名),点击界面最下方的 Setup Mailu ,此时官方会跳转到 Mailu configuration - 界面,下载界面提供 docker-compose.ymlmailu.env 的两个文件到服务器的 mailu 目录下
    image.png image.png ef0a9155f8456effe2f44b4846712252.png
  • 手动修改 docker-compose.yml ,移除 front 端口映射中的 127.0.0.1 ,使其能够被外部访问到
  • 一条命令启动服务 docker compose up -d

第三步:后台创建用户

  • 登录 Admin 页面,在浏览器中访问 服务器IP/admin 或者 mail.主域名/admin,服务默认在 80 端口上
  • 添加域名、邮箱账号,执行下面命令后会获取到一个超管账户,邮箱为 me.example.com ,密码为 password
1# docker compose exec admin flask mailu admin [用户名] [主域名] [密码]  
2# 示例:  
3docker compose exec admin flask mailu admin me example.com 'password'  
  • 测试收发邮件
    访问 服务器IP/webmail 或者 mail.主域名/webmail 如果能收到其他邮件系统发送过来的邮件,说明收件相关的配置没有问题咯
    227b722c1c28869466385f52dc90b875.png

写在最后

Mailu 并不是“最简单”的邮件方案,但它是少数能把复杂事情系统化的方案之一

当你真正把邮件当成一项基础设施,而不是一个外包服务时,你会发现,自建并没有想象中那么可怕。

真正难的,从来不是工具,而是你是否愿意为“可控”付出一点学习成本。

如果你已经在考虑这一步,Mailu,值得你认真试一次。


自己搭邮件服务器有多难?我用 Mailu 跑通了整套企业邮箱》 是转载文章,点击查看原文


相关推荐


VS code 类产物中 win11 终端字体内容和颜色 加粗不匹配问题
小兵张健2026/1/24

我尝试了各种方式,换字体,改配置,结果还是乱的,有人知道怎么搞吗?跪求,Mac好像天然就没问题,急急急大佬们


Django 踩坑记:OceanBase 4012 Timeout 两条红线,语句超时 vs 事务超时一次讲透
哈里谢顿2026/1/16

一、4012 是谁抛的? Django 本身没有 4012 错误码,它是 OceanBase 的“杀手”信号: 当前 SQL 或 当前事务累计执行时间 ≥ 系统阈值,直接返回 4012。 二、两条红线长啥样? 变量名默认阈值计时对象触发后果ob_query_timeout10 000 000 µs = 10 s单条 SQL 执行时长这条语句被杀,事务可继续ob_trx_timeout100 000 000 µs = 100 s事务 begin→


HarmonyOS一杯冰美式的时间 -- @Env
猫猫头啊2026/1/8

一、前言 该系列依旧会带着大家,了解,开阔一些不怎么热门的API,也可能是偷偷被更新的API,也可以是好玩的,藏在官方文档的边边角角~当然也会有一些API,之前是我们辛辛苦苦的手撸代码,现在有一个API能帮我们快速实现的,希望大家能找宝藏。 如果您有任何疑问、对文章写的不满意、发现错误或者有更好的方法,欢迎在评论、私信或邮件中提出,非常感谢您的支持。🙏 二、@Env的诞生背景 OK,步入正题把,在多设备开发的场景中,我们经常需要根据不同的设备环境(比如窗口大小、横竖屏等)来调整UI布局。以前我


Nop入门:使用Excel模板生成包含图表的报表
canonical_entropy2025/12/30

讲解视频:Nop入门:使用NopReport导出Excel图表_哔哩哔哩_bilibili Nop平台内置了一个非常精简的中国式报表引擎NopReport,它可以实现商业报表引擎如FineReport和润乾报表的核心功能。NopReport很巧妙的利用Excel单元格的批注机制来存放扩展信息,可以直接使用Excel模板来作为报表模板,这样大大简化了报表制作过程,并且可以复用客户已有的各种业务表格。 在实现层面,NopReport没有使用Apache POI库,而是选择了直接使用流式接口解析Off


什么?还不知道git cherry pick?
少年姜太公2025/12/21

前言 上周四在公司开发代码时,一下没注意从测试分支dev上拉了代码并进行开发,最后要上线的时候才猛然发现分支拉错了,一看gitLab上改了几十个文件,再一查发现自己拉代码拉错了😭😭😭,本来都准备下班了,结果硬是新建了一个分支,把四五个文件近1000行代码一点一点cv到新分支上,结果搞完一查才发现git有个cherry pick的命令可以直接搞完,希望jym看完这篇文章以后不要像我一样做这种一点一点cv的蠢事了😭😭😭 什么是cherry pick cherry pick顾名思义,就是樱


【鸿蒙开发案例篇】拒绝裸奔!鸿蒙6实现PDF动态加密
威哥爱编程2025/12/13

兄弟们抄起键盘!今天V哥要带大家用鸿蒙6.0的pdfService玩转PDF动态加密,让敏感文档在战场上穿隐身衣。以下基于HarmonyOS 6.0(API 21)的ArkTS实战,全程高能代码爆破,专治数据泄露不服!💣 联系V哥获取 鸿蒙学习资料 🔑 第一弹:动态加密核心战备(理论基础) 作战目标:运行时根据设备状态动态加载/更新PDF加密密钥技术依据: pdfService支持通过setEncryptConfig()对文档进行AES-256加密 加密状态可通过getSecurityH


Trae Genimi3跟着官网学实时通信 Socket.io框架
百万前端向前冲2025/12/4

socket.io/zh-CN/docs/… 第1次对话:AI满意度⭐️⭐️ AI提示词:学习socket.io 请你按照这个文档 socket.io/docs/v4/tut… 创建一个中文网站,循序渐进的学习。 出现这个基于Node.js的Expressv5.2框架的聊天室,有点弱了,用户进入没有提示和昵称, 我的对AI表现的满意度是 ⭐️⭐️⭐️🈳🈳,可以给半⭐️给 版本比较新。 我需要的是一个学习Socekt.io的网站 AI给我一个Socekt.io开发的项目。 第2次对话:


git pull拉取的时候碰到报错:error: 您对下列文件的本地修改将被合并操作覆盖 请在合并前提交或贮藏您的修改。
skywalk81632026/2/11

git pull拉取的时候碰到报错: error: 您对下列文件的本地修改将被合并操作覆盖:         data/processed/acnes_related_data.csv         data/processed/activity_data.csv         data/processed/hemolytic_data.csv         data/raw/active_peptides.csv         data/raw/hemolytic.csv      


ThreadForge v1.1.0 发布:让 Java 并发更接近 Go 的开发体验
一只叫煤球的猫2026/2/20

正好春节放假,自驾去了陕西、河南、安徽,一路上走走停停。 白天基本在路上,晚上在酒店或者服务区休息时,抽一些时间继续打磨 ThreadForge。 一点点补了个 v1.1.0 出来。 仍然保持 ThreadForge 的目标: 让 Java 能写出更简单、更可推理、更可观测的并发代码。 这次版本,重点补齐了并发开发里几个还算常见的能力。 v1.1.0 核心更新 Retry Policy(失败重试) 支持 scope 级默认重试,也支持任务级覆盖,不再到处手写 while/try-catch


Node.js 安装与配置完全指南:从零开始搭建开发环境
张3蜂2026/2/28

目录 引言 第一部分:Node.js 简介与版本选择 1.1 什么是 Node.js? 1.2 Node.js 版本介绍 第二部分:Node.js 安装方式详解 2.1 方式一:官方安装包(最简单,适合初学者) Windows/macOS 安装步骤: 2.2 方式二:包管理器安装(适合 Linux 用户) Ubuntu/Debian 系统安装步骤: CentOS/RHEL 系统安装步骤: macOS 使用 Homebrew 安装: 2.3 方式三:使用 NVM 安装(最推

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客