在 Debian Linux 系统上安装 iRedMail 开源版
说在前面
阿里云、腾讯云均 禁止使用 邮件服务所必须的 25 端口提供邮件服务,因此您不能在它们的云服务器部署邮件服务器。(据说可以发工单申请,还是有安全管理选项开通,我没有这两家的主机实例,无法证实是否可行)
注:本文是以开源版本为基础进行部署,适合个人爱好者使用。如要作商用,建议使用 iRedMail Enterprise Edition
突发情况
2015年以前,公司香港总部写字楼架设了网站、电邮两台7x24运行的服务器,还有域控服务器、ERP/CMS、防火墙、网络设备等,一起构成香港写字楼的小型机房。自从2015年下半年开始,公司位于观塘区所在的商业大厦内,每个周日都会不定时发生停电事件,机房的UPS无法维持整套系统持续正常运作,故而由香港IT负责人员(外判)将ERP/CMS、网站和电邮服务器转移到网络服务商机房中托管。而就在上个星期六早上七点钟左右,老板突然打电话过来,说他无法收发电邮,让我检查邮件服务器情况……
而我是国内分公司的IT人,香港那边的网络设备、服务器我是没有任何权限啊😳,我大致查了一下,发现托管商的邮件服务十分简陋(vpopmail + qmailadmin),甚至SSL证书过期了,却启用了托管商的自签CA,更离谱的我居然查出来 DNS 连 SPF、DKIM 和 DMARC 记录都没设置……我就把情况告诉了老板,让他找香港IT跟托管商交涉,到周日晚上才恢复正常……
写文初衷
我自己手上一直供着两个 VPS,今年初在其中一台 2c2g 的 VPS 上做了套 1Panel + Halo,另一台 4c8g 却一直没想好拿来做什么用,正好遇上这个情况,那就试试给自己做个自用的邮件服务器吧!
系统要求
iRedMail 只针对全新安装的操作系统设计,它要求你的操作系统上 没有 事先安装邮件服务相关的组件,例如 MySQL,OpenLDAP,Postfix,Amavisd,等。 iRedMail 会自动安装和配置邮件服务所需的组件,因此如果操作系统上已有相关 组件,iRedMail 可能会打乱你的配置并造成服务无法正常启动。
要在 Debian 或 Ubuntu 上安装 iRedMail,你需要:
一个全新安装的 Debian 或 Ubuntu 系统。支持的版本号在下载页面有注明。

要运行一个低流量的邮件服务器,要求至少 4GB 内存才能使用完整的垃圾邮件和病毒扫描功能。
所有二进制软件包都从 Debian/Ubuntu 官方 apt 仓库安装。
如果使用 Ubuntu 系统,建议选择 LTS(Long Term Support,长期支持)版本。
准备工作
为服务器设置一个完整域名(FQDN)的主机名
不管你的服务器将用于实际运行还是仅仅用作测试,都建议设置一个完整域名(FQDN)的主机名。
输入命令 hostname -f 查看当前的主机名
# hostname -f
mail.domain.com
确认系统已使用设置好的 FQDN 作为主机名。如果没有生效,请重启系统。
也可以使用 hostnamectl 设置 FQDN
# hostnamectl set-hostname mail.domain.com
启用 Debian/Ubuntu 默认的官方 apt 软件源
iRedMail 依赖 Debian/Ubuntu 官方的 apt 软件源,请在 /etc/apt/sources.list 文件里启用它们。
安装 tar 和 gzip 程序用于解压缩文件:
# sudo apt-get install tar gzip
安装方法
方法一
下载 iRedMail
访问下载页面下载最新的版本。

上传 iRedMail 到服务器上。假设上传后的路径是 /root/iRedMail-x.y.z.tar.gz (这里以 x.y.z 代替实际的版本号)。
解压缩 iRedMail 安装包:
# cd /root/
# tar zxf iRedMail-x.y.z.tar.gz
安装程序
现在可以运行 iRedMail 安装程序了,它会问你几个简单的问题,仅此而已。
# cd /root/iRedMail-x.y.z/
# bash iRedMail.sh
方法二
一键安装 (+++ 强烈推荐 +++)

# wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.7.4.tar.gz && tar zxf 1.7.4.tar.gz && cd iRedMail-1.7.4 && bash iRedMail.sh


安装过程
欢迎和感谢使用

指定用于存储用户邮箱的路径。默认是 /var/vmail/。

选择用于web服务器。
这里只有Nginx可选

选择用于存储邮件账号的数据库。
各个数据库之间没有太大区别,建议使用自己熟悉的数据库,便于后期维护。

如果选择 OpenLDAP 数据库用于存储邮件账号,安装程序会要求你输入 LDAP 前缀:
这里我选了自己常用的PostgreSQL,所以没有截到下图(这是iRedMail官方Docs的图)

MySQL/MariaDB/PostgreSQL 用户:如果选择 MySQL/MariaDB/PostgreSQL 用于存储邮件账号, 安装程序会为数据库的 root 用户生成一个随机的强密码,安装完成后可以在 iRedMail.tips 文件里找到。
设置数据库密码

添加第一个邮件域名

设置邮件管理员的密码
该账号即是邮件管理员,也是普通的邮件账号,可以登录管理后台和 webmail。

可选的组件

回答完上面的几个问题之后,安装程序给出本次安装的基本信息并要求确认是否实际 执行安装,请输入 y或 Y 并按回车键确认,或 n, N 并按回车键中止安装。

是否重启防火墙
默认是 N ,我选择输入 y,不过这里输入 y 还是 n 都没关系,后面还会提示你重启服务器

完成安装
提示重启服务器以启用 mail services,直接输入 reboot 回车,系统重启

使用方法
根据上面最后一张截图显示的信息,也就是我们设置的域名地址登陆 iRedMail 管理后台 https://mail.domain.com/iredadmin
登陆后台界面
对话框右下角可以选择语言(有简体中文和繁体中文)

后台信息面板

域名与账户管理页面

二级管理页面
点击左边域名进入二级管理页面,可以设置启用域名、自定义组织名称

添加帐户
点击上图中二级管理菜单中的 "User”,并在右侧会看到一个 "+User" 的按钮,点击添加帐户并填写相关信息保存即可

Webmail 登陆页面
iRedMail 使用的是 Roundcube Webmail,登陆刚才增加的帐户

Webmail 界面

但是细心的朋友会发现,浏览器打开管理后台和 Webmail 时,会提示 “此连接不是私密连接” 或者 "This Connection Is Not Private”,那是因为还配置SSL证书啊!!!
SSL 证书
我这里是用 ACME 给 iRedMail / Roundcube 所用域名申请 SSL 证书
安装 acme.sh
# curl https://get.acme.sh | sh -s email=my@domain.com
创建 bash 别名
# alias acme.sh=~/.acme.sh/acme.sh
申请证书
(acme.sh 脚本会在到期前自动续签)
方法一:
使用 http 协议申请证书 (这里可以使用泛域名 / 通配符方式,也可以使用单域名方式)
# acme.sh --issue -d domain.com -d '*.domain.com'
安装证书到指定路径
# acme.sh --install-cert -d domain.com
--key-file /etc/ssl/private/iRedMail.key
--fullchain-file /etc/ssl/certs/iRedMail.crt
当然也可以用 dns token 的方式申请 SSL 证书,如 CloudFlare, DNSPod, Aliyun 等:
方法二:
例:使用 CloudFlare API Token
# export CF_Key="abcdefghijklmnopqrstuvwxyz1234567890"
# export CF_Email="my@domain.com"
使用 dns 协议申请证书 (这里可以使用泛域名 / 通配符方式,也可以使用单域名方式)
# acme.sh --issue --dns dns_cf -d domain.com -d '*.domain.com'
安装证书到指定路径
# acme.sh --install-cert -d domain.com
--key-file /etc/ssl/private/iRedMail.key
--fullchain-file /etc/ssl/certs/iRedMail.crt
然后再重新在浏览器打开管理后台和 Webmail 时,你会发现不安全提示消失了


完成配置
好了,到这里安装、配置就基本上已经完成了,但是要想正常、安全、可信地使用自建的邮件服务,还要配置邮箱域名 DNS 记录和电邮安全记录:SPF、DKIM 和 DMARC 等
iRedMail 官方文档:
Setup DNS records for your iRedMail server (A, PTR, MX, SPF, DKIM, DMARC)
(目前暂时只有英文版文档)
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
