rcs_quikmail

查看源码
2025-5-11
Words 2044Read Time 6 min
Score:85

基于MCP协议的邮件服务器,支持自然语言处理和量子加密,确保邮件发送的安全性和便捷性。

MCP 邮件服务

一个安全的模型上下文协议(MCP)服务器和客户端应用程序,用于发送电子邮件,具有后量子加密(CRYSTALS-Kyber、Falcon、SPHINCS+)、AES-256-GCM 加密以及基于 spaCy 的自然语言处理(NLP)功能,用于解析用户请求。该服务专为 Ubuntu Linux 设计,确保量子安全的通信和强大的电子邮件处理能力。

目录

  • 功能
  • 前提条件
  • 环境设置
  • 依赖安装
  • 配置
  • 安装
  • 使用
  • 使用示例
  • 安全性
  • 故障排除
  • 贡献
  • 许可证

功能

  • 后量子加密:使用 CRYSTALS-Kyber 进行密钥交换,Falcon 用于数字签名,SPHINCS+ 作为备用签名算法。
  • 安全加密:采用 AES-256-GCM 对消息进行认证加密。
  • 自然语言处理:利用 spaCy(en_core_web_sm)对电子邮件请求进行稳健解析。
  • 真实邮件发送:与 SMTP 服务器(如 Gmail)集成,实现实际邮件发送。
  • 异步通信:基于 asyncio 构建,实现高效的服务器-客户端交互。
  • Ubuntu Linux 支持:针对 Ubuntu 22.04+ 进行优化,并提供详细的设置说明。

前提条件

  • 操作系统:Ubuntu Linux 22.04 或更高版本。
  • Python:3.8 或更高版本。
  • 网络连接:用于发送邮件和安装依赖。
  • Git:用于克隆仓库。
  • SMTP 账户:有效的电子邮件账户(如 Gmail,需生成应用密码)用于发送邮件。

环境设置

  1. 更新系统
    1. 安装系统依赖
      1. 克隆仓库

        依赖安装

        该应用程序依赖于 Python 库,以及可选的后量子加密 C 库。所有依赖项通过提供的 setup.sh 脚本安装。

        Python 依赖

        • pqcrypto==0.1.1:后量子加密(Kyber、Falcon、SPHINCS+)。
        • pyyaml==6.0.1:YAML 配置解析。
        • spacy==3.7.2:用于处理用户请求的 NLP。
        • cryptography==42.0.5:AES-256-GCM 加密。

        可选的 C 库

        • liboqs:如果 pqcrypto 的 wheel 文件不可用,则需要编译此库。安装脚本会在需要时自动编译。

        安装步骤

        1. 运行安装脚本
          1. 该脚本会:
            • 创建虚拟环境(venv)。
            • requirements.txt 安装 Python 依赖。
            • 下载 spaCy 的 en_core_web_sm 模型。
            • 如果 pqcrypto 安装失败,则编译 liboqsliboqs-python
            • 验证 pqcryptocryptography 的安装。
        1. 激活虚拟环境

          配置

          1. 服务器配置
              • 编辑 server/config.yaml
                • 邮件设置
                  • user:您的电子邮件地址。
                  • password:应用密码(对于 Gmail,请在 Google 账户设置中的“安全性”>“两步验证”>“应用密码”中生成)。
                  • serverport:您的 SMTP 服务器详细信息(例如,Gmail 使用 smtp.gmail.com:587)。
            1. 客户端配置
                • 编辑 client/config.yaml
                  • 设置 hostport 以匹配服务器的配置。
              1. 保护配置文件
                  • 确保 server/config.yaml 受到保护(例如,使用 chmod 600 server/config.yaml),因为它包含敏感凭证。

              安装

              在设置环境和依赖项后:
              1. 验证虚拟环境
                1. 测试配置
                    • 确保 server/config.yamlclient/config.yaml 配置正确。
                    • 验证对 SMTP 服务器的网络访问。

                使用

                1. 启动应用程序
                    • 这将在后台启动 MCP 服务器,并在前台启动客户端。
                    • 或者,单独运行:
                  1. 与客户端交互
                      • 客户端会提示输入自然语言请求。
                      • 输入类似以下内容的请求:“Send an email to user@example.com with subject Hello and message This is a test.”
                      • 输入 quit 退出。
                  1. 服务器日志
                      • 服务器将连接和错误信息打印到控制台。
                      • 检查日志以调试问题。

                  使用示例

                  客户端使用 spaCy 处理自然语言请求。以下是示例输入及其结果:
                  1. 基本邮件
                      • john.doe@example.com 发送主题为“Default Subject”、内容为“Hello, how are you?”的邮件。
                  1. 带主题的邮件
                      • jane@example.com 发送主题为“Meeting Tomorrow”、内容为“Let's meet at 10 AM.”的邮件。
                  1. 复杂请求
                      • test@example.com 发送主题为“Project Update”、内容为“Please review the latest report.”的邮件。
                  1. 无效邮件
                      • 默认将邮件发送到 default@example.com

                  安全性

                  • 后量子加密
                    • CRYSTALS-Kyber (ML-KEM):确保密钥交换的量子安全性。
                    • Falcon:提供主要的数字签名用于认证。
                    • SPHINCS+:作为备用签名算法,提供冗余。
                  • 对称加密
                    • AES-256-GCM:使用从 Kyber 派生的密钥确保消息的机密性、完整性和真实性。
                  • 配置安全性
                    • 保护 server/config.yaml 以保护邮件凭证。
                  • 网络安全
                    • 在受信任的网络上运行服务器,或将其置于防火墙后。
                    • 考虑为 SMTP 连接启用 TLS(Gmail 已默认启用)。

                  故障排除

                  • 邮件发送失败
                    • 验证 server/config.yaml 中的凭证和 SMTP 设置。
                    • 确保邮件提供商允许应用密码(对于 Gmail,需启用两步验证)。
                    • 检查服务器日志中的 SMTP 错误。
                  • pqcrypto 安装失败
                    • 再次运行 setup.sh 以编译 liboqsliboqs-python
                    • 确保已安装 cmakeninja-build
                  • spaCy 问题
                    • 验证 en_core_web_sm 模型:python -m spacy download en_core_web_sm
                    • 检查是否有足够的内存(spaCy 需要约 200MB)。
                  • 连接错误
                    • 确保 client/config.yaml 中的 hostport 与服务器配置匹配。
                    • 检查服务器是否正在运行(ps aux | grep mcp_server.py)。
                  • 一般调试
                    • 分别运行服务器和客户端以隔离问题。
                    • 通过在 mcp_server.pymcp_client.py 中添加 print 语句启用详细日志。

                  贡献

                  欢迎贡献!请按照以下步骤操作:
                  1. Fork 仓库。
                  1. 创建特性分支(git checkout -b feature/your-feature)。
                  1. 提交更改(git commit -m 'Add your feature')。
                  1. 推送到分支(git push origin feature/your-feature)。
                  1. 打开 Pull Request。
                  请确保代码遵循 PEP 8 规范,并在适用时包含测试。

                  许可证

                  本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
                  上一篇
                  redshift-utils-mcp
                  下一篇
                  curl-mcp