Debian 11 搭建自己的邮件系统- iRedMail
Debian 11 搭建自己的邮件系统- iRedMail
Sitao前言
如果你非常注重个人隐私和安全,不想用大厂的邮件服务,那么自己搭建一个邮件服务器是一个不错的选择; 而且用自己的域名作为邮箱的后缀是非常有意思的,也好看;
iRedMail是一套成熟稳定的邮件服务器系统,它免费,开源且拥有优秀的性能,全面实用的功能
Github地址 官网
准备工作
确保你的服务器开启了25端口
测试方法:telnet smtp.google.com 25 #谷歌邮箱地址
或者
telnet smtp.qq.com 25 #腾讯qq邮箱
没有屏蔽显示如下:
1 | root@mail:~# telnet smtp.qq.com 25 |
屏蔽显示如下,一直在连接:
1 | root@mail:~$ telnet smtp.qq.com 25 |
很多云服务器基本都屏蔽了25端口,当你发现你的25端口被屏蔽了,可以试试发工单申请解封25端口
- 一台干净的VPS(云服务器),内存最好在2GB左右,iRedMail支持多种系统,我将用Debian 11演示
- VPS最好支持 PTR Records(反向DNS),这是一个加分项,不支持也没事
- 一个域名(我将用自己的域名sitao.org演示)并托管到cloudflare;如果你没有域名,或是不会注册、不会托管到 cloudflare,请自行去找教程
- 确定邮件服务器的域名,我的是mail.sitao.org, 在cloudflare把该域名解析成VPS的IP地址(A记录)
安装iRedMail
更新系统软件包
1 | apt update |
设置主机名
我的域名为sitao.org,规划mail.sitao.org为邮箱域名
1 | vim /etc/hostname |
删除原来的主机名,写入mail,然后 :wq
保存退出
然后重启
1 | reboot |
重新ssh连接,修改 /etc/hosts文件
1 | vim /etc/hosts |
找到127.0.0.1那行,改成以下内容(自行替换你自己的域名)
1 | 127.0.0.1 mail.sitao.org mail localhost |
获取iRedMail
去官网下载页复制STABLE版本的下载链接:https://iredmail.com/download.html
1 | wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.6.4.tar.gz |
开始安装
1 | bash iRedMail.sh |
接下来会进入图形化的安装界面
回车确认
输入安装目录,可以使用默认的/var/vmail,这里我自定义成/iredmail
选择nginx作为web服务器
(空格)选上MariaDB数据库
设置数据库密码
设置域,不可与 hostname 相同
设置iredmail后台管理员密码
选择需要安装的组件,这里直接回车就好
输入y回车确认
然后它就会自己开始安装了,稍等片刻
即将结束安装的时候,它会问你是否使用使用iredmail防火墙规则什么的,选n就行
安装完成后,它会提示你重启服务器
reboot
至此,iRedMail邮件服务器搭建完毕
申请并配置SSL证书
使用ACME脚本申请证书
自行设置存放证书的目录,我放在/usr/里面
1 | apt install socat cron -y |
配置SSL证书
1 | vim /etc/nginx/sites-enabled/00-default-ssl.conf |
写入ssl_certificate /usr/iRedMail.crt;和ssl_certificate_key /usr/iRedMail.key;
像这样:
1 | server { |
重新加载服务
1 | service nginx reload |
禁用 iRedMail 灰名单
修改/opt/iredapd/settings.py文件
1 | chmod +w /opt/iredapd/settings.py |
找到这行plugins = [“reject_null_sender”, “wblist_rdns”, “reject_sender_login_mismatch”, “greylisting”, “throttle”, “amavisd_wblist”, “sql_alias_access_policy”]
将其中的 ”greylisting ” 这项删去
1 | plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "throttle", "amavisd_wblist", "sql_alias_access_policy", "sql_ml_access_policy"] |
重启 iredapd
1 | 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记录
1 | 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)
旧服务器需要进行的操作:
备份数据库
1 | mysqldump -uroot -P3306 --databases vmail > vmail.sql |
备份邮件数据
1 | 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,安装好后删除安装目录
1 | rm -rf /iredmail |
导入数据库
1 | mysql -uroot |
然后退出
解压压缩包
1 | tar -xzvf iredmail.tar.gz -C / |
设置证书
1 | vim /etc/nginx/sites-enabled/00-default-ssl.conf |
写入ssl_certificate /usr/iRedMail.crt;和ssl_certificate_key /usr/iRedMail.key;(跟上面教程一样)
重新加载服务
1 | nginx -s reload |
然后,在Cloudflare把邮件域名解析到新服务器的ip(A记录)
稍等片刻,等解析生效后就可以登录使用了