procmail 是否会根据 to: 对收到的电子邮件进行“标记”,但前提是该电子邮件尚未被标记?

procmail 是否会根据 to: 对收到的电子邮件进行“标记”,但前提是该电子邮件尚未被标记?

因此,如果您已经看到/使用过mailman,您就会知道它会在[groupname]通过它发送的电子邮件的主题行中添加一个标签(如果该标签尚不存在)。

这能用吗procmail

我家里有一台运行着的电子邮件机exim。我有几个电子邮件别名,它们只是将电子邮件转发给我,或者有时转发给我和我的妻子。

如果这些电子邮件带有主题标签,我可以轻松使用它来搜索/过滤这些电子邮件,那就太好了。类似于mailman[groupname]主题标题中,但我不需要/不需要所有的功能mailman

请注意,我的电子邮件客户端将不是这样做。我真的很想/需要/喜欢在电子邮件服务器上这样做。

答案1

基本上,您需要在邮件服务器上拥有 shell 访问权限才能在那里运行 Procmail。如果您确实拥有所需的权限,那么执行您要求的操作就很简单,尽管您的要求有点不清楚。

如果尚不存在,我会假设您想要添加[groupname]到消息中。[email protected]

:0fhw
*   ^From: groupname-list@example\.net\>
* ! ^Subject:( Re:)? *\[groupname]
*   ^Subject:\/.+
| formail -I "Subject: [groupname]$MATCH"

标志f表示通过在操作中过滤管道来修改标题;意味着h操作仅适用于标题(以减少来回复制未修改的数据量);并且w表示检查操作是否成功。

特殊的正​​则表达式标记\/导致其后的匹配被捕获到特殊变量中MATCH

因为点和左方括号是正则表达式元字符,所以我们需要一个反斜杠来逐字匹配它们。\>单词边界确保net在较长的地址(例如)中不会部分匹配,[email protected]尽管它并非完全万无一失([email protected]例如,它仍然会匹配)。

无论如何,您需要将第一个条件替换为与目标邮件标题完全匹配的条件。例如,此处的条件不匹配(因为正则表达式不包含跳过字符上方文本的表达式)。From: List Name <[email protected]><

我希望其余部分应该很容易理解。

相关内容