# mailcow **Repository Path**: boyane/mailcow ## Basic Information - **Project Name**: mailcow - **Description**: 搭建mailcow邮箱流程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-16 - **Last Updated**: 2025-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mailcow 搭建流程文档 & 工具 ## 搭建环境流程 ### 安装docker环境 ### MailCow安装 需要使用的端口有:25|80|110|143|443|465|587|993|995|4190 记得云厂商安全组要开放这些端口,服务防火墙不需要。 ```shell git clone https://github.com/mailcow/mailcow-dockerized ``` clone完项目之后,项目下有一个generate_config.sh 的脚本,执行之后填写相关的信息后会生成一个mailcow.conf 如果保持默认的话就会使用默认的配置,我这里需要修改它的默认的http和https的端口,防止和nginx冲突,后续使用nginx做反向代理 ```plain HTTP_PORT=18080 HTTP_BIND=127.0.0.1 HTTPS_PORT=18443 HTTPS_BIND=127.0.0.1 ``` 修改完配置之后,在当前目录下执行docker-compose up -d 运行软件接着就可以进入到web页面进行配置了 ### web配置 用浏览器打开 https://MAILCOW_HOSTNAME:HTTPS_PORT/admin (如果你没改配置文件的话, 不用指定额外端口) 你应该能正常看到Web UI才对, 默认的用户名和密码是: admin,moohoo ![配置位置](./imgs/login.png) 1. 配置邮箱域名 ![配置位置](./imgs/email1.png) ![配置位置](./imgs/email2.png) 2. 解析 根据上面需要的配置,解析域名 ![配置位置](./imgs/email3.png) ![配置位置](./imgs/email4.png) 3. 创建邮箱查看是否能正常使用 ![配置位置](./imgs/email5.png) 创建邮箱后,可以通过qq邮箱发送邮件,如果收到会显示邮件数量。如果没有收到可能是端口放开和域名解析错误。 ![配置位置](./imgs/email6.png) ## mailcow 内置API 可通过api批量管理(增删改查)邮箱 文档地址 `https://mailcow.docs.apiary.io/#reference` 使用前需要先配置API-Key ![配置位置](./imgs/api.png) ## mail-listener 监听邮箱收到邮件。动态添加 / 移除要监听的邮箱。 提供两个接口: /add:添加要监听的邮箱 /remove:停止监听某个邮箱 邮箱收到新邮件 → 调用回调接口(回调地址可以和邮箱一起传) ✅ 用法: 添加要监听的邮箱: ```shell curl -X POST http://localhost:3000/add \ -H 'Content-Type: application/json' \ -d '{ "email": "user1@hutcigar.com", "password": "pass1", "callback": "http://api.hutcigar.com/openness/email/verify" }' ``` 移除监听: ```shell curl -X POST http://localhost:3000/remove \ -H 'Content-Type: application/json' \ -d '{"email": "user1@hutcigar.com"}' ``` ✅ 回调时发送的数据: ```json { "account": "user1@hutcigar.com", "from": "someone@example.com", "subject": "Test Mail", "text": "Mail content..." } ```