Моя цель - скопировать всю структуру папок со всеми письмами из одной учетной записи imap в другую. Инструмент, который я использую для этого, imapcopy (версия на основе java с code.google.com, поскольку инструмент unix / linux, входящий в пакет debian, не поддерживает imaps).
Теперь есть одна проблема: инструмент копирует только папки верхнего уровня, а не вложенные. Чтобы сузить проблему, я загрузил исходный код imapcopy и отладил его. Там я заметил, что folder.list()
(который отображается на list "%"
команда imap) возвращает пустой список. Но когда я делаю getFolder(<subfoldername>)
Я могу получить доступ к этим подпапкам. После прочтения документации о функциях imap я думаю, что проблема может быть в некоторых неправильно настроенных списках контроля доступа, которые запрещают перечисление этих папок, но позволяют читать рекламу и писать в них.
Как мне проверить эти ACL? какие инструменты мне нужны для этой задачи?
Сам нашел решение: кажется, что звонил open()
для конкретной папки приводит к пустому списку подпапок для той же папки. Перемещая линию вызова list()
перед вызовом на линию open()
, imapcopy работает как положено. Я также добавил свой измененный код Java к уже существующему запросу о проблеме в imapcopy проект.