Email

如何為 cyrus-imapd 郵箱中的所有郵件取消設置 Deleted 標誌?

  • April 11, 2016

我有一個使用 imapsync 移動的 5GB 郵箱。但不知何故,我搞砸了 –delete/–delete2 選項並最終得到幾乎所有設置了 \Deleted 標誌的消息。我沒有啟用延遲刪除,所以我不能使用unexpunge實用程序。我正在使用 cyrus-imapd v2.3.7。使用 cyrus-imapd 的調試功能,我發現電子郵件客戶端(在我的例子中是 Roundcube)在 IMAP 命令之後觸發以取消設置它。

UID STORE 179 -FLAGS.SILENT (\Deleted)

我不知道是否可以以某種方式為所有郵件觸發此命令。

有什麼辦法可以為郵箱中的所有郵件取消設置 \Deleted 標誌?

更新

使用@geekosaur 在上述命令中指定消息ID 範圍的提示,我可以為INBOX 下的一個郵箱解決它,例如INBOX.folder1。有什麼辦法可以遞歸地處理 INBOX 下的多個郵箱?現在我正在使用/創建一些腳本來解決它,也許使用 Perl 的 IMAP 相關模組。但我仍然需要盡快解決它,所以歡迎輸入。

更新

感謝 geekosaur,我成功地使用 Perl 的 IMAPClient 模組解決了這個問題。

您可以指定一系列消息start:end來代替單個消息編號(179在您的範例中);用於SEARCH ALL找出有效的消息編號範圍。

請注意,這是假設您可以使用原始 IMAP,如果它(應該是)使用AUTHENTICATE而不是LOGIN.. 您可能更喜歡找到某種 IMAP 工具包(請注意,Cyrusimapd帶有 Perl 庫可用於編寫登錄腳本和執行各種操作,但您需要熟悉 RFC 2060。

引用自:https://serverfault.com/questions/377748