49. Утилиты exim`a
Множество скриптовых утилит и программ поставляются с exim`ом и описано в этой части. Также, есть Exim Monitor, который описыватся в следующей части. Описанные утилиты таковы:
49.1
“
exiwhat
” - список, что делают процессы exim`a
49.2
“
exiqgrep
” - выбор из очереди
49.3
“
exiqsumm
” - суммирование очереди
49.4
“
exigrep
” - поиск по главному логу
49.5
“
exipick
” - выбор сообщений по различным критериям
49.6
“
exicyclog
” - ротация лог-файлов
49.7
“
eximstats
” - выбор статистики из логов
49.8
“
exim_checkaccess
” - проверка приёма адреса с данного IP
49.9
“
exim_dbmbuild
” - сборка файла DBM
49.10
“
exinext
” - извлечение информации повторов
49.11
“
exim_dumpdb
” - дамб БД подсказок
49.11
“
exim_tidydb
” - очистка БД подсказок
49.11
“
exim_fixdb
” - правка БД подсказок
49.15
“
exim_lock
” - блокировка файла почтового ящика (mailbox)
Другая утилита, которая могла бы использоваться на сайтах с многими MTA -
“
exilog
” Tom Kistner's. Он обеспечивает визуализацию логов от многих серверов exim`a. Для деталей, смотрите http://duncanthrax.net/exilog/.
49.1 Поиск, что делают процессы exim`a (exiwhat)
На опреационных системах, которые могут перезапускать системные вызовы после получения сигнала (большинство современных OS), процесс exim`a отвечает на сигнал SIGUSR1, путём записи строки описывающей, что он делает в файл
“
exim-process.info
” в директории спула exim`a. Скрипт
“
exiwhat
” посылает сигнал всем процессам exim`a, которые он находит, вначале очистив файл. После чего он ждёт секунду, чтобы позволить процессам exim`a отреагировать, до отображения результатов. Для успешного управления
“
exiwhat
”, вы должны обладать достаточными привилегиями для посылки сигнала процессам exim`a, таким образом, обычно, он запускается от рута.
“
Предупреждение: Это неэффективный процесс. Он предназначен для случайного использования администраторами системы. Неразумно, например, настраивать скрипт, который через короткие периоды посылает процессам exim`a сигнал SIGUSR1.
К сожалению, команда
ps
” которую
“
exiwhat
” использует для нахождения процессов exim`a, различна в разных операционных системах. Мало того, что используются различные опции, но и формат вывода - различен. Для этого, есть некоторые систменые конфигурационные опции, которые конфигурируют, как работает
“
exiwhat
”. Если вам кажется, что он не работает, проверьте следующие компиляционные опции:
EXIWHAT_PS_CMD - команда для запуска
“
ps
”
EXIWHAT_PS_ARG - аргумент для
“
ps
”
EXIWHAT_EGREP_ARG - аргумент для
“
egrep
”, для выбора из вывода
“
ps
”
EXIWHAT_KILL_ARG - аргумент для команды
“
kill
”
Пример типичного вывода
“
exiwhat
”:
|
Превое число в строке вывода - номер процесса. Третья строка была разделена, чтоб уместиться в странице.
49.2 Селективный просмотр очереди (exiqgrep)
Эта утилита - скрипт на Perl, предоставленный Matt Hubbard. Он запускает
|
для получения списка очереди, содержащего лишь недоставленных получателей, и затем выбирает из вывода сообщения, которые совпадают с заданными критериями. Доступны следющие опции выбора:
“
-f <regex>
” - Совпадение с адресом отправителя. Проверяемое поле окружено угловыми скобками, таким образом, вы можете проверить рикошеты используя
|
“
-r <regex>
” - Совпадение с адресом получателя. Проверяемое поле не окружено угловыми скобками.
“
-s <regex>
” - Совпадение с полем размера.
“
-y <seconds>
” - Совпедение сообщений, которые раньше данного времени.
“
-o <seconds>
” - Совпедение сообщений, которые старше данного времени.
“
-z
” - Совпадение лишь с замороженными сообщеними.
“
-x
” - Совпадение лишь с незамороженными сообщеними.
Следующие опции управляют форматированием вывода:
“
-c
” - Показ только счётчика совпавших сообщений.
“
-l
” - Длинный формат - показывает полную информацию, как в выводе exim`a. Это - значение по умолчанию.
“
-i
” - Показывает лишь идентификаторы сообщений.
“
-b
” - Краткий формат - одна строка на сообщение.
“
-R
” - Показывает сообщения в обратном порядке.
Есть ещё одна опция,
“
-h
”, которая выводит список всех опций.
49.3 Подведение итогов очереди (exiqsumm)
Утилита
“
exiqsumm
” - скрипт на perl, который читает вывод
“
exim -bp
” и сложение сообщений в очереди. Таким образом, вы можете использовать его путём запуска команды типа такой:
|
Вывод состоит из одной строки для каждого домена, который имеет ожидающие сообщения, как в следующем примере:
|
Каждая строка перечисляет висящие доставки для домена, их полный объём, и отрезки времени, которые ожидают самое старое и самое новое сообщения. Отметтьте, что число зависших доставок больше чем число сообщений, когда сообщения имеют более одного получателя.
“
Итоговая строка выводится в конце. По умолчанию, вывод сортируется по доменному имени, но
exiqsumm
” обладает опциями
“
-a
” и
“
-c
”, вызывающих сортировку вывода по наиболее старым сообщениям, и по счётчику сообщений, соотвественно.
“
Вывод
exim -bp
” содержит оригинальные адреса в сообщении, таким образом, он также применяется к выводу
“
exiqsumm
”. Домены сренерированные из адресов в результате альясинга или форвардинга - не включаются (если не использовалась опция
“
one_time
” роутера
“
redirect
” для конвертации из в адреса
“верхнего уровня
”).
49.4 Извлечение специфической информации из лога (exigrep)
Утилита
“
exigrep
” - скрипт на perl, который ищет по одному или нескольким главным логам элементы совпадающие с заданным шаблоном. Когда он находит совпадение, он извлекает все записи логов для уместного сообщения, а не только совпавшие с шаблоном. Таким образом,
“
exigrep
” может извлекать полный лог для заданного сообщения, или всю почту для заданного пользователя, или для заданного хоста, например. Входные файлы должны быть в формате логов exim`a или syslog.
“
Если совпадающие строки логов не ассоциируются с определённым сообщением, то оно всегда включаются в вывод
exigrep
”. Использование:
|
Аргумент
“
-t
” определяет число секунд. Он добавляет дополнительное условие для выбора сообщения. Сообщения которые являются полными, показываются лишь если они провели в очереди более чем
“<n>
” секунд.
“
Флаг
-l
” - буквальный флаг, для обработки всех символов шаблона как они есть. Иначе паттерн должен быть регулярным выражением perl. Сравнение шаблона нечувствительно к регистру. Если в командной строке не задано имя файла, читается стандартный ввод.
“
Если местоположение команды
zcat
” известно из определения ZCAT_COMMAND в
“
Local/Makefile
”,
“
exigrep
” автоматически передаёт файлы, чьи имена заканчиваются на COMPRESS_SUFFIX, через
“
zcat
” и затем ищет.
49.5 Отбор сообщений по различным критериям (exipick)
Утилита John Jetmore -
“
exipick
”, включена в дистрибутив exim`a. Она выводит список сообщений из очереди согласно разнообразным критериям. Для деталей, запустите:
|
49.6 Ротация лог-файлов (exicyclog)
Скрипт
“
exicyclog
” может быть использован для ротации логов
“
mainlog
” и
“
rejectlog
”. В этом нет необходимости лишь если используется syslog, или если вы используете файлы логов со штампом даты в их именах (смотрите раздел 48.3). Некоторые операционные системы имеют собственные стандартные механизмы для ротации логов, и, если предпочитаете, они могут использоваться вместо
“
exicyclog
”. Есть два варианта опций командной строки для
“
exicyclog
”:
“
-k <count>
” - определяет число оставляемых лог-файлов, перезадавая значение по умолчанию, установленное при сборке exim`a. Значение по умолчанию этого счётчика - 10.
“
-l <path>
” - определяет путь к файлам логов, в том же формате, что и в опции exim`a
“
log_file_path
” (например,
“/var/log/exim_%slog
”), перезадавая значение по умолчанию скрипта, который находит значение из конфигуции exim`a.
Каждый раз при запуске
“
exicyclog
” файлы передвигаются вниз на один. Если имя главного лока файлов -
“
mainlog
” (по умолчанию), тогда при запуске
“
exicyclog
”
“
mainlog
” становиться
“
mainlog.01
”, предыдущий
“
mainlog.01
” в
“
mainlog.02
” и т.д. до предела, установленного в скрипте или опцией
“
-k
”. От файлы логов, чьи имена превысили лимит - отказываются. Лог отклонённых обрабатывается подобным образом.
Если лимит более 99, скрипт использует 3-х цифровые номера, типа
“
mainlog.001
”,
“
mainlog.002
”, и т.д.Если вы изменяете число менее 99 на большее чем 99, или наоборот, вы должны будете исправить имена существующих логов.
Если файл
“
mainlog
” не существует, скрипт ничего не делает. Файлы которые достигли конца - удаляются. Все файлы чей номер более 01 - сжимаются, используя команду сжатия сконфигурированную установкой COMPRESS_COMMAND в
“
Local/Makefile
”. Обычно,
“
exicyclog
” запускается ежедневно из root`ового
“
crontab
”, строкой формы:
|
предполагая, что вы используете для пользователя exim`a имя
“exim
”. Вы можете запускать
“
exicyclog
” от root`a, если вы этого желаете, но в этом нет необходимости.
49.7 Почтовая статистика (eximstats)
Скрипт на perl с именем
“
eximstats
” предоставлен для извлечения статистической информации из лог-файлов. Вывод - является простым текстом, или HTML. Логи exim`a также поддерживаются системой
“
Lire
”, сделанной LogReport Foundation http://www.logreport.org.
Скрипт был нерабочим а течение долгого времени. Последняя версия - результат довольно большой переработки Steve Campbell. По умолчанию, даётся много информации, но есть опции для подавления некоторых её частей. После любых опций, аргументами должны быть файлы главного лога. Например:
|
По умолчанию,
“
eximstats
” извлекает информацию о числе и объёме соощений полученных или доставленных на различные хосты. Информация сортирована по обоим, счётчику сообщений и по объёму, и высшие 50 хостов, в каждой категории, перечислены в стандартном выводе. Подобная информация, основанная на почтовых адресах или доменах, может быть запрошена при помощи различных опций. Для сообщений, доставляемых и передаваемых локально, подобная статистика делается на основании пользователей.
“
Вывод, также включает общий счётчик и статистику о ошибках доставки, и гистограммы, показывающие число сообщений переданных и доставленных на каждый час дня. Доставки с более чем одним адресом в конверте (например, SMTP транзакция с более чем одной командой RCPT) подсчитывается как одна доставка.
Хотя, обычно, уведомляется о большем числе доставок чем приёмов (поскольку сообщения могут иметь более одного получателя),
eximstats
” может сообщить сообщить о большем числе отправленных сообщений, чем было получено, даже если очередь пуста в начале и в конце рассматриваемого периода. Если входящее сообщение не содержит допустимых получателей, для него доставки не записываются. Рикошеты обрабатываются как полностью независмые сообщения.
“
Скрипт
eximstats
” всегда выводит полное резюме, дающее объём и число переданных и доставленных сообщений, и число хостов вовлечённых в каждый случай. Также он выводит число задержанных сообщений (т.е. которые не были полностью доставлены в первую попытку), и число тех, у которых хотя бы один ардет был неудачен.
“
Оставшийся вывод находится в секциях, которые могут быть независимо отключены, или модифицированы различными опциями. Он состоит из изложения доставко по транспортам, гистограмм сообщений переданных и доставленных по интервалу времени (по умолчанию - по часу), информации р времени сообщений проведённом в очереди, списке релееных сообщений, списке высшиих 50 хостов по отправке, локальных отправителей, хостов назначения, и назначении локальных пользователей по счётчику и объёму, и списку происходивших ошибок доставки.
Информация о релеинге перечисляет список сообщений которые были реально отрелеены, т.е. которые прибыли с удалённого хоста и были непосредственно доставлены на некоторый другой удалённый хост, без локальной обработки (например, без альясинга или форвардинга).
Есть довольно много вариантов управления опциями
eximstats
”, для точного управления его выводом. Они непосредственно задокументированы в перл-скрипте, и могут быть извлечены путём запуска команды
“
perldoc
” для скрипта. Например:
|
49.8 Проверка политики доступа (exim_checkaccess)
Аргумент командной строки
“
-bh
” позволяет вам запускать поддельную SMTP сессию с отладочным выводом, для проверки, что делает exim когда применяет управление политиками ко входящей SMTP-почте. Однако, не все достаточно знакомы с протоколом SMTP, чтобы быть в состоянии полностью использовать
“
-bh
”, и иногда вы лишь хотите ответа на вопрос - имеет ли какой-то адрес доступ? - без получения дополнительных деталей.
“
Утилита
exim_checkaccess
” -
“упакованная
” (
“packaged
”) версия
“
-bh
”. Она понимает два аргумента, IP-адрес и адрес электронной почты:
|
Утилита управляет вызовом exim с опцией
“
-bh
”, для тестирования, будет ли принят данный почтовый адрес в команде RCPT в соединении TCP/IP от хоста с заданным IP адресом. Вывод утилиты - или слово
“accepted
”, или ошибочный ответ SMTP, например:
|
При работе этого теста, утилита использует
“<>
” как отправителя конверта в команде MAIL, но вы можете это изменить, предоставляя дополнительные опции. Их передают непосредственно команде exim`a. Например, для задания, что тест запускается с адресом отправителя
“
himself@there.example
”, вы можете использовать:
|
Отметтьте, что эти дополнительные элементы командной строки exim`a нужно давать после двух обязательных элементов.
“
Поскольку
exim_checkaccess
” использует
“
-bh
”, он не выполянет обратный вызов при проведении проверки. Вы можете запустить проверку с включением обратного вызова используя
“
-bhc
”, но это недоступно в
“упакованной
” (
“packaged
”) форме.
49.9 Создание файлов DBM (exim_dbmbuild)
Программа
“
exim_dbmbuild
” читает входной файл, содержащий ключи и данные в формате используемом поиском
“
lsearch
” (смотрите раздел 9.3). Она пишет файлы DBM используя имена альясов в нижнем регистре как ключи, и оставшуюся информацию - как данные. Приведение к нижнему регистру может быть предотвращено путём вызова программы с опцией
“
-nolc
”.
“
Завершающий ноль включается как часть ключевой строки Это ожидается типом поиска
dbm
”. Однако, если задана опция
“
-nozero
”,
“
exim_dbmbuild
” создаёт файлы без завершающих нулей в строках ключей, или строках данных. Тип поиска
“
dbmnz
” может быть использован с такими файлами.
Программа требует двух аргументов: имя входного файла (который может быть одним дефисом, для индикации стандартного ввода), и именем выходного файла. Она создаёт вывод с временным именем, и, затем, переименовывает его, если всё успешно.
Если используется родной интерфейс DB (USE_DB установлена в компиляционном конфигурационном файле - это часто бывает в свободных версиях UNIX) два имени файлов должны быть различными, поскольку в этом режиме, функции Berkeley DB создают один выходной файл, используя точно заданное имя. Например:
|
читает файл системных альясов, и создаёт его DBM версию в
“
/etc/aliases.db
”.
“
В системах, которые используют шаблоны
ndbm
” (большинство проприетарных версий UNIX), используются два файла, с суффиксами
“
.dir
” и
“
.pag
”. В этом окружении, суффиксы добавляются ко второму аргументу
“
exim_dbmbuild
”, таким образом он может быть как и первый. Это также имеет место, когда функции Berkeley используются в совместимом режиме (хотя это не рекомендуется), поскольку в этом случае к имени файла добавляется суффикс
“
.db
”.
“
Если происходит столкновение с двойным ключом (повторяющимся - прим. lissyara), программа выводит предупреждение, и после завершения, она возвращает код 1, а не ноль, если не задана опция
-noduperr
”. По умолчанию, используется лишь первый дубликат - это делает её совместимой с поисками
“
lsearch
”. Также, есть опция
“
-lastdup
”, вызывающая использование последнего дубликата вместо первого. Ещё есть опция
“
-nowarn
”, которая останавливает перечисление двойных ключей на
“
stderr
”. Для других ошибок, при которых новый файл, фактически, не создаётся, код возврата - 2.
49.10 Нахождение индивидуальных времён повторов (exinext)
Утилита, называемая
“
exinext
” (по большей части - скрипт perl), предоставляет возможность выбрать специфическую информацию из БД повторов. Данный почтовый домен (или полный адрес) ищется в хостах для этого домена, и выводит любую информацию повторов для хоста или домена. В настоящее время, информация повторов получается путём запуска
“
exim_dumpdb
” (смотрите ниже), и последующей обработки её вывода. Например:
|
Также, вы можете дать
“
exinext
” локальную часть, без домена, и он выдаст любую информацию повторов для этой локальной части, в вашем дефолтовом домене. Идентификатор сообщения может использоваться для получения информации повторов относящейся к специфическому сообщению. Она существует лишь когда попытка доставки сообщения на удалённый зост привела к специфической для сообщения ошибки (смотрите раздел 44.2).
“
exinext
” - не очень эффективен, но, как ожидается, он не будет часто запускаться.
“
Утилита
exinext
” вызывает exim для нахождения информации, типа расположения spool-директории. Утилита имеет опции
“
-C
” и
“
-D
”, передаваемые командам
“
exim
”. Первая определяет альтернативный конфигурационный файл exim`a, и вторая устанавливает макрос для использования в конфигурационном файле. Эти особенности должны помочь в тестировании, но они, также, могли бы быть полезны в окружении, где используется более одного конфигурационного файла.
49.11 Обслуживание БД подсказок
Три утилиты предоставляются для обслуживания файлов DBM, которые exim использует для хранения его информации подсказок о доставках. Каждая программа требует двух аргументов. Первый определяет имя директории спула exim`a, и второй - имя БД с которой она работает. Они, таковы:
“
retry
”: БД информации повторов
“
wait-<transport name>
”: БД информации о сообщениях, ожидающих удалённых хостов
“
callout
”: кэш обратных вызовов
“
ratelimit
”: данные для осуществления условий ACL ограничения частоты
“
misc
”: иные данные подсказок
БД
“
misc
” используется для
Сериализации запусков ETRN (когда установлена
“
smtp_etrn_serialize
”)
Сериализации доставки к специфическому хосту (когда
“
smtp_etrn_serialize
” установлена в транспорте
“
smtp
”)
49.12 exim_dumpdb
Всё содержимое БД пишется на стандартный вывод, при помощи программы
“
exim_dumpdb
”, которая не имеет опций или аргументов кроме как имена спула и БД. Например, для дампа БД повторов:
|
На каждое вхождение производится две строки вывода:
|
Первый элемент в первой строке - ключ записи. Он начинается с одной из букв -
“R
” или
“T
”, в зависимоти от того, ссылается ли она на повтор роутинга, или транспорта. Для локальной доставки, следующая часть - локальный адрес; для удалённой доставки - это имя удалённого хоста, сопровождаемое его неудачным IP-адресом (если
“
no_retry_include_ip_address
” не установлена в транспорте
“
smtp
”). Если удалённый порт не стандартный (порт 25), он добавляется к IP-адресу. Затем следует код ошибки, дополнительный код ошибки, и текстовое описание ошибки.
“
Три времени во второй строке - время первой ошибки, время последней попытки доставки, и вычисленное время для следующей попытки. Строка завершается звёздочкой, если время убывания для последнего повтора было превышено.
Каждая строка вывода
exim_dumpdb
” для БД
“
wait-xxx
” содержит имя хоста, сопровождаемое списком идентификаторов для сообщений, которые есть, или ждут доставки на этот хост. Если для какого-то хоста очень много (идентификаторов, наверное - прим. lissyara), могут быть замечены повторяющиеся записи, с номерами последовательности добавленным к имени хоста. Данные в этих записях, часто являются устаревшими, поскольку сообщение может быть сроучено к нескольким альтернативным хостам, и exim не предпринимает усилий для ведения перекрёстных ссылок.
49.13 exim_tidydb
Утилита
“
exim_tidydb
” используется для упорядочивания содержимого БД подсказок. Если она запускается без опций, она удаляет все записи, которые старше 30 дней. Возраст вычисляется из даты и времени, когда запись была последний раз обновлена. Отметтьте, что в случае БД повторов, это не время с момента первого отказа. Информация о хосте, который лежал более 30 дней останется в БД, при условии, что записи обновляются достаточно часто.
“
Дата сокращения может быть изменена путём опции
-t
”? которая должна сопровождаться временем. Например, для удаления всех записей которые старше недели из БД повторов:
|
Обе БД -
“
wait-xxx
” и
“
retry
”, содержат элементы, которые вовлекают идентификаторы сообщений. Они фигурируют в форме данных в записях, где ключи - хосты, они были сообщениями ожидавшими этих хостов - и в последующем они - ключи для информации о сообщениях, перенёсших определённые типы ошибок. Когда
“
exim_tidydb
” работает, производится проверка? что идентификаторы сообщений записанные в БД - это сообщения, которые всё ещё в очереди. Идентификаторы для сообщений, которые больше не существуют, удаляются из записей
“
wait-xxx
”, и если остаются пустые записи, они удаляются. Для БД
“
retry
”, удаляются записи чьи ключи - идентификаторы несуществующих сообщений. Утилита
“
exim_tidydb
” выводит комментарии на стандартный вывод каждый раз, когда она удаляет информацию из БД.
“
Определённые записи автоматически удаляются exim`ом когда они больше не нужны., но иные не удаляются. Например, если все MX хосты домена лежат, записи повторов создаются для каждого из них. Если первичный MX подымется первым, его запись удалится, когда exim успешно доставит на него, но записи для других - останутся, поскольку exim не пробовал эти хосты.
Это важно, поэтому, периодически запускайте
exim_tidydb
” для всех БД подсказок. Вы должны делать это в спокойное время суток, поскольку она требует, чтобы БД была заблокирована (и, поэтому, недоступна exim`y) когда она работает. Удаление записей из файлов DBM, обычно, не делает файл меньше, но все обычные библиотеки DBM умеют заново использовать освобождённое место. После начальной фазы увеличения в размере, БД, обычно, достигают точки, в которой они не становятся намного больше, пока они регулярно обслуживаются.
“
Предупреждение: Если вы никогда не будете запускать
exim_tidydb
”, то вероятно, используемое БД подсказок место будет продолжать увеличиваться.
49.14 exim_fixdb
Программа
“
exim_fixdb
” - утилита для интерактивной можификации БД. Главное её использование - для тестирования exim`a, но, также, иногда она может быть полезна для обхода проблемы на живой системе. Она не имеет опций, и её интерфейс несколько грубоват. На входе, она выводит подсказку в виде правой угловой скобки. В это время может быть введён ключ записи, и будут отображены данные для этой записи.
“
Если в следующеи приглашении будет введено d
”, запись будет удалена. Для всех кроме БД
“
retry
”, это - единственная возможная операция. Для БД
“
retry
”, каждое поле предшествуется номером, и данные для индивидуальных полей могут быть изменены путём ввода номера поля, сопровождаемого новыми данными, напрмер:
|
сбросит время следующей попытки доставки. Значение времени даётся как последовательность цифровых пар для года, месяца, дня, часа, и минут. Двоеточия могут использоваться как опциональные разделители.
49.15 Обслуживание почтового ящика (exim_lock)
Утилита
“
exim_lock
” блокирует файл почтового ящика, используя тот же самый алгоритм что и exim. Для обсуждения проблем блокировки, смотрите раздел 26.3.
“
exim_lock
” может быть использована для предотвращения какой-либо модификации почтового ящика exim`ом или пользовательским агентом, при исследовании проблемы. Утилита требует имя файла как её первый аргумент. Если блокировка успешна, второй аргумент запускает команду (используя функцию
“
system()
” С); если второй аргумент не задан, используется значение переменной окружения SHELL; если она не задана или пуста, запускается
“
/bin/sh
”. Когда команда завершается, почтовый ящик разблокируется, и утилита завершается. Доступны следующие опции:
“
-fcntl
” - Использовать для блокировки открытого почтового ящика
“
fcntl()
”.
“
-flock
” - Использовать для блокировки открытого почтового ящика
“
flock()
”, если операционная система это поддерживает.
“
-interval
” - Она должна сопровождаться числом, которое - число секунд; она устанавливает интервал засыпания между повторами (по умолчанию - 3).
“
-lockfile
” - Созавать файл блокировки до открытия почтового ящика.
“
-mbx
” - Блокировать почтовый ящик используя парвила MBX.
“
-q
” - Убрать проверочный вывод.
“
-retries
” - Она должна сопровождаться числом; оно устанавливает сколько бкдет предприниматься попыток установить блокировку (по умолчанию - 10).
“
-restore_time
” - Эта опция заставляет
“
exim_lock
” восстанавливать время изменённения и время чтения блокированного файла до выхода. Это позволяет получить вам доступ к блокированному почтовому ящику (например, чтобы получить резервную копию) не изменяя время, которое впоследствии увилит пользователь.
“
-timeout
” - Она должна сопровождаться числом, которое - число секунд; оно устанавливает таймаут который будет использоваться с блокировкой
“
fcntl()
”. Если она не установлена (по умолчанию), используются неблокирующие вызовы.
“
-v
” - Генерировать подробный вывод.
Если не заданы
“
-fcntl
”,
“
-flock
”,
“
-lockfile
” или
“
-mbx
”, по умолчанию создаётся файл блокировки, и, также, на почтовом ящике используется блокировка
“
fcntl()
”, что делает и exim, по умолчанию. Использование
“
-flock
” и
“
-fcntl
” требует чтобы было право писать в файл; использование
“
-lockfile
” требует чтобы было право записи в директорию, содержащую файл. Блокировка путём файла не длится вечно; exim предполагает, что блокировка истекла, если он старее 30 минут.
Опция
“
-mbx
” может использоваться с одной, или обоими -
“
-fcntl
” или
“
-flock
”. По умолчанию, предполагается
“
-fcntl
”. Блокирока MBX вызывает отключение общей блокировки открытого почтового ящика, и эксклюзивную блокировку на файле
“
/tmp/.n.m
”, где
“
n
” и
“
m
” - номер устройства и номер иноды файла почтового ящика. Когда блокировка снята, если для почтового ящика может быть получена эксклюзивная блокировка, файл в
“
/tmp
” - удаляется.
Дефолтовый вывод содержит проверки имеющих место блокировок. Опция
“
-v
” вызывает выдачу некоторой дополнительной информации. Опция
“
-q
” подавляет весь вывод, исключая сообщения о ошибках.
Команда типа:
|
запускает интерактивный шелл, когда файл заблокирован, тогда как:
|
запускает определённую неинтерактивную последовательность команд, когда файл заблокирован, подавляя весь проверочный вывод. Одна команда может быть запущена командой типа:
|
Отметтьте, что если команда предоставлена, она должна полностью находиться во втором аргументе, следовательно - в кавычках.
=============
Автор перевода: lissyara, оригинал: http://www.lissyara.su/?id=1200