MAIL

Назначение, приципы работы и особенности

Плагин mail предназначен для проверки работоспособности почтовых автоматов. Для проверки почтового автомата посылается письмо установленного образца на адрес, определяемый параметрами сервиса. Затем плагин некоторое время ожидает ответа. По получении, ответ сравнивается с некоторым регулярным выражением также определяемым параметрами сервиса.
Плагин целиком полагается на существующие системы доставки почты. Таким образом, отсутствие почтовых релеев для данного домена или невозможность ресолвинга их IP адресов, а также разнообразные ошибки протокола SMTP (релей не отвечает, нет такого пользователя) приведут к выдаче плагином одной и той же ошибки: "Message sent". Для проверки систем доставки почты необходимо пользоваться соответствующими плагинами -
SMTP и DNS.
Предполагается, что все ответы на запросы плагина доставляются на локальный хост. Для чего в /etc/aliases (например) прописывается соответствующая строка для доставки почты:

# Eye users
body: "| /usr/local/libexec/eye/mailbody"


Кроме того, в качестве почтового транпортного агента используется sendmail выбор которого в качестве MTA будет объяснен ниже.
Для определения пары Запрос-Ответ используеся параметр заголовка письма Message-ID. Предполагается что почтовый автомат шлет Reply на это письмо. Таким образом в ответном письме автомата Message-ID посланного письма оказывается в поле In-Reply-To. Первоначально схема предполагала использование еще одного почтового адреса, на который шла копия письма плагина. Утилита, обрабатывающая письма приходящие на этот адрес, доставала из письма Message-ID и с помощью Message Queue передавала его плагину. Затем мною была испоьзована возможность передачи sendmailMessage-ID в качестве параметра. Таким образом плагин mail сам определяет поле Message-ID и запоминает его. Поле заполняется в соответствии с RFC 822 в формате ##.eye_mail.PID@hostname.
Где В качестве поля From используется локальный адрес. Почту приходящюю на этот адрес специальная утилита с помощью Message Queue передает плагину. Плагину передается все письмо целиком вместе с заголовком. Далее плагин самостоятельно извлекает из него значение параметра In-Reply-To и ищет заданную подстроку в теле письма. Объем пришедшего письма вместе с заголовком предполагается достаточно малым чтобы не нарушать системное ограничение на длину сообщения передаваемого через Message Queue. Для FreeBSD 4.2-RELEASE это ограничение равно 32767 байт.

Параметры сервиса

Помимо полей общих для различных плагинов, карточка объекта для плагина mail содержит специфические поля, описание которых будет приведено ниже.
Стоит отметить, что в отличие от большинства плагинов, где период отправки запросов одинаков для каждого сервиса, плагин mail позволяет настраивать период отправки запросов и время реакции для каждого сервиса индивидуально.

Параметры плагина

Поскольку параметров сервиса сравнительно много, то параметры плагина несколько беднее, чем у остальных плагинов.

eye=# select * from parametrs where nameofcfg = 'mail';
 nameofcfg |   parametr   |         value         
-----------+--------------+-----------------------
 mail      | LogFile      | /var/log/eye/mail.err
 mail      | ChaildNumber | 5
 mail      | From         | body@hill.ripn.net
(3 rows)

eye=# 


Применение

Возможные состояния сервиса:
Up[_]Информация, приходящая в ответ на запрос совпадает с эталонной
No reply[_]Ответ не пришел в течении положенного времени
Regexp not matched[_]В пришедшем ответе не найдена искомая подстрока
Could not send message[_]Это не SMTP сообшение о невозможности доставки. Появляется когда sendmail не может отправить сообщение немедленно или поставить его в очередь.
Message send[_]Сообщение только что отправленно На него еще не пришел ответ. Время в ячейке отсчитывается с момента отправки сообщения.
Error in regular expression[_]Плагин не смог скомпилировать регулярное выражение. Ему не с чем сравнивать приходящий ответ и он даже не будет посылать запрос.