大家好!Poste 是著名的基于Docker的邮件服务器管理系统。这套程序由捷克团队Analogic开发,从2014年起,被邮件服务器用户广泛使用。它使用了基于NodeJS的Haraka作为MTA, 支持高通量的邮件收发。同时使用传统的Dovecot作为MUA, 同时支持网页邮件(Roundcube),日历与联系人管理,垃圾邮件与杀毒, Sieve Script等功能。
由于Poste.io是基于Docker的,因此它的安装和运维比较方便,也比较时候邮件服务器新手使用。7年前,我就介绍过Poste的搭建。今天,我将介绍新版本Poste在Linux系统中的搭建与配置。本文作者为香菇肥牛,原文链接为https://qing.su/article/poste-io-with-docker-on-linux.html, 转载请注明原文链接。谢谢!
1. 搭建开始前的准备
开始之前,我们需要准备:
- 一个域名 (比如example.com, 或者qing.su这样的,后文中将用qing.su指代域名);
- 一台VPS或者独立服务器(必须要有独立的IPv4);
- 服务器为新安装的64位Linux系统,系统中不能安装任何的Nginx, 宝塔, 1Panel, Apache, 等等程序或者面板。
Poste.io运行时需要1.8 GB左右的内存,所以建议您的服务器拥有2 GB及以上的内存。如果您关闭了杀毒和防垃圾邮件功能,那么1GB的服务器也可以运行。
另外,所有的邮件服务器都需要通过25端口进行邮件收发。有的主机商会阻断25端口,您需要发工单联系主机商解除25端口的阻断,否则会导致无法发信。您可以使用下面的命令判断25端口是否被阻断。
1 | telnet smtp.aol.com 25 |
如果收到类似 220 smtp.mail.yahoo.com ESMTP ready 的回复,说明25端口正常,可以发信。如果超时,且防火墙没有禁止25端口,则说明25端口被阻断。
2. 域名DNS的设置(第一部分)
DNS的配置对于邮件服务器来说至关重要。如果DNS配置错误,会产生诸多问题,比如收信掉信、发信进垃圾箱,等等。
DNS的配置分为两部分。第一部分需要在邮件服务器搭建开始之前设置,第二部分在邮件服务器搭建完毕之后设置。我们先来设置第一部分。
本文中,我将用域名qing.su来举例。您需要给服务器设置一个单独的子域名,这里将假设为mx.qing.su. 您也可以设置为mail.qing.su. 假设我将要使用的邮件服务器IP地址为12.34.56.78。
请在您的DNS服务提供商设置下面的DNS记录,请将IP地址和域名qing.su替换为您自己的IP地址和域名。
记录类型 | 前缀 | 解析地址 | 其他 |
A | mx | 12.34.56.78 | |
MX | @ | mx.qing.su | 优先级 10 |
TXT | @ | v=spf1 a mx -all | |
TXT | mx | v=spf1 a -all | |
TXT | _dmarc | v=DMARC1; p=reject; rua=mailto:postmaster@qing.su; ruf=mailto:postmaster@qing.su | 可以根据需要指定这个邮箱地址 |
请注意,如果您使用Cloudflare作为您的DNS服务器,您必须关闭上述记录的CF Proxy功能(把解析记录边上的小云朵关掉),否则会导致收不到任何邮件。
如果您的根域名(比如这里的qing.su)没有指向任何地址(没有做网站),那您还需要给根域名设置一条任意的A记录或者ALIAS记录。您可以将域名指向您的邮件服务器地址,或者指向127.0.0.1。根域名的A记录是否有设定与部分收件服务器的垃圾邮件判定有关。
3. Reverse DNS的设置
Reverse DNS (rDNS) 是邮件服务器必不可少的配置。Reverse DNS (rDNS)的作用是将IP地址指定为一个子域名。如果您的发信IP地址没有设置rDNS,发送的邮件将会被很多邮件服务器拒收。
rDNS需要在您的服务器的主机商处设置。几乎所有的国外主机商都提供了自助设置rDNS的服务,您需要在您的服务器后台设置,一般会出现在”Network”或者”IP Address”等地方。如果您找不到相关的设置,请发工单给主机商,他们会帮你设置好或者告诉你在哪里可以自助设置。
以我的服务器为例,我需要将邮件服务器地址12.34.56.78 设置rDNS, 解析到 mx.qing.su.
做好Reverse DNS设置后,我们就可以开始安装Poste.io组件了。
4. 安装Poste.io
用root账户登录您的服务器,首先设置主机名hostname. 请将qing.su替换为您自己的域名。
1 | hostnamectl set-hostname mx.qing.su |
设置好后,执行下面的指令,安装Docker.
1 | sh <(curl -fsSL https://get.docker.com) |
新建一个文件夹用于存储所有的数据。
1 | mkdir /opt/mail |
然后,就可以用Docker一键安装了。请将qing.su替换为您自己的域名。
1 2 3 4 5 6 | docker run -d --restart=always \ --net=host \ -v /opt/mail:/data \ --name "mailserver" \ -h "mx.qing.su" \ -t analogic/poste.io |
等待5分钟左右安装完毕后,就可以登录管理后台,进行剩下的设定了。
5. 配置Let’s Encrypt SSL证书
现代邮件服务器的邮件收发均需要TLS证书支持。Poste.io可以进行自动的Let’s Encrypt SSL证书的部署和自动续期。
我们访问https://mx.qing.su/admin (替换为您自己的服务器地址或者主机名,第一次访问需要手动允许,后面安装好证书之后就不需要了),系统会引导输入hostname新建管理员用户名和密码。我这里填入mx.qing.su作为hostname, 然后设置admin@qing.su作为管理员账户。
点击左侧System settings – TLS Certificate,进入下图的界面。
如果您的域名已经解析到服务器,则点击issue free letsencrypt.org certificate, 勾选enabled, 然后点击save changes. 如下图。
等几分钟后,系统会提示部署完毕。此时我们已经可以用我们的域名https://mx.qing.su/admin来访问系统后台了。此时再刷新登录管理后台,就可以看到,我们的域名已经部署好了安全证书。
6. 域名DNS的设置(第二部分)
之前,我们已经设置好了邮件服务器需要的大部分DNS,包括MX, SPF, DMARC等。搭建好邮件服务器之后,我们还需要根据系统生成的DKIM密钥来配置DKIM记录。
在服务器后台 https://mx.qing.su/admin, 点击左侧Virtual domains, 选择您的域名,可以看到如下图的域名管理界面。在DKIM部分点击”create a new key”.
点击后,系统会生成如下图的DKIM key记录。您需要添加这条TXT记录进您的域名的DNS,用来DKIM签名。
注意不要把DKIM 的内容复制错了,如果复制粘贴出错了,会导致DKIM验证失败,导致发送的邮件被拒收。
记录类型 | 前缀 | 解析地址 | 其他 |
TXT | s2025xxxxxxx._domainkey | k=rsa; p=MIIBscxxxxxxxxx_your_DKIM_KEY_xxxxxxxxxxxxDAQAB |
至此,所有的DNS记录全部添加完毕。
此时,我们来做一遍最后的检查,看一下我们的邮件服务器是否配置正确。点击左侧Server status,进入服务器状态页面。这里可以查看服务器的各个组件是否正常运行。
再点击顶部Connection diagnostics. – Status Check, 查看一下服务器的各个组件的连通性。这个页面的所有条目都应该有绿勾。
这样,您的Poste.io邮件服务器就全部设置完毕了。
7. 添加用户与其他域名
全部设置完毕后,我们来添加用户。也可以添加其他的域名。
点击左侧Email accounts,就来到了下面的界面。我们可以点击Create a new email添加新用户。
您也可以添加别名和转发。点击Create a redirect (alias)可以配置Catch-all邮箱,如下图。
如果您需要添加额外的域名,则可以点击左侧Virtual domains, 在其中添加新域名。每添加一个域名,都需要重复一遍第5部分,生成一个DKIM Key。生成完毕后,按照下面的格式添加DNS记录。假设这个额外的域名是example.com, 那么您需要给example.com做如下的解析。
记录类型 | 前缀 | 解析地址 | 其他 |
MX | @ | mx.qing.su | 优先级 10;请注意,这个MX记录地址应该是和你的主域名设定是一样的。 |
TXT | @ | v=spf1 a mx -all | |
TXT | _dmarc | v=DMARC1; p=reject; rua=mailto:postmaster@example.com; ruf=mailto:postmaster@example.com | 可以根据需要指定邮箱地址 |
TXT | s2025xxxxxxx._domainkey | k=rsa; p=Your_domain_key_xxxxxx | 根据系统生成的值来设定 |
8. 测试邮件收发
全部设定完毕,我们就可以开始使用啦。打开 https://mx.qing.su/ 登录刚刚新建的邮箱,给mail-tester.com发一封测试邮件。
可以看到,我们发送的邮件得到了10分满分。如果您按照我之前的步骤正确配置了DNS,您也应该可以得到10分满分。有时候,mail-tester会因为邮件的内容太短之类的原因扣分,这是没关系的,您只要保证图中蓝框中的Authentication部分全部合格即可。
至此,我们使用Poste.io程序,完成了个人邮件服务器的搭建,并正确配置了全部的DNS记录,可以实现正常收发信。如果您有任何疑问,欢迎留言讨论,我将尽量解答。
本文作者为香菇肥牛,原文链接为https://qing.su/article/poste-io-with-docker-on-linux.html, 转载请注明原文链接。谢谢!