listmonk: 开源高性能自托管邮件列表利器

项目概述

listmonk 是一款高性能的自托管新闻通讯与邮件列表管理系统,使用 Go 开发并以单一二进制文件分发,数据存储在 PostgreSQL 中。它的目标是为希望掌控数据与投递流程的团队提供稳定、可扩展的群发解决方案。listmonk 解决了传统邮件服务在性能、可扩展性与隐私控制上的痛点,支持大量订阅者的高并发投递、现代化仪表盘、模板编辑、投递调度与关键统计分析,同时可通过 Docker 或单二进制快速部署与升级。独特之处在于把高吞吐、易运维和可定制性结合,既适合企业自建邮件平台,也满足对开源和数据主权有强烈需求的使用场景,项目采用 AGPLv3 开源许可。

项目截图

项目统计

:bar_chart: 项目概况

:star: 17792 Stars | :fork_and_knife: 1742 Forks | :eyes: 17792 Watchers | :bug: 96 Issues

:page_facing_up: 开源协议: GNU Affero General Public License v3.0 | :date: 创建于: 2019-06-26 | :counterclockwise_arrows_button: 更新于: 2025-09-13

:laptop: 技术栈

该项目主要使用 Go 开发,占代码库的 39.7%。此外还包含 Vue (24.7%)、JavaScript (20.9%)、TypeScript (9.2%)

核心功能

  • listmonk 是一款高性能、自托管的通讯与邮件列表管理器:单一二进制运行、启动迅速,配有现代化仪表盘,使用 PostgreSQL 作为数据后端,适合大规模发送与稳定运行。
  • 核心功能亮点:
    • 单文件部署与 Docker 支持,安装/升级命令可自动初始化或更新数据库,运维更省心。
    • 创建与管理订阅列表、批量发送通讯,支持调度发送与发送策略,便于精准投递。
    • 模板编辑、分组/分段、SMTP 集成与高并发投递支持,丰富的统计面板让你即时掌握打开率、点击率与退订情况,便于优化运营。
  • 更多功能特性正在不断完善中,让日常群发既高效又可控,是开发者与运营者的利器。

项目截图

技术架构

listmonk 使用 Go 语言实现,提供单二进制可执行文件和 Docker 镜像,后端以 PostgreSQL 作为主数据存储。核心技术选型强调性能与易运维:Go 带来高并发与单文件部署便利,Postgres 提供事务性、索引与复杂查询能力。架构采用无状态应用 + 外部数据库的模式,UI/API、邮件调度与管理功能在同一进程内运行,批量发送通过内置调度或与外部队列协同完成。常见部署为 Docker Compose 或直接运行二进制并连接外部 SMTP、队列与监控服务。该设计兼顾高吞吐、可水平扩展、低运维成本与良好可观测性(日志与指标易于接入)。简要架构流程:客户端 → listmonk(HTTP UI/API、调度) → PostgreSQL;外发链路 → SMTP/HTTP 发送端 或 外部队列。

使用指南

下面是快速上手 listmonk 的实用指南,包含安装、常用命令和配置示例,方便新手立即开始使用。

  • Docker(推荐)

    • 下载并运行示例 compose:
    curl -LO https://github.com/knadh/listmonk/raw/master/docker-compose.yml
    docker compose up -d
    
  • 二进制安装

    • 下载最新 release,解压后生成配置并安装:
    ./listmonk --new-config     # 生成 config.toml
    # 编辑 config.toml,配置数据库与 SMTP
    ./listmonk --install        # 初次建库
    ./listmonk                  # 启动服务
    
    • 升级数据库:
    ./listmonk --upgrade
    
  • config.toml 核心示例

    [web_server]
    bind_addr = "0.0.0.0:9000"
    
    [db]
    host = "localhost"
    port = 5432
    user = "listmonk"
    password = "pass"
    database = "listmonk"
    
    [smtp]
    host = "smtp.example.com"
    port = 587
    username = "you"
    password = "secret"
    

快速使用提示:

  • 在 UI 中创建列表(List),通过 CSV 导入订阅者或用 API 批量添加。
  • 在 Settings 配置 SMTP 发信参数,测试发送。
  • 使用 Campaigns 创建邮件活动,先发送测试邮件,确认无误后群发。
  • 可通过 API 自动化订阅、取消订阅和发送流程,详见官方文档。

总结评价

listmonk 是一款高性能、单二进制的自托管邮件列表与简报管理器(Go + PostgreSQL)。在 GitHub 上约 17792 星,社区活跃,文档与 Docker 支持齐全。项目亮点包括简洁部署、高并发发送、现代化仪表盘和开源许可(AGPLv3)。用户普遍对性能与易用性评价良好,但对企业级送达率、报表深度和多租户支持有更多期待。建议中小团队或有自托管需求的用户优先考虑;大规模投放前需评估传输策略、扩展性与运维能力。未来可在自动化分析、发送器集成与企业功能上进一步完善。