Архивация сообщений на почтовом сервере

Введение

Архивация сообщений, проходящих через почтовый сервер и удовлетворяющих требованиям заданных критериев, производится при помощи программы архивации сообщений FMARC, которая входит в состав стандартной поставки почтового узла FossMail32. В поставочных настройках почтового узла  запуск программы выполняется автоматически при  прохождении более 100 файлов почтовой корреспонденции (ФПК). Строка запуска программы находится в разделе [TASKS] файла HOST.CFG.

#SERVICE_TASK=FMARC,Архиватор сообщений,C:\FossMail32\bin\FMARC.EXE -c C:\FossMail32\host.cfg -l -e,sntpc,,C:\FossMail32\BE > 100 

Сообщения архивируются в *.zip файлы, доступ к ним может быть получен из программы «Программа просмотра базы данных конвертов FmStat».

Параметры программы.

Параметры конфигурации записываются в файл HOST.CFG.

Раздел [FMARC]:

#ARC_PERIOD — период создания архивов (в часах), т.е. если задано значение 24, то выполняется архивация в единственный суточный архив, если задано 1, то будет создано 24 почасовых архива.

#DELETE_AFTER_DAYS — время жизни архивного файла в днях. Если значение не пустое и больше 0, то все архивы старше указанного количества дней удаляются.

#CONFIG_FILE — полное имя  файла с дополнительными настройками (как правило – критерии сохранения).

Раздел [COMMON]:

#BE_DIR — каталог с копиями проходящих через узел ФПК

#BAD_DIR — каталог ошибочных ФПК. Если этот каталог не задан, то ошибочные ФПК удаляются

 #ZIP_DIR — путь к архивам

#LOG_DIR  — каталог для  LOG файлов

Конфигурирование внутреннего фильтра архиватора, позволяющего выборочное сохранение ФПК в зависимости от заданных критериев, выполняется через вспомогательный файл, ссылка на который задана в параметре #CONFIG_FILE секции [FMARC].

 Алгоритм работы

Программа запускается монитором задач почтового узла по условию  (условие в поставке – превышение заданного количества ФПК в каталоге #BE_DIR), обращается к файлу конфигурации за параметрами, выбирает все ФПК из каталога, заданного #BE_DIR, попадающие под критерий.  ФПК архивируются, не попадающие под критерий  удаляются. При этом все действия записываются в log-файл (если задача запущена с параметром –l). После выборки всех ФПК задача завершает свое выполнение.
После запуска происходит анализ HOST.CFG.  Если после запуска файл конфигурации HOST.CFG не найден по указанному в строке параметров пути (-c  xxx) и не найден в текущем каталоге, то выдается сообщение об ошибке и задача прекращает выполнение.
Необходимо отметить, что рассматриваются сообщения только из  папки проходящих сообщений, заданных #BE_DIR. В эту папку не попадают отчеты, а также сообщения, имеющие тип, заданный в Host.cfg секция [ROUTER] параметром #EXCLUDE_TYPE.

Обработка выбранного ФПК

Обработка ФПК выполняется в следующей последовательности:

  • Выбирается ФПК в каталоге #BE_DIR
  • Если сообщение не соответствует условию архивирования или содержит в конверте параметр .AR=0 – оно удаляется, если соответствует —  считывается параметр идентификатор (.IN), время прихода на узел (.IT). В архиве имя файла меняется на .IN.
  • Из времени прихода на узел, записанного в .IТ  вычисляется имя архивного файла, в который необходимо положить этот ФПК. Имя архива генерируется по следующему закону. В зависимости от параметра #ARC_PERIOD имя архива —  YYMMDDHH-HH. В данный архив попадают файлы со значением времени от HH до -HH в часах.
  • Найденный ФПК помещается в  соответствующий имени архив.

Структура имени LOG файла — YYMMDDar.LOG. При непрерывной работе и переходе через 0 часов имя автоматически изменяется.

Задание критериев сохранения сообщений

Фильтр может быть настроен так, что только сообщения, удовлетворяющие условиям, будут архивироваться. Сами условия  заносятся в дополнительный файл, путь к которому задается в параметре #CONFIG_FILE. Файл состоит из секций [EXCLUDE] содержащих условия. Внутри секции условия объединяются по логическому И, а сами секции – по логическому ИЛИ. Пример файла с условиями:

[EXCLUDE]

#FILE=*.*,SIZE>30k;  размерность: k — килобайт, m — мегабайт, g — гигабайт
#RP=C:UA*
#DL=…PN:SYSOP

[EXCLUDE]

#FILE=*.RAR,SIZE>30m
#RP=C:UA*
#DL=*PN:SYSOP

[EXCLUDE]

#FILE=*.RAR,SIZE>30g

[EXCLUDE]

#RP=C:UA*

[EXCLUDE]

#DL=*PN:SYSOP
В параметре SIZE поддерживается только оператор > (больше).