The BAD - программа для коррекции путей к внешнему каталогу с вложенными файлами (аттачами) в почтовых базах The Bat!

Скачать bad-0.1.zip.

Недолго продержалась первая версия. Вот и вторая, в ней реализован автоматический режим исправления всех подпапок в почтовом ящике (при условии, что стандартное расположение каталогов Inbox, Sent, Attach не менялось).

Скачать bad-0.2.zip.

Замечания: После прогона программы необходимо удалять индексные файлы  (*.tbi).

Лицензия: программа распространяется на условиях лицензии GNU GPL 2.0.

 

 Давно беспокоящая проблема, возникающая при переносе почтовых баз The Bat! с сервера на сервер получила достойное разрешение.

Проблема:
В почтовом ящике The Bat! указано, что прикреплённые файлы хранятся в отдельном каталоге.
При переносе почтовых баз с места на место (изменение пути к почтовому профилю или местоположения папки с вложенными файлами) теряется возможность открыть из письма прикреплённые файлы, полученные до даты переноса почтовой БД.
Причина:
В файлах *.tbb при их перемещении (даже штатными средствами The Bat! для изменения основного рабочего каталога) не меняются пути к аттачам.
Решение:
На коленке была написана программка, которая исправляет пути к файлам на указанные пользователем.
Написанию сопутствовали следующие сложности:
а) официальное описание структуры TBB-файла отсутствует (закрытый формат). Часть информации удалось найти тут: www.felix-schwarz.name/TheBat_Importer_(en) и www.felix-schwarz.name/files/thebat/tbb.txt
б) для каждого сообщения считается контрольная сумма (которая хранится в заголовке по смещению 8), если изменять содержимое письма без пересчёта КС, письмо при следующей проверке Батом целостности базы будет убито и выкинуто в отдельный файл. По какому алгоритму считалась сумма - известно не было, было подозрение, что CRC32. Однако модификаций этого CRC32 предостаточно, и не все, как выяснилось, реализации правильны. Определить алгоритм проверки целостности помогла программка fsumfe.sourceforge.net/ , им оказался CRC32 jamcrc. У неё же, в результате, и был взят и "переписан" на C алгоритм. (Была там ещё одна проблема, связанная с тем, что первая реализация CRC32 jamcrc, найденная мной в интернете, слегка отличалась от нужной, в результате чего часть сумм считалась неправильно, но пока это выяснилось...)
в) часть имён файлов по непонятной причине кодируется по Base64. По непонятной потому, что у меня на компьютере кодирование не использовалось, например, а на другом - использовалось, причём что там, что там есть файлы с кириллическими именами.

 

Что ещё можно было бы сделать:

а) автоматический режим, в котором происходил бы рекурсивный обход всех каталогов (субящиков) в указаном почтовом профиле для папок "Входящие" (Inbox) и "Отправленные" (Sent).

б) автоматическое удаление индексных файлов.