Введение
Архивация сообщений, проходящих через почтовый сервер и удовлетворяющих требованиям заданных критериев, производится при помощи программы архивации сообщений 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
#FILE=*.RAR,SIZE>30m
#RP=C:UA*
#DL=*PN:SYSOP
#FILE=*.RAR,SIZE>30g
[EXCLUDE]#RP=C:UA*
[EXCLUDE]#DL=*PN:SYSOP
В параметре SIZE поддерживается только оператор > (больше).