1
0
Fork 0

feat: Add Stalwart Mail Server (#3667)

This commit is contained in:
Shofi Setiawan 2025-04-15 16:59:22 +07:00 committed by GitHub
parent e066526f88
commit bfbffbd1a5
6 changed files with 300 additions and 0 deletions

57
stalwart-mail/README.md Executable file
View File

@ -0,0 +1,57 @@
# Stalwart 邮件服务器
**Stalwart 邮件服务器** 是一个支持 JMAP、IMAP4、POP3 和 SMTP 的开源邮件服务器解决方案,拥有丰富的现代功能。它使用 Rust 编写,设计注重安全性、速度、稳定性和可扩展性。
---
## 🚀 主要功能
- **完整协议支持**JMAP、IMAP4rev2、POP3、SMTP 及 ManageSieve。
- **高级 SMTP 功能**:内置 DMARC、DKIM、SPF、ARC、TLS 报告支持,灵活的路由与过滤。
- **反垃圾邮件与钓鱼防护**:基于 LLM 的邮件分析、灰名单、垃圾邮件陷阱及 DNSBL 支持。
- **灵活的存储后端**:支持 PostgreSQL、SQLite、Redis、S3、ElasticSearch 等。
- **高安全性**:支持 S/MIME 与 OpenPGP 加密ACME TLS 证书,自适应限流与自动 IP 封锁。
- **可扩展性与高可用性**:支持 Kubernetes分片存储自动故障恢复无单点故障。
- **全面的身份验证支持**OAuth2、OpenID Connect、LDAP、TOTP 双因素认证、ACL 与基于角色的访问控制。
- **监控与管理界面**Web 控制面板Prometheus 指标OpenTelemetry 支持,日志查看器与告警系统。
---
## ⚙️ 安装步骤
1. 安装 Stalwart 时,请确保没有其他应用程序占用相同的端口。如果发生端口冲突(例如与 OpenResty 等 Web 服务器),您可以将 Stalwart 的默认端口更改为其他可用端口。
![](https://i.imgur.com/v8IiDmI.png)
2. 在初始设置过程中,请向下滚动并**启用以下选项**
- ✅ **高级设置**
- ✅ **外部访问**
![](https://i.imgur.com/2wVMb3G.png)
3. 安装完成并启动 Stalwart 后,请**查看应用日志**。如果日志内容类似下图说明安装成功Stalwart 正在运行。
![](https://i.imgur.com/QM1Euld.png)
> 💡 *请保存日志中显示的账户信息,稍后登录时需要使用。*
4. 如果您的系统启用了**防火墙**,请确保使用 **TCP 协议** 打开 Stalwart 所需的端口,以确保邮件服务器正常运行。
![](https://i.imgur.com/4aYSKN2.png)
> ⚠️ *在此示例中,端口 `443` 已被 OpenResty 占用,因此我将 Stalwart 的端口更改为 `8443`。*
5. 设置完成后,在浏览器中打开您之前设置的地址和端口。登录时,请使用**第 3 步日志中显示的用户名和密码**。
![](https://i.imgur.com/0jrSZLt.png)
---
## 📺 高级设置与配置
有关进一步的配置,可以参考以下两个视频:
- https://youtu.be/JA_V0GFUwWc?si=71KKiAV59mUoL0X4
- https://youtu.be/PMoiJktvzDw?si=hVhQxdLuj7PJJALm
📌 *感谢视频创作者 —— 强烈推荐用于入门。*

57
stalwart-mail/README_en.md Executable file
View File

@ -0,0 +1,57 @@
# Stalwart Mail Server
**Stalwart Mail Server** is an open-source mail server solution with JMAP, IMAP4, POP3, and SMTP support and a wide range of modern features. It is written in Rust and designed to be secure, fast, robust and scalable.
---
## 🚀 Key Features
- **Complete Protocol Support**: JMAP, IMAP4rev2, POP3, SMTP, and ManageSieve.
- **Advanced SMTP**: Built-in DMARC, DKIM, SPF, ARC, TLS reporting, and flexible routing & filtering.
- **Anti-Spam & Phishing Protection**: LLM-based analysis, greylisting, spam traps, and DNSBL support.
- **Flexible Backends**: Support for PostgreSQL, SQLite, Redis, S3, ElasticSearch, and more.
- **High Security**: S/MIME & OpenPGP encryption, ACME TLS certificates, rate limiting, and automatic IP blocking.
- **Scalable & Highly Available**: Kubernetes support, sharded storage, auto-recovery, no single point of failure.
- **Comprehensive Authentication**: OAuth2, OpenID Connect, LDAP, TOTP 2FA, ACLs & role-based access.
- **Monitoring & Admin Interface**: Web dashboard, Prometheus metrics, OpenTelemetry support, log viewer & alerts.
---
## ⚙️ Installation Steps
1. When installing Stalwart, make sure no other application is using the same port. If theres a conflict (for example, with a web server like OpenResty), you can change Stalwarts default port to another available one.
![](https://i.imgur.com/v8IiDmI.png)
2. During the initial setup, scroll down and **enable the following options**:
- ✅ **Advanced Settings**
- ✅ **External Access**
![](https://i.imgur.com/2wVMb3G.png)
3. Once the installation is complete and Stalwart is running, **check the application logs**. If they look similar to the example below, it means the installation was successful and Stalwart is now active.
![](https://i.imgur.com/QM1Euld.png)
> 💡 *Make sure to save the account information shown in the logs. Youll need it to log in later.*
4. If your system uses a **firewall**, be sure to open the necessary ports for Stalwart using the **TCP protocol**. This allows the email server to work properly.
![](https://i.imgur.com/4aYSKN2.png)
> ⚠️ *In this example, port `443` is already being used by OpenResty, so I changed Stalwarts port to `8443`.*
5. After setup is complete, open your browser and go to the address and port you selected. Use the **username and password from the logs in step 3** to log in.
![](https://i.imgur.com/0jrSZLt.png)
---
## 📺 Advanced Setup & Configuration
For further configuration, you can follow these two videos:
- https://youtu.be/JA_V0GFUwWc?si=71KKiAV59mUoL0X4
- https://youtu.be/PMoiJktvzDw?si=hVhQxdLuj7PJJALm
> 📌 *Credits to the creators — highly recommended for getting started.*

28
stalwart-mail/data.yml Executable file
View File

@ -0,0 +1,28 @@
name: Stalwart Mail Server
tags:
- 邮件服务
title: 安全且现代的一体化邮件服务器
description: 安全且现代的一体化邮件服务器
additionalProperties:
key: stalwart-mail
name: Stalwart Mail Server
tags:
- Email
shortDescZh: 安全且现代的一体化邮件服务器
shortDescEn: Secure & Modern All-in-One Mail Server
description:
en: Secure & Modern All-in-One Mail Server
ja: 安全で最新の統合型メールサーバー
ms: Pelayan Mel Semua-dalam-Satu yang Selamat & Moden
pt-br: Servidor de E-mail Tudo-em-Um Seguro e Moderno
ru: Безопасный и Современный Универсальный Почтовый Сервер
ko: 안전하고 현대적인 올인원 메일 서버
zh-hant: 安全且現代化的一體化郵件伺服器
zh: 安全且现代的一体化邮件服务器
type: tool
crossVersionUpdate: true
limit: 1
recommend: 0
website: https://stalw.art/
github: https://github.com/stalwartlabs/mail-server
document: https://stalw.art/docs/

BIN
stalwart-mail/logo.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,132 @@
additionalProperties:
formFields:
- default: 443
envKey: PANEL_APP_PORT_HTTPS
label:
en: HTTPS Port
ja: HTTPSポート
ms: Port HTTPS
pt-br: Porta HTTPS
ru: Порт HTTPS
ko: HTTPS 포트
zh-hant: HTTPS 連接埠
zh: HTTPS端口
required: true
type: number
- default: 8080
envKey: PANEL_APP_PORT_HTTP
label:
en: HTTP Port
ja: HTTPポート
ms: Port HTTP
pt-br: Porta HTTP
ru: Порт HTTP
ko: HTTP 포트
zh-hant: HTTP 連接埠
zh: HTTP端口
required: true
type: number
- default: 25
envKey: PORT_SMTP
label:
en: SMTP Port
ja: SMTPポート
ms: Port SMTP
pt-br: Porta SMTP
ru: Порт SMTP
ko: SMTP 포트
zh-hant: SMTP 連接埠
zh: SMTP端口
required: true
type: number
- default: 587
envKey: PORT_SMTP_SUBMISSION
label:
en: SMTP Submission Port
ja: SMTP送信ポート
ms: Port Penyerahan SMTP
pt-br: Porta de Submissão SMTP
ru: Порт отправки SMTP
ko: SMTP 제출 포트
zh-hant: SMTP 提交連接埠
zh: SMTP提交端口
required: true
type: number
- default: 465
envKey: PORT_SMTP_SSL
label:
en: SMTP SSL Port
ja: SMTP SSLポート
ms: Port SMTP SSL
pt-br: Porta SMTP SSL
ru: Порт SMTP SSL
ko: SMTP SSL 포트
zh-hant: SMTP SSL 連接埠
zh: SMTP SSL端口
required: true
type: number
- default: 143
envKey: PORT_IMAP
label:
en: IMAP Port
ja: IMAPポート
ms: Port IMAP
pt-br: Porta IMAP
ru: Порт IMAP
ko: IMAP 포트
zh-hant: IMAP 連接埠
zh: IMAP端口
required: true
type: number
- default: 993
envKey: PORT_IMAP_SSL
label:
en: IMAP SSL Port
ja: IMAP SSLポート
ms: Port IMAP SSL
pt-br: Porta IMAP SSL
ru: Порт IMAP SSL
ko: IMAP SSL 포트
zh-hant: IMAP SSL 連接埠
zh: IMAP SSL端口
required: true
type: number
- default: 110
envKey: PORT_POP3
label:
en: POP3 Port
ja: POP3ポート
ms: Port POP3
pt-br: Porta POP3
ru: Порт POP3
ko: POP3 포트
zh-hant: POP3 連接埠
zh: POP3端口
required: true
type: number
- default: 995
envKey: PORT_POP3_SSL
label:
en: POP3 SSL Port
ja: POP3 SSLポート
ms: Port POP3 SSL
pt-br: Porta POP3 SSL
ru: Порт POP3 SSL
ko: POP3 SSL 포트
zh-hant: POP3 SSL 連接埠
zh: POP3 SSL端口
required: true
type: number
- default: 4190
envKey: PORT_MANAGESIEVE
label:
en: ManageSieve Port
ja: ManageSieveポート
ms: Port ManageSieve
pt-br: Porta ManageSieve
ru: Порт ManageSieve
ko: ManageSieve 포트
zh-hant: ManageSieve 連接埠
zh: ManageSieve端口
required: true
type: number

View File

@ -0,0 +1,26 @@
services:
stalwart-mail:
image: stalwartlabs/mail-server:v0.11.7-alpine
container_name: ${CONTAINER_NAME}
restart: always
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTPS}:443"
- "${PANEL_APP_PORT_HTTP}:8080"
- "${PORT_SMTP}:25"
- "${PORT_SMTP_SUBMISSION}:587"
- "${PORT_SMTP_SSL}:465"
- "${PORT_IMAP}:143"
- "${PORT_IMAP_SSL}:993"
- "${PORT_POP3}:110"
- "${PORT_POP3_SSL}:995"
- "${PORT_MANAGESIEVE}:4190"
volumes:
- ./data:/opt/stalwart-mail
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true