2019年3月18日星期一

使用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之前需要将系统自带的postfix和sendmail两个禁用,以防止占用我们需要的端口:
systemctl stop postfix
systemctl stop sendmail
systemctl disable postfix
systemctl disable sendmail

现在我们安装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就运行成功了:
注意:在我安装的过程中,进行到上面这一步的时候会报错 
Creating mailcowdockerized_postfix-mailcow_1 ... error  
报错信息如下:ERROR: for postfix-mailcow Cannot start service postfix-mailcow: driver failed programming external connectivity on endpoint mailcowdockerized_postfix-mailcow_1 (27b3dc3d2e395746819474ae12b4c8e071af62f6038f1972d2cb5101d58145f2): Error starting userland proxy: listen tcp 0.0.0.0:25: bind: address already in use ERROR: Encountered errors while bringing up the project.
根据提示可以看到是25端口被占用了。

此时我们解除被占用的25号端口:
lsof -i:25   ##查看端口被哪个进程占用

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
myserver 3106 SPREADTRUM\justin.wu 3u IPv4 593177169 0t0 TCP *:8889 (LISTEN)
myserver 3106 SPREADTRUM\justin.wu 4u IPv4 593177170 0t0 TCP localhost:8889->localhost:51258 (CLOSE_WAIT)
kill -9  3106   ##kill -9 进程id

解除掉占用的25端口之后,我们可以继续进行docker的安装
cd /opt/mailcow-dockerized
docker-compose up -d
等待所有任务都done的时候就完成了。(如果重启服务器也出现 postfix-mailcow启动失败的情况,直接按照上述方法解除25号端口占用,然后在搭建好的网站后台进行重启 postfix-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的邮件系统:
登录界面长这样,可以设置中文:
使用我们创建的邮箱账号登录,注意账号是邮件地址的全名,比如这样:imlala@example.com
测试发信:
正常:
测试收信,同样正常:
Mail-Tester测试了一下,还行吧8.1分:
我就TM一直纳闷这个PYZOR是个啥J8玩意:
当然这些都只是测试并不代表实际使用效果,那么Mailcow实际发送邮件的效果如何?
答曰:稀烂!
发QQ邮箱进垃圾箱,发Gmail进垃圾箱,发什么都进垃圾箱,玩你妹啊!rDNS/SPF/DMARC/DKIM都配置了还是如此,我也不知道该怎么办了,反正我个人觉得这款邮件系统发信进收件箱的几率太低了。。。
另外这个SOGo的界面说实话,有点华而不实,看上去挺好看的UI,实际用起来感觉难用到爆炸,算了,不想BB了,告辞~
提示:如果使用此邮箱系统的SMTP发信,需要注意的服务器和端口。我按照以下信息配置可以正常使用:

# smtp 自建邮箱
$System_Config['smtp_host'] = 'mail.baidu.com';
$System_Config['smtp_username'] = 'service@baidu.com';
$System_Config['smtp_port'] = '587';
$System_Config['smtp_name'] = '测试邮箱';
$System_Config['smtp_sender'] = 'service@baidu.com';
$System_Config['smtp_passsword'] = 'bd123456';
$System_Config['smtp_ssl'] = 'false';

没有评论:

发表评论

︿
Top