[Назад] [Дальше] [Оглавление]

      calcmail [-u user] [-xdebuglevel] [-ofile] file..

Пример преобразователя из стандартной uumail-like почтовой статистики в `.st' файлы, понимаемые модулем convertstat Формат входной статистики:

      {от кого} {кому} {размер} {время} {дата}

{от кого}

Путь к отправителю.

{кому}

Путь к получателю.

{размер}

Размер письма в байтах.

{время}

Время отправления письма в формате ЧЧ:ММ:СС. В настоящее время это поле никак не используется.

{дата}

Дата отправления письма в формате ДД.ММ.ГГ. В настоящее время это поле никак не используется.

Пример:

am%amsoft.ru user!user%host.domain 1234 12:00:00 1.1.96
dune!dune.oryol.ru!andy px.f1.ru!news.f1.ru!newsserv 10000 13:00:00 2.2.96

Перед дальнейшей обработкой адреса от кого и кому преобразуются в uucp форму. Например:

    am%amsoft.ru           -> local!amsoft.ru!am
    user%host.domain@relay -> local!relay!host.domain!user
    relay!user%host.domain -> relay!host.domain!user

Общий алгоритм работы таков:

По умолчанию calcmail читает данные со входного потока и пишет их в выходной. Имя (имена, если файлов несколько) входного файла может быть задано после всех аргументов в командной строке. Ключ `-o' позволяет задать имя выходного файла. Как обычно, если оно начинается с символа `~' (тильда), то выходной файл пишется в домашний каталог пользователя. Если вместо имени выходного или входного файлов задан знак минуса, то используются стандартный выходной и входной поток соответственно.

По умолчанию calcmail анализирует статистику всех пользователей. Если в этом нет необходимости, можно ключом `-u' указать конкретного пользователя, для которого должны быть произвдены подсчеты. Однако достигаемое при этом ускорение невелико, так как модуль оптимизирован именно для обработки статистики всех пользователей разом.

Иногда бывает полезно или интересно посмотреть как именно обрабатываются данные внутри модуля calcmail. Для этого можно применить ключ отладки `-x' . Чем большее число задано у этого ключа, тем подробнее будет отладочный вывод.

Для того, чтобы сохранить копии строк статистики с разбросом по классам услуг и пользователям можно применить ключ `-s' . Если задан этот ключ, то каждая строка статистики записывается в файл, соответствующий названию сервиса в подкаталог `mail' домашнего каталога пользователя. Если одна строка соответствует нескольким пользователям, то ее копия появляется в каталогах каждого из них.

Модуль calcmail ожидает наличия файла описаний почтовых сервисов в домашних каталогах пользователей и в домашнем каталоге каталоге сервера (смотрите параметр home-dir в ` amstat.conf') под именем `mail.cf'. Эти файлы не используется никакими иными модулями сервера статистики.

Формат основного файла описаний почтовых сервисов ничем не отличается от пользовательских. Пользовательские файлы имеют более высокий приоритет - это позволяет описывать специальные виды сервиса для конкретных пользователей или модифицировать стандартные описания из основного файла.

Файл описаний почтовых сервисов - это обычный текстовый файл. Пустые строки и строки, начинающиеся с символа `#' (решетка) считаются комментариями и игнорируются при чтении.

Остальные строки состоят из набора полей, разделенных пробелами и/или табуляциями. Первое поле каждой строки - ключевое слово, остальные - параметры.

При анализе почтовой статистики гарантируется, что адреса будут сравниваться с масками именно в том порядке, в каком они следуют в файлах `mail.cf'.

Ключевые слова:

class {имя класса}

Задает имя класса почтового сервиса. Именно это имя затем используется при расчетах по формулам прайс-листа. Следующие ключевые слова считаются относящимися к заданному классу почтового сервиса до тех пор, пока не будет встречено новое название класса.

Имя класса может состоять из не более, чем 16 английских букв или цифр. Символ подчерка считается буквой. Прописные и строчные буквы различаются. Начинаться имя класса должно с буквы.

Существует специальное имя класса - user. Класс с таким именем должен быть помещен в пользовательском файле описаний почтовых сервисов. Класс задает маски адресов, по которым из статистики выбираются сведения для данного пользователя. Появление класса user в основном файле `mail.cf' недопустимо.

from {маска} {маска} {маска}..

Задает маски адресов, получение почты с которых будет считаться оказанием услуги класса, внутри которого встретилось это ключевое слово.

to {маска} {маска} {маска}..

Задает маски адресов, передача почты на которые будет считаться оказанием услуги класса, внутри которого встретилось это ключевое слово.

any {маска} {маска} {маска}..

Задает маски адресов, передача на которые или получение с которых почты будет считаться оказанием услуги класса, внутри которого встретилось это ключевое слово.

except {маска}

Задает исключение из предыдущей маски to, from или any. Если адрес удовлетворяет предыдущей маске и маске except, то поиск продолжается дальше.

Как маски адресов используются стандартные регулярные выражения. Об их формате можно прочитать в страничке man re_format(7) (автор будет признателен за ссылку на ее перевод, если Вы знаете таковую).

Пример:

# Комментарий
#
class  ms_kiae                 # Файловый сервер - kiae
from   .*!(.*\.)?kiae\.su!(mail-server|mailserv)
#
class  ms_elvis                # Файловый сервер - elvis
from   .*!(elvis\.msk\.su|elvis\.ru)!(mailserv|waismail)

В старых версиях сервера маски адресов пользователя хранились в его овновном конфигурационном файле. Если модуль calcmail обнаруживает отсутствие в пользовательском каталоге файла `mail.cf' и наличие в пользовательском конфигурационном файле (`user.cf') директив addresses, то он выводит предупреждение и создает соответствующий файл mail.cf самостоятельно. В дальнейшем директивы addresses из конфигурационного файла пользователя могут буть удалены (и это рекомендуется!).


[Назад] [Дальше] [Оглавление]