Kubernetes 上部署 Mailu 邮件服务器:详细步骤指南
Mailu 是一款为 Docker 和 Kubernetes 环境优化的容器化邮件服务器。与传统的 Postfix 和 Dovecot 配置繁琐不同,Mailu 部署简单快捷,非常适合家庭实验室和测试环境。本指南将带你一步步在 Kubernetes 集群中使用 Helm 安装 Mailu,配置网络策略、DNS 记录和安全措施。
准备基础设施和 DNS
安装 Mailu 前,先完成这些关键基础设施步骤。首先,你需要一个支持 DNS 管理的域名——本例中使用 yourdomain.com。其次,确保获取静态公网 IP(例如 1.2.3.4),并让你的 ISP 设置反向(PTR)记录。没有 PTR 记录,大型邮件服务商会将你的邮件标记为垃圾邮件。
需要创建的关键 DNS 记录:
- A 记录:mail.yourdomain.com → 1.2.3.4
- MX 记录:@ → mail.yourdomain.com
设置完成后,使用 nslookup 1.2.3.4 验证——应解析到 mail.yourdomain.com,确认 PTR 记录正确。
设置 Kubernetes 并部署 Mailu
为提升安全性,将邮件服务器隔离到独立命名空间中以降低风险——这里使用 dmz-mailu。立即应用网络策略,默认阻断所有进出流量,仅允许必要端口。
示例网络策略(network-policy-dmz-mail.yaml):
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-dmz-mail-deny
namespace: dmz-mail
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-mailu-ports
namespace: dmz-mail
spec:
podSelector: {}
egress:
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: kube-system
ports:
- protocol: UDP
port: 53
- protocol: TCP
port: 25
- protocol: TCP
port: 465
接下来,添加 Mailu Helm 仓库并创建 values.yaml 文件。关键设置包括域名、时区、初始管理员账户、存储选项和网络接口。将 StorageClass 与你的集群配置匹配。
核心 values.yaml 参数:
hostnames: ["mail.yourdomain.com"]domain: yourdomain.cominitialAccount用于管理员设置- PostgreSQL 或 MariaDB 配置
- 持久化设置(例如
size: 50Gi) - 带 cert-manager 注解的 Ingress 配置
- 前端服务类型为 LoadBalancer
使用以下命令安装 chart:
helm install mailu mailu/mailu -n dmz-mailu --values mailu_values.yaml
修复 TLS 问题和高级配置
Mailu 在 Ingress 上可能遇到 SSL 错误,这是 TLS 处理的特殊性导致。解决方法是为前端创建专用 LoadBalancer 服务,将 Web 界面移到独立 IP,避免 Ingress TLS 冲突。
示例清单(svc-mailu-front-web.yaml):
apiVersion: v1
kind: Service
metadata:
name: svc-mailu-front-web
namespace: dmz-mail
spec:
externalTrafficPolicy: Local
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
app.kubernetes.io/component: front
app.kubernetes.io/instance: mailu
app.kubernetes.io/name: mailu
type: LoadBalancer
loadBalancerIP: 192.168.10.201
应用后,将 mail-local.yourdomain.com 指向该 IP(在本地 DNS 或 hosts 文件中)。同时,将网关的 25 端口转发到 values.yaml 中的 loadBalancerIP 以接收邮件。
配置 DKIM、DMARC 和 SPF
为确保邮件顺利送达 Gmail 或 Outlook 等服务,必须设置 DKIM、DMARC 和 SPF。这些认证协议验证发件人身份,避免邮件落入垃圾箱。
设置步骤:
- 在 Mailu 管理员 Web 界面,进入 Administration → Mail Domains → 选择你的域名 → Edit。
- 点击右上角 Generate Keys。
- 将 DKIM、DMARC 和 SPF 的 TXT 记录复制到域名 DNS 中。
- 等待传播(最长 48 小时)。
使用 mxtoolbox.com 等工具验证。测试时发送到外部地址——首批邮件可能进垃圾箱,请检查垃圾文件夹。
性能和安全优化
Mailu 包含可选组件,可禁用以节省资源或简化设置。ClamAV(杀毒)、OleTools(Office 文件扫描)和 Tika(元数据处理)对核心邮件功能非必需——在 values.yaml 中设为 false。
家庭使用推荐:
clamav: falseoletools: falsetika: false
保留 Rspamd(垃圾邮件过滤)启用——它高效处理进出邮件。
关键要点
- 静态 IP 的 PTR 记录对可靠投递至关重要。
- 独立命名空间和网络策略提升部署安全性。
- 使用独立 LoadBalancer 服务解决 Ingress TLS 问题。
- DKIM、DMARC 和 SPF 是外部邮件投递的必备。
- 禁用 ClamAV 等非必需组件以降低资源消耗。
— Editorial Team
暂无评论。