静线数据库 为了无法保存的记忆
歌曲封面 未知作品
  • 歌曲封面FightSeventhDeusExMachina_Zoe();削除
  • 歌曲封面Lullaby For an Android (feat. AKA)Sad Keyboard Guy
  • 歌曲封面Grown-up's ParadiseMili
  • 歌曲封面Abst:Re:ActAcuticNotes

滇ICP备2024045441号

版权声明与隐私政策

网站已运行 246 天 16 小时 22 分

Powered by Typecho & Sunny

2 online · 26 ms

Title

Axigen X5 邮件服务器(电子邮局)部署记录

HelixCopex

·

·

487次阅读
技术 国内邮件服务商的严格策略和国外支付方式的限制使国内用户面临困扰,促使许多人选择自建邮件服务器。本文详细介绍了如何在非Docker环境中部署闭源Axigen Mailserver。涵盖了从环境配置、软件下载与安装、DNS与防火墙配置、基础配置、账户管理到发件配置的完整步骤。特别强调了如何解决SPF、DKIM、DMARC记录和rDNS解析等问题,以确保邮件服务器的高效运行和高评分。通过本文指导,用户能够轻松搭建稳定、安全的自建邮件服务器,提高邮件收发的可靠性和安全性。
Article
⚠️ 本文最后更新于2024年07月05日,已经过了150天没有更新,若内容或图片失效,请留言反馈

头图

国内邮件服务商的邮件收发策略愈发严格,同时国外邮件服务商提供的付费域名服务又难以国内方式支付,造成了国内域名邮箱用户的极大困扰。以此为契机,萌生了自建邮件服务器的想法。这里采用的是各项功能比较健全,同时易于在配置较低的非 Docker 环境中部署的闭源邮局软件 Axigen Mailserver。由于物理机 All In One 的特殊环境,我放弃了许多易于部署且功能强大,但与我服务器环境有冲突风险的开源邮件服务器选择,具体可以参考 Linux 中国的这篇文章。如果各位发现有开源且易用的替代方案,欢迎留言推荐!

另外,根据 Axigen 官方的路线图,X6 版本的服务器包预计在 2024 年第二到第三季度推出,若没有迫切的使用需求,建议等待 X6 版本的服务器软件推出后再进行部署。

关于详细的部署与配置说明,请参考官方文档

部署环境

物理机环境

项目描述
CPUXeon E3-1205 V6
RAM8GB DDR4 2400MHz
网络1G 内网带宽,上行带宽 30Mbps,下行带宽 1G

软件环境:

项目描述
发行版Debian 12
内核版本6.1.0-18 x64

下载软件包并执行指令部署

由于本人使用 Debian 12 发行版,故直接下载 .deb 包使用 apt 进行一键安装。
下载页面选择适合自己的服务器包版本,点击下载后,获取直链,再使用 wget 将文件下载到服务器上。对于不同的发行版和包管理器,请选择符合自己服务器条件的下载项,并参照文档安装。
通过 SSH 登录到服务器,使用 wget 命令下载 .deb 包:

♾️ bash 代码:
    wget https://download.axigen.com/mail-server/axigen_10.5.22-1_amd64.deb

若遇下载失败,可以在本地电脑使用科学方法下载后,再通过 scp 文件传输到服务器。
获取软件包后,查看软件包文件名并使用 apt 包管理器安装.

♾️ bash 代码:
    ls
    # axigen_10.5.22-1_amd64.deb
    apt install ./axigen_10.5.22-1_amd64.deb

一键安装过程应该会很快完成。完成安装后,查看提示信息,若类似下列所示,则安装成功。

♾️ bash 代码:
    Thank you for installing AXIGEN Mail Server
    In order to configure AXIGEN for the first time, please connect
    to WebAdmin by using one of the URLs below:
    https://192.168.xxx.xxx:9443/
    https://[240e:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]:9443/
    https://[fd0a:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]:9443/
    Starting AXIGEN Mail Server...   [ OK ]

外围环境配置

有别于提供对外访问的主站点域名,在 DNS 中配置一个专用于邮件收发的域名是明智的选择。添加 MX 记录以后,就可以让这个专用域名所指向的主机处理发向你的主域名的邮件。例如,当你向本站的管理邮箱 admin@sloray.com 发送邮件时,通过 MX 记录查找,实际上是 mail.sloray.com 这个域名后的主机接收并处理了这封邮件,并送到我的邮箱。

在配置各项邮件专用的 DNS 记录之前,首先应该添加这个专用域名的记录,并指向你的邮件服务器。对于具有动态 IP 的主机来说,就应该在 DDNS 配置中添加一个相应域名。

此时我将 MX 记录及 A/AAAA 记录配置如下:

在 Cloudflare 中我首先配置的解析记录

如果你的服务器不支持 IPV6,则没必要配置 AAAA 记录。

若启用了防火墙或安全组策略,应在其中开放一些端口。此处以 firewalld 示例:

♾️ bash 代码:
    firewall-cmd --zone=public --add-port=9443/tcp --permanent
    firewall-cmd --zone=public --add-port=465/tcp --permanent
    firewall-cmd --zone=public --add-port=993/tcp --permanent
    firewall-cmd --zone=public --add-port=25/tcp --permanent
    firewall-cmd --zone=public --add-port=587/tcp --permanent

其中,9443 是用于网页管理的端口,465、587、25 均是用于 SMTP 收发件的端口,而 993 是用于 IMAP 邮件同步的端口。

基础配置

在图形化界面中进行的事情要简单得多。使用 9443 端口访问服务器的 IP 或刚刚配置好的邮件域名,进入图形化管理页面,并设置密码。
为了避免一些自动跳转的 bug,访问时最好提前使用 HTTPS 协议访问,例如 https://192.168.x.x:9443/,这样就能避免自动跳转错误显示“链接被重置”。
按照提示,设置管理密码,在接下来的页面选择免费证书,之后输入邮箱及信息,服务器会自动将证书安装到服务器上。一切完成后,网页会展示一些基础的端口配置信息。

一些默认的端口配置

可以看到,刚才提前在防火墙开放的 587 端口并不是 Axigen 默认的 SMTP 加密收发件端口,但它实际上已经被写入了最新版本的 SMTP 标准中。这些设置仍然需要调整。

点击继续,在接下来的页面中配置主域名及域名管理员 (Postmaster) 密码。主域名应该是不带前缀的顶级域名。

主域名填写示意

一切完成后,进入到管理面板中,按照从上到下的顺序在设置中逐步调整。Axigen 的配置项繁多,此处记录几个重要且容易出错的部分。

首先,为邮件专用域名申请一份 SSL 证书(使用 Let's Encrypt 或向服务商购买),下载后(一般是 .crt 和 .key 文件),在 Security & Filtering 一栏中选中 SSL Certificates 部分,点击 ADD 按钮上传证书。保存,应该可以看见一份状态为 Valid 的新证书。

添加完证书后的情况

需要特别说明的是,此时要么同时上传 .crt 和 .key 文件,要么把两个文件内容使用文本编辑器合并为一个 .pem 文件后再上传。上传框在一个文件上传完成后再点击一次可以上传第二个文件。

返回到 Services 一栏,找到 SMTP Receiving,按照提示分别添加 0.0.0.0:587:::587 两个侦听端口。添加完成后,点击 EDIT 编辑端口,在 SSL Setting 一栏中勾选 Enable SSL for this lisener,并在下面选中刚才添加的状态为 Valid 的证书,随后保存。

正确添加并配置的端口状况

依照上述步骤,依次将 Services 中的所有服务中标注 SSL 的侦听端口所采用的证书替换为刚才添加的有效证书。其中,若觉得网页邮件等服务的端口不太适合于家用网络的网络环境,可以直接修改为任意不冲突的端口。

账户及收件配置

在上述配置完成后,通过 Domanis & Accounts 配置栏中的 Manage Domains 项对域名进行通用配置。这部分的配置项较少且易于理解,若英语基础较好或配合翻译软件可以轻易完成。其中,关闭 Message Appender 和 Account Defaults 中的 Welcome Email 可以避免恼人的邮件脚注和欢迎邮件。同时应保证 Accounts Defaults 中的 Active Sync 和 Auto Migration 打开,这样在使用邮件客户端(如 Thunderbird 时)能够正常地同步归档邮件和垃圾箱等文件夹。

主域名默认配置

进入同一栏中的 Manage Accounts,在之前添加的主域名配置页中点击 ADD,添加邮件账户并设置密码。尝试从 Thunderbird 或 K-9 Mail 等第三方邮件客户端登录,并用 QQ 邮箱账号向这个地址发送一封测试邮件,能够正常收件,便说明 IMAP 和 SMTP 收件配置没有问题。从刚才配置的 WebMail 端口登录网页版邮箱,若能正常登录并看到相同邮件,便说明 WebMail 配置没有问题。

添加账户
收到测试邮件

发件配置

使用邮件客户端向外发邮件测试网站的临时测试邮箱发送一封测试邮件,并生成报告。

邮件测试结果

……显然,我们遇到了一些小问题。
报告能够生成,证明 SMTP 协议已经被正确配置并能够外发邮件,但是某些配置的缺失导致邮件有大概率会被认作垃圾邮件并丢进垃圾箱。根据测试报告,邮件有以下几个主要问题:

  • 无 SPF 记录
  • 无 DKIM 邮件签名
  • 无 DMARC 策略标识
  • rDNS 解析记录不匹配
  • 主机名与邮件服务器记录不匹配

接下来依次解决这些问题。

添加 SPF 记录

SPF,全称为 Sender Policy Framework,即发件人策略框架。这个名字及其拗口生涩,但是它的作用易于理解:这个记录向所有人声明哪些 IP 地址可以发送来自你的域名的邮件。如果有别人想要将自己发出的邮件伪造成你发出的,那么他即使能够修改邮件的响应头来伪造成你的邮件,也没法修改你域名的 DNS 记录,从而规避了伪造邮件的风险。对于家用网络的动态 IP 地址,可以使用整个能够分配到的 IP 范围作为 SPF 记录认证的地址。下列是一个 SPF 记录内容的例子。

♾️ text 代码:
    "v=spf1 ip4:192.168.0.1/16 -all"

关于 SPF 记录应该如何根据网络环境及使用需求进行配置,请参考这篇文章

使用 DKIM 签名

DKIM 是一种使用非对称加密来验证拦截伪造邮件的方式。它的具体原理是,通过一个 DNS 记录将 RSA 加密的公钥公开,并使用私钥签名文件,私钥只被发件人自己所掌握,这样就保证了通过公钥解密的邮件一定不是伪造邮件。
根据官方文档,使用 SSH 登录服务器,并使用 openssl 生成私钥与公钥,并更改私钥和公钥的文件权限。

♾️ bash 代码:
    cd /var/opt/axigen
    openssl genrsa -out dkim.privkey.domain1_com.pem 2048
    openssl rsa -in dkim.privkey.domain1_com.pem -outform PEM -pubout -out dkim.pubkey.domain1_com.pem
    chmod 600 dkim.*.pem
    chown axigen:axigen dkim.*.pem

文件名中的域名应替换为自己的主域名。完成后,使用 cat 命令查看并获取公钥:

♾️ bash 代码:
    cat dkim.pubkey.domain1_com.pem | grep -v PUBLIC | tr -d "\n" | grep -v AAAAAAAAAA

并在域名的 DNS 配置中添加一个 TXT 记录。

♾️ text 代码:
<selector>._domainkey.domain1.com.        IN  TXT ( "k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ1234567890AQEAv/F/3Af/jDsmTTByjfvL"
                                                       "2tasWFGj+gy8AUun2joskmy34iEFW+Fw3rNZSRcfRmkQYiz7TZu3AZ3oLJFB7s5E"
                                                       ...
                                                       ...
                                                       "iRgMp2E6Q4VQPciTaPm9ZJvITplcm/+++++11111CK2xz3Ve1p9COMtcNa2xT8Mv"
                                                       "HQQAZWSX" )

这个 TXT 记录中, 可以自己随意输入一个单词。<p=> 之后应该填写刚才通过 cat 命令获取到的公钥。比如,我将 设置为 reimu,那么记录名就是 reimu._domainkey.domain1.com。

添加完成后,使用 dig 命令检查公钥是否已被传播到 DNS 服务器。以下为我的例子。

♾️ bash 代码:
    dig +short txt reimu._domainkey.sloray.com @8.8.8.8

接下来,回到网页管理页面,在 Security & Filtering 一栏中的 Acceptance & Routing 选择 Advanced Settings,检查 Check_Domains_and_DKIM 是否为启用状态,将其启用,随后添加一个路由规则,名称为 DomainSign-domain1_com,按照下图的官方示例修改,配置好自己的规则。记得 要使用和 DNS 配置中一致的单词。

DKIM 官方示例
DKIM 配置示例

添加 DMARC

DMARC 记录是一项 TXT 记录,用于向收件服务器告知应将从发件域名(即自己的主域名)发出的邮件作何处理,同时为收件服务器提供反馈报告的邮箱地址。配置这项 DNS 记录可以获知哪些地址曾伪造了主域名的邮件,同时增加主域名的电子邮件信誉。

关于 DMARC 记录如何填写,可以参考这篇文章

配置 rDNS

反向 DNS 记录一般用于验证地址是否与域名相绑定。这项记录的添加一般是由互联网服务提供商来完成。对于家用网络环境,添加这项记录几乎是不可能的事情,所以建议跳过此项。关于这点,如果有任何的替代方案,欢迎在评论区提出!对于云服务器网络环境,可以发起工单向你所租用的云服务器厂商申请添加 rDNS 记录,只需提供你的主域名和邮件服务器的 IP 地址即可。

修改主机名

邮件服务器声明的主机名可以与 Debian 系统设置中的主机名不同。在 Global Settings 中的 General 项将 Server Name 修改为邮件服务器的完全限定域名(如 mail.example.com),保存,再进入之前配置 DKIM 的路由规则页面,添加一个规则,在 Action 中的 Refer 找到 EHLO,将内容修改为完全限定域名,再保存,这样就完成了主机名的配置。

尾声

一切完工后,我们再次发送一封测试邮件。由于无法配置 rDNS,9 分左右的成绩就是家用网络能达到的最好效果了。如果使用了正规厂商的云服务器进行 rDNS 配置,10 分是完全能够达到的。

配置完成后的测试分数
现在已有 2 条评论,0 人点赞
Comment:共2条
发表
  1. 头像
    @
    大佬终于更新了😿
    · Windows · Chrome

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
    1. 头像
      @
      开始写了不想停,然后写完就不想再写第二篇 orz
      · Windows · 火狐浏览器

      👍

      💖

      💯

      💦

      😄

      🪙

      👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主 不再显示
博主