У меня есть почтовый ящик объемом 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.