#filter #tagging #notmuch #json-file

bin+lib notcoal

不是木炭过滤器,而是notmuch过滤器。notmuch电子邮件系统的过滤器库

5 个版本 (3 个破坏性版本)

0.4.0 2024年4月21日
0.3.0 2018年12月29日
0.2.6 2018年12月14日
0.2.0 2018年11月11日
0.1.0 2018年11月6日

#35电子邮件

Download history 140/week @ 2024-04-19 16/week @ 2024-04-26 1/week @ 2024-05-03 6/week @ 2024-05-17 2/week @ 2024-05-24

每月300 次下载

GPL-3.0 许可证

30KB
514

notcoal - notmuch 过滤器,不是由木炭制成的

Latest release Docs License

notcoal 提供了一个库以及一个独立的二进制文件。后者可以用作 "初始标记" 系统,前者可以集成到更大的电子邮件客户端中,利用 notmuch-rs

是什么?

从 JSON 文件中获取正则表达式规则,如果匹配,则添加新标签、删除标签或运行任意二进制文件进行进一步处理。规则支持 AND 以及 OR 操作。

示例

[{
    "name": "money",
    "desc": "Money stuff",
    "rules": [
        {"from": "@(real\\.bank|gig-economy\\.career)",
         "subject": ["report", "month" ]},
        {"from": "no-reply@trusted\\.bank",
         "subject": "statement"}
    ],
    "op": {
        "add": "€£$",
        "rm": ["inbox", "unread"],
        "run": ["any-binary-in-our-path-or-absolute-path", "--argument"]
    }
}]

这里匹配扩展为

( from: ("@real.bank" OR "@gig-economy.career") AND subject: ("report" AND "month") )
OR
( from: "[email protected]" AND subject: "statement" )

如果应用此过滤器,将执行以下操作

  • 添加标签 €£$
  • 删除标签 inboxunread
  • 运行等价的 /bin/sh -c 'any-binary-in-our-path-or-absolute-path --argument' 并带有 3 个额外的环境变量
NOTCOAL_FILTER_NAME=money
NOTCOAL_FILE_NAME=/path/to/maildir/new/filename
NOTCOAL_MSG_ID=e81cadebe7dab1cc6fac7e6a41@some-isp

过滤器不仅限于匹配 fromsubject 头部(所有这些都被视为不区分大小写),还可以尝试匹配任意头部。

此外,还有特殊的匹配字段

  • @path: 匹配消息的完整路径
  • @tags: 匹配先前过滤器设置的标签
  • @thread-tags: 匹配消息线程中已存在的标签
  • @attachment: 匹配附件名称
  • @attachment-body: 匹配每个 text/plain 附件的主体
  • @body: 匹配消息的主体

默认的 notcoal::filter 函数会遍历消息,然后按定义的顺序测试/应用过滤器。因此,任何想要匹配的标签都必须由之前的匹配规则设置。

独立使用用于“初始标记”

要安装独立的辅助二进制文件,最简单的方法是

cargoinstall --lockednotcoal --features=standalone

notcoal将使用与notmuch本身相同的默认数据库,默认的规则文件位置在$notmuchdb/.notmuch/hooks/notcoal-rules.json。它还期望所有新添加的消息(需要过滤的消息)都带有new标记。为了确保设置正确,请编辑您的.notmuch-config以包含

[new]
tags=unread;inbox;new;

此外,notcoal将尊重配置文件的maildir同步设置。

有关提供替代值的信息,请参阅notcoal --help

如果您对默认值满意,可以将$notmuchdb/.notmuch/hooks/post-new符号链接到notcoal二进制文件。

谢谢

vhdirknotmuch-rs,使得这个crate成为可能,korrat为更合理的数据库发现补丁,antifuchs' gmail-britta为命名灵感,以及Recurse Center,为创建一个支持性的环境💟

依赖关系

~8–20MB
~292K SLoC