用“notmuch”标记邮件将其标记为旧邮件

用“notmuch”标记邮件将其标记为旧邮件

在与本地 maildir 收件箱同步并使用+offlineimap执行垃圾邮件过滤和排序后,我使用 标记邮件存储中的邮件。fdmbogofilternotmuch

直到最近,我还使用以下 shell 代码根据某些条件来标记和重新标记消息:

notmuch new

tr -s '\t' ' ' <<'END_BATCH' | notmuch tag --batch
-inbox +sent            -- folder:/Sent/
-inbox +archive         -- folder:/Archive/
-inbox +junk            -- folder:/Junk/
+unsorted               -- folder:/INBOX.Unsorted/
-unsorted               -- not folder:/INBOX.Unsorted/
-unread -- tag:archive
+unread -- tag:unsorted
END_BATCH

这将从、或文件夹inbox中的任何邮件中删除标签,同时使用这三个文件夹的适当标签重新标记邮件。然后,它根据消息是否位于文件夹(我放置无法分类的消息的位置)中来标记或取消标记消息。最后,我确保已归档的消息不会被标记为,并且未排序的消息不会被标记为SentArchiveJunkINBOX.Unsortedbogofilterunread标记为unread.

这很有效。

由于我通过五个不同的帐户接收邮件,因此我还想根据文件夹名称向邮件添加诸如 等标签account-somenameaccount-othername

notmuch new

tr -s '\t' ' ' <<'END_BATCH' | notmuch tag --batch
-inbox +sent            -- folder:/Sent/
-inbox +archive         -- folder:/Archive/
-inbox +junk            -- folder:/Junk/
+unsorted               -- folder:/INBOX.Unsorted/
-unsorted               -- not folder:/INBOX.Unsorted/
-unread -- tag:archive
+unread -- tag:unsorted
+account-acc1           -- folder:/acc1/
+account-acc2           -- folder:/acc2/
+account-acc3           -- folder:/acc3/
+account-acc4           -- folder:/acc4/
+account-acc5           -- folder:/acc5/
END_BATCH

标记似乎按预期执行,但副作用是新消息被标记为旧消息(从maildir的new目录移动到该cur目录)。这反过来意味着mutt不会检测收件箱中的新消息(除非我在配置maildir_check_cur中进行设置mutt,我认为这不是一个很好的解决方案)。

我不知道为什么或者我能做些什么来阻止这种情况发生。

我的notmuch配置:

[database]
path=/home/myself/Mail/inboxes

[user]
name=myname
[email protected]
[email protected]

[new]
tags=inbox;unread

[search]

[maildir]
syncronize_flags=true

[index]
header.List=List-Id

答案1

发生这种情况似乎是因为notmuch对于哪些邮件文件应该放在哪个 Maildir 子目录中有点过于迂腐,并且因为offlineimap对同一件事有点过于宽松。

offlineimap实用程序按预期将邮件消息传递到目标 Maildir 的new目录中,但文件名具有:2,文件名后缀,表示“此邮件消息没有标志”。通常,全新的、未见过的和刚刚发送的消息文件不应该具有此文件名后缀,因为是用户的 MUA(邮件客户端)添加它。

notmuch配置为同步 Maildir 标志(您最有可能希望它这样做)时,它会注意到消息文件具有:2,文件名后缀,因此假设用户必须在其 MUA 中看到消息,但他们尚未阅读它们(S后缀中逗号后面没有)。然后它将消息文件移动到该cur目录。因此,邮件mutt客户端将它们显示为“旧”(已看过但未读)。

解决方案是纠正的行为offlineimap,但它已经作为一个 bug 提出并于 2015 年被驳回

我的解决方案是offlineimap从等式中取出。相反,我使用 来获取所有邮件fdm。我稍后可能会考虑另一个 IMAP 同步解决方案(mbsync?),因为邮件服务器上有几周的邮件对于从我的主机上访问它很有好处。

相关内容