『教程』使用 mailcow: dockerized 搭建一个满分的自有邮箱服务
Q:为什么这么做?
A:本人为域名申请野卡SSL证书的时候会用到一下admin@xxx.xx 邮箱,用现成第三方的感觉没一个好用的,于是决定自建
1.前置准备
1.1.机器要求
- CPU: 1 GHz
- RAM: 1 GiB
- Disk: 5 GiB (不包括邮件储存空间)
- System: x86_64
备注1:请务必使用美国的IP地址的机器来装,根据多年的经验美国的IP地址送达率的最高的
备注2:请不要设置IPv6,根据多年的经验IPv6被拒收/进垃圾箱的概率是最高的
备注3:本次安装在纯净的Debian9下安装,没有任何环境,端口被占用/被运营商关闭了端口 等不在本次教程范围之内请自行研究,问我我也不懂
1.2.域名解析
1.2.1.解析一个 mail.yourdomain.xx 到你的发件服务器
例:
1.2.2.解析一个mx记录
例:
1.2.3.设置SPF 添加一个内容为 "v=spf1 mx ~all"
的 TXT 记录
例:
1.2.4.设置 autoconfig
& autodiscover
记录
例:
1.2.5.设置 _dmarc
TXT记录,记录值为:v=DMARC1; p=reject; pct=100;
例:
1.2.6.设置SRV记录 _autodiscover._tcp
记录值为:100 1 443 yourdomain
例:
1.2.7.去你购买服务器的商家设置rDNS,由于ip本来就是我们自己的,于是我这边就自己设置了。
2.开始安装
2.1.安装Docker
1
|
curl –sSL https://get.docker.com/ | sh
|
2.2.安装Docker-Compose
1
2
|
curl –L https://github.com/docker/compose/releases/download/$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker–compose
|
2.3.安装Mailcow
1
|
git clone https://github.com/mailcow/mailcow-dockerized && cd mailcow-dockerized
|
生成域名配置文件:
1
|
./generate_config.sh
|
如有需要,可以修改 mailcow.conf
中的配置项
2.4.拉取镜像并启动 mailcow
1
2
|
docker–compose pull
docker–compose up –d
|
访问你之前输入的域名,就应该能看到 mailcow 的后台了。使用默认帐号 admin
和密码 moohoo
登录后台。
3.进一步配置
3.1.添加域名
选择顶部导航栏上的 Configuration -> Mailboxes -> Add domain 来添加一个域名
3.2.设置DKIM
回到 Configuration -> Administration, 选择下方的 Configuration 选项卡,在 Add ARC/DKIM key 区域填写域名,选择密钥长度(如果 DNS 服务商可以支持 2048 位长密钥的公钥,选择 2048 更安全。如果不支持,那就只能选 1024 位了)。Selector 如果没有冲突,一般不需要修改。
设置完成后,在上方应该能看到类似下图的信息:
前往 DNS 服务商,添加一条记录名为 Selector + ._domainkey. + Domain (host),类型 TXT,记录值为灰色框内内容的记录。如上图应该添加记录名为 dkim._domainkey,记录值为灰框内容的记录即可。如果上图中 Domain 改为 mail.example.com ,则相对应的,记录名应改为 dkim._domainkey.mail。
例:
3.3.添加用户
再次前往 Mailboxes 页面,选择 Add mailbox 并填写相关信息即可。
至此,您应该可以开始发送邮件了。用上面的信息通过 SMTP 发信试试吧!
4.常用命令
1
2
3
|
docker–compose up –d #启动
docker–compose down #停止
docker–compose logs [options] $service_name #查看日志,比如 docker-compose logs acme-mailcow
|
最后 mail tester 跑个分 :