用 Docker 搭建一个自己专属的邮件服务器
发布时间:2026-09-11 | 浏览:1
注意: 本文所使用的 Linux 发行版本为 Debian!
注意: 请各位遵纪守法,互联网不是法外之地!
我们平常所用的邮箱地址结构通常为 username@mailserver.com 这样的格式,其中 username 就是用户名称,而 @ 后面的 http://mailserver.com 是邮箱服务提供商的服务器地址,比如 http:// gmail.com 、 http://outlook.com 、 http://qq.com 等等,这些文本是给人看的,计算机联系要用 IP 地址联系。
假设你用 456@qq.com 的邮箱地址给 123@gmail.com 发送一份电子邮件到对方收到邮件,其实过程大致分为三部分:
1 ) qq.com 的服务器用收件人地址中 @ 后面的文本内容去 DNS 服务器查询真实的 IP 地址;
2 ) qq.com 的服务器会把你的邮件内容和你的邮箱地址和收件人的地址打包,然后发送到收件人地址的服务器;
3) gmail .com 收到文件后,识别收件人地址中 @ 前面的用户名 123 后,把邮件分发给用户 123。
其中具体的实现原理不需要关注,我们只需明白大致过程就可以了。
从上面的三个过程我们就能知道,要搭建一个邮件服务器我们所需要的东西如下:
一台拥有独立 IP 的服务器;
选择一家云服务器提供商,尽量选择大厂,技术服务完善,社区也活跃,国内有腾讯云、阿里云、华为云等等。一般这些公司都有免费试用时长,如果你是学生那么还有可能白嫖一年。但是国外的 VPS 好像更便宜。配置根据自己选择和预算选择,普通人选个单核 1G RAM 足够了,需要注意的是 IP 地址一定要选 IPv4,有些配置因为用 IPv6 所以便宜,有些网络环境可能无法访问 IPv6 所以不建议选择。
这里选择用天翼云演示,(不是广告,没给钱)。
系统镜像选择 Linux,发行版本选择自己喜欢的,我这里就选择 Debian。
购买好服务器之后,一般网页右上角都有控制台或者控制中心,点击后就能看到你的服务器。
天翼云要选择位置才能看到服务器。
接下来要把远程登录的 root 密码改了
选中你的主机然后先点关机,然后点重置密码,输入一个你喜欢的密码,这个密码是未来要远程登录所需要的。修改完毕后就可以用服务器的 IP加 ssh 端口(默认22)登录远程服务器了。为了安全建议更改默认 ssh 端口。
每家服务商的修改方式不同,但都差不多是安全组控制。点击服务器的名称进入修改页
点击修改安全组规则就能修改出入站的端口设置,具体的设置会在后面提到。
每个域名都对应着唯一的 IP 地址,选择一个自己喜欢的域名很重要。云服务器提供商一般也有域名购买服务,腾讯云、阿里云都有相应的服务。大厂还提供 DNS 解析和 SSL 证书一条龙服务,就不需要在别的网站跳来跳去了。
注意 :购买域名之前需要提前做好实名认证。
我们在腾讯云的域名注册云搜索自己想要的域名,顶级域名例如 .com 或者 .cn 价格都比较贵,可以选择其他后缀;
需要注意的是例如 .gov 、. http:// gov.cn 或者 . http:// edu.cn 这类的网站只有政府或者其他认证的机构才能注册,个人不能注册此类域名。
当然你也可以用中文域名,比如 .我爱你
很遗憾 wangsicong.我爱你 已经被注册了,但是这不影响你用喜欢妹子的名字.我爱你来注册域名。
选好喜欢的域名付款之后,这个域名就在你的名下了。 如果你打算商业运营记得要备案。
在腾讯云控制台的 DNS 解析页面中,先添加购买的域名,然后点击解析,再点击快速添加解析
填入购买云服务器的 IP,还需要手动添加一条邮件服务的解析记录,记录用 @ ,类型选 MX。
至此,服务器域名的解析已经完成了,在本地计算机的终端中 ping 你的域名已经能够返回正常的 IP 了。
SSL 证书的目的主要是使用 https 协议加密通信。
在腾讯云网页上搜索 SSL 证书,在 SSL 证书页面点击左侧我的证书,再点击免费证书,选择申请免费证书
填入你相应的内容,域名填不带 www 的,证书审核成功后会赠送带 www 的。域名验证方式选择自动 DNS,点提交申请,下一页点击完成。接下来就等待证书审核通过的通知,审核时间比较久,成功后腾讯云会给你发短信。
申请成功之后就可以在腾讯云的 SSL 页面下载证书,
选择 Nginx 类型的证书。
至此,关于服务器域名解析与证书的操作全部完成。
对于个人用户,使用 Docker 容器可以不破坏服务器的软件环境,配合 Portainer 的可视化界面,操作也相对简单。
先附上 Docker 官方的安装指导,注意 Linux 发行版为 Debian。
首先要清理可能存在的 Docker ,运行以下代码
1)首先安装 apt 使用 https 的依赖
2)添加 Docker 官方的 GPG key
安装 Docker Engine
首先建立一个文件夹 temp 用于暂时存放安装文件,使用以下命令
使用如下命令运行一个 Docker image 来验证是否安装成功;
输出如下命令说明 Docker Engine 安装成功
使用如下命令创建一个 Portainer 需要的 Docker Volume
-p 9443:9443 为端口,9443 为管理页面端口,此端口是 Portainer 的 https 请求的入口;
--name portainer 为容器名称;
--restart=always 为 Docker 重启后容器的重启策略,此处为总是重启;
-v /var/run/docker.sock:/var/run/docker.sock \ 与 -v portainer_data:/data \ 为 Docker容器和宿主机的文件夹映射;
portainer/portainer-ce:latest 是 Docker image 的名称。
在浏览器中输入 https:// IP:9443 就能进入 Portainer 控制页面,如果无法打开需要修改服务器的安全策略组;只需修改入站规则,添加9443 端口;
因为使用了自签名证书所有浏览器会提示不安全的网页
我们只需点击继续前往就可以进入配置页面,之后添加 SSL 证书就可以解决自签名证书的问题;
设置完成就可以进入到 Portainer 的控制页面
Portainer 添加 SSL 证书
至此 Portainer 就安装成功。
利用 Portainer 部署 Axigen
首先在服务器新建一个文件夹存放 Axigen 的文件,任意找一个位置,比如 /home 文件夹下面
在 Dashboard 页面点击 add container
Name 与 Image 参数填写如下
在 Network ports configuration 页面点击 publish a new network port 来映射端口
要注意的是容器的端口一般是固定的,host 主机的端口是任意的,这里由于 Portainer 已经占用了主机端口 9443,所以这里把 WebAdmin 的端口映射为 9444。在 Axigen 管理员页面可以自定义端口,也就是改变容器的端口,非高级用户不建议更改。
在 Advanced container settings 里面进行其他参数的设置;
在 Volumes 项里添加容器磁盘映射,用于存放 Axigen 所生产的配置文件;
container 里面的内容是固定的,填 /axigen/var ;
host一栏填服务器的目录,这里为之前创建的文件夹 /home/axigen 。
Restart Policy 项控制的是当主机重启容器的重启策略;选择 Always。
其他保持默认之后点击 Deploy the container,提示成功就完成了。
Axigen 的 Docker 容器部署好之后,就可以进行配置。在浏览器输入域名加之前设置的 AdmWeb端口就可以打开 Axigen 的同意条款页面。
点击左侧的 SECURITY & FILTERING,选择 SSL Certificates;
这里是管理 SSL证书的页面,点击 ADD 添加证书;
把之前下载解压好的证书文件夹中的 .pem 与 .key 文件拖到虚线框中,点击下方的 SAVE CERTIFICATE 就上传好证书了;
点击左侧的 SERVICES,所有的服务器端口都在这里设置;
需要设置的端口有 SMTP、IMAP、还有 WebMail;只需要点击相应的选项就可以进入设置。
SMTP只需设置 Rceciving 的端口,IP填入 0.0.0.0,冒号后面为端口,填写25,点击 QUICK ADD 就完成了;
点击 EDIT 进入证书设置,在 SSL SETTINGS 项目选择之前上传的证书,点击最下面的 SAVE CONFIGURATION。
IMAP 端口为993,设置方法与上面一致。
这里是网页般邮箱的端口,端口为 443。
这里是邮箱服务的后台访问端口控制,只打开 SSL 加密的端口,强制只使用 https 协议;
DOMAINS & ACCOUNTS 项为域名与邮箱账号管理;
在 Manage Domains 项中点击 ADD DOMAIN 添加域名;
在 New domain name 中添加你的域名,不带 www;Postmaster password 直接点击 SET RANDOM 来随机生成密码,最后点击 QUICK ADD 就完成域名添加。
First name 与 Last name 随便填,Account name 里面填用户名称,例如你填 username,那么你的邮箱地址就是 username@domain.com。Account password 点击 SET RANDOM 随机生成密码,勾选下面的 Use must change password at the next login,这个选项目的是让这个账号下次登录必须更改密码。点击 QUICK ADD 完成添加。
浏览器输入你的域名加之前设置的 WebMail 端口就可以打开邮箱页面了;
iPhone Mail app 设置
依次打开:设置app->Mail Account -> Add Account -> Other -> Add Mail Account
Name 随便填,Mail 填设置好的邮箱账户,Password 填写修改好的密码,点击下一步;
返回到 Accounts 页面点击刚添加到账户,在如下路径 SMTP -> PRIMARY SERVER
打开 USE SSL 开关,Port 填之前创建 Axigen 时设置的 SMTP 端口,或者去后台页面寻找。
返回到 Accounts 页面点击刚添加到账户,点击 Advanced,同样打开 Use SSL 开关,Server Port 填之前设置的 IMAP 端口。
打开 Mail app 就能看到添加好的账户了。
如果选择国内的云服务器或者亚马逊的话一定要安全策略组修改端口,国内的话如果要用网页访问端口 80 和 443 端口的话需要备案,还比较麻烦。