前言
如果你非常注重个人隐私和安全,不想用大厂的邮件服务,那么自己搭建一个邮件服务器是一个不错的选择; 而且用自己的域名作为邮箱的后缀是非常有意思的,也好看; iRedMail是一套成熟稳定的邮件服务器系统,它免费,开源且拥有优秀的性能,全面实用的功能 Github地址 官网
准备工作
确保你的服务器开启了25端口
测试方法:
telnet smtp.google.com 25 #谷歌邮箱地址 或者 telnet smtp.qq.com 25 #腾讯qq邮箱
没有屏蔽显示如下:
root@mail:~# telnet smtp.qq.com 25
Trying 43.129.255.54...
Connected to smtp.qq.com.
Escape character is '^]'.
220 newxmesmtplogicsvrsza9.qq.com XMail Esmtp QQ Mail Server.
屏蔽显示如下,一直在连接:
root@mail:~$ telnet smtp.qq.com 25
Trying 203.205.232.7...
很多云服务器基本都屏蔽了25端口,当你发现你的25端口被屏蔽了,可以试试发工单申请解封25端口
- 一台干净的VPS(云服务器),内存最好在2GB左右,iRedMail支持多种系统,我将用Debian 11演示
- VPS最好支持 PTR Records(反向DNS),这是一个加分项,不支持也没事
- 一个域名(我将用自己的域名sitao.org演示)并托管到cloudflare;如果你没有域名,或是不会注册、不会托管到 cloudflare,请自行去找教程
- 确定邮件服务器的域名,我的是mail.sitao.org, 在cloudflare把该域名解析成VPS的IP地址(A记录)
安装iRedMail
更新系统软件包
apt update
apt upgrade -y
设置主机名
我的域名为sitao.org,规划mail.sitao.org为邮箱域名
vim /etc/hostname
删除原来的主机名,写入mail,然后 :wq
保存退出
然后重启
reboot
重新ssh连接,修改 /etc/hosts文件
vim /etc/hosts
找到127.0.0.1那行,改成以下内容(自行替换你自己的域名)
127.0.0.1 mail.sitao.org mail localhost
获取iRedMail
去官网下载页复制STABLE版本的下载链接:https://iredmail.com/download.html
wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.6.4.tar.gz
tar -xzvf 1.6.4.tar.gz
cd iRedMail-1.6.4
运行安装脚本和配置
bash iRedMail.sh
可以看到我们已经进入了图形化安装界面,回车确认
输入安装目录,可以使用默认的/var/vmail,这里我自定义成/iredmail
选择nginx作为web服务器
(空格)选上MariaDB数据库
设置数据库密码
设置域,不可与 hostname 相同
设置iredmail后台管理员密码
选择需要安装的组件,这里直接回车就好
输入y回车确认
然后它就会自己开始安装了,稍等片刻 即将结束安装的时候,它会问你是否使用使用iredmail防火墙规则什么的,选n就行 安装完成后,它会提示你重启服务器
reboot
至此,iRedMail邮件服务器搭建完毕
申请并配置SSL证书
使用ACME脚本申请证书
自行设置存放证书的目录,我放在/usr/里面
apt install socat cron -y
curl https://get.acme.sh | sh
ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh
source ~/.bashrc
acme.sh --set-default-ca --server letsencrypt
acme.sh --issue -d mail.sitao.org --standalone -k ec-256 --force
acme.sh --install-cert -d mail.sitao.org --fullchain-file /usr/iRedMail.crt --key-file /usr/iRedMail.key
配置SSL证书
vim /etc/nginx/sites-enabled/00-default-ssl.conf
写入ssl_certificate /usr/iRedMail.crt;和ssl_certificate_key /usr/iRedMail.key; 像这样:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name _;
root /var/www/html;
index index.php index.html;
include /etc/nginx/templates/misc.tmpl;
include /etc/nginx/templates/ssl.tmpl;
include /etc/nginx/templates/iredadmin.tmpl;
include /etc/nginx/templates/roundcube.tmpl;
include /etc/nginx/templates/sogo.tmpl;
include /etc/nginx/templates/netdata.tmpl;
include /etc/nginx/templates/php-catchall.tmpl;
include /etc/nginx/templates/stub_status.tmpl;
ssl_certificate /usr/iRedMail.crt;
ssl_certificate_key /usr/iRedMail.key;
}
重新加载服务
service nginx reload
service postfix reload
service dovecot reload
禁用 iRedMail 灰名单
修改/opt/iredapd/settings.py文件
chmod +w /opt/iredapd/settings.py
vim /opt/iredapd/settings.py
找到这行plugins = [“reject_null_sender”, “wblist_rdns”, “reject_sender_login_mismatch”, “greylisting”, “throttle”, “amavisd_wblist”, “sql_alias_access_policy”] 将其中的 ”greylisting ” 这项删去
plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "throttle", "amavisd_wblist", "sql_alias_access_policy", "sql_ml_access_policy"]
重启 iredapd
service iredapd restart
Cloudflare配置并解析域名
A记录
将 mail.sitao.org的A 记录指向你VPS的ip IPv4 address (required)那里填你VPS的ip
MX 记录
邮件的解析记录,这是一条非常重要的记录 配置根域名的 MX 记录为自己的邮件域名地址,优先级为10
SPF 记录
类型是TXT,名称sitao.org,内容v=spf1 mx ~all
DKIM记录
cat /root/iRedMail-1.6.4/iRedMail.tips
找到这一行 将()里的内容全部复制出来,去除其中所有引号以及空格使文本内容相连 像这样:
v=DKIM1; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2AaOpZZu+Ur0vBHJXB7msA65BcqBdFcfyoxt9zLOlrWMP5EAqOb7oGWRAYsYrMumodsLPZypqkjyKlm3IpZvVmVz2FawS21p8E/qaTaxtsiIfGgMlBGv7JiqgCNauhhE5vubLbqVqzM9X38W/fNFK9Zg1noK9ko8Pv+jmF3yAc2s9dGopa+SAcM9AHp68gihOCzlupIyjUfK0Mt1MCgvPHlSjBnWN9r2WDcK2oCGjUHrQV0rmXXqhNJGNIkvCVzO9lJ5rQTRtPzV4zBpQwwjZxWHO7Wh4+hR3O+OmtyoR/KIMmRHHrMd4nPRZ81ztJRsgIaWZbWVpwUxpz5qlZyYWQIDAQAA
添加一条名称为dkim._domainkey 的 TXT 解析
DMARC 记录
增加一条 _dmarc的TXT 解析,内容为v=DMARC1; p=none; pct=100; rua=mailto:dmarc@sitao.org(改成你自己的域名)
至此,域名解析工作已完成
登陆和配置
https://你的域名/mail ——邮件登录地址
https://你的域名/netdata ——服务器状态监控
https://你的域名/iredadmin ——邮件服务器后台管理
管理员账号:postmaster@你的域 例如 postmaster@sitao.org
例如: 访问https://你的域名/mail/ 使用你的管理员账号postmaster@你的域和你之前设置的管理员密码登录
可以看到我们收到了三封邮件
添加用户及使用
访问https://你的域名/iredadmin,使用你的管理员账号postmaster@你的域和你之前设置的管理员密码登录 选择中文更加友好
点击添加用户
填入信息,点击下方的添加
然后可以看到成功填加了用户
接下来可以验证新用户是否能正常使用: 访问https://你的域名/mail,使用新用户的账号密码登录,如果登录成功,说明可以正常使用 然后你就可以开始个性化设置了
备份和迁移
最后,关于iredmail的备份和迁移可以查阅官方文档:
https://docs.iredmail.org/backup.restore.html
https://docs.iredmail.org/migrate.to.new.iredmail.server.html
不过,你可能会被官方的文档弄得晕头转向,我介绍一种比较简单方便的迁移方法: (适用场景:迁移邮件服务器;旧服务器和新服务器需安装相同版本的iRedMail)
旧服务器需要进行的操作:
备份数据库
mysqldump -uroot -P3306 --databases vmail > vmail.sql
备份邮件数据
tar -czvf iredmail.tar.gz -c /iredmail(你设置的iredmail安装目录,我的是/iredmail)
保存好域名证书
我的是/usr/iRedMail.crt和/usr/iRedMail.key
接着,将vmail.sql、iredmail.tar.gz上传到新服务器root目录里,把iRedMail.crt和iRedMail.key放到新服务器的/usr目录里(旧服务器放在哪你就放在哪)
新服务器需要进行的操作: 按照上面的教程重新安装好iredmail,安装好后删除安装目录
rm -rf /iredmail
导入数据库
mysql -uroot
use vmail
source ~/vmail.sql
然后退出
解压压缩包
tar -xzvf iredmail.tar.gz -C /
设置证书
vim /etc/nginx/sites-enabled/00-default-ssl.conf
写入ssl_certificate /usr/iRedMail.crt;和ssl_certificate_key /usr/iRedMail.key;(跟上面教程一样) 重新加载服务
nginx -s reload
然后,在Cloudflare把邮件域名解析到新服务器的ip(A记录) 稍等片刻,等解析生效后就可以登录使用了