在 Ubuntu 下搭建 iRedMail 邮件系统

注意,本文适用于 Clean Install ,即系统中没有安装过 Postfix、Dovecot、MySql、Apache等软件的系统。

前期配置

首先需要确认你系统的 hostname 是否已经修改成为 mail.yourdomain.com 的形式,否则 iRedMail 将不允许你安装。 输入以下命令可以查看你的 hostname 配置是否正确。

[email protected]:~$ hostname
mail
[email protected]:~$ hostname -f
mail.yourdomain.com

下载安装

首先访问 iRedMail 的官网获得下载地址:https://www.iredmail.org/ 文件很小。在写这篇文章的时候所使用的版本是 0.9.8

wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.8.tar.bz2
tar xjf iRedMail-0.9.8.tar.bz2
cd iRedMail-0.9.8
chmod +x ./iRedMail.sh
./iRedMail.sh

接下来便进入了安装向导。 [spoiler title=”注意,想要安装在已有的 MySql 中请替换脚本”]

USE\_EXISTING\_MYSQL='YES' \\
  MYSQL\_SERVER\_ADDRESS='127.0.0.1' \\
  MYSQL\_SERVER\_PORT='3306' \\
  MYSQL\_ROOT\_USER='root' \\
  MYSQL\_ROOT\_PASSWD='root\_password' \\
  MYSQL\_GRANT\_HOST='%' \\
  bash iRedMail.sh

Welcome Screen of iRedMail

确认后将会询问你邮件存储目录,默认即可。

Mail Storage Path](https://blog.msm.moe/wp-content/uploads/2018/05/Image-597.png)

接下来问你是否要开启网页邮箱支持,只能够选择 Nginx 作为服务器,Apache 的支持在某个版本就被取消了。如果要自行配置 Apache ,请选择 No web server。

Select Web Server](https://blog.msm.moe/wp-content/uploads/2018/05/Image-598.png)

选择你使用的数据库,我用的是 MySQL

Select Database](https://blog.msm.moe/wp-content/uploads/2018/05/Image-599.png)

输入你的数据库密码。 输入你的域名,请使用 domain.com 而不要使用 mail.domain.com ,否则将会无法接收邮件。

接下来输入邮箱管理员的密码,账号是 postmaster@domain.com 接下来选择需要的软件包,默认即可。

Select App to Install](https://blog.msm.moe/wp-content/uploads/2018/05/Image-600.png)

接下来将会提醒你,这个文件里面包含了敏感数据。安装完成之后放到一个安全的地方即可。 然后按 y 正式开始安装。

Sensitive Config Warning](https://blog.msm.moe/wp-content/uploads/2018/05/Image-601.png)

记住,如果你在使用 Apache2 ,请在安装时暂时停止,否则安装过程中安装的 nginx 会因无法绑定80端口而安装失败。

Nginx Install Error](https://blog.msm.moe/wp-content/uploads/2018/05/Image-602.png)

安装过程中将会询问要不要自动配置防火墙,按y即可 按y重启防火墙。

Firewall Config](https://blog.msm.moe/wp-content/uploads/2018/05/Image-604.png)

安装完成,重启主机,要不然很多设置不会生效。

访问 https://yourdomain.com/mail/ 即可登陆 web 端邮箱。

注意请修改默认的 SSL 证书,自签名证书会提示不安全。

官方推荐你软链接你的证书到已经配置好的位置,方便更新证书以及避免修改各种证书位置。

# To use your own ssl cert (e.g. LetsEncrypt), please create symbol link to # ssl cert/key used below, so that we can manage this config file with Ansible. # # For example: # # rm -f /etc/ssl/private/iRedMail.key # rm -f /etc/ssl/certs/iRedMail.crt # ln -s /etc/letsencrypt/live//privkey.pem /etc/ssl/private/iRedMail.key # ln -s /etc/letsencrypt/live//fullchain.pem /etc/ssl/certs/iRedMail.crt

当然,如果你想要修改所有配置里证书的路径,那么主要保存在这三个文件里面。

/etc/apache2/sites-available/00-default-ssl.conf

/etc/postfix/main.cf

/etc/dovecot/dovecot.conf

修改完成后重启对应的三个服务

service apache2 restart

service dovecot restart

service postfix restart

Tips:请使用 fullchain 证书,而且不要使用通配符证书,否则 smtp 和 imap 链接的时候会有各种错误。

注意一下,iRedMail 对 Session 的 IP 限制比较严格,本地IP变化会被强制注销。

反 Spam 配置

接下来按照登陆管理员邮箱后收到默认的两封邮件,可以参照里面的步骤来增强我们邮件服务器的可信度。

添加 SPF 记录

SPF 记录,简单来说就是当收件方服务器接收到邮件之后,查询对方域名对应的 SPF 记录,里面包含了可信的发件IP地址,如果这封信发件的IP和可信IP一致,那么服务器就认为这封信是可信的。

SPF 记录的添加很简单。在 DNS 中添加一个名为 @ ,值为 v=spf1 ip4:0.0.0.0 -all 即可。

添加 DKIM 记录

同样,DKIM 也是一个 TXT 记录。相应的值可以在管理员账号收到的第一封邮件【Details of this iRedMail installation】里面找到。

邮件中搜索一下【DNS record for DKIM support】。

TXT记录名为:dkim._domainkey.example.com 记录值从 v=DKIM1; p=XXXXXX 开始,只需要复制引号内的内容即可,引号就不需要了。

最后发送一封邮件到 https://www.mail-tester.com/ 测试一下配置是否正确吧。

附录:

管理地址: https://mail.yourdomain.com/iredadmin

网页邮箱地址: https://mail.yourdomain.com/mail/

iRedMail还默认安装了 netdata ,地址是: https://mail.yourdomain.com/netdata/

Tips: 默认配置好的 Nginx 从任何指向服务器 IP 的域名都能访问,那么如何只让 mail.yourdomain.com 能访问到 web 邮箱呢?简单修改一下 Nginx 的虚拟主机配置即可。