自建邮局 – Mailcow

前期准备

服务器

选择服务器是自建域名邮箱的关键一步。邮件服务器需要开放的端口比较多,其中最重要的就是 25 端口,这是 SMTP 服务必需的。但很多VPS厂商由于垃圾邮件的发送和其他恶意活动,选择禁止或限制了 25 端口。因此,在选择VPS时,务必要确定所选的厂商是否开放了 25 端口。如果不确定,最好提前联系客服进行确认。

所以选择那些对邮件服务友好、已经默认开放 25 端口的 VPS 厂商会更为便捷。这里推荐的两家:

  • Contabo: Contabo 是一家德国的VPS厂商,它提供的 VPS 价格合理且性能稳定。最重要的是,它默认开放了 25 端口,为邮件服务提供了很好的支持。Contabo 以高配低价著称,由于 Mailcow 的容器化部署对内存要求较高,所以也非常推荐使用 Contabo 的 VPS 基本款。右上角切换成欧元更便宜,基础款 VPS 仅需 5.99 欧元/月,配置为 4 核 8G 内存 200G SSD 硬盘,流量 25TB,带宽 200Mbps,支持 25 端口。
  • RackNerd: RackNerd 是一家美国的VPS厂商,它的服务也非常受欢迎。和 Contabo 一样,RackNerd 也支持 25 端口,并提供了多种配置选择,以满足不同用户的需求。

对于其他云服务器厂商,例如 Oracle Cloud 等,可能需要自己申请开放 25 端口。

Windows用户SSH连接VPS

使用cmder(适用于Windows用户)
Cmder是一款功能强大的终端模拟器,Windows用户需要先安装SSH的连接工具,打开Cmder官网,然后点击download full即可。当然也可以选择其他SSH客户端工具,诸如Xshell、PuTTY等

首先打开你的Cmder或者Terminal,然后输入下面的命令:

ssh username@VPS_IP

按下Enter键后,系统询问你是否确认连接,请输入”yes”并按下Enter。

接下来,系统将要求你输入VPS的密码,输入后按下Enter确认。

连接成功后,你将进入到VPS的命令行界面,可以开始进行后续操作。

检测是否开通25端口

VPS 上打开的端口取决于服务器上安装的操作系统。 例如,要在 VPS(虚拟服务器)上打开端口 25 并检查它,您需要执行以下步骤:

  1. 使用 VPS 凭据通过 SSH 客户端(例如适用于 Windows 的 PuTTY 或适用于 macOS 和 Linux 的终端)连接到 VPS。
  2. 使用以下命令更新软件包并安装必要的实用程序:
    sudo apt update
    sudo apt install ufw
  3. 使用以下命令打开端口 25:
    sudo ufw allow 25
  4. 使用以下命令检查 ufw(防火墙管理实用程序)的当前状态:
    sudo ufw status
  5. 有多种方法可以检查端口 25。您可以通过运行以下命令来使用 Telnet 实用程序:
    telnet localhost 25
    如果连接成功,则端口已启动并准备好接受连接。
  6. 完成这些步骤后,端口 25 将打开并可供 CentOS 服务器上使用。
  7. 您还可以使用在线实用程序检查端口 25,例如通过网站 Open Port Check Tool – Test Port Forwarding on Your Router 
邮件服务还需要设置 rDNS (Reverse DNS) 记录,即反向 DNS 记录。rDNS 记录是将 IP 地址解析为域名的过程,而 DNS 记录则是将域名解析为 IP 地址的过程。邮件服务器发送邮件时,会将邮件服务器的 IP 地址放在邮件头中,而邮件头中的 IP 地址可以通过 rDNS 记录解析为域名。如果邮件服务器的 IP 地址没有设置 rDNS 记录,那么邮件可能会被对方的邮件服务器拒收,因为对方的邮件服务器会认为该邮件是垃圾邮件。因此,设置 rDNS 记录是非常重要的。而 Contabo 支持直接在服务器面板设置 rDNS,非常方便。
ZWAXU

搭建方案选择

自建域名邮箱的方式有很多,比如使用 MailcowMail-in-a-BoxiRedMail 等。这些方式都需要自己购买 VPS 服务器,然后在服务器上安装相应的软件。Mail-in-a-Box 之前尝试过,其需要在服务器上搭建一个 DNS 服务器,较为麻烦,而且不支持 Docker 容器化部署。

这里我选择使用 Mailcow,因为它的安装方式比较简单,而且支持 Docker 容器化部署,可以在服务器上快速部署,但其内存占用较大,因此也十分推荐 Contabo。此外,Mailcow 也提供了 Web 界面,可以方便地管理邮箱账号,而 Web 也可以设置反向代理,不占用 80 或 443 端口,方便与其他服务共存。

起码需要vps能够开通25端口,其次是需要支持 txt ptr记录。如果不支持ptr记录很难发进gmail

最便宜的邮件解决机器是 racknerd的

racknerd机器满足收的,外发质量一般般。

如果需要外发质量好。

可以这样找:

dedipath   IP  干净,需要工单开通25端口

hetzner IP干净,但需要 一个月后才可能开通25端口

contabo ip干净,但比较贵

justhost.ru 俄罗斯喀山的IP干净

erthenet 啥的,IP干净,还算便宜




介绍一个部署比较简单的docker 邮局解决方案:


标准电子邮件服务器,支持 IMAP和IMAP+,SMTP

高级电子邮件功能、别名、域名别名、自定义路由

webmail访问,多个网络邮件和管理界面

用户功能:别名,自动回复,自动转发,找回帐户

管理功能:全局管理员,公告,每个域的授权,配额

安全性:强制TLS,Letsencrypt!,外发DKIM,反病毒扫描器

反垃圾邮件,自动学习,灰名单

特别支持: DMARC和SPF

官网:
   
https://mailu.io/1.9/

并不是所有的VPS都适合做邮局的。

做邮局的vps必须有几个条件

1  需要可以外连 25 端口 smtp端口
2  需要支持做rDNS
3  磁盘相对较大,起码30G
4  内存最好2.5G以上

开始搭建

准备

本文使用的系统为 Ubuntu 22.04。首先需要安装 Docker 和 Docker Compose,可以参考 Docker 官方文档。建议使用安装脚本安装,安装脚本会自动安装 Docker 和 Docker Compose,并设置 Docker 服务开机自启动。

Debian手动安装docker、docker compose命令

下载

curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

添加执行权限

chmod +x /usr/local/bin/docker-compose

建立软连接

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

修改VPS的hostname(# your-domain.com 替换成你自己的域名)

hostnamectl set-hostname mail.zwaxu.com

然后修改/etc/hosts,添加一行hosts解析,就是将mail.zwaxu.com指向到您当前服务器的公网IP,命令如下:

echo '173.0.xx.xxx    mail.zwaxu.com' >> /etc/hosts

部署mailcow

#Debian安装Git

apt-get install git

#克隆mailcow代码

git clone https://github.com/mailcow/mailcow-dockerized

进入代码目录cd mailcow-dockerized执行初始化脚本:./generate_config.sh根据提示设置域名和时区等信息。注意:

  1. 域名要和上面设置的主机名一致,比如mail.domain.com
  2. 如果后续需要修改,可以编辑mailcow.conf这个配置文件
  3. 生成的时间可以选择:Asia/Shanghai

运行

docker-compose up -d

等待如下图,安装完成

接下来我们需要一个域名,本文将以 zwaxu.com 为例,并以 Cloudflare 为例,介绍如何配置域名解析,建议将域名托管到 Cloudflare。

现在可以访问 Web Dashboard 了,地址为 https://mail.zwaxu.com,用户名为 admin,密码为 moohoo

/

Mailcow DNS 配置

一个邮件服务器需要配置 SPF、DKIM、DMARC 等,这些有助于提高邮件的送达率,而不会被判定为垃圾邮件或者被拒收。这些配置都对应到相应的 DNS 记录。下面我们将一一进行配置。

步骤如下

Step 1

首先在 Mail Web Dashboard 中,点击右侧上方的 E-Mail – 配置 – 添加域名,输入 zwaxu.com,然后点击 添加域名并重启。然后在 操作 栏点击 DNS,等待一会,查看系统检测到的目前的 DNS 记录。当前状态下只有 A 记录,即将 mail.zwaxu.com 解析到服务器 IP 地址。

IPV6 记录

如果你的服务器支持 IPV6,那么需要添加 IPv6 记录。在 Cloudflare 中,点击 添加记录,选择 AAAA 类型,输入 mail,然后输入服务器 IPV6 地址。

rDNS

在 Contabo control panel 中,点击 Reverse DNS Management,然后为 IPv4 和 IPv6 地址分别设置 rDNS 记录,即将 IP 地址解析为 mail.zwaxu.com

其他 VPS 厂商可能需要申请客服来添加 rDNS 记录,请咨询客服。

TLSA

在 Cloudflare 中,点击 添加记录,选择 TLSA 类型,输入 _25._tcp.mail,然后 Usage (required)、Selector (required)、Matching type (required) 分别选择 311,最后根据 Web Dashboard 中提供的正确数据,输入正确的 Certificate (hexadecimal) (required)。

MX 记录

在 Cloudflare 中,点击 添加记录,选择 MX 类型,输入 @,内容输入 mail.zwaxu.com,优先级为 10

CNAME 记录

在 Cloudflare 中,点击 添加记录,选择 CNAME 类型,输入 autodiscover,然后输入 mail.zwaxu.com
继续添加 CNAME 记录,输入 autoconfig,然后输入 mail.zwaxu.com

SRV 记录

SRV 较为复杂,具体配置如上图所示:

SPF 配置

在 Cloudflare 中,点击 添加记录,选择 TXT 类型,输入 @,内容输入 v=spf1 mx a -all

DMARC 配置

在 Cloudflare 中,点击 添加记录,选择 TXT 类型,输入 _dmarc,内容输入 
V=DMARC1;p=reject;rua=mailto:[email protected]

注意,这里的 [email protected] 需要是一个真实的地址。 这个地址的主要作用是接收 DMARC 聚合报告。这些报告为域名拥有者提供关于其域名电子邮件使用情况的反馈,特别是哪些邮件是合法的,哪些可能是仿冒的。它们提供了关于邮件的详细信息,如发件人、接收时间、发件的IP地址等。等 DNS 全部设置完毕后,需要创建这个邮箱账号。

DKIM 配置

在 Cloudflare 中,点击 添加记录,选择 TXT 类型,输入 dkim._domainkey,然后内容请输入 Web Dashboard 中提供的正确数据。

全部 DNS 记录配置完毕后,可以点击 Web Dashboard 中域名页面的 DNS 按钮,查看是否配置正确。

邮箱使用

创建账号

在 Web Dashboard 中,点击右侧上方的 E-Mail – 配置 – 邮箱 – 添加邮箱。输入用户名和密码。

Webmail

在 Web Dashboard 中,点击右侧上方的 应用 – Webmail,即可进入 Webmail。

输入用户名和密码,即可登录 Webmail。

客户端设置

例如在 Apple Mail.app 中,添加账户,然后输入用户名和密码,配置 STMP 和 IMAP 服务器地址,都为 mail.zwaxu.com,都需要输入用户名和密码,其余默认即可。

效果

当上述 DNS 配置都设置好后,可以使用 Mail Tester 来测试邮件的送达率。输入邮件内容,建议内容多一点,不然太像垃圾邮件。一般情况下,邮件得分可以到满分:

发送一封邮件到 Gmail,也会被判定为一封重要邮件:

查看原始邮件,也可以看到 SPF、DKIM、DMARC 都已经通过验证:

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部