В качестве сервера почты работает Kerio Connect 7.0.1 build 1249. Включены бэкапы, но работают они не так, как хотелось бы — делается копия текущего состояния ящика (а у пользователей, конечно же, стоит удаление писем с сервера).
К счастью, когда-то давно мной была выставлена спасительная галочка в настройках — «сохранять архив сообщений», благодаря которой Kerio любезно складывал всю почту (почта raw — там и спам, при желании можно заставить kerio и вирусы туда класть) за последние полгода в архив. Вздохнули с облегчением.
Структура архива Kerio Connect/Mail
А структуры нет. Ну, я конечно же преувеличиваю.. Но она ужасна.Архив делится на папки по месяцам. И все, чёрт побери, все письма за этот месяц лежат в одной папке. В моём случае писем было ≈15 тысяч. Что может быть проще — разделить почту на папки на уровне почтового сервера, выделив почтовые адреса как сущности.
Разделить архив по получателям
Ну, это было первой идеей. Позже руки опустились, к сожалению. Поскольку писем много, а нам нужен только один получатель — пойдём «лоб в лоб»: возьмём плохой и ужасный php, чудесный и прекрасный Notepad++, такой розовый и блондинистый Denwer.. В общем, как обычно.Спасительный говнокод.
Ах да — мне было лень, создайте сами папку #saved рядом с #messages. Скрипт класть в папку #messages. Запускать как-то так:
<?php foreach( new DirectoryIterator( '.' ) as $file ) { if ( $file->isDot() || $file->isDir() || $file->getFilename == __FILE__ ) { continue; } $name = $file->getFilename(); $file = file_get_contents( './' . $name ); if ( preg_match( '/(whatShouldWeFind@domain.(ru|com))/', $file ) ) { rename( './' . $name, '../#saved/' . $name ); echo "moved " . $name . PHP_EOL; } echo "skipped " . $name . PHP_EOL; }
cd dirWithArchive/2011-Jan/#msgs && /usr/local/php5/php script.php
. В 9-й строке меняется необходимый получатель.Подведём итог
Скрипт ужасен. Скрипт работает. Разработчики Kerio в очередной раз доказали, что продукт хорош до тех пор, пока его используют стандартно — поставили, взломали через ukaip86.exe, настроили и забыли.Спасибо за внимание.
А че скрипт ужасен? за 15 строчек решена такая геморройная проблема. Большое спасибо. Нигде больше не видела другого решения
ОтветитьУдалить