Ведение протоколов почты

Команда sendmail ведет протокол системы доставки почты с помощью демона syslogd.

Следовательно, для ведения протокола необходимо настроить и запустить демон syslogd. Файл /etc/syslog.conf должен содержать следующую строку:

mail.debug           /var/spool/mqueue/log

Если она отсутствует, добавьте эту строку в любом текстовом редакторе; убедитесь в правильности указанного пути. Если вы изменили файл /etc/syslog.conf после запуска демона syslogd, обновите демон syslogd с помощью следующей команды:

refresh -s syslogd

Если файл /var/spool/mqueue/log отсутствует, создайте его с помощью следующей команды:

touch /var/spool/mqueue/log

Сообщения в файле протокола хранятся в следующем формате:

Запись системного протокола содержит системное время, имя компьютера, создавшего запись (в случае ведения общего протокола для нескольких компьютеров локальной сети), слово sendmail: и текст сообщения. Большинство сообщений представляют собой последовательность пар имя=значение.

При обработке сообщения в протокол обычно заносятся строки receipt и delivery attempt. Строка receipt регистрирует получение сообщения; для каждого сообщения создается одна такая запись. Некоторые поля могут отсутствовать. К таким полям относятся:

Флаг Описание
from Указывает адрес отправителя сообщения.
размер Указывает размер сообщения в байтах.
класс Указывает класс (числовой приоритет) сообщения.
pri Указывает исходный приоритет (необходим для сортировки очереди сообщений)
nrcpts Указывает количество получателей данного сообщения (после присвоения псевдонима и пересылки).
proto Задает протокол, применявшийся для получения сообщения, например, ESMTP или Программа копирования UNIX-UNIX (UUCP).
relay Указывает, от какого компьютера было получено данное сообщение.

Кроме того, в протокол заносятся строки delivery attempt. Их количество совпадает с числом попыток доставки сообщения (таким образом, если доставка была отложена, или сообщение должно быть доставлено нескольким получателям, то может быть создано несколько таких строк). К таким полям относятся следующие:

Флаг Описание
to Здесь через запятую перечислены все получатели данной рассылки.
ctladdr Указывает управляющего пользователя, то есть имя пользователя, которое используется для доставки.
delay Указывает общую продолжительность задержки (промежуток между доставкой и получением сообщения).
xdelay Указывает время, затраченное при данной попытке доставки.
mailer Здесь указано имя почтовой программы, через которую сообщение было доставлено данному получателю.
relay Указывает имя хоста, который принял (или отказался принять) почту для данного получателя.
stat Здесь указано состояние доставки.

Поскольку в протокол может заноситься большой объем различной информации, существует несколько уровней ведения протокола. На первом (или низшем) уровне в протокол заносится информация только о наиболее нестандартных ситуациях. Высший уровень регистрирует даже самые незначительные события. Наиболее полезная информация заносится в протокол на уровнях 10 и ниже. Протоколы уровня 64 и выше предназначены для задач отладки. Уровни от 11 до 64 зарезервированы для подробных данных.

Типы действий, информацию о которых будет заносить в протокол команда sendmail, задаются с помощью опции L в файле /etc/mail/sendmail.cf.