本文最后更新于22 天前,其中的信息可能已经过时,如有错误请发送邮件到yd-neply@foxmail.com
甲骨文云(Oracle Cloud)能自建邮局吗?Mailcow 完整搭建指南与踩坑实录
一、结论先行:甲骨文到底能不能自建邮局?
结论是:可以搭建,但发信绝大多数情况下必须走 SMTP 外部代发(Relay),或者纯走 IPv6 发信。
核心原因与端口限制
- IPv4 出站 25 端口封锁:甲骨文官方在 2021 年之后注册的新账号,出于防范垃圾邮件的目的,在底层基础设施层面默认封禁了 IPv4 的出站 25 端口(Outbound Port 25)。无论你在 VCN 安全列表(Security List)、网络安全组(NSG)还是机器内部的
iptables/ufw怎么放行,出站 25 端口流量都会被底层直接丢弃。 - 特例与现状:
- 如果你是 2021 年之前注册的老账号,部分老租户可能默认开放了 IPv4 25 端口。
- 付费账户(PAYG)可尝试提工单申请解封 25 端口,但审核极其严格,且免费(Always Free)账号基本无法申请解封。
- 入站接收邮件不受影响:入站 25 端口以及 IMAP/POP3/SMTP 客户端连接端口(993、465、587 等)均正常。
不走代发直接发信方案:IPv6 发信
- 甲骨文的 IPv6 25 端口是默认开放的!如果你不想用第三方代发,可以给实例配置 IPv6,并配置 Mailcow 优先/强制通过 IPv6 投递邮件。
- 实测各主流邮局 IPv6 接收情况:
- QQ 邮箱:实测能正常收到。
- 163 网易邮箱:实测能正常收到。
- 微软(Outlook/Hotmail):实测能正常收到。
- 谷歌(Gmail):有概率收不到或直接进拒信/垃圾箱。Gmail 对 IPv6 发信源的风控极为严苛,强制要求极其严格的 IPv6 PTR(反向解析)、SPF、DKIM 和 DMARC 记录,即便配置完美也可能因 IPv6 网段信誉不高而被拒。
- 终极建议:
- 纯 IPv6 发信:适合个人轻度使用、主要与国内及微软邮箱通信的场景。
- SMTP 代发(Relay):商业或稳定主力使用推荐,配置第三方 SMTP Relay(如 Resend、SendGrid、Brevo、Mailgun、Amazon SES 或其他独立服务器中继),彻底规避 IPv4 端口封锁和 IPv6 拒信问题。
二、为什么选择 Mailcow?
- 原生多架构支持(完美适配 ARM64):
- 甲骨文免费套餐中最香的就是最高 4 OCPU + 24GB 内存的 Ampere A1 (ARM64) 架构实例。
- Mailcow 官方容器原生构建并支持
linux/arm64,无需 QEMU 模拟,拉取镜像即可直接跑在甲骨文 ARM 实例上,性能与稳定性拉满。
- 功能极其完备开箱即用:
- 集成 Postfix、Dovecot、SOGo Webmail、Rspamd(反垃圾邮件过滤)、ClamAV(杀毒引擎)、ACME(自动申请 Let’s Encrypt 证书)、Nginx 等。
- 资源占用说明:
- 安装完成后,默认全功能运行时内存占用大约在 3GB 左右。
- 内存占用主要来自于 ClamAV(杀毒引擎特征库) 与 Rspamd(反垃圾)。甲骨文 ARM 实例给的 24GB 内存跑 Mailcow 绰绰有余;如果机器内存偏紧,Mailcow 还支持在配置中单独关闭 ClamAV 以节省约 1~1.5GB 内存。
三、Mailcow 官方安装教程(完整中文翻译版)
来源:Mailcow 官方文档 (
https://docs.mailcow.email/getstarted/install/)
1. 前置准备条件 (Prerequisites)
1.1 系统软件包 (System Packages)
运行 Mailcow 需要以下基础 Linux 软件包,请根据你的系统发行版进行安装:
git、openssl、curl、awk、sha1sum、grep、cut、jq
1.2 Docker 与 Docker Compose
- Docker:版本需
>= 24.0.0 - Docker Compose:版本需
>= 2.0
2. 快速安装流程 (Quick Installation)
步骤 1:安装系统依赖包
- Debian / Ubuntu:
apt update
apt install -y git openssl curl gawk coreutils grep jq
- RHEL 类系统(例如 Rocky Linux 9 / AlmaLinux):
dnf install -y git openssl curl gawk coreutils grep jq
- Alpine Linux (例如 3.22):
apk add --no-cache --upgrade sed findutils bash git openssl curl gawk coreutils grep jq
(注:coreutils 已包含大部分常用基础工具)
步骤 2:安装 Docker Engine
重要提示:请使用官方最新的 Docker Engine,不要使用系统自带仓库中的旧版本。
- Debian / Ubuntu:
curl -sSL https://get.docker.com/ | CHANNEL=stable sh
systemctl enable --now docker
- RHEL 类系统(例如 Rocky Linux 9):
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker
- Alpine Linux (例如 3.22):
apk --no-cache --upgrade add docker
rc-update add docker default
rc-service docker start
(注:get.docker.com 脚本在 RHEL 与 Alpine 上无法可靠运行,请使用对应的包管理方式安装)
)0
步骤 3:安装 Docker Compose
注意:Mailcow 要求 Docker Compose 版本
>= 2.0。
- 通过包管理器安装 Plugin 插件版(推荐):
- Debian / Ubuntu:
bash apt update apt install docker-compose-plugin - RHEL 类系统:
bash dnf update dnf install docker-compose-plugin - Alpine Linux:
apk add --no-cache --upgrade docker-cli-compose(Plugin 版本使用的命令为docker compose,中间带空格) - 或者安装为独立二进制版本 (Standalone):
LATEST=$(curl -Ls -w %{url_effective} -o /dev/null https://github.com/docker/compose/releases/latest) && \
LATEST=${LATEST##*/} && \
curl -L https://github.com/docker/compose/releases/download/$LATEST/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
(独立版本使用的命令为 docker-compose,带连字符)
3. SELinux 配置(可选,主要针对 CentOS / RHEL)
若系统启用了 SELinux:
- 检查是否安装了
container-selinux:
rpm -qa | grep container-selinux
- 编辑
/etc/docker/daemon.json,添加 SELinux 支持:
{
"selinux-enabled": true
}
- 重启 Docker 守护进程。
4. 安装 Mailcow (Installing mailcow)
- 拉取源码仓库:
su
umask 0022
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
- 生成配置文件:
./generate_config.sh
运行脚本时会提示输入主机名(FQDN,如 mail.yourdomain.com)以及时区(如 Asia/Shanghai)。
- 按需修改配置(可选):
nano mailcow.conf
5. 启动 Mailcow (Starting mailcow)
拉取镜像并启动容器:
- Docker Compose (Plugin 模式):
docker compose pull
docker compose up -d
- Docker Compose (Standalone 独立模式):
docker-compose pull
docker-compose up -d
安装完成!
启动成功后,即可通过浏览器访问:https://${MAILCOW_HOSTNAME}/admin
- 默认管理员账号:
admin - 默认初始密码:
moohoo
6. 常见问题排查与注意事项 (Troubleshooting & Important Notes)
- MTU 不为 1500(例如 OpenStack 或特定虚拟化环境):
若网络 MTU 不是 1500,可在docker-compose.yml中调整mailcow-network的 MTU 设置:
networks:
mailcow-network:
driver_opts:
com.docker.network.driver.mtu: 1450
- 宿主机不支持 IPv6:
如果服务器没有分配 IPv6 且不打算使用 IPv6 发信,请参考官方文档在配置文件中禁用 Mailcow 网络的 IPv6 支持,避免容器间网络通信超时。 - 数据持久化:
所有邮件和数据库数据均存储在 Docker Volumes 中,容器重建或升级不会丢失数据。 - 甲骨文防火墙放行:
在甲骨文控制台的 VCN 入站规则(Ingress Rules) 以及系统内部防火墙放行对应端口: - Web 访问与证书:
80、443(TCP) - 邮件服务:
25(入站收信)、465、587(客户端提交)、993(IMAPS)、995(POP3S)(TCP) - 发信中继(Relay)配置:
登录 Mailcow 管理后台后,前往 路由(Routing) -> 发信中继(Sender-dependent transports) 添加你的第三方 SMTP 代发凭据,并绑定到你的发信域名,即可彻底解决甲骨文 IPv4 25 端口出站封锁及发 Gmail 容易被拒的问题。

