Hi Everyone, Nice to see you again.
今天这篇文章将会手把手教给你如何搭建一个具有收发信能力的个人邮件平台!详细解读!
本文为实践帖,iredmail 官方文档:
https://docs.iredmail.org/index-zh_CN.html准备:
1. 1c2g 及以上规格的 VPS
1.1 需要开启端口:25 465 587 (SMTP发件及验证)
1.2 需要开启端口:143 993 995 (IMAP 收件)
1.3 最好支持 RDNS 解析记录(为 VPS IP 反向解析主机名)VULTR 就支持自助修改,但是IP的干净程度可能有点让人担忧
2. 用于发件的域名(
xxx@abc.com /
xxx@xyz.abc.com 皆可)
3. 对应的 SSL证书(单域名证书就可以,有泛域名证书固然是好的)
当你做好了以上准备之后,我们就可以开始搭建邮件服务器啦!
注意:大部分服务商禁止了 SMTP 发信端口,这种情况只需要向服务商申请即可(开工单还是发邮件看你了),申请的过程中服务商一般都会问你发什么样的邮件,基本都会拒绝商业群发邮件的请求(如果你想要寻找一个用于大量商业推广发件的平台,建议寻找一些现成的发件平台,而不是自建)
那么我们就开始吧!
本文中我使用的测试机器配置:
引用
Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz | 48 Core
256G DDR4 ECC
8T NVME
10Gbps FLAT PORT
OS: Debian11 ( 6.2.2 Kernel )
本文也将使用 zhnet.us 作为测试域名来搭建
1. 将邮件系统域名设置为主机名 ( FQDN )
输入命令 hostname -f 查看当前的主机名 确保主机名是你的邮件平台域名;例如我演示的域名是 zhnet.us 我的邮件系统是 mail.zhnet.us 那么我们的主机名就需要设置为 mail.zhnet.us
如果你的主机名不是你的邮件系统域名,则需要用以下方法更正:
引用
hostnamectl set-hostname mail.zhnet.us
并将你的主机名添加至 /etc/hosts 条目 (/etc/hosts 里定义主机名和 IP 地址的对应关系)
引用
127.0.0.1 mail.zhnet.us mail localhost localhost.localdomain
检查:
引用
root@london-core:~# hostname -f
mail.zhnet.us
root@london-core:~#
2. 下载最新版 iredmail
首先执行 apt install gzip tar -y 确保有必要软件包,并确保你正在用的是官方软件源。
然后点击
https://www.iredmail.org/download.html 找到 Stable 右键复制下载链接
到你的服务器去执行 wget (复制的链接) 结果如下
引用
root@london-core:~# wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.6.4.tar.gz
--2023-07-30 20:01:35-- https://github.com/iredmail/iRedMail/archive/refs/tags/1.6.4.tar.gz
Resolving github.com (github.com)... 140.82.121.3
Connecting to github.com (github.com)|140.82.121.3|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/iredmail/iRedMail/tar.gz/refs/tags/1.6.4 [following]
--2023-07-30 20:01:35-- https://codeload.github.com/iredmail/iRedMail/tar.gz/refs/tags/1.6.4
Resolving codeload.github.com (codeload.github.com)... 140.82.121.10
Connecting to codeload.github.com (codeload.github.com)|140.82.121.10|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/x-gzip]
Saving to: ‘1.6.4.tar.gz’
1.6.4.tar.gz [ <=> ] 240.12K --.-KB/s in 0.06s
2023-07-30 20:01:36 (3.80 MB/s) - ‘1.6.4.tar.gz’ saved [245883]
root@london-core:~#
然后 tar -xzvf 1.6.4.tar.gz 解压该文件并使用 cd iRedMail-1.6.4/移动到解压后的目录
3. 运行安装程序
“现在可以运行 iRedMail 安装程序了,它会问你几个简单的问题,仅此而已。”
进入安装程序:
bash iRedMail.sh
(FinalShell 用户请注意:到这一步使用 FinalShell 的用户可能会乱码,建议 Finalshell 用户此时临时更换ssh客户端继续进行安装)
3.1 进入安装页面
3.2 选择邮件存储路径
3.3 选择网站容器(前端)
3.4 选择数据库,我这里选择的是 MySQL
3.5 设置 MySQL密码
3.6 设置发信域名(注意,这里和你的主机名需要不一样,这里设置的是
xxx@abc.com 的 abc.com,而主机名是作为邮件服务器为 abc.com 处理邮件的;这个 abc.com 可以是 xyz.abc.com)
3.7 设置管理员用户
postmaster@zhnet.us 的密码
3.8 选择安装的软件(webmail系统啊监控系统啊之类的,我这里全部勾选了 SOGo 会好看一点~)
3.9 确认开始安装 输入y即可确认
然后等待安装完成啦!
安装完成了怎么办?开始配置 DNS 记录和 SSL证书~
“邮件服务器最薄弱的环节是用户的弱密码,所以请一定强制你的用户使用强度高的密码。阅读 /root/iRedMail-x.y.z/iRedMail.tips 文件,它包含了:各个 web 程序的访问地址(URL),用户名和密码。”
所有配置文件的目录请见官方文档:
https://docs.iredmail.org/file.locations.html4. 开始设置 DNS 解析记录
设置邮件服务器的 A 记录:其实就是把 mail.zhnet.us 指向你 VPS 的IP(你设置的主机名)
设置 MX 记录
2.1 如果你要为
xxx@zhnet.us 设置解析记录,那么请将 主机名为 @ 的 MX 记录值指向 mail.zhnet.us,相反如果你要为
xxx@xyz.zhnet.us 设置解析记录那么请将主机名为 @ 的 MX 记录指向 mail.zhnet.us
2.2 优先级默认为 10
设置 SPF 记录(限制发信主机名)
3.1 新建一条主机名为 @ 的 TXT 记录内容为 v=spf1 mx -all 意味着仅允许 mx 记录的邮件服务器发件 。
3.2 -all 表示禁止从所有其他服务器发送电子邮件,~all 表示没那么严格,从其他主机发出的邮件将被标记为“不安全”
3.3 注意:不可将 -/~all 替换成 +all ,+all 表示任何人都可以使用此域名发件
设置 smtp/imap.zhnet.us (这个看个人是否有这样的需求,如果有的话意味着你可能需要泛域名证书或为 Postfix 和 Dovcot 设置单独的证书)
DKIM 解析记录:
5.1 查看本地值(就像是申请ssl证书使用的csr一样)
amavisd-new showkeys (部分其他OS 可能会使用 amavisd 代替 amavisd-new)
如果提示 /etc/amavisd.conf not found 那就带上你的绝对路径:amavisd-new -c /etc/amavisd/amavisd.conf showkeys
输出内容:
引用
root@mail:~/iRedMail-1.6.4# amavisd-new showkeys
; key#1 2048 bits, i=dkim, d=zhnet.us, /var/lib/dkim/zhnet.us.pem
dkim._domainkey.zhnet.us. 3600 TXT (
"v=DKIM1; p="
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyK0XQiDxKCzy5xbwPrFO"
"hWOEBqJjXyXGK3nnQYFWXAheU9ZPZCIPRG1Gq5krQub2pTg6yg45Ksxt0lhhvBUP"
"ZQtFsphZPCXWU+BvePdHxgH+V4eNhtackV2q58X16ccHh0tIaRMYCR+G0yQlEFX2"
"mHWXmiD36QniSALd+zYDuApvc4vV3YyXrmRT5MYIaVMd9cXgMPC1LOw3mKDsRKq5"
"df92b3fGocn495nPyi55AmHebQd4YhCveI9reRR6kWlhU4M6p4ytAhus6C0sDg0w"
"Lmu9cfN0Xylrc+sAZJfa+mMG9kz2DR3KmVXRDHKNjqSziF9cR93fiQoVHtVOwwm4"
"UwIDAQAB")
root@mail:~/iRedMail-1.6.4#
我们只需把换行内容和 "" 和最上面的提示删掉就好了(或使用网上的整理工具,本人用的是
http://www.ewomail.com/list-20.html ),本例中解析记录为
- 主机名:dkim._domainkey
- 记录类型:TXT
- 记录值:
- v=DKIM1;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyK0XQiDxKCzy5xbwPrFOhWOEBqJjXyXGK3nnQYFWXAheU9ZPZCIPRG1Gq5krQub2pTg6yg45Ksxt0lhhvBUPZQtFsphZPCXWU+BvePdHxgH+V4eNhtackV2q58X16ccHh0tIaRMYCR+G0yQlEFX2mHWXmiD36QniSALd+zYDuApvc4vV3YyXrmRT5MYIaVMd9cXgMPC1LOw3mKDsRKq5df92b3fGocn495nPyi55AmHebQd4YhCveI9reRR6kWlhU4M6p4ytAhus6C0sDg0wLmu9cfN0Xylrc+sAZJfa+mMG9kz2DR3KmVXRDHKNjqSziF9cR93fiQoVHtVOwwm4UwIDAQAB
5.2 本地检查
amavisd-new testkeys
如果输出内容如下(提示 pass)则设置成功!
引用
root@mail:~/iRedMail-1.6.4# amavisd-new testkeys
TESTING#1 zhnet.us: dkim._domainkey.zhnet.us => pass
root@mail:~/iRedMail-1.6.4#
到此你的邮件服务器已经可以使用了!但是并不安全!也不规范!
更规范你的邮件服务器:设置 RDNS解析:
以本例为例,我们使用自己的 IP 段在 Cloudflare 管理反向解析,我们只需要添加 PTR 记录给对应 IP 和主机名就好了:
如果你使用公共云服务器:VULTR 之类的厂商支持自助设定 RDNS,在IP管理那边有个hostname就可以看到,改成你自己的 hostname就好了;更多厂商不支持自助设定,就开工单/发邮件告诉他们你的IP和需要设置的主机名就好了!
5. 设置 SSL 证书
本例只用到 mail.zhnet.us 所以只申请了 mail.zhnet.us 这个证书,所以只需要以下操作:
引用
mv /etc/ssl/certs/iRedMail.crt{,.bak}
# 备份原来的文件
mv /etc/ssl/private/iRedMail.key{,.bak}
# 备份原来的文件
cp fullchain.pem(你的证书) /etc/ssl/certs/iRedMail.crt
cp privkey.pem(你的私钥) /etc/ssl/private/iRedMail.key
设置完之后重启相关服务:
systemctl restart nginx php-fpm postfix dovecot
就可以应用 SSL 证书啦!
然后你就可以使用域名访问 web面板啦,路径如下:
引用
Roundcube 邮件前端: https://mail.zhnet.us/mail/
SOGo 邮件前端: https://mail.zhnet.us/SOGo
Web 管理后台: httpS://mail.zhnet.us/iredadmin/
写在最后
客户端的使用不再赘述,IPv6配置不再赘述过程基本一样,用户可以去 Web 管理后台创建,到此你的邮件系统就完全安装好啦!可以自己去测试可用性!
常见的问题:端口未开放,dns解析记录未生效
如果本篇教程对您有用,请不要吝啬您免费的赞赞~
赞(20)