Хранение истории почтовой переписки

Проблема

Год назад наша компания рассталась с ключевым сотрудником отдела продаж. Встал вопрос о восстановлении почтовой переписки. На почтовый ящик этого пользователя поступали все входящие запросы. Какие-то письма переадресовывались по отделу, с кем-то велась переписка, озвучивались цены. Не смотря на то, что доступ к письмам по протоколу IMAP позволяет хранить и структурировать письма непосредственно на сервере, работать с таким материалом сложно. Входящие и исходящие письма хранятся в разных местах, нет сортировки по перепискам, долгий поиск, часть писем может быть просто удалена.

Поиск решения

Копировать всю переписку на другие эл. ящики - задача неблагодарная, ведь преимуществом будет только то, что письма не будут удаляться. Но письма все также будут неудобно отсортированы. Хорошо, если под контроль нужно поставить один ящик, а если их десятки или сотни?

После этого случая мы обсуждали в рассылке, как лучше организовать хранение истории. В первую очередь волновал объем файлового хранилища и доступ к нему. Довольно быстро мы разработали и внедрили у себя решение. Открывая филиал в Москве вдруг обнаружилось, что это решение так и не реализовано в утилитах Calculate.

Реализация

Итак встречайте - Calculate Utilities 2.1.14. Ключевое изменение в новой версии серверных утилит - поддержка истории почтовой переписки.

В настройке почтового сервера появились следующие параметры:

 # cl-setup --help-mail
...
  --history CONDITION            включить или отключить сохранение истории mail
                                 сервиса, по умолчанию опция отключена. (on/off)
  --history-domains DOMAIN       domain or domains for own mail (comma delimited)
  --history-path PATH            путь к истории
...

Где:

  • history-domains - один или несколько локальных почтовых доменов,
  • history-path - путь для хранения архивов.

Если почтовый сервер у вас уже поднят, изменения можно внести при помощи утилиты cl-update-server. Используйте cl-backup перед внесением изменений.

По умолчанию создаётся директория /var/calculate/server-data/samba/share/Mail/ с правами 755. Измените права доступа для доступа лицу (боссу или админу), имеющему контроль к архиву писем. Папка Mail доступна в samba-ресурсе “Share” для пользователей Linux/Windows. Письма хранятся отдельными файлами, кликая по которому открывается почтовая программа с отображением письма с вложениями.

Структура хранилища

При первом же получении или отправке письма, в директории хранилища создается папка с почтовым пользователем, домен которого указан в параметре history-domains. В случае, если при получении или отправке письма адреса отправителя и получателя не совпадают с одним из перечисленных в history-domains доменов, такое письмо попадет в Mail/unknown.

При отправке письма пользователем, создастся следующий путь:

Mail/user@mail.domain.com/YYYY-MM-DD_HH:SS_other@server.com

Где:

  • usermail.domain.com@ - почтовый ящик локального пользователя
  • otherserver.com@ - адрес получателя (адрес может быть также локального пользователя)
  • YYYY-MM-DD_HH:SS - год, месяц, день, часы и минуты.

В созданную директорию попадет исходящее письмо со следующим форматом заголовка:

YYYY-MM-DD_HH:SS_other@server.com/YYYY-MM-DD_HH:SS_Out:TITLE

Где:

  • TITLE - заголовок письма
  • Out - обозначение исходящего письма

При каждой отправке или получении письма, в имени директории адресата меняется время. В случае входящего письма, вместо "Out", письмо отмечается словом "In".

Заключение

Теперь восстановить переписку, просмотреть содержимое письма, открыть вложения - всё эти действия можно производить простым кликаньем мышкой в файловом менеджере.

По прошествии года работы файловое хранилище Mail в нашей компании составляет 36 Гб, что приемлемо для 6 Тб рейд-массива и не создаст проблем в будущем. Разумеется спам большей частью отсекается грейлистом и антивирусом.