16 个版本 (7 个重大更新)

0.8.0 2024 年 8 月 8 日
0.7.0 2024 年 8 月 7 日
0.6.10 2024 年 8 月 3 日
0.5.1 2024 年 8 月 2 日
0.0.0 2024 年 7 月 24 日

#90 in 电子邮件

Download history 190/week @ 2024-07-22 675/week @ 2024-07-29 346/week @ 2024-08-05

每月 1,211 次下载

自定义许可

50KB
1K SLoC

ma

邮件归档器。从多个账户下载所有邮件到 SQLite 数据库,以进行备份和分析。

用法

环境

  1. 安装 rust: https://www.rust-lang.net.cn/tools/install
  2. 确保 $HOME/.cargo/bin 在你的 $PATH
  3. cargo安装 ma

初始

  1. cd $mail_archive_directory (任何你希望 ma 维护邮件归档的目录)
  2. ma fetch (将生成初始配置文件然后退出失败连接)
  3. 使用你的提供商创建一个应用密码,例如
  4. $EDITOR ma.toml (在生成的配置文件中填写正确的值)
  5. ma fetch (现在应该可以工作了)

常规

git 类似,你可以 cd$mail_archive_directory 或将其作为参数提供给 ma,如下所示

  • ma --dir $mail_archive_directory fetch 来更新
  • sqlite3 $mail_archive_directory/ma.db 以享受使用 SQL 探索你的邮件归档!

待办事项

  • 从所有账户的所有邮箱中获取所有消息
  • 将原始消息存储在基于内容的文件树中 (dump/[hash..2]/[hash].eml.gz)
  • 将标题和文本正文插入 SQLite
  • 存储状态,每个账户每个邮箱的最高查看消息,并避免重新下载
  • 直接将邮件箱和消息位置存入数据库,并将文件树存储重命名为 export
  • 快照(日志?)邮件箱和消息位置
  • 轮询/空闲等待新消息(可能不必要,因为可以定期重新获取)
  • 更新后钩子(可用于自定义通知、聚合查询重新运行等)
  • 超时
  • 并行导入/导出
  • 示例分析
    • 基于Received的路线跟踪图
    • 以频率加权的 -> 到有向图
      • 频率
      • 消息大小
  • 导出到InfluxDB或Grafana可以读取的类似数据库

问题

自动通讯录

鉴于任何名称都可以有任意地址,任何地址都可以有任意名称,如何衡量发送者/接收者身份的信心?

  • 任何名称都可以有任意地址
  • 任何地址都可以有任意名称

依赖关系

~70MB
~1.5M SLoC