Приложение B. Форматы файлов очереди

Это приложение описывает формат файлов очереди. Эти файлы живут в каталоге, определенном опцией Q sendmail.cf, обычно /var/spool/mqueue или /usr/spool/mqueue. Отделные файлы qf, df и xf  могут сохраняться в отдельных подкаталогах qf/, df/ и xf/, если таковые имеются в каталоге очереди.

Для того, чтобы использовать множество очередей, предоставьте значение, заканчивающееся звёздочкой. Например, /var/spool/mqueue/q* будет использовать каталоги или символические ссылки на каталоги, начинающиеся с "q" в /var/spool/mqueue как каталоги очередей. Новые сообщения будут случайным образом размещаться в одной изэтих очередей. Не изменяйте структуру каталога очереди во время работы sendmail.

Все файлы очереди имеют имена xfYMDhmsNPPPPP, где YMDhmsNPPPPP - идентификатор этого сообщения, а x - его тип.

Значения букв идентификатора:
 
 

Y Закодированный год
M Закодированный месяц
D Закодированный день
h Закодированный час
m Закодированная минута
s Закодированная секунда
N Конвертный номер
PPPPP Как минимум 5 цифр из ID процесса

Все файлы с одинаковыми идентификаторами совместно определяют одно сообщение. Если имеются буферизованные в памяти файлы, некоторые из них могут никогда не появиться на диске.

Типы сообщений:
 

d Файл данных. Тело сообщения (исключая заголовок) хранится в этом файле.
Контрольный файл очереди. Этот файл содержит информацию, необходимую для обработки.
Временный файл. Это имидж файла qf во время его перестройки. Он должен очень быстро переименоваться в файл qf .
Файл переписки, существует во время сессии, показывая все, что случается во время этой сессии.

Файл qf структурируется как последовательность строк, каждая из которых начинается с кодовой буквы. Существуют следующие строки:
 

V Номер версии формата файла очереди, используется для того, чтобы позволить новым бинарникам sendmail читать файлы очереди, созданные более ранними версиями. По умолчанию ноль. Если есть, то должна быть первой строкой в файле.
A Информация, заданная параметром AUTH= команды "MAIL FROM:" или $f@$j, если sendmail был вызван непосредственно.
H Определение заголовка. Таких строк может быть несколько. Порядок их очень важен: Он представляет собой порядок в конечном сообщении. используется тот же синтаксис, как и для определений заголовков в файле конфигурации.
C Контрольный адрес. Синтаксис "localuser:aliasname". Адрес получателя, следующий за этой строкой будет иметь такие флаги, что доставка будет производиться от localuser (имя пользователя из файла /etc/passwd file); aliasname - это имя псевдонима, расширяющегося на этот адрес (используеися для печати сообщений).
Q "Оригинальный получатель", определяемый полем ORCPT= в транзакции ESMTP. Используется только для Уведомлений о Статусе Доставки. Применяется только сразу после строки "R".
Адрес получателя. Будет по одной строке на каждого получателя. Файлы qf Версии 1 также включают ведущий список флагов, заканчивающийся двоеточием, которые могут быть "S" для возврата сообщения при успешной заключительной доставке, "F" для возврата сообщения при неудаче, "D" для возврата сообщения, если оно отложено, "B" для указания того, что должно быть возвращено тело, "N" для подавления возврата тела, и "P" для декларации этого адреса как "первичного" (primary) (командная строка или сессия SMTP).
S Адрес отправителя. Такая строка может быть только одна.
T Время создания работы. Используется для подсчета истечения таймаута работы.
P Текущий приритет сообщения. Используется для упорядочивания очереди. Более высокие числа означают более низкий приоритет. Во время нахождения сообщения в очереди приоритет изменяется. Изначальный приритет зависит от класса сообщения и его размера.
Сообщение. Эта строка печатается командой mailq, и обычно используется для хранения информации о статусе. Может содержать любой текст.
F Флаговые биты, одна буква на флаг. Определенные флаговые биты: r - показывает, что это ответное сообщение и w - показывает что было послано сообщение с предупреждением о задержке почты.
N Общее количество попыток доставки.
Время последней попытки доставки (в секундах с 1 Января 1970г.).
Идентификационный номер файла данных; может быть использован для восстановления почтовой очереди после катастрофического "падения" диска.
$ Определение макроса. Значения конкретных макросов (во время написания этого документа, только $r и $s) передаваемые во время обработки очереди.
B Тип тела. Конец строки - текстовое описание типа тела. Если это поле отсутствует, тип тела считается "неопределенным" ("undefined") и не производится никакой специальной обработки. Легальные значения "7BIT" и "8BITMIME".
Z Оригинальный конвертный идентификатор (из транзакции ESMTP). Только для Уведомлений о Статусе Доставки.

Например, файл из очереди, посланный к "eric@mammoth.Berkeley.EDU" и "bostic@okeeffe.CS.Berkeley.EDU":

    V4
    T711358135
    K904446490

    N0
    P2100941
    $_eric@localhost
    ${daemon_flags}
    Seric
    Ceric:100:1000:sendmail@vangogh.CS.Berkeley.EDU
    RPFD:eric@mammoth.Berkeley.EDU
    RPFD:bostic@okeeffe.CS.Berkeley.EDU
    H?P?Return-path: <^g>

    H??Received: by vangogh.CS.Berkeley.EDU (5.108/2.7) id AAA06703;
        Fri, 17 Jul 1992 00:28:55 -0700
    H??Received: from mail.CS.Berkeley.EDU by vangogh.CS.Berkeley.EDU (5.108/2.7)
        id AAA06698; Fri, 17 Jul 1992 00:28:54 -0700
    H??Received: from [128.32.31.21] by mail.CS.Berkeley.EDU (5.96/2.5)
        id AA22777; Fri, 17 Jul 1992 03:29:14 -0400
    H??Received: by foo.bar.baz.de (5.57/Ultrix3.0-C)
        id AA22757; Fri, 17 Jul 1992 09:31:25 GMT
    H?F?From: eric@foo.bar.baz.de (Eric Allman)

    H?x?Full-name: Eric Allman
    H??Message-id: <9207170931.AA22757@foo.bar.baz.de>
    H??To: sendmail@vangogh.CS.Berkeley.EDU
    H??Subject: this is an example message
Здесь видно от кого послано это сообщение, время представления сообщения (в секундах с 1 Января1970г.), приоритет сообщения, его класс, получателей, и заголовки для сообщения.

Этовымышленный пример, поэтому он может быть неточен для вашего случая. Главное здесь - понять идею; ничто не заменит вам того, что может выдать вам ваша система.



2001 Александр С. Плотников