轻量级全功能开源免费Mailu邮件服务器部署

这篇具有很好参考价值的文章主要介绍了轻量级全功能开源免费Mailu邮件服务器部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实践说明:基于AlmaLinux9,但适用场景不限于此。
文档形成时期:2023年
因系统或软件版本不同,构建部署可能略有差异,但本文未做细分,对稍有经验者应不存在明显障碍。
因软件世界之复杂和个人能力之限,难免疏漏和错误,欢迎指正。

选择Mailu做为邮件服务器的几个考虑

  • 占用资源少而使用成本低;
  • 基本功能相对较全而满足使用;
  • 部署和维护相对简易;
  • 开发者有在积极维护;
  • Maiu2.0可以完全自动化配置新域或添加新用户。有同行提到不支持多域,其实是支持的,之前的一些版本中,应该也是支持多域的,至少部署Mailu2.0后发现确实支持多域。
  • 自主建设拥有更多的可操控性,部署完成后一般维护量比较少。

其实还有一些类似的优秀的邮件服务套件,比如
Axigen Modoboa hMailServer Mail-in-a-Box Zimbra
Apache James
mailcow iRedMail Citadel

尤其推荐考虑下面这几款:
Citadel Modoboa Zimbra mailcow Mailu
Citadel和Modoboa足够全面,可以满足大多数需求。

做为轻量级考虑,本次选择了Mailu。

Mailu的介绍

Mailu 是一个简单但功能齐全的邮件服务器,由一组 Docker 镜像组成。它是免费软件(就像免费啤酒和自由言论一样),欢迎建议和外部贡献。该项目旨在为人们提供一个易于设置、易于维护且功能齐全的邮件服务器,同时不提供专有软件或流行组件中常见的不相关功能。

主要特点包括:
标准电子邮件服务器、IMAP 和 IMAP+、SMTP 和带有客户端自动配置配置文件的提交
高级电子邮件功能、别名、域别名、自定义路由
Web访问、多个Webmail和管理界面
用户特征、别名、自动回复、自动转发、获取帐户
管理功能、全局管理员、公告、每个域委派、配额
安全性、强制 TLS、DANE、MTA-STS、Letsencrypt!、传出 DKIM、防病毒扫描程序、Snuffleupagus、阻止恶意附件
反垃圾邮件、自动学习、灰名单、DMARC 和 SPF、反欺骗
Freedom,所有 FOSS 组件,不包括跟踪器。

硬件环境

参考:https://mailu.io/2.0/compose/requirements.html
Mailu 提供了多架构映像,旨在在 linux/amd64、linux/arm64v8 或 linux/armv7 硬件上运行,因此只要提供足够的电源,它就可以在几乎任何云服务器上运行。

硬件注意事项
应该确保您的硬件(虚拟或物理)与最新的 Linux 内核兼容。所需的最小内存和交换空间为:
使用防病毒软件 (clamav) 时:
3GB内存
1GB 交换空间

实践偿试了1核1G,确实卡住了,不行,真的需要至少3GB内存+1GB交换。

不使用防病毒软件 (clamav) 时:
1GB内存
1GB 交换空间
采用1核2G,能勉强支撑,建议2核2G。

虽然不采用clamav,但是可以启用Oletools,
Oletools scans documents in email attachements for malicious macros. It has a much lower memory footprint than a full-fledged anti-virus.
Oletools 扫描电子邮件附件中的文档是否存在恶意宏。 与成熟的防病毒软件相比,它的内存占用要低得多。

系统环境

由于大多数测试都在 Debian 稳定版上运行,因此建议将其中之一用于基本系统。然而,Mailu 应该能够在任何docker官方支持的发行版上运行。
实践中采用了AlmaLinux9。

存储环境

如果您选择创建专用分区,只需将其安装到 /var/lib/docker. 您还可以创建一个单独的分区(ext4是一个合理的默认分区)并将其挂载以/mailu存储电子邮件数据。
Docker 支持AUFS over ext4和btrfs作为稳定的存储驱动程序。
官方没有提到容量大小,10个账户轻度使用条件下,至少应规划50GB,考虑到其它因素,推荐100GB。

网络环境

Maiu将侦听25、80、110、143、 443、465、587、993和995

如果主机有侦听这些端口,应该禁用,例如,在默认的 Debian 安装上:
apt-get autoremove --purge exim4 exim4-base

Docker 严重依赖iptables端口转发。您应该使用iptables-persistent(或其他系统上的任何等效工具)来管理持久性规则。如果你有足够的勇气切换到 nftables,你将不得不回滚,直到 Docker 发布官方支持或设置你自己的规则集。

实践中采用AlmaLinux9和Firewalld防火墙。

向运营商申请取消电子邮件发送限制

电子邮件服务已经发展很多年了,MTA之间仍然有采用25端口中继,不幸地是,近些年运营商通常默认是禁止25端口通信的,这需要申请,并证明你有足够的能力和措施管控好安全。
据我所知,在某些运营商申请是比较困难的,如果合作比较深,比如消费较高,或另选择非头部运营商,是可能可行的。

域名和解析

设置DNS参考:https://mailu.io/2.0/dns.html#dns-setup
在开始使用 Mailu 之前,您必须至少设置一个域才能接收电子邮件。
A记录:
mail.mydomain.com. IN A a.b.c.d

MX条目:
mydomain.com. IN MX 10 mail.mydomain.com.

PTR记录:
For a mail system, it’s highly recommended to set up reverse DNS as well. That means, if your hostname mail.mydomain.com resolves to a.b.c.d, the IP a.b.c.d should also resolve back to the same hostname.
先设置正向解析,nslookup可查
nslookup mail.mydomain.com
a.b.c.d
然后配置反向 DNS
反向 DNS 必须由 IP 地址的“所有者”(通常是您的托管提供商)设置。大多数情况下你都可以用whois来查找。whois a.b.c.d

host -t PTR a.b.c.d
dig -t PTR a.b.c.d
nslookup -ty=PTR a.b.c.d
nslookup -q=PTR a.b.c.d

如果反向 DNS 设置不正确,大多数邮件系统都会将您的电子邮件视为垃圾邮件而拒绝。

DKIM/SPF 和 DMARC 条目
最后,您需要访问管理仪表板(或使用 cli)来重新生成 DMARC、SPF 和 DKIM 记录。
一旦 DNS 更改传播到您的主机(并且 SSL/域规则设置正确),请访问您的管理仪表板https://example.com/admin/domain/details/example.com。单击重新生成密钥并将所需的记录添加到您的 DNS 提供商。如果您已启用 DKIM/SPF/DMARC 但未添加这些条目,您的邮件可能无法送达。

安装 Docker

Mailu 依赖于一些最新的 Docker 功能。因此,您应该从官方存储库而不是发行版安装 Docker。
Docker 网站有很多关于安装的详细说明。默认配置应该适合Mailu。
此外,如果您计划使用 Compose 风格,则必须按照Docker 网站上的说明安装Compose v2。Compose 是 Docker 的管理工具,特别适合 Mailu 等多容器系统。

#添加仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#安装,To install the latest version, run:
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

#Start Docker.
sudo systemctl enable docker
sudo systemctl start docker

#Verify that the Docker Engine installation is successful by running the hello-world image.
sudo docker run hello-world

Docker Compose 设置

Mailu 会将其所有持久数据存储在您选择的路径中(默认情况下是/mailu),只需创建目录并移动到那里:
mkdir /mailu
cd /mailu

创建配置文件
Docker Compose 配置存储在名为docker-compose.yml. 此外,Mailu 依赖于一个mailu.env文件来进行各种设置。这两个文件都可以由mailu 设置实用程序(https://setup.mailu.io/2.0/)生成。
信息填写必要说明:
为信息安全,web客户端地址目录(默认是/webmail)、web管理地址(默认是/admin)和API地址(默认是/api)都建议使用随机字符串;
管理员账号可不必变更;
客户端路径/webmail有roundcube和snappymail两个选择,大都推荐前者。

按提示填写相关信息,生成docker-compose.yml和mailu.env后,有提供下载链接,
在大多数情况下,mailu.env的设置可以保持原样。不过,可以通过修改此文件来完成一些高级设置或修改。

编排docker(安装mailu)

docker compose -p mailu up -d

Before you can use Mailu, you must create the primary administrator user account. This should be mgbgld@pumdl.com. Use the following command, changing PASSWORD to your liking:
docker compose -p mailu exec admin flask mailu admin mgbgld pumdl.com PASSWORD

清理(卸载)

如果您发现配置不如意,当前也不存在需要保留的数据,可以清理掉,重头再来
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)

创建管理账户

最后,您需要一个管理员用户帐户。
您可以让系统自动创建它:使用环境变量,如管理员帐户 - 自动创建INITIAL_ADMIN_*中所述
否则,如果您不采用自动方式,则需要立即手动创建管理员帐户:

docker compose exec admin flask mailu admin me example.net ‘password’
这将创建一个me@example.net以密码password和管理权限命名的用户。连接到 Web 管理界面并将密码更改为强密码。

至关重要的是,要么存在与POSTMASTER您的mailu.env电子邮件地址相同的用户,要么您在登录后记得用该名称创建一个别名。如果不这样做,就会出现各种奇怪的错误!

使用外部反向代理

参考:https://mailu.io/2.0/reverse.html
所有选项都需要您修改docker-compose.yml和mailu.env文件。
以nginx做为反向代理可参考:https://mailu.io/2.0/reverse.html#have-mailu-web-frontend-listen-locally
实践中,我并没有采用外部nginx,而采用mailu部署的一个具备nginx功能的docker容器。

数据库

默认情况下 Mailu 使用 SQLite 数据库。可以使用替代数据库解决方案,例如 PostgreSQL 和 MySQL/MariaDB。
Mailu 数据库包含静态数据。SQLite足以满足Mailu的任何部署场景。无需使用不同的数据库系统。Mailu开发团队推荐使用SQLite。
实践中,保持默认的SQLite。

升级邮件服务器

可参考:https://mailu.io/2.0/maintain.html#upgrading-the-mail-server
暂未实践

监控邮件服务器(日志查看)

参考:https://mailu.io/2.0/maintain.html#monitoring-the-mail-server
cd /mailu; docker compose logs
动态显示最后100行:docker compose logs --tail=100 -f
显示最后100行:docker compose logs --tail=100

管理外部 Let’s Encrypt 证书

参考:https://mailu.io/2.0/maintain.html#managing-of-external-let-s-encrypt-certificates
当您不使用letsencryptMailu 的嵌入选项时,您无法在目录中使用它的符号链接功能letsencrypt/live。您应该注意,每次续订后,都会将新证书复制到容器中/mailu/certs,并重新加载容器中的nginx进程。front

对于certbot,您可以编写一个脚本作为部署钩子执行。例子:
#!/bin/sh
cp /etc/letsencrypt/live/domain.com/privkey.pem /mailu/certs/key.pem || exit 1
cp /etc/letsencrypt/live/domain.com/fullchain.pem /mailu/certs/cert.pem || exit 1
docker exec mailu-front-1 nginx -s reload

您将在 crontab 中使用的 certbot 命令如下所示:
52 0,12 * * * root /usr/bin/certbot renew --deploy-hook /path/to/script.sh

Mailu可能会自动续签SSL证书,实践中,因为在内网,必须采用外部方案续签,或者叫更换证书,但没有采用certbot,而采用acme方案,自动定期更换SSL证书和重载HTTP服务,注意更换证书有好几个地方,假设证书已经获取并拷贝到/mailu/certs/letsencrypt/archive/mailu/目录,示例如下:

cd /mailu/certs/letsencrypt/archive/mailu/; mv -f domain.com.key privkey1.pem; mv -f fullchain.cer fullchain1.pem; mv -f ca.cer chain1.pem; mv -f domain.com.cer cert1.pem; /bin/cp -ap * ../mailu-ecdsa/; /bin/cp -ap fullchain1.pem ../../live/mailu/nginx-chain.pem; /bin/cp -ap fullchain1.pem ../../live/mailu-ecdsa/nginx-chain.pem; docker restart mailu-front-1

这可以写到自动计划任务里面去。
后面会单独整理acme跨机全自动实现SSL证书续签的文档。
关于ACME方案的中文帮助:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E

网络管理界面

当在设置实用程序中启用管理 GUI 或通过在mailu.env中手动设置ADMIN=true时,默认情况下通过 URL
(https://domain.com/admin) 访问管理 GUI 。前面若修改了uri地址,这里要做相应的变更。要登录管理 GUI,请输入用户的电子邮件地址和密码。
多域支持:
轻量级全功能开源免费Mailu邮件服务器部署,# Docker,Linux系统运维,开源,信息与通信,运维,linux

垃圾邮件过滤

https://mailu.io/2.0/antispam.html#spam-filtering
Mailu 使用 Rspamd 进行垃圾邮件过滤。Rspamd 是一个快速、免费、开源的垃圾邮件过滤系统。
Rspamd 拒绝不合规的电子邮件和包含病毒的电子邮件。在Mailu中,Rspamd使用从0到15的评分范围。以下值是默认值,可以在Rspamd WebUI内的选项卡配置下进行更改:
分数为 15 或更高的电子邮件将被拒绝。
分数为 6 或更高的电子邮件将收到带有垃圾邮件分数的标头。
分数为 4 或更高的电子邮件将被列入灰名单。
分数为 3 或更低的电子邮件将被接受。

下面是反垃圾邮件功能统计图:
轻量级全功能开源免费Mailu邮件服务器部署,# Docker,Linux系统运维,开源,信息与通信,运维,linux

测试

邮件可信任测试

在线测试网站:https://www.mail-tester.com/

迁移(备份)实例

SMTP 协议具有嵌入式重试机制和可以服务于单个域的多个 MX,因此大多数迁移过程或维护过程不需要任何特定的照顾。

Mailu 严重依赖文件来存储所有内容,这有助于基于文件同步执行的迁移过程。

建议的迁移过程包括设置一个新的备份服务器来删除传入的电子邮件(Mailu 未启动的)、同步两个服务器、停止主服务器并启动备份服务器。然后,备份服务器切换为主 MX,并删除旧服务器。

步骤:

  • 准备好你的新服务器,将你的docker-compose.yml、.env、基本配置文件复制到服务器上,这样就可以开始配置Mailu了,不要启动Mailu
  • 设置您的 DNS,使备份服务器成为该域的额外的、优先级较低的 MX;如果您服务多个域,这可能会很复杂,在这种情况下,您可以简单地接受某些远程 MX 将重试几分钟,跳过此步骤
  • 当您的 DNS TTL 过期并且您的修改传播时,开始将您的data,dkim,mail等,同步到新服务器,重复直到仅同步几个文件。
  • 在旧服务器上停止Mailu,并在没有进程写入文件时最后运行一次rsync。
  • 在新服务器上启动Mailu,生产应该恢复正常。
  • 将您的新服务器设置为域的主MX,如果您没有设置其他MX,请确保您更改的MX、A、AAAA记录正确。

基于上述迁移步骤,可以做成一个备份恢复方案。

另一个备份恢复方案是,备份所有容器,导出,导入,恢复数据,启动容器实例,相应的解析变更。

邮件客户端

推荐一款,thunderbird,开源免费
官网:https://www.thunderbird.net/zh-CN/
android端:K-9 Mail,https://play.google.com/store/apps/details?id=com.fsck.k9

thunderbird的IMAP功能说明

在同步和存储功能中,勾选“在此计算机上保留此账户所有文件夹中的消息”,那么,
一封邮件下载到 Thunderbird 并且在 Thunderbird中被删除。(这封邮件一定会从本地计算机和邮件服务器中都被删除)
每当 Thunderbird 启动时,它会检查 Thunderbird 邮件库和邮件服务器之间的同步状态,然后执行必要的同步(比如从服务器下载新邮件,从服务器删除本地已经删除的邮件等)。

如果要在本地一直保留,或在云端一直保留,应该改用POP3。文章来源地址https://www.toymoban.com/news/detail-786564.html

到了这里,关于轻量级全功能开源免费Mailu邮件服务器部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qat++,轻量级开源C++ Web框架

    目录 一.简介 二.编译Oat++ 1.环境 2.编译/安装 三.试用 1.创建一个 CMake 项目 2.自定义客户端请求响应 3.将请求Router到服务器 4.用浏览器验证 Oat++是一个面向C++的现代Web框架 官网地址:https://oatpp.io github地址:https://github.com/oatpp/oatpp Oat++具有如下特性: ●随处运行 Oat++没有任何

    2024年02月01日
    浏览(70)
  • 轻量级音乐服务器LMS

    本文软件是网友 tommyvinny 推荐的,他在 UNRAID 上安装遇到了权限问题,存在无法建立目录的情况,但似乎在群晖上没遇到。如果你也遇到相似的问题,可以试试命令行模式。 官方体验站点:https://lms-demo.poupon.dev/ 什么是 LMS ? LMS ( Lightweight Music Server )是一款自托管的轻量级

    2024年02月08日
    浏览(44)
  • Gitea:轻量级、开源的Git仓库管理平台

    Gitea是一款开源的、基于Go语言编写的轻量级Git服务器。它提供了类似于GitHub的功能,如代码托管、版本控制、团队协作等,但更加轻便和易于部署。Gitea的设计初衷是为了让团队或个人能够更方便地管理和分享自己的代码,同时不需要花费大量的资源和精力去搭建和维护一个

    2024年04月23日
    浏览(42)
  • C#轻量级日志功能(只有一个类)

    最近在开发基于.net6的一个数据监控软件,使用其它开源log库都有点麻烦,就想着对Console.WriteLine()方法重定向到文件,非常方便的实现日志记录功能,同时也不影响之前的代码结构。 软件开始的地方要设置该重定向:

    2024年01月21日
    浏览(63)
  • 三步配置轻量级服务器nginx

    一款轻量级的 Web服务器,反向代理服务器,以及电子邮件代理服务器 主要有三个优点: 占用内存少,并发能力强 Nginx为性能优化开发,能支持五千个左右的并发响应 (Tomcat只有三百到五百) Nginx支持热部署,可以在不间断服务情况下对软件进行升级(不要用关闭服务器)

    2023年04月24日
    浏览(49)
  • 阿里云轻量级服务器安装docker

    前置知识:需要有一台阿里云服务器(或者自己电脑装虚拟机使用centos) docker理念:\\\"一次封装,到处运行\\\",只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。 docker:解决了运行环境和配置问题的软件容器。方便做持续集成并有助于整体发布的容器

    2023年04月22日
    浏览(65)
  • 一些优秀的开源轻量级TCP/IP协议栈

    以下是一些优秀的开源轻量级TCP/IP协议栈,它们适用于嵌入式设备和其他资源受限的环境: lwIP(lightweight IP):lwIP 是一个非常流行的开源 TCP/IP 协议栈,它专门为嵌入式系统设计,具有低内存占用和高效率的特点。lwIP 具有TCP、UDP、IP、ICMP、ARP、DNS、SNMP、DHCP等协议的支持,

    2024年02月16日
    浏览(51)
  • 腾讯云轻量级服务器哪个镜像比较好?

    腾讯云轻量应用服务器镜像是什么?镜像就是操作系统,轻量服务器镜像系统怎么选择?如果是用来搭建网站腾讯云百科txybk.com建议选择选择宝塔Linux面板腾讯云专享版,镜像系统根据实际使用来选择,腾讯云百科来详细说下腾讯云轻量应用服务器镜像的选择方法: 轻量应用

    2024年02月06日
    浏览(49)
  • 腾讯云轻量级服务器部署(新手图文教程)

    相信不少同学都想将自己的项目部署到云服务器,让别人通过自己的域名就可以访问到自己的项目,而腾讯云轻量级服务器作为一个小型的应用,支持域名解析和可视化运维等。比较适合新手入门,本文服务器操作系统为Centos7。 1.购买方式 本文主要面向新手,毕竟一般只有

    2024年02月10日
    浏览(48)
  • 推荐一款轻量级全栈式开源测试平台!

    1、RunnerGo介绍 今天给大家介绍一个好用的测试平台:RunnerGo(开源)。RunnerGo是一款轻量级、全栈式的测试平台,支持接口管理、场景管理、性能测试、自动化测试等功能。与市面上的性能测试工具不同的是RunnerGo基于go语言研发,更加轻量级。           附上官网和开源链

    2024年02月12日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包