Почтовая очередь представляет собой каталог, в котором хранятся и обрабатываются данные и файлы почтовых сообщений, доставляемых командой sendmail. По умолчанию почтовая очередь находится в каталоге /var/spool/mqueue.
Есть несколько причин, по которым почтовые сообщения могут быть помещены в очередь.
Например:
Очередь сообщений можно распечатать с помощью команды mailq (или установив флаг-bp для команды sendmail).
При этом будет показан список ИД сообщений в очереди, размеры, даты помещения сообщений в очередь, имена получателей и отправителей.
С каждым сообщением в почтовой очереди связано несколько файлов. Имена файлам присваиваются в соответствии со следующими стандартами:
Типf ИД
Здесь ИД - это
уникальный идентификатор очереди сообщений, а Тип - одна из
перечисленных ниже букв, определяющих тип файла:
Например, если с сообщением связан
идентификатор очереди AA00269, то команда sendmail при доставке
письма сначала создаст, а затем удалит из каталога почты следующие
файлы:
dfAA00269 | Файл данных |
qfAA00269 | Управляющий файл |
tfAA00269 | Временный файл |
xfAA00269 | Файл протокола |
Управляющий файл q
состоит из серии строк, начинающихся с кодовой буквы:
Файл 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
Для задания тайм-аута сообщений и интервала обработки используется специальный формат времени. Вот пример представления значения времени в данном формате:
-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 минут. Для того чтобы задать иной интервал обработки очереди, выполните следующие действия:
qpi=30m
Внесенные изменения вступят в силу после перезапуска системы. Если необходимо, чтобы изменения вступили в силу немедленно, завершите работу программы-демона sendmail и перезапустите его сразу после того, как измените значение флага -q. Дополнительная информация приведена в разделах Завершение работы демона sendmail и Запуск демона sendmail.
При отключении хоста на большой промежуток времени многие сообщения, направленные на или через этот хост, хранятся в очереди почтовых сообщений. В результате, команда sendmail очень долго сортирует сообщения очереди, при этом значительно снижая производительность всей системы. Если переместить очередь во временный каталог и создать новую очередь, то обработку очереди можно будет выполнить позже, когда хост вновь заработает. Для этого выполните следующие действия:
cd /var/spool mv mqueue omqueue
/usr/sbin/sendmail -oQ/var/spool/omqueue -q
С помощью флага -oQ можно задать другой каталог для очереди. Флаг -q задает обработку всех заданий в очереди. Если включить флаг -v, программа создаст отчет о всех выполняемых операциях.
Примечание: Это может занять достаточно много времени.
rm /var/spool/omqueue/* rmdir /var/spool/omqueue
Запустить демон sendmail можно с помощью любой из следующих команд:
startsrc -s sendmail -a "-bd -q15"
/usr/lib/sendmail -bd -q15
Если окажется, что в это время демон sendmail уже запущен, на экране появится следующее сообщение:
Подсистема sendmail уже активна. Запуск нескольких экземпляров не поддерживается.
Если демон не был запущен ранее, то появится сообщение о том, что запуск демона sendmail выполнен.
Для завершения работы демона sendmail введите команду stopsrc -s sendmail.
Если после того, как вы ввели команду startsrc, демон sendmail запущен не был, выполните следующие действия: