1. 环境准备与系统基础配置
在国产化浪潮下,很多企业和单位开始基于像银河麒麟(Kylin)这样的国产操作系统构建自己的IT基础设施。今天,我就来手把手带你,在Kylin v10 aarch64(也就是我们常说的ARM64架构)服务器上,从零开始搭建一套属于你自己的Postfix邮件服务。这不仅仅是安装几个软件那么简单,我会把从DNS解析、邮件服务配置到客户端连接的完整链条,以及我踩过的那些坑,都给你讲清楚。整个过程就像搭积木,每一步都稳扎稳打,最终让你能用自己的域名,在Thunderbird里顺畅地收发邮件。
首先,你得有一台已经安装好Kylin v10 aarch64系统的服务器。我实测下来,无论是物理机还是虚拟机,配置上2核CPU、4GB内存、50GB硬盘就足够跑起一套基础的内网邮件服务了。拿到服务器后,别急着装软件,有几项基础的系统配置必须先做好,这能避免后续一大堆莫名其妙的权限和网络问题。
第一件事,咱们得把防火墙和SELinux处理好。对于内网测试或部署环境,为了减少初期配置的复杂度,我通常会选择暂时关闭它们。当然,如果你对安全策略非常熟悉,也可以配置精确的放行规则,但对于新手来说,先关掉能让路径更清晰。关闭防火墙很简单,两条命令搞定:
systemctl stop firewalld
systemctl disable firewalld
stop是立即停止服务,disable是禁止它开机自启,这样重启后也不会再启动了。
接下来处理SELinux,这是一个强大的安全模块,但有时候过于“尽责”会阻止我们的服务正常通信。我们可以先临时将其设置为宽容模式:
setenforce 0
但这只是临时的,重启就失效了。为了永久生效,我们需要修改配置文件:
vim /etc/selinux/config
找到 SELINUX= 这一行,把它改成 SELINUX=disabled。改完之后,一定要重启系统,这个修改才会完全生效。我遇到过好几次,改了配置没重启,后面排错半天才发现是SELinux在捣鬼。
基础安全设置做完,接下来要确保我们的软件源是畅通的。Kylin系统默认的源可能不全,或者速度不理想。我们可以配置一个可靠的软件源。创建一个新的repo文件:
vim /etc/yum.repos.d/kylin_aarch64.repo
然后把下面的内容贴进去,这是一个可用的Kylin V10 aarch64的软件源配置:
[ks10-adv]
name = Kylin Linux Advanced Server 10
baseurl = http://archive2.kylinos.cn/rpm/kylin/production/KY-KY10-GFB-aarch64/custom/kylin-server/KY10-GFB-aarch64-2204/
gpgcheck = 0
enabled = 1
保存退出后,运行 yum makecache 更新一下缓存。如果网络通畅,你应该能看到元数据成功加载的提示。这一步是后续顺利安装所有软件包的基础,千万别跳过。
2. 搭建专属DNS服务器:让邮件有“门牌号”
邮件服务器要想正常工作,一个关键的环节就是DNS(域名系统)。你可以把它理解成互联网的“电话簿”。当你的邮件客户端(比如Thunderbird)想发送一封邮件到 lisi@kylincloud.com 时,它必须知道这个“kylincloud.com”域名对应的邮件服务器(MX记录)到底是谁、IP地址是什么。在公网环境,我们可以购买域名并配置DNS解析。但在纯粹的内网环境,或者你想完全掌控解析过程时,自己搭建一个DNS服务器就非常有必要了。这就像在小区里自己立一套路标和门牌系统,不依赖外部的导航。
首先,我们需要给服务器设定一个清晰的主机名,并且这个主机名最好和我们的邮件域名相关联。这会让后续的配置逻辑非常清晰。假设我们的邮件域是 kylincloud.com,邮件服务器主机名就设为 mail.kylincloud.com。执行命令:
hostnamectl set-hostname mail.kylincloud.com
设置完成后,退出当前的SSH会话,重新登录一下,你就能在命令行提示符前看到新的主机名了。这个小细节很重要,因为Postfix等服务会读取这个主机名作为默认标识。
接下来安装DNS服务软件,我们选用最经典的BIND。
yum -y install bind
安装完成后,开始配置BIND。它的主配置文件是 /etc/named.conf。我们需要修改它,让BIND监听所有网络接口(而不仅仅是本地),并允许来自任何地址的查询(因为我们是在内网使用)。用vim打开这个文件,找到 options {
这个大段,修改其中的两行:
vim /etc/named.conf
找到:
listen-on port 53 { 127.0.0.1; };
allow-query { localhost; };
把它们改成:
listen-on port 53 { any; };
allow-query { any; };
这样,我们的DNS服务才能被网络内的其他机器访问到。其他配置项,比如 recursio


438

被折叠的 条评论
为什么被折叠?



