使用iRedMail在Ubuntu 20.04上快速搭建邮件服务器

  • A+
所属分类:VPS教程

iRedMail是成熟的邮件服务器系统,它拥有优秀的性能,全面实用的功能,且搭建方便、社区支持良好。今天我们介绍在Ubuntu 20.04 LTS 64 bit操作系统中安装并配置iRedMail邮件服务器系统,实现域名邮箱、垃圾邮件过滤、病毒查杀等等实用功能。

1, 系统要求及前期准备

本教程基于Ubuntu 20.04 LTS 64 bit操作系统。您也可以在Ubuntu 18.04 LTS 64 bit操作系统上按照本教程操作,大部分步骤均类似。Debian 9/10系统的操作略有不同,您可以自行尝试。

搭建iRedMail系统需要至少1.5 GB内存(推荐2 GB及以上)和5 GB硬盘。

发送邮件需要25端口开放;国内大多数云厂商均不开放25端口。国外部分云厂商也不开放25端口,或是需要和主机商联系申请开放25端口。若您不确定,建议您与您的主机商联系。本教程是在一台2 GB内存的OVH VPS上进行的。

搭建之前,您需要做好下面的几个准备:

  • 想好您的邮件服务器域名,本文将以mx.vpswb.com为例。通常,若您将使用的域名为example.com, 那么通常将mail.example.com或者mx.example.com设置为邮件服务器域名。
  • 做好前置的DNS解析(安装完毕后还要再做一些其他解析)。以mx.vpswb.com为例,具体的DNS设置有如下几条:
    • 将mx.vpswb.com设置A记录,解析值为您邮件服务器的IP地址;
    • 将vpswb.com设置任意一条A、AAAA、Alias、或者CName Flattening记录,解析值不为空;若您不需要用该域名做网站,请设置一条A记录解析到127.0.0.1.  请注意,根域名绝对不能设置CName记录,否则会和MX记录冲突,导致收信掉信严重;
    • 将vpswb.com设置MX记录,解析值为mx.vpswb.com, 优先级设置为10.
  • 做好rDNS (PTR)记录解析。该操作需要在您的服务器提供商处进行,您需要解析您服务器的IP地址,将其解析到您的邮件服务器域名mx.vpswb.com上。
  • 设置好主机名(hostname)。这一点尤其重要,若主机名设置错误,则收发信均有可能失败。以mx.vpswb.com为例,请将您的邮件服务器的短主机名设置为mx, 长主机名设置为mx.vpswb.com. 若您不清楚如何设置主机名,可以参考我们的文字教程。

重装一个全新的Ubuntu 20.04 LTS 64 bit操作系统。不可以在已经安装有web服务器或者其他类型服务的VPS/独服上安装邮件服务器。

文字教程:

我们使用git安装iRedMail系统。执行:

1
2
3
4
5
apt-get update && apt-get upgrade -y
apt-get install git -y
git clone https://github.com/iredmail/iRedMail.git
cd iRedMail
bash iRedMail.sh

系统将会自动开始安装。安装过程中会出现下面这些情况,您需要依次根据您自己的信息来设置。

首先,需要指定安装目录,如下图。这里可以保持默认的/var/vmail, 也可以设置为/srv/vmail等,依个人喜好即可;请勿将其设置在/home目录之内。

使用iRedMail在Ubuntu 20.04上快速搭建邮件服务器

 

第二步需要选择是否安装Web服务器。如果您只需要客户端收发信,可以不安装web服务器,其他情况下则建议安装Nginx.  按回车键进入下一步。

使用iRedMail在Ubuntu 20.04上快速搭建邮件服务器

 

第三步要选择使用的数据库。我们这里选择比较简单的MariaDB.  用方向键选择MariaDB, 按空格键选中,然后回车进入下一步。

使用iRedMail在Ubuntu 20.04上快速搭建邮件服务器

 

第四步则要为MariaDB设置root用户密码,输入完毕后按回车继续。

使用iRedMail在Ubuntu 20.04上快速搭建邮件服务器

 

接下来一步非常重要,我们要设置第一个发信域名。如果您的邮件服务器域名为mx.vpswb.com, 那么这里您可以设置为vpswb.com

使用iRedMail在Ubuntu 20.04上快速搭建邮件服务器

 

然后,我们为管理员邮箱设置管理密码。请牢记,若您的域名为example.com, 则管理员邮箱地址为postmaster@example.com.

使用iRedMail在Ubuntu 20.04上快速搭建邮件服务器

 

最后一步设置,我们需要选择安装的功能。默认选择Roundcubemail + netdata + iRedAdmin + Fail2ban即可。SOGo实测没有Roundcube好用,若您喜欢这个看上去更高端的面板,也可以安装。

使用iRedMail在Ubuntu 20.04上快速搭建邮件服务器

 

设置完毕后,屏幕上会列出来这些信息,我们输入y确认安装。

使用iRedMail在Ubuntu 20.04上快速搭建邮件服务器

 

安装需要大概10分钟左右。全部安装好之后,系统会提示是否设置防火墙规则,我们输入y确认即可。

使用iRedMail在Ubuntu 20.04上快速搭建邮件服务器

 

这样,iRedMail就安装好了。在开始配置之前,我们需要重启服务器。

1
reboot

 

3, 安装SSL证书

重启完毕之后,所有的服务就开始运行了。此时,服务器所有的TLS/SSL证书全部为自签,因此浏览器访问或者邮件客户端收发信时会收到不信任证书的提示。我们需要获取商业SSL证书。这里,我们将以免费的Let’s Encrypt证书为例配置SSL.

1
apt-get install certbot

若您的Ubuntu版本为18.04, 则需要在上条命令之前加上下面两行:

1
2
apt install software-properties-common
add-apt-repository ppa:certbot/certbot

然后,即可申请免费的Let’s Encrypt证书:

1
certbot certonly --webroot -d mx.qing.su -w /var/www/html/

以mx.qing.su为例,生成的证书地址为/etc/letsencrypt/live/mx.qing.su/fullchain.pem, 私钥为/etc/letsencrypt/live/mx.qing.su/privkey.pem

申请完毕后,我们首先配置Nginx.

编辑文件/etc/nginx/templates/ssl.tmpl, 找到下面两行:

1
2
ssl_certificate /etc/ssl/certs/iRedMail.crt;
ssl_certificate_key /etc/ssl/private/iRedMail.key;

将地址替换为您的证书地址,我这里是:

1
2
ssl_certificate /etc/letsencrypt/live/mx.qing.su/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mx.qing.su/privkey.pem;

保存好后重新载入Nginx配置文件:

1
service nginx reload

收发信时,同样需要用到TLS安全验证,因此我们还需要配置Postfix和Dovecot.  首先,编辑/etc/postfix/main.cf文件,找到下面这三行(我这里是第95 ~ 97行):

1
2
3
smtpd_tls_key_file = /etc/ssl/private/iRedMail.key
smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt
smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt

将其替换为您的证书地址:

1
2
3
smtpd_tls_key_file = /etc/letsencrypt/live/mx.qing.su/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/mx.qing.su/cert.pem
smtpd_tls_CAfile = /etc/letsencrypt/live/mx.qing.su/chain.pem

保存好之后重新载入Postfix配置文件。

1
service postfix reload

最后,给Dovecot配置证书。编辑文件/etc/dovecot/dovecot.conf, 找到下面这两行(我这里是第47和48行):

1
2
ssl_cert = </etc/ssl/certs/iRedMail.crt
ssl_key = </etc/ssl/private/iRedMail.key

将其替换为您的证书地址:

1
2
ssl_cert = </etc/letsencrypt/live/mx.qing.su/fullchain.pem
ssl_key = </etc/letsencrypt/live/mx.qing.su/privkey.pem

保存好之后重新载入Dovecot配置文件。

1
service dovecot reload

这样,我们为Nginx, Postfix, Dovecot分别配置好了SSL/TLS安全证书。

 

4, 禁用iRedMail灰名单

灰名单(greylist)是一项防止垃圾邮件的功能,iRedMail默认开启了该功能。但是,该功能开启之后,收所有信件的时候都有较长时间的延迟。因此,我们这里将该功能关闭。

我们首先给配置文件提权:

1
chmod +w /opt/iredapd/settings.py

然后编辑该文件(/opt/iredapd/settings.py),找到下面这行:

1
plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]

将其中的”greylisting”这项删去即可。然后,重启iredapd, 并且恢复文件权限。

1
2
service iredapd restart
chmod -w /opt/iredapd/settings.py

 

5, 设置其他DNS

配置好SPF, DMARC, DKIM等记录,可以提高发信到达率与成功率。这几种记录的原理我就不做太多介绍了,我们这里仅仅介绍如何配置这几条记录。

(1) SPF记录

您需要设置一条TXT记录,将根域名(比如我这里的vpswb.com)解析值设置如下。

1
v=spf1 mx ~all

(2) DMARC记录

DMARC记录的设置比较复杂,我们这里先简单设置一下,对于普通的域名邮箱足够使用了。以vpswb.com域名为例,您需要添加一条TXT记录,将_dmarc.qing.su (请不要遗漏dmarc前面的那个下划线)解析值设置为如下:

1
v=DMARC1; p=none; pct=100; rua=mailto:dmarc@vpswb.com

(3) DKIM记录

配置DKIM记录之前,我们先要生成DKIM密钥。在SSH中执行:

1
amavisd-new showkeys

会看到类似于下面的密钥:

使用iRedMail在Ubuntu 20.04上快速搭建邮件服务器

 

然后,以域名vpswb.com为例,请去您的DNS服务提供商那里,添加一条TXT记录,将dkim._domainkey.vpswb.com解析到”v=DKIM1; p=MIIBIj……………………………………ZX/AwIDAQAB”。请注意,这里的解析值包含了屏幕上给出的引号里面包含的全部内容,但是您需要删除中间多余的引号,将这些字符串拼接起来,仅保留首尾的引号。

 

6, 添加用户及测试

到这里,基本上所有的设置步骤都完成了,我们可以添加用户开始发邮件了。所有的用户管理均可以通过网站界面完成,无需手动执行数条MySQL命令添加用户(依稀记得我自己搭建的第一台邮件服务器,全部的域名和邮箱配置全都是手动一条条SQL命令完成的……)

如果您的邮件服务器主机名为mx.vpswb.com, 那么我们访问https://mx.vpswb.com/iredadmin, 即可进入管理员面板。管理面板的用户名为postmaster@vpswb.com, 密码为您安装iRedMail时设置的管理员密码。

 

进入管理面板后,点击Add – User即可新建邮箱用户。

 

这样,我们新建好了用户。若您设置的邮件服务器地址为mx.qing.su, 则邮箱的登录面板为https://mx.vpswb.com/mail, 若您直接访问https://mx.vpswb.com也会自动跳转至这个登录链接。

如果您需要使用客户端来收发信,则smtp, pop, imap地址均为mx.vpswb.com, 端口是常用的端口(SMTP: 25/587, POP3: 110/995, IMAP: 143/993).

一切配置完毕之后,您可以使用https://www.mail-tester.com/来测试您的邮箱的邮件评分。我测试了一下,得分为满分10分,如下图。

可以看到,我们的SPF, DKIM, DMARC设置均通过了验证,PTR记录也通过了验证。

若您的得分不是10分,则需要参照上面的提示进行修改。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
广告也精彩
广告也精彩

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: