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 电子邮件
每月 1,211 次下载
50KB
1K SLoC
ma
邮件归档器。从多个账户下载所有邮件到 SQLite 数据库,以进行备份和分析。
用法
环境
- 安装 rust: https://www.rust-lang.net.cn/tools/install
- 确保
$HOME/.cargo/bin
在你的$PATH
中 cargo安装 ma
初始
cd $mail_archive_directory
(任何你希望ma
维护邮件归档的目录)ma fetch
(将生成初始配置文件然后退出失败连接)- 使用你的提供商创建一个应用密码,例如
- Google/Gmail: https://myaccount.google.com/apppasswords
- Fastmail: https://app.fastmail.com/settings/security/integrations
- Runbox: https://runbox.com/mail/account_security
$EDITOR ma.toml
(在生成的配置文件中填写正确的值)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