RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Перевод выполнен Алексеем Паутовым в рамках некоммерческого проекта RussianLDP (http://www.rldp.ru/). Именно на этом сайте и надлежит искать новые версии, если таковые будут.

49. Утилиты exim

Множество скриптовых утилит и программ поставляются с exim и описано в этой части. Также есть Exim Monitor, который описыватся в следующей части. Описанные утилиты таковы:

  • 49.1 exiwhat список, что делают процессы exim.
  • 49.2exiqgrep выбор из очереди.
  • 49.3exiqsumm суммирование очереди.
  • 49.4exigrep поиск по главному протоколу.
  • 49.5exipick выбор сообщений по различным критериям.
  • 49.6exicyclog ротация файлов протоколов.
  • 49.7eximstats выбор статистики из протоколов.
  • 49.8exim_checkaccess проверка приёма адреса с данного IP.
  • 49.9exim_dbmbuild сборка файла DBM.
  • 49.10exinext извлечение информации повторов.
  • 49.11exim_dumpdb дамп БД подсказок.
  • 49.11exim_tidydb очистка БД подсказок.
  • 49.11exim_fixdb правка БД подсказок.
  • 49.15exim_lock блокировка файла почтового ящика (mailbox).

Другая утилита, которая могла бы использоваться на сайтах со многими MTA, exilog. Он обеспечивает визуализацию протоколов от многих серверов exim. Для деталей смотрите http://duncanthrax.net/exilog/.

49.1. Поиск, что делают процессы exim (exiwhat)

На операционных системах, которые могут перезапускать системные вызовы после получения сигнала (большинство современных OS), процесс exim отвечает на сигнал SIGUSR1 путём записи строки описывающей, что он делает, в файл exim-process.info в каталоге спула exim. Скрипт exiwhat посылает сигнал всем процессам exim, которые он находит, вначале очистив файл. После чего он ждёт секунду, чтобы позволить процессам отреагировать до отображения результатов. Для успешного управления exiwhat Вы должны обладать достаточными привилегиями для посылки сигнала процессам exim, таким образом, обычно он запускается от имени root.

Предупреждение: это неэффективный процесс. Он предназначен для редкого использования администраторами системы. Неразумно, например, настраивать скрипт, который через короткие периоды посылает процессам exim сигнал SIGUSR1.

К сожалению, команда ps, которую exiwhat использует для нахождения процессов, различна в разных операционных системах. Мало того, что используются различные опции, но и формат вывода различен. Для этого есть некоторые системные конфигурационные опции, которые настраивают то, как работает exiwhat. Если Вам кажется, что он не работает, проверьте следующие компиляционные опции:

  • EXIWHAT_PS_CMD: команда для запуска ps.
  • EXIWHAT_PS_ARG: аргумент для ps.
  • EXIWHAT_EGREP_ARG: аргумент для egrep для выбора из вывода ps.
  • EXIWHAT_KILL_ARG: аргумент для команды kill.

Пример типичного вывода exiwhat:
164 daemon: -q1h, listening on port 25
10483 running queue: waiting for 0tAycK-0002ij-00 (10492)
10492 delivering 0tAycK-0002ij-00 to mail.ref.example
   [10.19.42.42] (editor@ref.example)
10592 handling incoming call from [192.168.243.242]
10628 accepting a local non-SMTP message

Первое число в строке вывода задает номер процесса. Третья строка была разделена, чтобы уместиться на странице.

49.2. Селективный просмотр очереди (exiqgrep)

Эта утилита является скриптом на Perl, предоставленный Matt Hubbard. Он запускает:
exim -bpu
для получения списка очереди, содержащего лишь недоставленных получателей, а затем выбирает из вывода сообщения, которые совпадают с заданными критериями. Доступны следующие опции выбора:

  • -f regex: Совпадение с адресом отправителя. Проверяемое поле окружено угловыми скобками, таким образом, Вы можете проверить рикошеты, используя:
    exiqgrep -f '^<>$'
    
  • -a: Включает получателей, которым доставка уже выполнена, в перечисление очереди.
  • -C: Используется для определения замены exim.conf с альтернативной конфигурацией, которую могло бы использовать управление очередью.
  • -r regex: Совпадение с адресом получателя. Проверяемое поле не окружено угловыми скобками.
  • -s regex: Совпадение с полем размера.
  • -y seconds: Совпедение сообщений, которые раньше данного времени.
  • -o seconds: Совпедение сообщений, которые старше данного времени.
  • -z: Совпадение лишь с замороженными сообщеними.
  • -x: Совпадение лишь с незамороженными сообщеними.

Следующие опции управляют форматированием вывода:

  • -c: Показ только счётчика совпавших сообщений.
  • -l: Длинный формат показывает полную информацию, как в выводе exim. Это значение по умолчанию.
  • -i: Показывает лишь идентификаторы сообщений.
  • -b: Краткий формат: одна строка на сообщение.
  • -R: Показывает сообщения в обратном порядке.

Есть ещё одна опция, -h, которая выводит список всех опций.

49.3. Подведение итогов очереди (exiqsumm)

Утилита exiqsumm представляет собой скрипт на perl, который читает вывод exim -bp и выполняет сложение сообщений в очереди. Таким образом, Вы можете использовать его путём запуска такой команды:
exim -bp | exiqsumm

Вывод состоит из одной строки для каждого домена, который имеет ожидающие сообщения, как в следующем примере:
3   2322   74m   66m  msn.com.example

Каждая строка перечисляет висящие доставки для домена, их полный объём и отрезки времени, которые ожидают самое старое и самое новое сообщения. Отметьте, что число зависших доставок больше, чем число сообщений, когда сообщения имеют более одного получателя.

Итоговая строка выводится в конце. По умолчанию вывод сортируется по доменному имени, но exiqsumm обладает опциями -a и -c, вызывающих сортировку вывода по наиболее старым сообщениям и по счётчику сообщений соотвественно.

Вывод exim -bp содержит оригинальные адреса в сообщении, таким образом, он также применяется к выводу exiqsumm. Домены, сгенерированные из адресов в результате алиасинга или форвардинга, не включаются (если не использовалась опция one_time роутера redirect для конвертации в адреса верхнего уровня).

49.4. Извлечение специфической информации из протокола (exigrep)

Утилита exigrep представляет собой скрипт на perl, который ищет по одному или нескольким главным протоколам элементы, совпадающие с заданным шаблоном. Когда он находит совпадение, он извлекает все записи протоколов для уместного сообщения, а не только совпавшие с шаблоном. Таким образом, exigrep может извлекать полный протокол для заданного сообщения или всю почту для заданного пользователя, или для заданного хоста, например. Входные файлы должны быть в формате протоколов exim или syslog. Если совпадающие строки протоколов не ассоциируются с определённым сообщением, оно всегда включаются в вывод exigrep. Использование:
exigrep [-l] [-t n] pattern [log file] ...

Аргумент -t определяет число секунд. Он добавляет дополнительное условие для выбора сообщения. Сообщения, которые являются полными, показываются, лишь если они провели в очереди более, чем n секунд.

Флаг -l представляет собой буквальный флаг для обработки всех символов шаблона, как они есть. Иначе шаблон должен быть регулярным выражением perl. Сравнение шаблона нечувствительно к регистру. Если в командной строке не задано имя файла, читается стандартный ввод.

Если местоположение команды zcat известно из определения ZCAT_COMMAND в Local/Makefile, exigrep автоматически передаёт файлы, чьи имена заканчиваются на COMPRESS_SUFFIX, через zcat и затем ищет.

49.5. Отбор сообщений по различным критериям (exipick)

Утилита John Jetmore exipick включена в дистрибутив exim. Она выводит список сообщений из очереди, согласно разнообразным критериям. Для получения подробностей запустите:
exipick --help

49.6. Ротация файлов протоколов (exicyclog)

Скрипт exicyclog может быть использован для ротации протоколов mainlog и rejectlog. В этом нет необходимости, лишь если используется syslog, или Вы используете файлы протоколов со штампом даты в их именах (смотрите раздел 48.3). Некоторые операционные системы имеют собственные стандартные механизмы для ротации протоколов, и, если предпочитаете, они могут использоваться вместо exicyclog. Есть два варианта опций командной строки для exicyclog:

  • -k count: определяет число оставляемых файлов, перезадавая значение по умолчанию, установленное при сборке exim. Значение по умолчанию этого счётчика 10.
  • -l path: определяет путь к файлам протоколов в том же формате, что и в опции exim log_file_path (например, /var/log/exim_%slog), перезадавая значение по умолчанию скрипта, который находит значение из конфигуции exim. Каждый раз при запуске 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 запускается ежедневно из crontab root строкой формы:
    1 0 * * * su exim -c /usr/exim/bin/exicyclog
    
    предполагая, что Вы используете для пользователя exim имя exim. Вы можете запускать exicyclog от root, если Вы этого желаете, но в этом нет необходимости.

    49.7. Почтовая статистика (eximstats)

    Скрипт на perl с именем eximstats предоставлен для извлечения статистической информации из файлов протоколов. Вывод является простым текстом или HTML. Протокол exim также поддерживаются системой Lire, сделанной LogReport Foundation http://www.logreport.org.

    Скрипт был нерабочим в течение долгого времени. Последняя версия представляет собой результат довольно большой переработки Steve Campbell. По умолчанию выдаётся много информации, но есть опции для подавления некоторых её частей. После любых опций аргументами должны быть файлы главного протокола. Например:
    eximstats -nr /var/spool/exim/log/mainlog.01
    

    По умолчанию eximstats извлекает информацию о числе и объёме соощений полученных или доставленных на различные хосты. Информация сортирована по обоим, счётчику сообщений и по объёму, высшие 50 хостов, в каждой категории, перечислены в стандартном выводе. Подобная информация, основанная на почтовых адресах или доменах, может быть запрошена при помощи различных опций. Для сообщений, доставляемых и передаваемых локально, подобная статистика делается на основании пользователей.

    Вывод также включает общий счётчик, статистику об ошибках доставки и гистограммы, показывающие число сообщений переданных и доставленных на каждый час дня. Доставки с более, чем одним адресом в конверте (например, SMTP-транзакция с более, чем одной командой RCPT) подсчитываются как одна доставка.

    Хотя обычно уведомляется о большем числе доставок, чем приёмов (поскольку сообщения могут иметь более одного получателя), eximstats может сообщить о большем числе отправленных сообщений, чем было получено, даже если очередь пуста в начале и в конце рассматриваемого периода. Если входящее сообщение не содержит допустимых получателей, для него доставки не записываются. Рикошеты обрабатываются как полностью независмые сообщения.

    Скрипт eximstats всегда выводит полное резюме, дающее объём и число переданных и доставленных сообщений и число хостов, вовлечённых в каждый случай. Также он выводит число задержанных сообщений (то есть, которые не были полностью доставлены в первую попытку) и число тех, у которых хотя бы что-то было неудачным.

    Оставшийся вывод находится в секциях, которые могут быть независимо отключены или модифицированы различными опциями. Он состоит из изложения доставок по транспортам, гистограмм сообщений переданных и доставленных по интервалу времени (по умолчанию по часу), информации и времени сообщений, проведённом в очереди, списке релееных сообщений, списке высшиих 50 хостов по отправке, локальных отправителей, хостов назначения и назначении локальных пользователей по счётчику, объёму и списку происходивших ошибок доставки.

    Информация о релеинге перечисляет список сообщений, которые были реально отрелеены, то есть, которые прибыли с удалённого хоста и были непосредственно доставлены на некоторый другой удалённый хост без локальной обработки (например, без алиасинга или форвардинга).

    Есть довольно много вариантов управления опциями eximstats для точного управления его выводом. Они непосредственно задокументированы в скрипте и могут быть извлечены путём запуска команды perldoc для скрипта. Например:
    perldoc /usr/exim/bin/eximstats
    

    49.8. Проверка политики доступа (exim_checkaccess)

    Аргумент командной строки -bh позволяет запускать поддельную SMTP-сессию с отладочным выводом для проверки, что делает exim, когда применяет управление политиками ко входящей SMTP-почте. Однако, не все достаточно знакомы с протоколом SMTP, чтобы быть в состоянии полностью использовать -bh, и иногда Вы лишь хотите ответа на вопрос имеет ли какой-то адрес доступ без получения дополнительных деталей.

    Утилита exim_checkaccess представляет собой упакованную (packaged) версию -bh. Она понимает два аргумента: IP-адрес и адрес электронной почты:
    exim_checkaccess 10.9.8.7 A.User@a.domain.example
    

    Утилита управляет вызовом exim с опцией -bh для тестирования, будет ли принят данный почтовый адрес в команде RCPT в соединении TCP/IP от хоста с заданным IP-адресом. Вывод утилиты: слово accepted или ошибочный ответ SMTP, например:
    Rejected: 550 Relay not permitted
    

    При работе этого теста утилита использует <> как отправителя конверта в команде MAIL, но Вы можете это изменить, предоставляя дополнительные опции. Их передают непосредственно команде exim. Например, для задания, что тест запускается с адресом отправителя himself@there.example можете использовать:
    exim_checkaccess 10.9.8.7 A.User@a.domain.example \
                     -f himself@there.example
    

    Отметьте, что эти дополнительные элементы командной строки exim нужно давать после двух обязательных элементов. Поскольку 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 создают один выходной файл, используя точно заданное имя. Например:
    exim_dbmbuild /etc/aliases /etc/aliases.db
    
    читает файл системных алиасов и создаёт его DBM-версию в /etc/aliases.db. В системах, которые используют шаблоны ndbm (большинство платных версий UNIX), используются два файла с суффиксами .dir и .pag. В этом окружении суффиксы добавляются ко второму аргументу exim_dbmbuild, таким образом, он может быть таким же, как и первый. Это также имеет место, когда функции Berkeley используются в совместимом режиме (хотя это не рекомендуется), поскольку в этом случае к имени файла добавляется суффикс .db. Если происходит столкновение с двойным ключом, программа выводит предупреждение и после завершения она возвращает код 1, а не ноль, если не задана опция -noduperr. По умолчанию используется лишь первый дубликат: это делает её совместимой с поисками lsearch. Также есть опция -lastdup, вызывающая использование последнего дубликата вместо первого. Ещё есть опция -nowarn, которая останавливает перечисление двойных ключей на stderr. Для других ошибок, при которых новый файл фактически не создаётся, код возврата 2.

    49.10. Нахождение индивидуальных времён повторов (exinext)

    Утилита, называемая exinext (по большей части это скрипт на perl), предоставляет возможность выбрать специфическую информацию из БД повторов. Данный почтовый домен (или полный адрес) ищется в хостах для этого домена и выводит любую информацию повторов для хоста или домена. В настоящее время информация повторов получается путём запуска exim_dumpdb (смотрите ниже) и последующей обработки её вывода. Например:
    $ exinext piglet@milne.fict.example
    kanga.milne.example: 192.168.8.1
    error 146: Connection refused
    first failed: 21-Feb-1996 14:57:34
      last tried: 21-Feb-1996 14:57:34
     next try at: 21-Feb-1996 15:02:34
    roo.milne.example: 192.168.8.3
    error 146: Connection refused
      first failed: 20-Jan-1996 13:12:08
      last tried:   21-Feb-1996 11:42:03
      next try at:  21-Feb-1996 19:42:03
      past final cutoff time
    

    Также Вы можете дать exinext локальную часть без домена, и он выдаст любую информацию повторов для этой локальной части в Вашем домене по умолчанию. Идентификатор сообщения может использоваться для получения информации повторов, относящейся к специфическому сообщению. Она существует, лишь когда попытка доставки сообщения на удалённый хост привела к специфической для сообщения ошибке (смотрите раздел 44.2). exinext не очень эффективен, но, как ожидается, он не будет часто запускатся.

    Утилита exinext вызывает exim для нахождения информации, типа расположения spool-каталога. Утилита имеет опции -C и -D, передаваемые командам exim. Первая определяет альтернативный конфигурационный файл exim, вторая устанавливает макрос для использования в конфигурационном файле. Эти особенности должны помочь в тестировании, но они также могли бы быть полезны в окружении, где используется более одного конфигурационного файла.

    49.11. Обслуживание БД подсказок

    Три утилиты предоставляются для обслуживания файлов DBM, которые exim использует для хранения его информации подсказок о доставках. Каждая программа требует двух аргументов. Первый определяет имя каталога спула exim, второй имя БД, с которой она работает. Они таковы:

    • retry: БД информации повторов.
    • wait-transport name: БД информации о сообщениях, ожидающих удалённых хостов.
    • callout: кэш обратных вызовов.
    • ratelimit: данные для осуществления условий ACL ограничения частоты.
    • misc: иные данные подсказок.

    БД misc используется для:

    • Сериализации запусков ETRN (когда установлена smtp_etrn_serialize).
    • Сериализации доставки к специфическому хосту (когда smtp_etrn_serialize установлена в транспорте smtp).

    49.12. exim_dumpdb

    Всё содержимое БД пишется на стандартный вывод при помощи программы exim_dumpdb, которая не имеет опций или аргументов, кроме как имена спула и БД. Например, для дампа БД повторов:
    exim_dumpdb /var/spool/exim retry
    

    На каждое вхождение производится две строки вывода:
    T:mail.ref.example:192.168.242.242 146 77 Connection refused
    31-Oct-1995 12:00:12
    02-Nov-1995 12:21:39
    02-Nov-1995 20:21:39 *
    

    Первый элемент в первой строке: ключ записи. Он начинается с одной из букв R или T, в зависимости от того, ссылается ли она на повтор роутинга или транспорта. Для локальной доставки следующая часть локальный адрес, для удалённой доставки это имя удалённого хоста, сопровождаемое его неудачным IP-адресом (если no_retry_include_ip_address не установлена в транспорте smtp). Если удалённый порт не стандартный (порт 25), он добавляется к IP-адресу. Затем следуют код ошибки, дополнительный код ошибки и текстовое описание ошибки.

    Три времени во второй строке: время первой ошибки, время последней попытки доставки и вычисленное время для следующей попытки. Строка завершается звёздочкой, если время убывания для последнего повтора было превышено.

    Каждая строка вывода exim_dumpdb для БД wait-xxx содержит имя хоста, сопровождаемое списком идентификаторов для сообщений, которые есть или ждут доставки на этот хост. Если для какого-то хоста очень много идентификаторов, могут быть замечены повторяющиеся записи с номерами последовательности, добавленными к имени хоста. Данные в этих записях часто являются устаревшими, поскольку сообщение может быть сроучено к нескольким альтернативным хостам, а exim не предпринимает усилий для ведения перекрёстных ссылок.

    49.13. exim_tidydb

    Утилита exim_tidydb используется для упорядочивания содержимого БД подсказок. Если она запускается без опций, она удаляет все записи, которые старше 30 дней. Возраст вычисляется из даты и времени, когда запись была последний раз обновлена. Отметьте, что в случае БД повторов это не время с момента первого отказа. Информация о хосте, который лежал более 30 дней, останется в БД, при условии, что записи обновляются достаточно часто.

    Дата сокращения может быть изменена путём опции -t, которая должна сопровождаться временем. Например, для удаления всех записей, которые старше недели из БД повторов:
    exim_tidydb -t 7d /var/spool/exim retry
    

    Обе БД wait-xxx и retry, содержат элементы, которые вовлекают идентификаторы сообщений. Они фигурируют в форме данных в записях, где ключи хосты, они были сообщениями, ожидавшими этих хостов, и в последующем они ключи для информации о сообщениях, перенёсших определённые типы ошибок. Когда exim_tidydb работает, производится проверка, что идентификаторы сообщений, записанные в БД, это сообщения, которые всё ещё в очереди. Идентификаторы для сообщений, которые больше не существуют, удаляются из записей wait-xxx, и если остаются пустые записи, они удаляются. Для БД retry удаляются записи, чьи ключи идентификаторы несуществующих сообщений. Утилита exim_tidydb выводит комментарии на стандартный вывод каждый раз, когда она удаляет информацию из БД.

    Определённые записи автоматически удаляются exim, когда они больше не нужны, но иные не удаляются. Например, если все MX-хосты домена лежат, записи повторов создаются для каждого из них. Если первичный MX поднимется первым, его запись удалится, когда exim успешно доставит на него, но записи для других останутся, поскольку exim не пробовал эти хосты.

    Это важно, поэтому периодически запускайте exim_tidydb для всех БД подсказок. Вы должны делать это в спокойное время суток, поскольку она требует, чтобы БД была заблокирована (и поэтому недоступна exim), когда она работает. Удаление записей из файлов DBM обычно не делает файл меньше, но все обычные библиотеки DBM умеют заново использовать освобождённое место. После начальной фазы увеличения в размере БД обычно достигают точки, в которой они не становятся намного больше, пока они регулярно обслуживаются.

    Предупреждение: если Вы никогда не будете запускать exim_tidydb, то вероятно, используемое БД подсказок место будет продолжать увеличиваться.

    49.14. exim_fixdb

    Программа exim_fixdb представляет собой утилиту для интерактивной модификации БД. Главное её использование: для тестирования exim, но также иногда она может быть полезна для обхода проблемы на живой системе. Она не имеет опций, а её интерфейс несколько грубоват. На входе она выводит подсказку в виде правой угловой скобки. В это время может быть введён ключ записи, и будут отображены данные для этой записи.

    Если в следующем приглашении будет введено d, запись будет удалена. Для всех БД, кроме retry, это единственная возможная операция. Для БД retry каждое поле предшествуется номером, и данные для индивидуальных полей могут быть изменены путём ввода номера поля, сопровождаемого новыми данными, например:
    > 4 951102:1000
    
    сбросит время следующей попытки доставки. Значение времени даётся как последовательность цифровых пар для года, месяца, дня, часа и минут. Двоеточия могут использоваться как опциональные разделители.

    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 подавляет весь вывод, исключая сообщения об ошибках. Команда типа:
    exim_lock /var/spool/mail/spqr
    
    запускает интерактивную оболочку, когда файл заблокирован, тогда как:
    exim_lock -q /var/spool/mail/spqr <<End
    some commands
    End
    
    запускает определённую неинтерактивную последовательность команд, когда файл заблокирован, подавляя весь проверочный вывод. Одна команда может быть запущена командой типа:
    exim_lock -q /var/spool/mail/spqr \
       "cp /var/spool/mail/spqr /some/where"
    

    Отметьте, что если команда предоставлена, она должна полностью находится во втором аргументе, следовательно, в кавычках.

Поиск

 

Найди своих коллег!