Назад | Перейти на главную страницу

Как убрать флаг \ Deleted для всех писем в почтовом ящике cyrus-imapd?

У меня есть почтовый ящик объемом 5 ГБ, который я переместил с помощью imapsync. Но как-то я испортил опцию --delete / - delete2 и в итоге почти все сообщения имели установленный флаг \ Deleted. у меня нет отложенное удаление включен, поэтому я не могу использовать неизмеримый утилита. Я использую cyrus-imapd v2.3.7. Используя функцию отладки cyrus-imapd, я обнаружил, что почтовый клиент (в моем случае Roundcube) запускает следующую команду IMAP, чтобы отключить его.

UID STORE 179 -FLAGS.SILENT (\Deleted)

Не знаю, смогу ли я как-нибудь запустить эту команду для всех писем.

Можно ли как-нибудь снять флажок \ Deleted для всех писем в почтовом ящике?

ОБНОВИТЬ:

Используя совет @geekosaur об указании диапазона идентификаторов сообщений в приведенной выше команде, я мог решить это для одного почтового ящика в INBOX, например INBOX.folder1. Есть ли способ сделать это рекурсивно для нескольких почтовых ящиков в INBOX? Теперь я работаю над ее решением, используя / создавая какой-нибудь сценарий, возможно, используя модуль Perl, связанный с IMAP. Но все же мне нужно решить эту проблему как можно скорее, поэтому комментарии приветствуются.

ОБНОВИТЬ:

Благодаря geekosaur мне удалось решить эту проблему с помощью модуля Perl IMAPClient.

Вы можете указать диапазон сообщений start:end вместо номера отдельного сообщения (179 в вашем примере); использовать SEARCH ALL чтобы узнать допустимый диапазон номеров сообщений.

Обратите внимание, это предполагает, что вы можете использовать необработанный IMAP, что может быть болезненным или невозможным, если оно (как и должно быть) с использованием AUTHENTICATE вместо того LOGIN.. Вы можете предпочесть какой-нибудь набор инструментов IMAP (обратите внимание, что Cyrus imapd поставляется с библиотеками Perl, которые можно использовать для сценария входа в систему и выполнения различных операций, хотя вам необходимо иметь некоторое представление о RFC 2060.