Debian 11 搭建自己的邮件系统- iRedMail

前言

如果你非常注重个人隐私和安全,不想用大厂的邮件服务,那么自己搭建一个邮件服务器是一个不错的选择; 而且用自己的域名作为邮箱的后缀是非常有意思的,也好看; 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

img 可以看到我们已经进入了图形化安装界面,回车确认

输入安装目录,可以使用默认的/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 解析 img

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@你的域和你之前设置的管理员密码登录

img 可以看到我们收到了三封邮件

添加用户及使用

访问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记录) 稍等片刻,等解析生效后就可以登录使用了

All is well
使用 Hugo 构建
主题 StackJimmy 设计