logo
0
0
WeChat Login

📧 私有邮件服务器系统

一个完全独立的Python邮件服务器系统,内置SMTP/IMAP服务器,所有邮件存储在本地,完全私有化部署。

✨ 特性

  • 内置SMTP服务器 - 端口25(标准)和587(TLS)
  • 内置IMAP服务器 - 端口143(标准)和993(SSL)
  • 完全私有 - 所有邮件存储在本地数据库
  • 自定义域名 - 支持任意域名配置
  • Web管理界面 - 简洁易用的管理界面
  • 多用户支持 - 每个用户可以管理多个域名和邮箱
  • 邮件客户端兼容 - 支持Outlook、Thunderbird等标准邮件客户端

🚀 快速开始

系统要求

  • Python 3.7+
  • 开放端口:25, 587, 143, 993, 5000

安装步骤

  1. 安装依赖
pip install -r requirements.txt
  1. 启动服务器
python app.py
  1. 访问管理界面
http://localhost:5000

默认账号:

  • 用户名:admin
  • 密码:admin123

📋 使用流程

1. 添加域名

登录后进入控制台,点击"添加域名",输入您的域名(如:example.com)

系统会自动生成MX记录:mail.example.com

2. 配置DNS

在您的域名DNS管理中添加以下记录:

类型:A 名称:mail 记录值:您的服务器IP地址 类型:MX 名称:@ 记录值:mail.example.com 优先级:10 类型:TXT 名称:@ 记录值:"v=spf1 mx -all"

3. 创建邮箱账户

点击"创建邮箱",输入邮箱地址和密码

例如:

4. 收发邮件

Web界面

  • 点击"写邮件"发送邮件
  • 点击"收件箱"查看收到的邮件
  • 点击"已发送"查看已发送的邮件

邮件客户端配置

在Outlook、Thunderbird等邮件客户端中配置:

SMTP(发送)

  • 服务器:smtp.yourdomain.com
  • 端口:25 或 587
  • 用户名:完整的邮箱地址
  • 密码:邮箱密码

IMAP(接收)

  • 服务器:imap.yourdomain.com
  • 端口:143 或 993
  • 用户名:完整的邮箱地址
  • 密码:邮箱密码

🔧 服务器信息

服务服务器地址端口说明
SMTP (标准)smtp.yourdomain.com25标准SMTP端口
SMTP (TLS)smtp.yourdomain.com587STARTTLS加密
IMAP (标准)imap.yourdomain.com143标准IMAP端口
IMAP (SSL)imap.yourdomain.com993SSL加密连接
Web管理-5000Web管理界面

📁 项目结构

/workspace/ ├── app.py # 主应用文件(Flask + SMTP服务器) ├── imapserver.py # IMAP服务器实现 ├── requirements.txt # Python依赖 ├── mailserver.db # SQLite数据库(自动生成) └── templates/ # HTML模板 ├── base.html # 基础模板 ├── login.html # 登录页 ├── register.html # 注册页 ├── dashboard.html # 控制台 ├── compose.html # 写邮件 ├── inbox.html # 收件箱 ├── sent.html # 已发送 ├── view_email.html # 查看邮件 └── server_status.html # 服务器状态

🔐 安全建议

  1. 修改默认密码

    • 登录后立即修改admin密码
  2. 使用HTTPS

    • 在生产环境中配置SSL证书
    • 修改SECRET_KEY为随机字符串
  3. 防火墙配置

    # 开放SMTP端口 sudo ufw allow 25/tcp sudo ufw allow 587/tcp # 开放IMAP端口 sudo ufw allow 143/tcp sudo ufw allow 993/tcp # 开放Web端口 sudo ufw allow 5000/tcp
  4. 定期备份

    # 备份数据库 cp mailserver.db mailserver.db.backup

📊 数据库说明

User

用户表 - 存储系统用户

Domain

域名表 - 存储用户的域名配置

EmailAccount

邮箱账户表 - 存储邮箱账户信息

Email

邮件表 - 存储所有邮件内容

  • from_email: 发件人
  • to_email: 收件人
  • subject: 主题
  • body: 邮件正文
  • raw_email: 原始邮件
  • folder: 文件夹(INBOX/SENT/TRASH)
  • read: 是否已读
  • sent_at: 发送时间

🌐 客户端兼容性

本服务器兼容所有支持标准SMTP/IMAP协议的邮件客户端:

  • Microsoft Outlook
  • Mozilla Thunderbird
  • Apple Mail
  • Windows Mail
  • Foxmail
  • Spark
  • Airmail

❓ 常见问题

Q: 邮件无法发送?

A: 检查以下几点:

  1. SMTP服务器是否正在运行(查看服务器状态)
  2. 防火墙是否开放了25和587端口
  3. DNS的MX记录是否正确配置

Q: 无法接收邮件?

A: 检查以下几点:

  1. IMAP服务器是否正在运行
  2. 邮箱账户是否正确创建
  3. 发件人的邮件服务器是否能连接到您的服务器

Q: 端口被占用?

A: 修改app.py中的端口配置:

SMTP_PORT = 2525 # 改为其他端口 SMTP_TLS_PORT = 587 IMAP_PORT = 1143

Q: 如何部署到生产环境?

A: 建议使用:

  1. Gunicorn作为应用服务器
  2. Nginx作为反向代理
  3. 配置SSL证书
  4. 使用systemd管理服务

🚀 生产环境部署

使用systemd管理服务

创建 /etc/systemd/system/mailserver.service:

[Unit] Description=Private Mail Server After=network.target [Service] Type=simple User=youruser WorkingDirectory=/path/to/mailserver ExecStart=/usr/bin/python3 /path/to/mailserver/app.py Restart=always RestartSec=10 [Install] WantedBy=multi-user.target

启动服务:

sudo systemctl daemon-reload sudo systemctl start mailserver sudo systemctl enable mailserver

Nginx反向代理

server { listen 80; server_name mail.yourdomain.com; location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

📞 技术支持

如有问题,请提交Issue或查看项目文档。

📄 许可证

MIT License

🙏 致谢

  • Flask - Web框架
  • aiosmtpd - SMTP服务器
  • SQLAlchemy - ORM

注意: 这是一个开源项目,仅用于学习和个人使用。在生产环境中使用前请确保进行充分测试和安全加固。

About

No description, topics, or website provided.
Language
HTML64.5%
Python33.1%
Shell0.9%
Dockerfile0.5%
Others1%