搭建前的准备工作
如果你准备搭建一个个人长期使用的主力邮件系统,那么iRedmail大概能满足你的需求,而你需要准备以下资源和操作:
- 一个长期使用的域名(最好是顶级域名)
- 一个云主机:
- 硬盘越大越好
- 2G以上RAM(1G RAM也可以,但需选择取消安装部分组件)
- 一个固定的IPv4地址(也可以配置ipv6)
- Ubuntu 18.04或以上版本的系统,Centos7或者以上的版本系统(推荐Ubuntu20.04)
- 云主机商支持rDNS
- 云主机支持设置完整域名(FQDN)
- 云主机使用协议里没有禁止搭建邮件服务(例如腾讯云和阿里云已经禁用25端口,不推荐)
- SSL证书
笔者目前的环境说明:
- Ubuntu server 20.04
- Iredmail v1.3.2
- 将操作系统组件更新至最新
- 本文全部用example.com 做例子,读者切记要将文中所有的example.com换为你自己的域名
- 本文全部用example.com 做例子,读者切记要将文中所有的example.com换为你自己的域名
- 本文全部用example.com 做例子,读者切记要将文中所有的example.com换为你自己的域名
首先把系统更新到最新:
apt update && apt upgrade
下面我们正式开始吧!
一.VPS IP与域名绑定
通行的做法是设置 一个二级域名mail.example.com,我们按照下图设置一条A记录指向我们的服务器IP地址:
再设置一条顶级域名指向这个IP:
设置mx记录:
nslookup -qt=mx example.com
出现mail.example.com和你对应的VPS ip就代表成功.域名记录生效需要一定的时间,如果没有正确解析,可以稍等下再试.
域名设置先到这里,再接下去的步骤中,我们还需要再回到域名面板来设置Dkim,SPF记录.
注意:这一步不完成,邮件服务器不可能搭建成功
二.完整域名(FQDN)的主机名
2.1 设置hostname:
vi /etc/hostname
清空内容,填上步骤一中的
mail.example.com
保存退出
查看是否修改成功:
hostname -f
输出结果:
mail.example.com
2.2 设置host文件
vi /etc/hosts
在第一行里,添加成类似的样子:
127.0.0.1 mail.example.com mail localhost localhost.localdomain
保存退出
重启下云主机:
reboot
注意:这一步不完成,会导致你收发邮件存在问题
三.设置云主机rDNS(PTR)
市面上的云主机商对待这个功能分三类:
3.1 友好支持类
这类管理面板上有自主的设置入口,你只需要填入mail.example.com就可以了.
这类典型的主机商有著名的搬瓦工.
3.2 支持但不友好类
这类甚至在VPS管理面板上有提供自助填写入口,但实际无效.而你开ticket给客服,他们能手动为你配置.
3.3 完全不支持类
这类主机商要么很小,网络资源都是租借的上游服务商.对网络资源掌控力差,拒绝开放25端口,不提供PTR服务.
但rDNS必须完成,由于依赖云主机商,所以无法提供统一的步骤,下面只提供是否配置成功的验证方法:
nslookup you_vps_ip
显示的结果为:
XXX.XXX.XXX.XXX.in-addr.arpa name = mail.example.com.
就代表你的ptr配置生效.
注意:这一步没有完成,搭建的邮件服务器发出的邮件几乎会被各大邮件服务商打为垃圾邮件甚至直接拒收
四.使用iRedmail官方脚本安装服务
4.1 下载软件包
wget https://github.com/iredmail/iRedMail/archive/1.3.2.tar.gz
解压:
tar -xvf 1.3.2.tar.gz
进入压缩包:
cd iRedMail-1.3.2/
给脚本上权限:
chmod +x iRedMail.sh
4.2 安装iRedmail服务
执行安装脚本:
bash iRedMail.sh
4.2.1 进入安装向导:
直接回车.
4.2.2 存储邮件的位置,默认路径为/var/mail:
4.2.3 选择数据库,如果没有明确的目标,建议选mysql:
4.2.4 填写根目录域名,example.com(并非mail.example.com):
4.2.5 填写管理员账号postmaster@example.com的密码:
4.2.6 选择组件(注意:如果不清楚要做什么,就取消掉SOGO):
选择:
iredmail:这是邮件服务主体
Roundcubemail:这是邮件服务器web客户端
SOGo: 这个也是邮件服务客户端(非要选这个也行,可以与Roundcubemail共存,也可以二选一)
Fail2ban: 邮件服务器的安全保障
4.2.7 安装结束
最后有几个问题,你直接默认回车,你就会看到如下配置信息,代表服务安装成功:
到这里,服务器组建就安装完成了.
重启服务器:
reboot
重启成功后,登陆进后台,这时,服务已经开始运行.但是这没有完,还有不少步骤要继续.
五.设置spf域名记录
具体字符为:
v=spf1 a mx ip4:mail.example.com ~all
windows命令行验证spf是否生效:
nslookup -qt=txt example.com
命令输出设置的SPF信息就代表成功:
example.com text =
“v=spf1 a mx ip4:mail.example.com ~all”
域名记录生效需要一定的时间,如果没有出现可以稍等下再试.
注意:如果这步失败,发出去的邮件几乎都会被其他邮件服务商视为垃圾邮件或者直接拒收.
六.设置Dkim域名记录
首先查看服务器的dkim:
amavisd-new showkeys
输出结果如下:
现在回到域名管理面板,填入括号()内的V开头的字符串,去掉行前和行尾的引号:
如下图:
然后回到VPS后台,验证是否生效:
amavisd-new testkey
输出结果pass,代表生效:
TESTING#1 example.com: dkim._domainkey.example.com => pass
注意:如果这一步失败,邮件肯定会被各大邮件商判定为垃圾甚至拒收
七. DMARC配置
在域名控制面板新增一条记录:
v=DMARC1;p=none;ruf=mailto:admin@example.com;rua=mailto:admin@example.com
这个admin@example.com是否存在关系不大,如果存在你会收到一个报告邮件.
回到VPS命令行,验证DMARC是否成功:
windows命令行下输入命令:
nslookup -qt=txt _dmarc.example.com
输出结果如下代表生效:
_dmarc.example.com text =
“v=DMARC1;p=none;ruf=mailto:admin@example.com;rua=mailto:admin@example.com”
注意:如果忽略这一步,会导致某些邮件服务商将你的邮件判为垃圾邮件
八.申请以及配置证书
8.1 安装acme.sh脚本
curl https://get.acme.sh | sh
8.2 创建 一个 bash 的 alias, 方便使用:
alias acme.sh=~/.acme.sh/acme.sh
8.3 生成证书
acme.sh --issue -d example.com -d mail.example.com --nginx
注意:我们之前选用的是nginx,其实acme有很多种方法获取证书,详情可以查阅acme.sh相关的文章,这里不再多讲
8.4 安装证书
8.4.1 为nginx服务安装ssl证书服务
目的是让你的web邮件客户端使用ssl证书,网页回有一把小绿锁,免除烦人的自谦证书导致的不安全警示:
安装命令如下:
acme.sh --installcert -d example.com \
--key-file /etc/ssl/private/nginx.key \
--fullchain-file /etc/ssl/certs/nginx.cer \
--reloadcmd "systemctl force-reload nginx"
修改nginx配置文件:
vi /etc/nginx/sites-enabled/00-default-ssl.conf
在server{}里添加两行:
server{
…
ssl_certificate /etc/ssl/certs/iRedMail.crt;
ssl_certificate_key /etc/ssl/private/iRedMail.key;
….
}
然后保存退出
8.4.2 安装iredmail邮件服务相关的SSL
这部的目的,是让邮件服务器使用你生情的SSL证书加密邮件,提高安全性:
acme.sh --installcert -d example.com \
--key-file /etc/ssl/private/iRedMail.key \
--fullchain-file /etc/ssl/certs/iRedMail.crt \
--reloadcmd "service nginx force-reload && service postfix force-reload && service dovecot force-reload"
8.4.3 证书的更新
acme.sh脚本申请的是lets encrypt的证书,90日的有效期,需要定期更新,步骤如下:
编辑计划任务:
vi /etc/crontab
加入如下行:
0 6 1 * * root acme.sh --renew -d example.com -d mail.example.com --force && sleep 10 && systemctl force-reload nginx
这段命令的意思是:每个月1号6点,强制更新证书,并强制重启ngxin服务(使新跟新的证书生效)
保存退出
然后重启crond服务:
service crond restart
九.你需要的操作
web邮件客户端地址:https://example.com/mail #web收发邮件客户端
web邮件服务管理地址:https://example.com/iredadmin #邮件服务器的操作,比如新增,删除,禁用用户
*SOGo web邮件客户端地址:https://example.com/sogo
#如果你选择组建安装时安装了SOGo,就有这个入口,否则没有.其作用就是web邮件客户端
登陆用户名为:postmaster@example.com #默认管理员账户
如果你需要在第三方客户端上收发邮件,地址如下:
SMTP地址:mail.example.com
IMAP地址:mail.example.com
十.测试
10.1 网页客户端
查看自己申请的let encrypt 证书是否生效:
10.2 登陆界面
10.3 邮件评分
推荐网站:https://www.mail-tester.com
这个网站提供临时接收邮箱地址,你用自己建立的邮箱发一封邮件给该地址,它会帮你检测你的邮箱问题,按照项目的打分,读者可以按照评测进一步检查或者优化你的邮件服务器.
10.3.1 向首页提供的临时邮箱发送邮件
接收评测结果
这就代表我建立的邮件服务器相对健康.
10.4 作者实际搭建的使用体验
按照本教程搭建的邮件服务器,并不能保证你的邮件不被判为垃圾,只能尽量按照规则来,减少被垃圾的概率.
笔者自建的邮件服务器邮箱起初会被谷歌判为垃圾邮件,需要在谷歌邮件服务器认证(添加一条txt域名记录并验证).
目前除了outlook外(目前无解,它甚至会将谷歌邮箱判为垃圾),几乎没有再被其他邮件服务器商判定为垃圾邮件.国内的QQ邮箱,网易等等,全部都能无障碍接收.
这里再说明一下,搭建一个高可用性,高可靠的邮件服务器代价是比较大的,如果不是十分明确为什么这么做,最好别自建邮件服务器–至少不要用来作为自己主力邮箱,不然得考虑备份,容灾等问题.
当然,我支持自建邮件服务器,我们不希望自己的数据成为别人的资产.
十一.小结
* iRedMail web site: https://www.iredmail.org/
* Documentations: https://docs.iredmail.org/
* Support Forum: https://forum.iredmail.org/
* iRedMail upgrade tutorials: https://docs.iredmail.org/iredmail.releases.html
* iRedAdmin upgrade tutorials: https://docs.iredmail.org/migrate.or.upgrade.iredadmin.html
请问哪家云开了25端口呢?
我目前试过能用25的有搬瓦工,还有一个pacificrack.其他的你可以自己去搜寻.
你好,你说的[需要在谷歌邮件服务器认证(添加一条txt域名记录并验证)]这个google邮件服务器认证地址在哪里呢?