使用Mailcow自建邮件服务器

Mailcow是一个可以用Docker部署的邮件服务器,安装部署都比较简单,稍微搞下就能用。。。至于发的邮件进不进垃圾箱,看造化了。。。 本文将带领你使用Mailcow部署一个完全符合国际标准的邮件服务器,首先别急着部署,我们先要按照标准来设置域名解析。 1.rDNS,就是反向解析,这个功能只能看你的VPS或是服务器商家支不支持了,建议搭建邮件服务器的时候选择支持rDNS的机器,非必须要求,只是设置了rDNS后可以让你的邮件更加容易进入对方的收件箱而不是垃圾箱。 下面我以Linode为例,在这里可以设置rDNS: 假设你的邮件服务器域名是mail.example.com,那么在下面填入即可: 2.A记录,我以cloudflare的DNS解析界面做示范,那么现在就添加一个mail的A记录解析到你的服务器IP: 3.MX记录,这里假设你的域名是example.com,那么MX记录NAME这里就是@,Value就是mail.example.com: 4.两个CNAME记录,这是Mailcow部署所需要的。NAME分别是autoconfig/autodiscover,Value是mail.example.com: 5.两个TXT记录,这里分别指的是SPF和DMARC,都是增强邮箱安全性的,并且解析设置相对简单,建议都设置一下。我们先来设置SPF,新建一个TXT记录,NAME指向你的根域名,假设你的根域名是example.com,那么NAME就是example.com,Value填写如下所示内容:

v=spf1 mx ~all

如下图所示: 接着是DMARC,还是一样新建一个TXT记录,NAME填写_dmarc,Value填写:

“v=DMARC1; p=reject; rua=mailto:mailauth-reports@example.com

其中“mailauth-reports@example.com”修改成一个你可以正常接收邮件的地址。 如下图所示: 6.DKIM记录,这其实也是一条TXT记录,并且也是增强邮箱安全性的,但是现在我们还无法配置,因为不知道具体的解析值是多少,这个要等Mailcow部署好了后才能设置。 所以,现在DNS解析这一块我们可以告一段落了,现在登到VPS内设置时间,VPS系统我选择使用CentOS7X64 先设置同步时间:

yum -y install chrony
systemctl start chronyd
systemctl enable chronyd

然后把NTP也开启了:

timedatectl set-ntp true

国外机器时区一般都不是东八区,我们把系统的本地时区改成东八区:

timedatectl set-timezone Asia/Shanghai

最后查看一下系统时间是否正常:

timedatectl status

如果一切正常,你应该可以看到类似如下图所示的内容: 其中Universal time是世界时间,这个不用管,RTC time是主板时间,也不用管,只要保证Local time即本地时间是正确,并且是东八区即可。 现在我们安装Docker:

yum -y install https://download.docker.com/linux/centos/7/x86\_64/stable/Packages/docker-ce-18.06.1.ce-3.el7.x86\_64.rpm systemctl start docker
systemctl enable docker.service

再安装docker-compose:

curl -L “https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

然后拉取mailcow项目文件:

yum -y install git
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized cd mailcow-dockerized

执行sh脚本:

./generate_config.sh

这个脚本会让你填写一个域名,这个域名就是我们之前A记录解析的域名,按我们之前说的,那这里我的域名地址应该是:mail.example.com 完成之后拉取镜像:

docker-compose pull

确保全部都是done状态: 运行mailcow:

docker-compose up -d

如果如下图所示,那么你的mailcow就运行成功了:   打开域名mail.example.com,你应该可以看到登录界面:   默认的管理员账号是admin,密码是moohoo 登录进去之后第一件事是修改管理员密码,接着要来添加域名,点击右上角的“Configuration”-“Mailboxes”可以看到如下界面: 添加域名这个Domain填写你的根域名,其他的就按需要配置就行了,填写好了后点击“Add domain and restart SOGo”: 现在我们回到之前的DNS解析这块,之前说过还有一个DKIM解析没设置,这里我们点击“Configuration”-“Administration”,然后选择“Configuration”,然后按如下图设置: 1.Domaion/s填写我们的根域名,我这里假设就是example.com 2.DKIM key length (bits)选择1024bits。 完成之后你将得到一个解析值: 回到cloudflare的DNS解析界面,添加一个TXT记录,NAME填写:

dkim._domainkey

值就是上图的这一串,复制粘贴就行了,如图所示: 现在我们就可以回到mailcow创建邮箱账号了,点击“Mailboxes”-“Add mailbox”开始创建你的邮箱账号: Domain选择我们之前刚添加的域名,其他这些就按需填写即可: 完成之后我们可以在右上角打开SOGo这个APP,这个就是mailcow的邮件系统: 登录界面长这样,可以设置中文: 使用我们创建的邮箱账号登录,注意账号是邮件地址的全名,比如这样:test@example.com 测试发信: Mail-Tester测试了一下,还行吧8.1分: 我就TM一直纳闷这个PYZOR是个啥J8玩意: 当然这些都只是测试并不代表实际使用效果,那么Mailcow实际发送邮件的效果如何? 答曰:稀烂! 发QQ邮箱进垃圾箱,发Gmail进垃圾箱,发什么都进垃圾箱,玩你妹啊!rDNS/SPF/DMARC/DKIM都配置了还是如此,我也不知道该怎么办了,反正我个人觉得这款邮件系统发信进收件箱的几率太低了。。。 另外这个SOGo的界面说实话,有点华而不实,看上去挺好看的UI,实际用起来感觉难用到爆炸,算了,不想BB了,告辞~