Ведение протоколов почты
Команда 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.