[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Руководство по управлению системой: Сети и средства связи


Управление файлами и каталогами очереди почты

Почтовая очередь представляет собой каталог, в котором хранятся и обрабатываются данные и файлы почтовых сообщений, доставляемых командой sendmail. По умолчанию почтовая очередь находится в каталоге /var/spool/mqueue.

Есть несколько причин, по которым почтовые сообщения могут быть помещены в очередь.

Например:

  1. Команду sendmail можно настроить так, чтобы обработка очереди выполнялась через определенные промежутки времени, а не немедленно. При этом почтовые сообщения необходимо временно хранить.
  2. Если удаленный почтовый сервер не отвечает на запрос об установлении соединения, то почтовая программа помещает сообщения в очередь с тем, чтобы позднее повторить попытку.

Печать почтовой очереди

Очередь сообщений можно распечатать с помощью команды mailq (или установив флаг-bp для команды sendmail).

При этом будет показан список ИД сообщений в очереди, размеры, даты помещения сообщений в очередь, имена получателей и отправителей.

Файлы почтовой очереди

С каждым сообщением в почтовой очереди связано несколько файлов. Имена файлам присваиваются в соответствии со следующими стандартами:

Типf ИД

Здесь ИД - это уникальный идентификатор очереди сообщений, а Тип - одна из перечисленных ниже букв, определяющих тип файла:

d Файл данных, содержащий тело сообщения без заголовков.
q Файл управления очередью. Он содержит данные, необходимые для обработки задания.
t Временный файл. Представляет собой копию файла q и существует в тот момент, когда последний заново создается. Сразу после этого он переименовывается в файл q.
x Это файл протокола, который существует в течение сеанса, и в который записывается все происходящее во время данного сеанса.

Например, если с сообщением связан идентификатор очереди AA00269, то команда sendmail при доставке письма сначала создаст, а затем удалит из каталога почты следующие файлы:

dfAA00269 Файл данных
qfAA00269 Управляющий файл
tfAA00269 Временный файл
xfAA00269 Файл протокола

Управляющий файл q

Управляющий файл q состоит из серии строк, начинающихся с кодовой буквы:

B Задает тип содержимого сообщения. Оставшаяся часть - это текст, определяющий тип содержимого сообщения. Если данное поле отсутствует, то предполагается, то тип содержимого 7-разрядный, и какая-либо специальная обработка не производится. Возможные значения - 7BIT и 8BITMIME.
C Содержит ИД управляющего пользователя. Если адрес получателя указывает на файл или программу, программа sendmail выполняет доставку как владелец файла или программы. Управляющим пользователем становится владелец файла или программы. То же значение задается и для адресов получателей, полученных из файлов .forward и :include:. Доставку почты данным получателям программа sendmail выполняет как управляющий пользователь, после чего возвращается в первоначальное состояние (пользователь root).
F Содержит флаги конверта. Флаги могут состоять из различных комбинаций символов w, устанавливающего флаг EF_WARNING; r, устанавливающего флаг EF_RESPONSE; 8, устанавливающего флаг EF_HAS8BIT; и b, устанавливающего флаг EF_DELETE_BCC. Другие буквы просто игнорируются.
H Содержит определение заголовка. Количество подобных строк не ограничено. Порядок строк H определяет и их расположение в итоговом сообщении. Синтаксис этих строк тот же, что и у определений заголовков в файле конфигурации /etc/mail/sendmail.cf. (В предыдущих версиях до AIX 5.1, имя файла - /etc/sendmail.cf .)
I Указывает i-узел и информацию об устройстве для файла df; он может потребоваться для восстановления очереди сообщений после поломки жесткого диска.
K Содержит время последней попытки доставки (продолжительность в секундах).
M При помещении сообщения в очередь из-за ошибки при попытке доставить сообщение, информация об ошибке заносится в строку M.
N Показывает общее число попыток доставки.
O Указывает значение MTS (Система передачи сообщений) для ESMTP. Используется исключительно для извещений о доставке.
P Указывает приоритет текущего сообщения. В соответствии со значениями приоритета происходит упорядочивание почтовой очереди. Большее число означает меньший приоритет. Чем дольше находится в очереди сообщение, тем выше становится его приоритет. Исходный приоритет зависит от класса сообщения и его размера.
Q Указывает исходного получателя, который задан в поле ORCPT= транзакции по протоколу ESMTP. Используется исключительно для извещений о доставке. Данная строка относится только к следующей за ней строке R.
R Содержит имя получателя. Для каждого получателя существует отдельная строка.
S Указывает адрес отправителя. Существует только одна такая строка.
T Здесь указано время создания сообщения, необходимое для расчета времени его отмены.
V Содержит номер версии формата файла почтовой очереди. Эта информация необходима для обеспечения совместимости новых версий команды sendmail с ранее созданными файлами очереди. По умолчанию применяется значение ноль. Если оно указано, значение должно находиться в первой строке данного файла.
Z Указывает исходный ИД сообщения (ИД транзакции ESMTP). Используется исключительно для извещений о доставке.
$ Содержит макрокоманду. Некоторые макрокоманды ($r и $s) используются на стадии передачи очереди сообщений.

Файл q сообщения, отправленного пользователю amy@zeus, будет выглядеть примерно так:

P217031 
T566755281 
MDeferred: Connection timed out during user open with zeus 
Sgeo 
Ramy@zeus 
H?P?return-path: <geo> 
Hreceived: by george (0.13 (NL support)/0.01) 
        id AA00269; Thu, 17 Dec 87 10:01:21 CST 
H?D?date: Thu, 17 Dec 87 10:01:21 CST 
H?F?From: geo 
Hmessage-id: <8712171601.AA00269@george> 
HTo: amy@zeus 
Hsubject: test

Здесь:

P217031 Приоритет сообщения
T566755281 Время отправки (в секундах)
MDeferred: Connection timed out during user open with zeus Состояние сообщения
Sgeo ИД отправителя
Ramy@zeus ИД получателя
Строки H Данные заголовка сообщения

Задание временных параметров команды sendmail

Для задания тайм-аута сообщений и интервала обработки используется специальный формат времени. Вот пример представления значения времени в данном формате:

-qЧислоЕдиницы

- где Число - это целое значение, а Единицы - символ единицы измерения времени. Поле Единицы может принимать одно из следующих значений:

s Секунды
m Минуты
h Часы
d Дни
w Недели

Если поле Единицы не задано, то демон sendmail по умолчанию исчисляет время в минутах (m). Ниже приведены три примера того, как задаются значения времени:

/usr/sbin/sendmail -q15d

Это команда указывает, что демон sendmail должен обрабатывать почту каждые 15 дней.

/usr/sbin/sendmail -q15h

Это команда указывает, что демон sendmail должен обрабатывать почту каждые 15 часов.

/usr/sbin/sendmail -q15

Это команда указывает, что демон sendmail должен обрабатывать почту каждые 15 минут.

Принудительная обработка почтовой очереди

Иногда почтовая очередь по каким-либо причинам оказывается заблокированной. Вы можете вызвать принудительную обработку очереди, установив флаг -q (не указывая какое-либо значение). Для отслеживания происходящих событий можно установить флаг -v (подробный режим):

/usr/sbin/sendmail -q -v

Кроме того, с помощью одного из этих параметров можно настроить команду так, что будут обработаны только сообщения с конкретным идентификатором очереди, сообщения конкретного отправителя или получателя. Например, команда -qRsally ограничивает обработку сообщений только теми, у которых в одном из адресов получателя есть последовательность sally. Точно так же, команда -qSстрока ограничивает обработку по признаку "отправитель", а -qIстрока - по определенным идентификаторам почтовой очереди.

Задание интервала обработки очереди

Величина интервала, во время которого демон sendmail обрабатывает почтовую очередь, определяется значением флага -q, указанным при запуске демона.

Демон sendmail обычно запускается файлом /etc/rc.tcpip при запуске системы. В команде /etc/rc.tcpip есть переменная QPI (интервал обработки очереди), которая и определяет значение флага -q на момент запуска демона sendmail. По умолчанию, для qpi принимается значение 30 минут. Для того чтобы задать иной интервал обработки очереди, выполните следующие действия:

  1. Откройте файл /etc/rc.tcpip в любом текстовом редакторе.
  2. Найдите строку, в которой задано значение переменной qpi, например такую:

    qpi=30m
    
  3. Укажите в переменной qpi нужный промежуток времени.

Внесенные изменения вступят в силу после перезапуска системы. Если необходимо, чтобы изменения вступили в силу немедленно, завершите работу программы-демона sendmail и перезапустите его сразу после того, как измените значение флага -q. Дополнительная информация приведена в разделах Завершение работы демона sendmail и Запуск демона sendmail.

Перемещение почтовой очереди

При отключении хоста на большой промежуток времени многие сообщения, направленные на или через этот хост, хранятся в очереди почтовых сообщений. В результате, команда sendmail очень долго сортирует сообщения очереди, при этом значительно снижая производительность всей системы. Если переместить очередь во временный каталог и создать новую очередь, то обработку очереди можно будет выполнить позже, когда хост вновь заработает. Для этого выполните следующие действия:

  1. Остановите демон sendmail в соответствии с инструкциями из раздела Завершение работы демона sendmail.
  2. Переместите весь каталог очереди, введя следующую команду:

    cd /var/spool 
    mv mqueue omqueue
    
  3. Перезапустите демон sendmail в соответствии с инструкциями из раздела Запуск демона sendmail.
  4. Запустите обработку старой почтовой очереди, введя следующую команду:

    /usr/sbin/sendmail -oQ/var/spool/omqueue -q
    

    С помощью флага -oQ можно задать другой каталог для очереди. Флаг -q задает обработку всех заданий в очереди. Если включить флаг -v, программа создаст отчет о всех выполняемых операциях.

    Примечание: Это может занять достаточно много времени.
  5. После очистки очереди удалите файлы протокола и временный каталог с помощью следующей команды:

    rm /var/spool/omqueue/* 
    rmdir /var/spool/omqueue
    

Запуск демона sendmail

Запустить демон sendmail можно с помощью любой из следующих команд:

startsrc -s sendmail -a "-bd -q15"

/usr/lib/sendmail -bd -q15

Если окажется, что в это время демон sendmail уже запущен, на экране появится следующее сообщение:

Подсистема sendmail уже активна. Запуск нескольких экземпляров не поддерживается.

Если демон не был запущен ранее, то появится сообщение о том, что запуск демона sendmail выполнен.

Завершение работы демона sendmail

Для завершения работы демона sendmail введите команду stopsrc -s sendmail.

Если после того, как вы ввели команду startsrc, демон sendmail запущен не был, выполните следующие действия:


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]