很多小夥伴想自己搭建一臺郵件服務器,用於接收各種驗證碼。但是很多小型的vps廠家不支持,我也是踩過很多坑,於是自己在甲骨文東京服務器上嘗試著搭建,當然東京服務器必須是21年5月之前的才會開放25端口。

在Ubuntu 20.04 LTS 64位操作系统上安装和配置iRedMail邮件服务器系统是一种可靠且相对简便的方法。iRedMail是一个成熟的邮件服务器系统,具有卓越的性能和实用的功能,并且在Ubuntu 20.04上运行良好。

搭建 iRedMail 邮件服务器

以下是在Ubuntu 20.04上安装和配置iRedMail的步骤:

设置 VPS 主机名

我们规划邮局的域名为 mail.maoge.pw ,所以,我们需要对 VPS 的主机名进行设置。

首先,需要编辑 /etc/hosts 文件,找到含有你的 VPS IP 地址的那一行;如果没有,则添加一行。内容如下:

1
127.0.0.1 mail.maoge.pw mail

其中, 127.0.0.1 可换为你的服务器 IP 地址,后面依次填入长主机名和短主机名,切记不可填反。

然后,我们找到 VPS 的 /etc/hostname 文件,编辑里面的内容为 mail (域名的前缀)

这样,就设置好了主机名。重启 VPS。

此时我们检查一下是否设置正确:

执行:hostname

执行:hostname -f

此时,我们分别看到mail 和 mail.maoge.pw

这样,我们就全部设置好了主机名(hostname), 可以进行接下来的其他操作了

下载并安装 iRedMail

执行:

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

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

第一步,欢迎界面,两个选项,yes或no ,直接回车yes。
第二部,设置安装目录,这里可以看到安装目录为/var/vmail 直接回车,下一步。
第三步,选择web服务器,此时可以看到nginx前面有个星号,这代表已经被选中,如果没有星号,切换到nginx选项,按一下空格,星号出现,回车下一步。
第四步,选择数据库,上下选择到MariaDB ,空格星号选中,回车下一步。
第五步,设置数据库密码,自己设置。
第六步,设置域,不带mail,就是maoge.pw。
第七步,设置管理员账号的密码,不是设置账号,是密码,自己设置。
第八步,选择需要安装的组件,默认即可,那个Sogo可安可不安,都行,不影响邮件服务,回车下一步。
设置完毕后,屏幕上会列出来这些信息,我们输入y确认安装。

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

重启服务器,让邮件服务器生效! 至此,邮件服务器搭建完毕,以下开始设置邮件服务器。

1
2
3
4
5
6
7
可以通过访问(当然,我们目前还没有解析域名,后面一起解析)
https://你的域名/mail ——邮件登录地址
https://你的域名/netdata ——服务器状态监控
https://你的域名/iredadmin ——邮件服务器后台管理
管理员账号:postmaster@你的域 例如 postmaster@163.com
管理员密码:安装时候设置的密码
以上信息,可以在 /root/iRedMail-1.6.3/iRedMail.tips 文件中查看

配置 iRedMail 邮件服务器

申请证书
安装证书脚本

1
apt-get install certbot

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

1
certbot certonly --webroot -d mail.maoge.pw -w /var/www/html/

这个申请命令后会要求填入邮箱地址

然后根据提示输入A,然后他会提示给你发广告邮件输入N不同意,

生成的公钥在路径 /etc/letsencrypt/live/mail.maoge.pw/fullchain.pem

私钥 /etc/letsencrypt/live/mail.maoge.pw/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/mail.maoge.pw/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.maoge.pw/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/mail.maoge.pw/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.maoge.pw/cert.pem
smtpd_tls_CAfile = /etc/letsencrypt/live/mail.maoge.pw/chain.pem

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

1
service postfix reload

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

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

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

1
2
ssl_cert = </etc/letsencrypt/live/mail.maoge.pw/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.maoge.pw/privkey.pem

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

1
service dovecot reload

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

禁用 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

配置 DNS 及解析

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

内容为 v=spf1 mx ~all

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

v=DMARC1; p=none; pct=100; rua=mailto:dmarc@maoge.pw

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

1
amavisd-new showkeys

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

然后,以域名maoge.pw为例,请去您的DNS服务提供商那里,添加一条TXT记录,将dkim._domainkey.maoge.pw解析到 v=DKIM1; p=MIIBIj……………………………………h6o3Lv7OoNd。请注意,这里的解析值不包含小括号以及所有引号。

添加用户及测试

(包括域名证书续签)

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

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

證書續期

申请证书 90天到期再运行一次 2024-2-2到期

1
certbot certonly --webroot -d mail.*.net -w /var/www/html/

1:暂时保留现有证书
2:续订和更换证书(每 7 天限制约 5 个)


选择适当的数字[1-2],然后[输入](按“c”取消):2
更新现有证书
执行以下挑战:
mail.bcbcc.net 的 http-01 挑战
对所有不匹配的域使用 webroot 路径 /var/www/html。
等待验证…

运行下面命令重启服务后生效

1
service postfix reload;service dovecot reload;service nginx reload