共计 2855 个字符,预计需要花费 8 分钟才能阅读完成。
本站提供 Linux 服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme
在早期的文章中 xiaoz 分享过《使用 Docker 搭建 poste,自建邮件服务器》,poste 这个邮局比较轻量,部署相对简单,适合个人轻度使用。但是从客户的使用反馈来看(xiaoz 之前有给客户部署过),大量发件的时候 poste 不太稳定,很容易出问题。且 poste 将所有相关依赖服务全部放到一个容器中,并没有使用 docker-composer 编排多个容器,从而导致稳定性大打折扣。
今天再分享另一个开源的自建邮局服务 mailcow,mailcow 功能上比 poste 更加丰富,官方提供 docker-composer 部署方式,下面和 xiaoz 一起来安装下 mailcow 邮件服务吧。
注意:此教程需要掌握一定 Linux 基础和 Docker 基础的人士阅读
先决条件
- 一台 VPS,有独立 IP,最低配置 1C2G,建议 2C4G 以上,支持发件服务(未屏蔽邮件端口,请咨询你的服务商),支持 PTR 反向解析(咨询你的服务商)
- 操作系统:CentOS、Debian、Ubuntu 均可
- 安装了 Docker 和 docker-composer
- 一个域名,注册时间越长越好,建议使用主流后缀,如:
.com/.net/.org
注意:请务必和你的服务商确认是否支持 PTR 反向解析,如果不支持的话邮件是很容易进垃圾箱的,就目前 xiaoz 所了解 UltraVPS(EU) 是支持 PTR 解析的,并且自己在后台就可以操作。
如果您还没有安装 Docker 可以参考:Linux 安装 Docker 与 Docker 常用命令
如果您还没有安装 docker-composer,可以使用下面的命令安装:
# 下载 docker-composer
curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#添加执行权限
chmod +x /usr/local/bin/docker-compose
#建立软连接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
部分 CentOS 7 系统可能内置了 postfix 服务,会和 mailcow 端口冲突,可以先尝试执行下面的命令卸载 postfix
#CentOS 卸载 postfix
yum -y remove postfix
#Debian 或者 Ubuntu 卸载 postfix
apt-get remove postfix
设置 Linux 主机名
假设您的顶级域名为 domain.com
,那么您的主机名需要设置为mail.domain.com
或mx.domain.com
,前缀自己取,反正是需要二级域名。
设置主机名的命令为:
hostnamectl set-hostname mail.domain.com
然后修改 /etc/hosts
,添加一行 hosts 解析,就是将mail.domain.com
指向到您当前服务器的公网 IP,命令如下:
echo '173.0.xx.xxx mail.domain.com' >> /etc/hosts
部署 mailcow
先克隆 mailcow 代码和脚本:
#CentOS 安装 Git
yum -y install git
#Debian 安装 Git
apt-get install git
#克隆 mailcow 代码
git clone https://github.com/mailcow/mailcow-dockerized
进入代码目录 cd mailcow-dockerized
执行初始化脚本:./generate_config.sh
根据提示设置域名和时区等信息。注意:
- 域名要和上面设置的主机名一致,比如
mail.domain.com
- 如果后续需要修改,可以编辑
mailcow.conf
这个配置文件
mailcow 默认使用了 80/443
作为 WEB 端口,如果您的服务器上已经存在 WEB 服务,可能会导致端口冲突,我们可以修改 mailcow.conf
这个配置文件,将
HTTP_PORT=80
HTTPS_PORT=443
修改为其它端口,比如修改为:
HTTP_PORT=880
HTTPS_PORT=8443
然后执行下面的命令拉取容器镜像和启动:
# 拉取镜像
docker-compose pull
#启动容器
docker-compose up -d
初始化 mailcow 和添加域名
安装成功后,访问您的 IP + 端口进入 WEB 管理界面,默认用户名:admin
,密码为:moohoo
进入后台后点右上方“配置 – 邮箱设置 – 添加域名”
注意:添加域名的时候这里需要填写您的顶级域名domian.com
,比如您主机名设置的是mail.domain.com
,那么这里添加域名的时候填写domain.com
添加邮箱解析
域名添加完毕后,右侧有个 DNS 按钮,点击这个按钮会对您的域名 DNS 进行检测和指引。
不过那个检测有点不准,而且并非所有记录都要添加,下面是必须添加的记录。
主机名 | 记录类型 | 记录值 | 备注 |
---|---|---|---|
mail.domain.com | A | 您的 IP | 填写你 VPS 的公网 IP |
您的 IP | PTR | mail.domain.com | 可能需要联系服务商添加 |
domain.com | MX | mail.domain.com | |
autodiscover.domain.com | CNAME | mail.domain.com | |
autoconfig.domain.com | CNAME | mail.domain.com | |
domain.com | TXT | v=spf1 a mx ip4:173.0.xx.xxx ~all | IP 改成你自己的 |
dkim._domainkey.domain.com | TXT | 从 mailcow 后台获取 | DKIM 记录从 mailcow 后台获取 |
邮件测试
DNS 解析添加完毕后,等待几分钟生效,然后在 mailcow 后台添加邮箱账号,并登录 webmail 进行发件测试。
打开 https://www.mail-tester.com/ 这个网站,然后用你的 mailcow 邮箱发送邮件,发送完毕后查看得分。
满分为 10 分,如果评分很差,mail-tester 会给出提示,建议根据提示进行修正即可。
总结
上述步骤我们仅仅是完成了安装和初始化,其实后续还有很多配置和维护工作要做。比如禁用 IPV6、反向代理、配置 SSL 证书、数据备份与恢复等,有兴趣的可以参考 mailcow 官方文档完成,后续 xiaoz 再分享 mailcow 配置方面的内容。
自建邮局比较复杂且步骤繁多,很多细节问题若处理不好很容易进垃圾箱。非必要情况建议使用第三方企业邮箱即可,除非有特殊需求。自建邮局虽然不受发件量限制,但不建议短时间内发送大量垃圾邮件,否则你的 IP 或域名很容易被拉黑,最后得不偿失。
- mailcow 官网:https://mailcow.email/
如果您也需要自建邮局服务器,可联系我的
QQ:446199062
或者微信:xiaozme