Exim 5 Командная строка Exim

Материал из wiki.lissyara.su
Перейти к: навигация, поиск

Командная строка Exim

Командная строка exim имеет стандартную UNIX-форму последовательности опций, которые начинаются с символа дефиса, за которым следует несколько параметров. Опции совместимы с основными опциями Sendmail, и также есть дополнительные опции, некоторые из которых совместимы с Smail 3. Определённые комбинации опций не имеют смысла, и при попытке их использования происходит ошибка. Форма аргументов (параметров) зависит от того, какие опции заданы.

Установка опций именем программы

Если exim вызывается под именем “mailq”, он ведёт себя как будто перед другими опциями присутствует опция “-bp”. Опция “-bp” запрашивает список содержимого почтовой очереди и выводит его на стандартный вывод. Эта возможность имеется для совместимости с некоторыми системами, содержащими команды с использованием этого имени в одной из стандартных библиотек, символически связанных с “/usr/sbin/sendmail” или “/usr/lib/sendmail”.

Если exim вызывается под именем “rsmtp”, он ведёт себя как будто перед другими опциями присутствует опция “-bS”, для совместимости со Smail. Опция “-bS” используется для подсчёта числа сообщений в пакетном SMTP-формате.

Если exim вызывается под именем “rmail”, он ведёт себя как будто перед другими опциями присутствуют опции “-i” и “-oee”, для совместимости со Smail. Имя “rmail” используется как интерфейс некоторыми UUCP системами.

Если exim вызывается под именем “runq”, он ведёт себя как будто перед другими опциями присутствует опция “-q”, для совместимости со Smail. Опция “-bS” используется для запуска одиночного процесса обработчика очереди.

Если exim вызывается под именем “newaliases”, он ведёт себя как будто перед другими опциями присутствует опция “-bi”, для совместимости со Sendmail. Эта опция используется для пересборки файла альясов Sendmail`a. Exim понятия не имеет о одиночном (отдельном?) файле альясов, но может быть сконфигурирован для выполнения данной команды, если он вызван с опцией “-bi”.

Доверенные и административные пользователи

Некоторые опции exim`a доступны только для “доверенных пользователей” (“trusted users”), и другие доступны лишь для “административных пользователей” (“admin users”). В описании ниже, фразы “пользователь exim`a” (“Exim user”) и “группа Exim” (“Exim group”) означают пользователя и группу заданных как “EXIM_USER” и “EXIM_GROUP” в “Local/Makefile”, или установленных опциями “exim_user” и “exim_group” конфигурационного файла. Они не обязательно должны использовать имя “exim”.

  • Доверенные пользователи - это root, пользователь exim`a, и любой пользователь перечисленный в конфигурационной опции “trusted_users”, и любой пользователь, текущая или дополнительная группа которого перечислена в конфигурационной опции “trusted_groups”. Обратите внимание, что группе exim доверие автоматически не устанавливается.
Доверенным пользователям всегда разрешено использовать опцию “-f” или продолжение строки “From ”, для определения (имеется в виду, что можно изменить имя отправителя - прим. lissyara) отправителя конверта сообщения, принятого exim`ом через локальный интерфейс (смотрите ниже, опции “-bm” и “-f”). Смотрите опцию “untrusted_set_sender” для способа разрешить недоверенным пользователям устанавливать отправителя конверта.
Для доверенных пользователей никогда не проверяется содержимое заголовков “From:” и никогда не добавляется строка заголовка “Sender:”. Кроме того, любые существующие строки “Sender:” во входящих локальных (не по TCP/IP) сообщениях не удаляются.
Также, доверенные пользователи могут задать имя хоста, адрес хоста, адрес интерфейса, имя протокола, значение ident, и аутентификационные данные, при отправке сообщения локально. Таким образом, они могут вставить в локальную очередь exim`a сообщения, которые имеют характеристики сообщений полученных с удалённых хостов. Недоверенные пользователи, при некоторых обстоятельствах, используют “-f”, но никогда не могут устанавливать другие значения, доступные для доверенных пользователей.
  • Административный пользователь - root, пользователь exim`a, и любые другие пользователи, которые являются членами группы exim`a (несколько расходится с описанным парой абзацев выше, не находите? Надо проверять живьём. - прим. lissyara), или любой группы перечисленной в конфигурационной опции “admin_groups”. Текущая группа не должна быть одной из этих групп.
Административным пользователям разрешено просматривать список очереди, и выполнять определённые операции над сообщениями, например, вызывать принудительную ошибку доставки сообщения. Также, необходимо быть административным пользователем, чтобы видеть полную информацию предоставляемую монитором exim`a, и полную отладочную информацию.
По дефолту, использование опций “-M”, “-q”, “-R” и “-S” для попытки доставки доставки сообщения в очереди, доступно только административным пользователям. Однако, это ограничение может быть ослаблено, установкой опции “prod_requires_admin” в “false” (т.е. задав “no_prod_requires_admin”).
Точно также, использование опции “-bp” для получения списка всех сообщений в очереди доступно лишь административным пользователям, если “queue_list_requires_admin” не установлена в “false”.

Предупреждение: Если вы конфигурируете вашу систему так, чтобы административные пользователи имели возможность редактировать конфигурационный файл exim`a, вы даёте этим пользователям простой способ получить root`овый доступ. Дальнейшее обсуждение этой проблемы в начале главы 6.

Опции командной строки

Командные опции описаны в алфавитном порядке, ниже.

  • --” - Это псевдо-опция, назначение которой - указать конец опций, и обработать последующие параметры как параметры а не опции, даже если они начинаются с дефисов.
  • --help” - Эта опция заставляет exim вывести несколько фраз о том, что он такое (какой он). Тот же самый вывод генерится при запуске бинарного файла exim`a без опций и параметров.
  • -B<type>” - Это опция sendmail`a, для выбора обработки - 7-ми или 8-ми битной. Exim - полностью 8-ми битный; он игнорирует эту опцию.
  • -bd” - Эта опция запускает exim как даемон, ожидающий входящих SMTP-соединений. Обычно, опция “-bd” комбинируется с опцией “-q”, для задания, что даемон обработчика очереди, также должен периодически выполняться.

Опция “-bd” может использоваться только административными пользователями. Если установлены опции “-d” (отладка) или “-v” (проверка), даемон не отключается от контрольного терминала. При работе таким способом, он может быть остановлен нажатием Ctrl+C.

По умолчанию, exim ждёт входящие подключения на стандартном SMTP-порту на всех работающих интерфейсах хоста. Однако, он может слушать на других портах, на нескольких портах и только на определённых интерфейсах. Раздел 13 содержит описание опций, управляющих этим.

Когда слушающий даемон запущен без использования “-oX” (т.е. не отменяя нормальную конфигурацию), он пишет идентификатор процесса в файл с именем “exim-daemon.pid” находящийся в директории спула exim`a. Это местоположение может быть перезадано установкой “PID_FILE_PATH” в “Local/Makefile”. Файл записывается в то время, когда exim всё ещё работает от пользователя root.

Когда “-oX” используется в командной строке, для запуска слушающего даемона, идентификатор процесса не записывается в pid-файл находящийся по нормальному пути. Однако, опция “-oP” может быть использована для задания пути в командной строке, если pid-файл необходим.

Сигнал “SIGHUP” может быть использован для непосредственного перевызова даемона. Это необходимо сделать всякий раз, когда конфигурационный файл exim`a или файл непосредственно в него включенный посредством “.include”, изменён, а также всякий раз, когда установлена новая версия exim. Нет необходимости делать это, когда изменяются другие файлы, на которые ссылаются из конфигурации (например, файлы альясов), поскольку они перечитываются при каждом использовании.

  • -bdf” - Эта опция имеет такой же эффект, как и “-bd”, за исключением, что процесс никогда не отключается от терминала, даже если отладка не задана.
  • -be” - Запускает exim в режиме тестирования раскрытий. Exim снимает с себя root`овые привилегии, чтобы предотвратить использование этого режима обычными пользователями для чтения недоступных им файлов. Если не задано никаких аргументов, exim выполняется в интерактивном режиме, запрашивая строки данных. Иначе, он обрабатывает каждый параметр по очереди.

Если exim собран с “USE_READLINE=yes” в “Local/Makefile”, то он пробует динамически загрузить библиотеку “libreadline” каждый раз, когда опция “-be” используется без параметров командной строки. В случае успеха, он использует функцию “readline()”, которая предоставляет обширные средства редактирования строки, для чтения тестовых данных. История строк поддерживается.

Длинные выражения раскрытия могут быть разбиты на несколько строк, используя продолжения с обратным слэшем. Как в рабочей конфигурации exim`a, пустые символы игнорируются в начале строк продолжения. Каждый аргумент или строка данных проходят через механизм раскрытия строк, и результат выводится. Значения переменных из конфигурационного файла (например, “$qualify_domain”) доступны, но значения специфичные для сообщения (например, “$domain”) не установлены, поскольку нет сообщения в обработке.

Примечание”: Если вы используете этот механизм для тестирования поиска, и вы изменяете файлы 
данных или БД, которые используете, вы должны выйти и рестартануть exim перед новой попыткой такого 
же поиска. Иначе, поскольку каждый процесс exim`a кэширует результаты поисков, вы получите такой же 
результат как и прежде.
  • -bF <filename>” - Эта опция тоже самое, что и “-bf”, за тем исключением, что предполагается что тестируемый фильтр - системный фильтр. Дополнительные команды, которые доступны только в системном фильтре, также распознаются.
  • -bf <filename>” - Эта опция запускает exim в режиме тестирования пользовательского фильтра; файл - это файл фильтра который будет тестироваться, и тестовое сообщение должно быть предоставлено на стандартном вводе. Если в фильтре нет зависимых от сообщения тестов, может быть предоставлен пустой файл.

Если вы хотите тестировать системный фильтр, используйте “-bF” вместо “-bf”. Вы можете использовать обе опции “-bF” и “-bf” в одной команде, для проверки системного фильтра и пользовательского одновременно. Например:

exim -bF /system/filter -bf /user/filter </test/message

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

Если тестируемый файл фильтра не начинается с одной из специальных строк

# Exim filter
# Sieve filter

то он берётся как нормальный файл “.forward”, и проверяется на валидность в этой интерпретации. Смотрите секции 22.4 и 22.6 для описания возможного содержимого нефильтровых списков перенаправления.

Результаты команды exim, использующей “-bf”, если не обнаружены ошибки, является списком действий которые exim попробовал бы предпринять, если бы это было реальное сообщение. Более подробное рассмотрение тестирования фильтров дано в отдельном документе, озаглавленном “Exim’s interfaces to mail filtering”.

Когда тестируется файл фильтра, отправитель конверта может быть задан при помощи опции “-f”, или при помощи строки “From ” в начале тестового сообщения. Различные параметры, которые бы обычно брались из адреса получателя конверта сообщения, могут быть установлены посредством дополнительных опций командной строки (смотрите последующий четыре опции).

  • -bfd <domain>” - Эта опция устанавливает домен адреса получателя, когда файл фильтра тестируется с использованием опции “-bf”. Дефолтовое значение - “$qualify_domain”.
  • -bfl <local part>” - Эта опция устанавливает локальную часть адреса получателя, когда файл фильтра тестируется с использованием опции “-bf”. По дефолту - имя пользователя, процесса вызвавшего exim. Локальная часть должна быть указана с любым префиксом или суффиксом, поскольку имено в таком виде он появляется в фильтре при фактической доставке сообщения.
  • -bfp <prefix>” - Эта опция устанавливает префикс локальной части адреса получателя, когда файл фильтра тестируется с использованием опции “-bf”. Дефолтовое значение - пустой префикс.
  • -bfs <suffix>” - Эта опция устанавливает суффикс локальной части адреса получателя, когда файл фильтра тестируется с использованием опции “-bf”. Дефолтовое значение - пустой суффикс.
  • -bh <IP address>” - Эта опция запускает поддельную SMTP-сессию как будто от заданного IP-адреса, с использованием стандартного ввода и вывода. IP-адрес может включать номер порта, в конце, после точки. Например:
exim -bh 10.9.8.7.1234
exim -bh fe80::a00:20ff:fe86:a061.5678

Когда задан адрес IPv6, он конвертируется в каноническую формую В случае второго примера, выше, значение “$sender_host_address” после преобразования будет “fe80:0000:0000:0a00:20ff:fe86:a061.5678”.

Комментарии, относительно происходящего, пишутся в стандартный файл ошибок. Они включают строки начинающиеся с “LOG”, для того, что должно быть залоггировано. Это средство предоставлено для того, чтобы тестировать конфигурационные опции входящих сообщений, для удостоверения, что они реализуют необходимую политику. Например, вы можете тестировать элементы управления релеем, используя “-bh”.

Предупреждение 1: Вы не можете тестировать конфигурационные возможности которые зависят от 
обратных вызовов ident (RFC1413). Их нельзя произвести в тестировании, с использованием опции 
“-bh”, поскольку отсутствует входящее SMTP-соединение.
Предупреждение 2: Обратные вызовы проверки адреса (смотрите раздел 39.32) также пропускаются, при 
тестировании, с использованием опции “-bh”. Если вы хотите, чтобы эти обратные вызовы произошли, 
используйте опцию “-bhc” вместо “-bh”.

Сообщения доставленные в течение сессии тестирования отбрасываются, и никакие данные не записываются ни в один из реальных логов. Могут быть паузы, когда происходит поиск в DNS (или другой), и они могут исчерпать лимит времени (вывалиться по таймауту - прим. lissyara). Опция “-oMi” может использоваться для определения специфического IP-адреса и порта, если есть такая необходимость.

Утилита “exim_checkaccess” - “упакованная” (“packaged”) версия “-bh”, чей вывод только лишь говорит - допустим ли данный адрес получателя для данного хоста, или нет. Смотрите раздел 49.8.

  • -bhc <IP address>” - эта опция работает таким же образом, как и “-bh”, исключая, что обратный вызов проверки адреса выполняется, если требуется. Это включает запрос и обновление БД обратных вызовов.
  • -bi” - Sendmail интерпретирует опцию “-bi” как запрос на ребилдинг своей БД альясов. Exim не имеет представления об одиночном файле альясов, и таким образом, он не может подражать такому поведению. Однако, вызовы “/usr/lib/sendmail” с опцией “-bi” имеют тенденцию появляться в различных скриптах, типа NIS make-файлах, таким образом, эта опция должна быть распознана.

Если встречается опция “-bi”, то запускается команда, определённая как “bi_command” в конфигурационном файле, под uid и gid вызываюшего exim. Если используется опция “-oA”, её значение передаётся команде как параметр. Команда, установленная “bi_command” может не содержать аргументов. Команда может использовать “exim_dbmbuild”, или другие средства, для перестройки файла альясов, если это необходимо. Если опция “bi_command” не задана, вызов exim с “-bi” - пустая команда.

  • -bm” - Эта опция запускает процесс exim принимающий входящие, локально сгенерированные сообщения на текущем вводе. Получатели даются как аргументы команды (кроме тех случаев, когда присутствует опция “-t” - см. ниже). Каждый аргумент может быть списком адресов, согласно RFC 2822, с разделителем в виде запятой. Это - дефолтовая опция, для выбора полного действия при вызове exim; предполагается, что не присутствует никакая другая конфликтующая опция.

Если какие-либо адреса в сообщении неквалифицированные (не имеют домена), они квалифицируются значением опции “qualify_domain” или “qualify_recipient”. Опция “-bnq” (смотрите ниже) - является способом подавить это, для особых случаев.

Проверки политик на содержимое локальных сообщений могут быть осуществлены при помощи не-SMTP ACL. Для дополнительных деталей, смотрите раздел 39.

В случае успешного приёма сообщения, код возврата - ноль. Иначе, действием управляет установка опции “-oex” - смотрите ниже.

Формат сообщения должен соответствовать RFC 2822, за тем исключением, что для совместимости с Sendmail и Smail, строка в одной из форм

From sender Fri Jan  5 12:55 GMT 1997
From sender Fri, 5 Jan 97 12:55:01

(опционально, с днём недели, и возможно, дополнительным текстом после даты) может присутствовать в начале сообщения. Тут форматом спецификации на описывается эта строка. Exim распознаёт её по совпадению с регулярным выражением, заданным опцией “uucp_from_pattern”, которая может быть изменена, в случае необходимости.

Указанный отправитель обрабатывается, как если бы он давался как параметр опции “-f”, но, если опция “-f” присутствует, её параметр используется вместо адреса взятого из сообщения. Вызывающая exim программа должна работать от доверенного пользователя, для установки отправителя сообщения.

  • -bnq” - По дефолту, exim автоматически квалифицирует неквалифицированные адреса (т.е. без домена), которые появляются в сообщениях посылаемых локально (не по TCP/IP). Эта квалификация применяется и к адресам конверта, и к строкам заголовков. Адрес отправителя квалифицируется с использованием значения опции “qualify_domain”, и адрес получателя с использованием “qualify_recipient” (у которой значение по умолчанию - “qualify_domain”).

Иногда, квалификация не требуется. Например, если используется “-bS” (пакетный SMTP) для повторной передачи сообщений пришедших с удалённого хоста, после контентного сканирования, вы, вероятно,не хотите квалифицировать неполные адреса в строках заголовков. (Такие строки будут присутствовать только если вы не захотели включить проверку синтаксиса заголовков в соответствующей ACL.)

Опция “-bnq” подавляет всю квалификацию неквалифицированных адресов в сообщениях приходящих на локальный хост. Когда она используется, неполный адрес в конверте вызывает ошибки (вызывающие отклонение сообщения) и неполные адреса в строках заголовка оставляются как есть.

  • -bP” - Если эта опция даётся без параметров, то она выводит все конфигурационные опции exim`a на стандартный вывод. Значения одного или нескольких специфических параметров можно запросить дав их имена как аргументы, например:
exim -bP qualify_domain hold_domains

Однако, любой параметр настройки, которому в конфигурационном файле предшествует слово “hide” не показывается полностью никому, кроме административного пользователя. Для других пользователей, вывод - как в этом примере:

mysql_servers = <value not displayable>

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

Если дан “log_file_path” или “pid_file_path”, выводятся имена директорий, где пишутся логи и pid даемона, соответственно. Если эти значения не установлены, логи пишутся в субдиректории спула, с именем “log”, и pid-файл пишется непосредственно в каталог спула.

Если опция “-bP” сопровождается именем с предшествующим ему “+”, например,

exim -bP +local_domains

ищется соответствие именованного списка любого типа (доменов, хостов, адресов или локальных частей) и выводится найденное.

Если дано одно из слов - “router”, “transport” или “authenticator”, сопровождаемое именем соответствующего драйвера, выводятся параметры настройки этого драйвера. Например:

exim -bP transport local_delivery

Вначале выводятся общие опции драйверов, сопровождаемые частными опциями драйвера. Список имён драйверов специфического типа может быть получен использованием слов “router_list”, “transport_list” или “authenticator_list”, и полный список всех драйверов с их параметрами настройки можно получить используя “routers”, “transports” или “authenticators”.

  • -bp” - Эта опция запрашивает список содержимого почтовой очереди на стандартный вывод. Если опция “-bp” сопровождается списком идентификаторов сообщений, то показываются только эти сообщения.

Каждое сообщение очереди отображается как в этом примере:

25m  2.9K 0t5C6f-0000c8-00 <alice@wonderland.fict.example>
          red.king@looking-glass.fict.example
          <other addresses>

Первая строка содержит временной отрезок, который сообщение находится в очереди (в данном случае - 25 минут), размер сообщения (2.9kb), уникальный локальный идентификатор сообщения, и отправителя сообщения, как содержится в конверте. Для рикошетов, адрес отправителя пуст, и появляется как “<>”. Если сообщение послано локально, недоверенным пользователем, который изменил дефолтовый адрес отправителя, имя логина пользователя показывается в круглых скобках, перед адресом отправителя.

Если сообщение заморожено (приостановлена попытка его доставки), тогда в конце этой строки показывается текст “*** frozen ***”.

Получатели сообщения (взятые из конверта, не из заголовков) показаны в последующих строках. Адреса по которым сообщение уже доставлено отмечены символом “D”. Если оригинальный адрес раскрывается в несколько адресов через файл альясов или форвардов, оригинальный показывается с “D” только когда завершены доставки для всех дочерних адресов.

  • -bpa” - Эта опция работает также как и “-bp”, но кроме того, она показывает доставленные адреса, сгенерённые из оригинального адреса верхнего уровня в каждом сообщении при помощи альясинга или форвардинга. Эти адреса помечены “+D”, вместо просто “D”.
  • -bpc” - Эта опция подсчитывает число сообщений в очереди, и пишет общее количество на стандарный вывод. Пользование этим ключом разрешено только административным пользователям, если “queue_list_requires_admin” не является ложью.
  • -bpr” - Эта опция работает также как и “-bp”, но вывод не сортируется в хронологическом порядке по прибытию сообщений. Это может ускорить вывод, когда в очереди много сообщений, и особенно полезно, если вывод будет обработан способом не нуждающимся в сортировке.
  • -bpra” - Эта опция является комбинацией “-bpr” и “-bpa”.
  • -bpru” - Эта опция является комбинацией “-bpr” и “-bpu”.
  • -bpu” - Эта опция работает как “-bp”, но показывает только недоставленные адреса верхнего уровня, для каждого отображённого сообщения. Адреса сгенерённые альясингом и форвардингом не показываются, если сообщение не было задержано после обработки роутером с установленной опцией “one_time”.
  • -brt” - эта опция для тестирования правил повторов, и должна сопровождается до трёх параметров. Она заставляет exim искать правила повтора которые совпадают со значением и вывести их на стандартный вывод. Например:
exim -brt bach.comp.mus.example
Retry rule: *.comp.mus.example  F,2h,15m; F,4d,30m;

Смотрите раздел 32 для информации о правилах повторов exim`a. Первый аргумент, являющийся обязательным, может быть полным адресом в форме “local_part@domain”, или может быть только именем домена. Если второй аргумент содержит точку, он интерпретируется как опциональный второе имя домена; если не найдено правил повтора для первого аргумента, используется второй. Это связано с поведением exim`a, когда ищется правило повтора для удалённого хоста - если правило не найдено, используется общее совпадение с почтовым доменом. В конце можно дать, для использования в правилах повторов, параметр являющийся именем для специфической ошибки доставки. Например:

exim -brt haydn.comp.mus.example quota_3d
Retry rule: *@haydn.comp.mus.example quota_3d  F,1h,15m
  • -brw” - Эта опция, для тестирования правил перезаписи адресов, и она должна сопровождаться одним аргументом, состоящим из локальной части, без домена, или полным адресом с полным доменом. Exim выводит как этот адрес был бы перезаписан, для каждого возможного места его появления. Для дальнейших подробностей, смотрите раздел 31.
  • -bS” - Эта опция используется для пакетного ввода SMTP, который является альтернативным интерфейсом для локальной неинтерактивной передачи сообщений. Можно передавать много сообщений за один запуск. Однако, несмотря на его название, в действительности, это не SMTP-ввод. Exim читает конверт каждого сообщения из SMTP-команд со стандартного ввода, но не генерит никаких ответов. Если вызывающему доверяют, или установлена опция “untrusted_set_sender”, то отправителям в командах SMTP MAIL верят; иначе, отправителем всегда будет пользователь вызвавший exim.

Само сообщение читается из стандартного ввода, содержимое входящих пакетных SMTP-сообщений может быть проверено, используя не-SMTP ACL (смотрите раздел 39). Неквалифицированные адреса автоматически квалифицируются с использованием “qualify_domain” и “qualify_recipient”, соответственно, если не используется опция “-bnq”.

Некоторые другие SMTP команды распознаются во вводе. HELO и EHLO действуют как RSET; VRFY, EXPN, ETRN, и HELP как NOOP; QUIT - выход, игнорируя остальную часть стандартного ввода.

Если встречается какая-то ошибка, отчёт записывается на стандартный вывод и в потки ошибок, и exim прекращает обработку. Возвращаемый код равен 0, если ошибок не было, 1 - если одно и более сообщение было принято до обнаружения ошибки, иначе он - 2.

Более подробно о использовании пакетного ввода SMTP рассказано в секции 44.11.

  • -bs” - Эта опция заставляет exim принимать одно или более сообщений путём чтения SMTP команд со стандартного ввода, и создавать ответы на стандартный вывод. SMTP ACL применяются (смотрите раздел 39). Некоторые пользовательские агенты используют этот интерфейс как способ передать локально сгенерённые сообщения MTA.

В этом использовании если вызывающему доверяют, или установлена опция “untrusted_set_sender”, то отправителям в командах SMTP MAIL верят. Иначе, содержимое этих команд игнорируется и отправителем всегда будет пользователь вызвавший exim. Неквалифицированные адреса автоматически квалифицируются с использованием “qualify_domain” и “qualify_recipient”, соответственно, если не используется опция “-bnq”.

Опция “-bs” также используется для запуска exim из “inetd”, как альтернативу использованию слушающего даемона. Exim может различать эти два случая, проверяя является ли стандартный ввод TCP/IP сокетом. Когда exim вызывается из “inetd”, предполагается, что источник почты - удалённый, и описанное выше, относительно квалификации неполных адресов не применяется. В этой ситуации exim ведёт себя точно также как и слушающий даемон, при приёме сообщения.

  • -bt” - Эта опция запускает exim в режиме тестирования адресов, в котором каждый параметр берётся как адрес, который будет тестироваться на доставку. Результаты пишутся на стандартный вывод. Если тест неудачен, и вызывающий - не административный пользователь, детали о ошибке не выводятся, поскольку они могут содержать секретную информацию, типа имён пользователей и паролей для поиска в БД.

Если аргументов не дано, exim запускается в интерактивной манере, запрашивая с правой угловой скобкой, адреса для тестирования.

В отличие от тестовой опции “-be”, вы не можете заставить exim использовать функцию “readline()”, поскольку он запущен от root и это вопрос безопасности.

Каждый адрес обрабатывается, как будто он - адрес получателя сообщения (сравните опцию “-bv”). Он передаётся роутерам, и результат записывается на стандартный вывод. Однако, некоторые роутеры, у которых установлено “no_address_test”, обходятся. Это может сделать опцию “-bt” более лёгкой для использования в настоящих тестах роутеров, если первый маршрутизатор передаёт всё программе сканирования.

Код возврата 2, если какой-либо адрес напрямую потерпел неудачу; 1 - если никакой адрес не потерпел неудачу напрямую, но по крайней мере один не мог быть разрешён по некоторым причинам. Код возврата 0 даётся лишь в случае, если все адреса были удачны.

Предупреждение: Опция “-bt” может сделать только относительно простое тестирование. Если любой из 
маршрутизаторов проводит тестирование адреса отправителя сообщения, вы можете использовать опцию 
“-f” для установки соответствующего отправителя. Без этого, предполагается что отправитель - 
пользователь вызывавший программу, квалифицируемый дефолтовым доменом. Однако, если вы установили 
(например) маршрутизаторы, поведение которых зависит от содержимого входящего сообщения, вы не 
сможете протестировать эти условия с использованием “-bt” Опция “-N” - предоставляет один из 
способов сделать такие тесты.
  • -bV” - Эта опция заставляет exim вывести на стандартный вывод текущий номер версии, номер компиляции, и дату компиляции бинарного файла exim. Также перечисляются используемые DBM библиотеки, опциональные модули (тпа специфических типов поиска), драйверы, включенные в бинарник, и имя используемого файла конфигурации.

Как часть этой операции, “-bV” заставляет exim читать и проверять синтаксис конфигурационного файла. Однако - это лишь статическая проверка. Он не может проверить значения, которые должны быть раскрыты. Например, хотя ACL с орфографическими ошибками находится, ошибки в параметрах не находятся. Вы не можете положиться только на “-bV” для нахождения всех опечаток (например); необходимо боле-мене реалистичное тестирование. Опции “-bh” и “-N” предоставляют более реалистичные средства тестирования.

  • -bv” - Эта опция запускает exim в режиме тестирования адресов, в котором каждый параметр берётся как адрес, который будет проверяться. В нормальных условиях, проверка, обычно, происходит обработкой условий “verify” в ACL (смотрите раздел 39). Если вы хотите протестировать всю ACL, смотрите опцию “-bh”.

Если проверка неудачна, и вызывающий не административный пользователь, детали о ошибке не выводятся, поскольку они могут содержать секретную информацию, например имя пользователя и пароль для доступа к БД.

Если аргументов не дано, exim запускается в интерактивном режиме, с приглашением в виде правой угловой скобки, запрашивая адреса для проверки.

В отличие от тестовой опции “-be”, вы не можете заставить exim использовать функцию “readline()”, поскольку он запущен от пользователя exim и это вопрос безопасности.

Проверка отличается от тестирования адресов (опция “-bt”) к которой роутеры, имеющие “no_verify” пропускаются, и если адрес принят роутером имеющим установленную опцию “no_verify”, проверка непройдена. Адрес проверяется как получатель, если используется опция “-bv”; для тестирования проверки адреса отправителя должна использоваться опция “-bvs”.

Если “-v” опция не задана, вывод состоит из одной строки для каждого адреса, начинающейся с заявления прошёл адрес проверку, или нет, в последнем случае приводится причина. Иначе, даётся больше деталей о том, как адрес был обработан, и в случае перенаправления адреса, все сгенерённые адреса также рассматриваются. Без “-v”, генерится более одного адреса, по перенаправлению, заставляя верификацию завершиться полностью.

Возвращённый код 2, если любой адрес был напрямую неудачен; он 1 - если нет напрямую неудачных адресов, но по крайней мере один не мог быть разрешён (в DNS - прим. lissyara) по каким-либо причинам. Возвращённый код 0 - если все адреса успешны.

Если какой-то роутер, в конфигурации, производит какие-либо тесты для адресов отправителя сообщения, то вы должны использовать опцию “-f”, для установки соответствующего отправителя, при запуске тестов с опцией “-bv”. Без этого, предполагается, что отправитель, - вызвавший программу пользователь, с соответствующим дефолтовым доменом.

  • -bvs” - Эта опция работает как “-bv”, но проверяет адрес отправителя как адрес получателя. Это затрагивает любую перезапись и квалификацию, которая могла бы произойти.
  • -C <filelist>” - Эта опция заставляет exim находить файл рабочей конфигурации заданного списка, вместо списка определённого “CONFIGURE_FILE” при компиляции. Обычно, список состоит из одного файла, но это может быть несколько файлов, разделённых двоеточием. В этом случае, используется первый существующий файл. Ошибка открытия существующего файла останавливает exim, не давая ему просматривать остальные файлы из списка, и генерится ошибка.

Когда эта опция используется программой работающей не от рута, или пользователя exim`a, и список отличается от указанного при компиляции, exim сбрасывает свои рутовые привилегии, и выполняется под реальным и эффективным uid и gid пользователя, что его вызвал. Однако, если в “Local/Makefile” задана опция “ALT_CONFIG_ROOT_ONLY”, рутовые права доступа оставляются для опции “-C”, лишь в случае если вызвавший exim пользователь - root.

Таким образом, пользователю exim`a не даются привилегии в отношении этого. Эта компиляционная опция по дефолту не установлена в исходном тарболле exim`a. Однако, если вы используете версию exim`a из “пакаджей”, то тот, кто собирал программу, мог включить эту опцию.

Установка “ALT_CONFIG_ROOT_ONLY” блокирует возможность тестирования конфигурации с использованием опции “-C” через приём и отправку сообщений, даже если вызывающий пользователь - root. Приём работает, но к тому времени exim уже работает под своим пользователем, таким образом, когда он перезапускается для восстановления привилегий, для доставки, использование “-C” заставляет привилегии сброситься. Однако, root может тестировать и приём и доставку используя две раздельные команды (одну, чтобы поместить сообщение в очередь, используя “-odq”, и другую для доставки, используя “-M”).

Если в “Local/Makefile” задана опция “ALT_CONFIG_PREFIX”, это определяет строку преффикса с которой должен начинаться любой файл в строке с “-C”. Кроме того, имя не должно содержать последовательность “/../”. Однако, если значение опции “-C” идентично значению “CONFIGURE_FILE” в “Local/Makefile”, exim игнорирует “-C” и работает как обычно. Дефолтовые настройки для “ALT_CONFIG_PREFIX” отсутствуют; когда он сброшен, в опции “-C” может использоваться любое имя файла.

“ALT_CONFIG_PREFIX” может использоваться чтобы ограничить альтернативные конфигурационные файлы директорией, доступ к которой имеет только root. Это предотвратит того, кто взломал учётную запись exim`a от привилегированного exim`a с произвольным конфигурационным файлом.

Средство “-C” полезно для того, чтобы гарантировать что конфигурационный файл синтаксически корректен, но не может использоваться для тестовых доставок, если у вызвавшего пользователя нет привилегий, или в случае экзотической конфигурации, не требующей прав доступа. Проверки пользователя или группы файла фигурирующего в этой опции не производятся.

  • -D<macro>=<value>” - Эта опция может использоваться для отмены макроопределений заданных в конфигурационном файле (смотрите раздел 6.4). Однако, как и “-C”, если она используется непривилегированным пользователем, она заставляет exim снять свои рутовые привилегии. Если опция “DISABLE_D_OPTION” задана в “Local/Makefile”, использование опции “-D” полностью заблокировано, и попытка её использования вызывает ошибку, и немедленный выход.

Вся опция (включая равно, если оно присутствует) должна быть в пределах одной строки. “-D” может использоваться для установки значения макрокоманды в виде пустой строки, в этом случае, символ равно опционален. Эти две команды синонимичны:

exim -DABC  ...
exim -DABC= ...

Для включения пробелов в макроопределения, могут использоваться кавычки. Если вы используете кавычки, пробелы разрешены вокруг имён макрокоманд и символа равно. Например:

exim '-D ABC = something' ...

Опция “-D” может быть повторена до 10 раз, в одной командной строке.

  • -d<debug options>” - Эта опция заставляет exim писать отладочную информацию на стандартный вывод ошибок. Её использование ограничено административными пользователями, поскольку вывод может показать запросы к БД, содержащие пароли. Кроме того, детали пользовательских фильтров должны быть защищены. Когда используется опция “-d”, “-v” включается автоматически. Если задан только “-d”, выводится много отладочной информации. Количество может быть увеличено, или уменьшено, включением некоторой редко используемой информации, путём помещения сразу после “-d” строки, составленной из имён с предшествующим плюсом или минусом. Этим, соответственно, добавляются или удаляются отладочные данные. Например, “-d+filter” позволяет выбрать только отладку фильтра. Обратите внимание, что пробелы не используются. Доступны следующие категории:
acl             ACL interpretation
auth            authenticators
deliver         general delivery logic
dns             DNS lookups (see also resolver)
dnsbl           DNS black list (aka RBL) code
exec            arguments for execv() calls
expand          detailed debugging for string expansions
filter          filter handling
hints_lookup    hints data lookups
host_lookup     all types of name-to-IP address handling
ident           ident lookup
interface       lists of local interfaces
lists           matching things in lists
load            system load checks
local_scan      can be used by local_scan() (see chapter 41)
lookup          general lookup code and all lookups
memory          memory handling
pid             add pid to debug output lines
process_info    setting info for the process log
queue_run       queue runs
receive         general message reception logic
resolver        turn on the DNS resolver’s debugging output
retry           retry handling
rewrite         address rewriting
route           address routing
timestamp       add timestamp to debug output lines
tls             TLS logic
transport       transports
uid             changes of uid/gid and looking up uid/gid
verify          address verification logic
all             almost all of the above (see below), and also -v

Опция “all” исключает “memory”, когда используется как “+all”, но включает её (в смысле, тоже убирает эту отладку - прим. lissyara), когда используется как “-all”. Причина этого в том, что “+all” - то, что люди чаще всего используют для генерации отладки для разработчиков exim`a. Если включено “+memory”, вывод будет огромен, и он редко представляет интерес, таким образом, теперь его нужно явно затребовать. Однако, “-all” действительно отключает всё.

Опция “resolver” создаёт вывод лишь в случае, если DNS-резольвер был скомпилен с включенным DEBUG. Это не так, на некоторых операционных системах. Также, к сожалению, отладочный вывод DNS-резольвера пишется на стандартный вывод, а не стандартный вывод ошибок.

По дефолту (“-d” без аргументов) не включает “expand”, “filter”, “interface”, “load”, “memory”, “pid”, “resolver” и “timestamp”. Однако выбор “pid” принудителен, когда отладка включена для даемона, который передаёт её другому, перезапускаясь. Exim, также, автоматически добавляет pid к строкам отладки, когда параллельно выполняются несколько удалённых доставок.

Опция “timestamp” - причина появления текущего времени в начале всех выводимых строк отладки. Она может быть полезной при попытках найти задержки в обработке.

Если опция “debug_print” установлена в любом драйвере, он создаёт вывод каждый раз когда выбрана отладка, даже если опция “-v” не используется.

  • -dd<debug options>” - Эта опция ведёт себя точно также как и “-d”, кроме случаев использования с командой запускающей процесс даемона. В этом случае, отладка выключается для всех создаваемых подпроцессов. Таким образом, это может быть полезным для наблюдения поведения даемона не создавая такой же большой вывод как при полной отладке.
  • -dropcr” - Это - устаревшая опция, которая сейчас является пустой командой. Она использовалась для изменения способа обработки exim`ом символов “CR” и “LF” во входящих сообщениях. Что происходит сейчас, описано в разделе 43.2.
  • -E” - Эта опция определяет, что входящее сообщение - сгенерированный локально отчёт о ошибке доставки. Она используется внутри exim`a и не предназначена для внешнего использования. Её единственный эффект - останавливать генерацию exim`ом определённых сообщений постмастеру, поскольку в небольшом числе ситуаций могли бы возникнуть каскады сообщений. Как часть этой опции, идентификатор сообщения может следовать за символами “-E”. Если такое происходит, строка лога для получателя нового сообщения содержит идентификатор, сразу после “R=”, как перекрёстная ссылка.
  • -ex” - Есть множество опций Sendmail, начинающихся с “-oe”, которые вызываются различными программами без “o” в опции. Например, программа “vacation” использует “-eq”. Exim обрабатывает все опции формы “-ex” как синонимичные опциям “-oex”.
  • -F <string>” - Эта опция устанавливает полное имя отправителя, которое используется, когда принимается сгенерённое локально сообщение. В отсутствие этой опции, используется элемент “gecos” из данных пароля пользователя. Поскольку, обычно, пользователям разрешено менять их поля “gecos”, не включены никакие вопросы безопасности. Пробел между “-F” и “<string>” опционален.
  • -f <address>” - Эта опция устанавливает адрес отправителя конверта в локально созданных сообщениях. Обычно, она может использоваться только доверенными пользователями, но “untrusted_set_sender” может разрешить её использование недоверенным пользователям.

Процессам, запущенным как пользователь root или пользователь exim`a, всегда доверяют. Прочие доверенные пользователи задаются опцией “trusted_users” или “trusted_groups”. В отсутствии “-f”, или когда вызывающему не доверяют, отправитель локального сообщения задаётся из имени логина пользователя и квалифицируется дефолтовым доменом.

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

exim -f '<>' user@domain
exim -f "" user@domain

Кроме того, использование “-f” не ограничено тестированием файлов фильтра с “-bf”, тестированием или проверкой адресов с использованием опций “-bt” или “-bv”.

Разрешение недоверенным пользователям изменять адрес отправителя создаёт возможность отправлять анонимную почту. Exim всё равно проверяет, ссылается ли на локального пользователя, заголовок “From:”, и если это не так, он добавляет заголовок “Sender:”, хотя и это может быть отменено установкой опции “no_local_from_check”.

Пробелы между “-f” и “<address>” - опциональны (т.е. можно давать как два параметра, так и один, объединённый). Отправитель, созданного локально сообщения, также может быть установлен (когда разрешено) инициалом “From ” - строкой в сообщении, смотрите выше примечание к “-bm”, но если присутствует “-f”, оно перезаписывает “From ”.

  • -G” - Эта опция Sendmail`a игнорируется exim`ом.
  • -h <number>” - Эта опция используется для совместимости с sendmail, но не имеет никакого эффекта. (В sendmail`e она она перезадаёт “счётчик хопов” (“hop count”), получаемый подсчётом заголовков “Received:”)
  • -i” - Эта опция имеет такой же эффект как и “-oi”, задавая, чтобы отдельная точка в строке не завершила входящее не-SMTP сообщение. Я не смог найти документацию по этой опции в sendmail Solaris 2.4, но команда “mailx” в нём использует эту опцию. Смотрите также “-ti”.
  • -M <message id> <message id> ...” - Эта опция вызывает exim для попытки доставки каждого сообщения, по очереди. Если любое из сообщений заморожено, оно автоматически размораживается перед попыткой доставки. Значения “queue_domains”, “queue_smtp_domains” и “hold_domains” игнорируются.

Совпадения повторов для любого из адресов отменяются - exim пробует произвести доставку даже когда нормальное время повтора не наступило. Эта опция требует, чтобы вызывающий пользователь был административным. Однако, существует опция называемая “prod_requires_admin” которая может быть установлена в ложь, для ослабления этого ограничения (и тоже самое требуется для опций “-q”, “-R” и “-S”).

Доставки происходят синхронно, т.е. оригинальный процесс exim`a не завершается, пока не завершатся все попытки доставки. Вывода нет, если нет серьёзных ошибок. Если вы хотите видеть, что происходит, используйте опцию “-v”, или просматривайте основной лог exim`a.

  • -Mar <message id> <address> <address> ...” - Эта опция вызывает exim для добавления адреса в список получателей сообщения (“ar” значит “add recipients”). Первый аргумент должен быть идентификатором сообщения, а последующие - адресами e-mail. Однако, если сообщение активно (находится в попытке доставки), оно не изменяется. Эта опция может использоваться только административными пользователями.
  • -MC <transport> <hostname> <sequence number> <message id>” - Эта опция не предназначена для использования внешними вызывающими программами. Она используется внутри exim`a, для вызова собственной копии, чтобы доставить ожидающее сообщение с использованием существующего SMTP-соединения, передавая его через стандартный ввод. Детали даны в разделе 44. Это должно быть последней опцией, и вызывающий пользователь должен быть root или пользователь exim`a, для возможности её использовать.
  • -MCA” - Эта опция не предназначена для использования внешними вызывающими программами. Она используется внутри exim`a вместе с опцией “-MC”. Она указывает, что подключение с удалённым хостом аутентифицированное.
  • -MCP” - Эта опция не предназначена для использования внешними вызывающими программами. Она используется внутри exim`a вместе с опцией “-MC”. Она указывает, что сервер, к которому подключен exim, поддерживает конвейеризацию.
  • -MCQ <process id> <pipe fd>” - Эта опция не предназначена для использования внешними вызывающими программами. Она используется внутри exim`a вместе с опцией “-MC”, когда оригинальная доставка была начата обработчиком очереди. Она передаёт идентификатор процесса обработчика очереди, вместе с номером дескриптора открытого канала (трубы). Закрытие трубы свидетельствует о завершении последовательности процессов, которые передавали сообщение через тоже самое SMTP-подключение.
  • -MCS” - Эта опция не предназначена для использования внешними вызывающими программами. Она используется внутри exim`a вместе с опцией “-MC”, и передаёт факт, что опция SMTP SIZE должна использоваться на сообщениях, доставляемых через существующее подключение.
  • -MCT” - Эта опция не предназначена для использования внешними вызывающими программами. Она используется внутри exim`a вместе с опцией “-MC”, и передаёт факт, что хост, с которым связан (с которым установлено соединение - прим. lissyara) exim поддерживает шифрование TLS.
  • -Mc <message id> <message id> ...” - Эта опция вызывает exim для запуска попытки доставки каждого сообщения по очереди, но, в отличие от опции “-M”, эта проверяет повторы и использует найденные значения. Эта опция не очень полезна для внешних программ. Она применяется, главным образом, для внутреннего использования exim`ом, когда ему необходимо перевызывать себя, для восстановления root`овых прав необходимых для доставки (смотрите раздел 51). Однако, опция “-Mc” может быть полезной при тестировании доставки, которая использует время повторов, и другие опции, например “hold_domains”, которые отменяются при использовании “-M”. Такая доставка не считается запуском обработчика очереди. Если вы хотите запустить специфическую доставку, как будто работал обработчик очереди, вы должны использовать опцию “-q” с идентификатором сообщения, как аргументом. Различие между доставкой обработчиком очереди и другими доставками состоит в одном или двух местах.
  • -Mes <message id> <address>” - Эта опция вызывает exim для изменения адреса отправителя в сообщении на заданный адрес, который должен быть полностью квалифицированным адресом, или “<>” (“es” означает “edit sender”). Обязательно должны быть два параметра. Первый аргумент должен быть идентификатором сообщения, и второй e-mail адресом. Однако, если сообщение активно (находится в процессе попытки доставки), его статус не меняется. Эта опция может использоваться только административными пользователями.
  • -Mf <message id> <message id> ...” - Эта опция вызывает exim, чтобы отметить перечисленные сообщения как “замороженные” (“frozen”). Этим предотвращаются любые имеющие место попытки доставки, до тех пор, пока сообщение не будет разморожено вручную, или в результате конфигурационной опции “auto_thaw”. Однако, если сообщение активно (находится в процессе доставки), его статус не будет изменён. Эта опция может использоваться только административными пользователями.
  • -Mg <message id> <message id> ...” - Эта опция вызывает exim, чтобы отменить доставку перечисленных сообщений, включая те, что заморожены. Однако, если сообщение активно (находится в процессе доставки), его статус не будет изменён. Для сообщений, не являющихся рикошетами, сообщение об ошибке доставки шлётся отправителю, содержа текст “отменено администратором” (“cancelled by administrator”). Рикошеты только отбрасываются. Эта опция может использоваться только административными пользователями.
  • -Mmad <message id> <message id> ...” - Эта опция вызывает exim, чтобы пометить все адреса получателей в сообщениях как уже доставленные (“mad” означает “mark all delivered”). Однако, если сообщение активно (находится в процессе доставки), его статус не будет изменён. Эта опция может использоваться только административными пользователями.
  • -Mmd <message id> <address> <address> ...” - Эта опция вызывает exim, чтобы пометить заданные адреса как уже доставленные (“md” означает “mark delivered”). первый аргумент должен быть идентификатором сообщения, и последующие должны быть адресами e-mail. Они совпадают с адресами получателей с учётом регистра. Если сообщение активно (находится в процессе доставки), его статус не будет изменён. Эта опция может использоваться только административными пользователями.
  • -Mrm <message id> <message id> ...” - Эта опция вызывает exim, чтобы удалить заданные сообщения из очереди. Рикошеты не шлются; про сообщения просто забывают. Однако, если сообщение активно (находится в процессе доставки), его статус не будет изменён. Эта опция может использоваться только административными пользователями, или пользователем изначально поместившим сообщение в очередь.
  • -Mt <message id> <message id> ...” - Эта опция вызывает exim, чтобы разморозить перечисленные сообщения, которые заморожены, в итоге попытки их доставить продолжатся. Однако, если сообщение активно (находится в процессе доставки), его статус не будет изменён. Эта опция может использоваться только административными пользователями.
  • -Mvb <message id>” - Эта опция выводит на стандартный вывод содержимое тела сообщения (-D), из спула. Эта опция может использоваться только административными пользователями.
  • -Mvh <message id>” - Эта опция выводит на стандартный вывод содержимое заголовков сообщения (-H), из спула. Эта опция может использоваться только административными пользователями.
  • -Mvl <message id>” - Эта опция выводит на стандартный вывод содержимое лог-файла сообщения, из спула. Эта опция может использоваться только административными пользователями.
  • -m” - Эта опция является синонимом для “-om”, используемой sendmail`ом, таким образом, exim её также обрабатывает.
  • -N” - Это опция отладки, которая запрещает доставку на транспортном уровне. Она подразумевает опцию “-v”. Exim проделывает все движения (обработки) доставки - лишь не транспортирует сообщение, но вместо этого ведёт себя так, будто успешно произвёл транспортировку. Однако он не производит какие-либо обновления БД повторов, и в логах о доставки строки будут содержать флаги “*>” вместо “=>”.

Поскольку “-N” сбрасывает любой сообщение к которому применяется, только root или пользователь exim`a разрешается использовать эту опцию с “-bd”, “-q”, “-R” или “-M”. Другими словами, обычный пользователь может использовать эту опцию только когда предоставляет входящее сообщение к которому будет применена эта опция.Хотя транспортировка никогда не бывает неудачной, при установленной опции “-N”, адрес может быть задержан из-за конфигурационных проблем транспорта, или роутинга. Как только “-N” используется для попытки доставки, она прилипает к сообщению, и применяется для всех последующих попыток доставки сообщения, которые могут быть для этого сообщения.

  • -n” - Эта опция интерпретируется sendamil`om как “не производить альясинг” (“no aliasing”). Она игнорируется exim`ом.
  • -O ” - Эта опция интерпретируется sendamil`om как “установить опцию” (“set option”). Она игнорируется exim`ом.
  • -oA <file name>” - Эта опция используется sendmail`ом вместе с “-bi” для задания альтернативного имени файла альясов. Exim обрабатывает “-bi” иначе; смотрите описание выше.
  • -oB <n>” - Это отладочная опция, которая ограничивает максимальное число сообщений, которые могут быть доставлены по SMTP-соединению, отменяя значение заданное в любом транспорте “smtp”. Если “<n>” отсутствует, ограничение устанавливается в 1.
  • -odb” - Эта опция применяется ко всем режимам в которых exim принимает входящие сообщения, включая слушающего даемона. Она запрашивает “фоновую” (“background”) доставку таких сообщений, означающую, что принимающий процесс автоматически запускает процесс доставки для каждого полученного сообщения, но не ждёт окончания процесса доставки.

Когда все сообщения получены, принимающие процессы завершаются, оставляя процессы доставки завершаться самостоятельно. Стандартный вывод и поток ошибок закрываются в начале каждого процесса доставки. Это - дефолтовое действие, если не задана опция “-od”.

Если одна из опций организации очереди, в конфигурационном файле (“queue_only” или “queue_only_file”, например), включена, “-odb” перезадаёт её, если “queue_only_override” установлена в истину, что является настройкой по умолчанию. Если “queue_only_override” установлена в ложь, “-odb” не имеет эффекта.

  • -odf” - Эта опция запрашивает “foreground” (синхронную) доставку, когда exim принимает созданные локально сообщения. (Для даемона это точно также как с “-odb”) Процесс доставки автоматически запускает доставку сообщения, и exim ждёт его завершения до последующей работы.

Оригинальный принимающий процесс exim`a не завершается пока процесс доставки сообщения не завершится. Стандартный поток ошибок остаётся открытым в течение доставки.

Однако, как “-odb”, эта опция не имеет эффекта, если “queue_only_override” установлена в ложь, и установлена одна из опций организации очереди, в конфигурационном файле.

Если происходит временная ошибка доставки во время текущей синхронной доставки, сообщение остаётся в очереди, для дальнейшей доставки, и оригинальные процессы приёма завершаются. Смотрите раздел 47 для подробностей о способе установить ограничения конфигурации, чтобы с этой опцией сообщения никогда не ставились в очередь.

  • -odi” - Эта опция - синоним “-odf”. Она присутствует для совместимости с sendmail.
  • -odq” - Эта опция применяется ко всем режимам exim`a, когда он принимает входящие сообщения, включая слушающего даемона. Она определяет, чтобы процесс принимающий сообщения не производил автоматический запуск процесса доставки для каждого принятого сообщения. Сообщения кладутся в очередь, и остаются там, пока следующий процесс обработчика очереди не обнаружит их. Есть несколько конфигурационных опций (например, “queue_only”), которые могут быть использованы для постановки входящих сообщений в очередь, при определённых условиях. Эта опция отменяет их, а также опцию “-odqs”. Она всегда вызывает организацию очередей.
  • -odqs” - Эта опция гибридная, между “-odb”/“-odi” и “-odq”. Однако, как “-odb” и “-odi”, эта опция не имеет эффекта, если “queue_only_override” установлена в ложь, и одна из опций организации очереди, в конфигурационном файле, имеет силу.

Когда “-odqs” работает, процесс доставки запускается для каждого входящего сообщения, по дефолту - в фоновом режиме, но в режиме переднего плана (foreground), тока если есть опция “-odi”. Адреса получателя роутятся, и локальные доставки происходят нормальным способом. Однако, если требуются какие-либо доставки по SMTP, они не завершаются сразу, таким образом, сообщение остаётся в очереди, пока следующий процесс обработчика очереди не найдёт его. Поскольку роутинг завершён, exim знает, какие сообщения жрут, для каких хостов, и таким образом, несколько сообщений к одному хосту могут быть посланы в одном SMTP-соединении. Конфигурационная опция “queue_smtp_domains” имеет такой же эффект для специфических доменов. Смотрите также опцию “-qq”.

  • -oee” - Если обнаружена ошибка, во время получений не-SMTP-сообщения (например неправильный адрес), об ошибке сообщают отправителю, в почтовом сообщении.

Если это сообщение об ошибках успешно отправлено, получающий процесс exim выходит с кодом возврата ноль. Если нет, возвращаемый код 2, если проблема в том, что оригинальное сообщение не имеет получателей, или 1 - для любой другой ошибки. Эта опция - значение по умолчанию - “-oex”, если exim вызывается под именем “rmail”.

  • -oem” - Это тоже самое, что и “-oee”, за тем исключением, что exim всегда выходит с ненулевым кодом возврата, независимо, были ли ошибки при отправке сообщения, или нет. Эта опция - значение по умолчанию - “-oex”, если exim вызывается не под именем “rmail”.
  • -oep” - Если обнаружена ошибка, во время получений не-SMTP-сообщения, об ошибке сообщается путём записи в стандартный файл ошибок (поток ошибок). Возвращаемый код равер единице для всех ошибок.
  • -oeq” - Эта опция поддерживается для совместимости с sendmail, но имеет такой же эффект как и “-oep”.
  • -oew” - Эта опция поддерживается для совместимости с sendmail, но имеет такой же эффект как и “-oem”.
  • -oi” - Эта опция даёт такой же эффект, как и “-i”, задавая, чтобы точка в отдельной строке не завершала входящее не-SMTP сообщение. В обратном случае, точка в отдельной строке завершает сообщение, хотя exim не производит специальной обработки для других строк, которые начинаются с точки. Эта опция установлена по дефолту, при вызове exim`a под именем “rmail”. Смотрите также опцию “-ti”.
  • -oitrue” - Эта опция обрабатывается как синоним “-oi”.
  • -oMa <host address>” - Множество опций, начинающихся с “-oM” могут использоваться для установки значений связанных с удалёнными хостами на локально переданных сообщениях (т.е. сообщения полученные на по TCP/IP). Эти опции могут использоваться для любым вызывающим пользователем с тестовыми опциями “-bh”, “-be”, “-bf”, “-bF”, “-bt” или “-bv”. В других обстоятельствах, они игнорируются, если вызывающий не является доверенным пользователем.

Опция “-oMa” устанавливает адрес хоста отправителя. Здесь может использоваться и номер порта, в конце, после точки. Например:

exim -bs -oMa 10.9.8.7.1234

Альтернативный синтаксис должен включать IP-адрес в квадратных скобках, сопровождаемый двоеточием и номером порта:

exim -bs -oMa [10.9.8.7]:1234

IP-адрес помещается в переменную “$sender_host_address”, и порт, если он есть, в “$sender_host_port”.

  • -oMaa <name>” - Смотрите выше, опцию “-oMa” для общих сведений о опциях “-oM”. Опция “-oMaa” устанавливает значение переменной “$sender_host_authenticated” (аутентификационное имя). Смотрите раздел 33 для подробностей о SMTP-аутентификации.
  • -oMai <string>” - Смотрите выше, опцию “-oMa” для общих сведений о опциях “-oM”. Опция “-oMai” устанавливает значение переменной “$authenticated_id” (идентификатор аутентификации). Это отменяет дефолтовое значение адреса отправителя (логин вызвавшего пользователя), для сообщений из локальных источников. Смотрите раздел 33 для подробностей о идентификаторах SMTP-аутентификации.
  • -oMas <address>” - Смотрите выше, опцию “-oMa” для общих сведений о опциях “-oM”. Опция “-oMas” устанавливает значение аутентифицированного отправителя в переменную “$authenticated_sender”. Эта опция перезадаёт адрес отправителя, созданный из имени входа пользователя, вызвавшего exim, для сообщений из локальных источников. Смотрите раздел 33 для подробностей о аутентифицированных SMTP-отправителях.
  • -oMi <interface address>” - Смотрите выше, опцию “-oMa” для общих сведений о опциях “-oM”. Опция “-oMi устанавливает значение адреса IP-интерфейса. Номер порта может быть включён, с использованием синтаксиса как для “-oMa”. Адрес интерфейса помещается в переменную “$interface_address” и номер порта, если задан, в переменную “$interface_port”.
  • -oMr <protocol name>” - Смотрите выше, опцию “-oMa” для общих сведений о опциях “-oM”. Опция “-oMr” устанавливает значение протокола по которому получено сообщение в переменную “$received_protocol”. Однако, это применяется лишь когда опция “-bs” не используется. Для интерактивного SMTP ввода (“-bs”), протокол всегда “local-” сопровождаемый одним из стандартных имён протоколов SMTP (смотрите примечания о “$received_protocol” в разделе 11.9). Однако, для опции “-bS” (пакетный SMTP), протокол может быть установлен в опции “-oMr”.
  • -oMs <host name>” - Смотрите выше, опцию “-oMa” для общих сведений о опциях “-oM”. Опция “-oMs” устанавливает значение имени хоста отправителя в переменную “$sender_host_name”. Когда эта опция присутствует, exim не пытается разрешить (найти в DNS - прим. lissyara) имя хоста по IP-адресу; он использует имя данное в этой опции.
  • -oMt <ident string>” - Смотрите выше, опцию “-oMa” для общих сведений о опциях “-oM”. Опция “-oMt” устанавливает значение ident отправителя в переменную “$sender_ident”. Дефолтовое значение для локальных вызовов - имя логина вызвавшего пользователя или процесса.
  • -om” - В sendmail, эта опция означает “меня также” (“me too”), указывая что отправитель сообщения, должен получить копию сообщения, если отправитель появится в результате раскрытия альясов. Exim всегда так поступает, поэтому эта опция ничего не значит.
  • -oo” - Эта опция игнорируется. В sendmail она задаёт “заголовки старого стиля” (“old style headers”), независимо от того, что это значит.
  • -oP <path>” - Эта опция полезна только вместе с опцией “-bd” или “-q” со значением времени. Опция задаёт файл в который записывается pid даемона. Когда “-oX” используется с “-bd”, или когда “-q” используется со временем, но без “-bd”, это единственный способ заставить exim записать pid-файл, поскольку в этих случаях pid не используется.
  • -or <time>” - Эта опция устанавливает значение таймаута для входящих не-SMTP сообщений. Если она не задана, exim будет вечно ждать на стандартном вводе. Значение также может быть установлено опцией “receive_timeout”. Формат, используемый для задания времени, описан в разделе 6.15.
  • -os <time>” - Эта опция устанавливает значение таймаута для входящих SMTP сообщений. Таймаут применяется к каждой SMTP-команде, и блоку данных. Значение также может быть установлено опцией “smtp_receive_timeout”; по дефолту оно 5 минут. Формат, используемый для задания времени, описан в разделе 6.15.
  • -ov” - Эта опция обладает точно таким же эффектом, как и “-v”.
  • -oX <number or string>” - Эта опция релевантна лишь когда используется опция “-bd” (запуск слушающего даемона). Она контролирует, какие порты и интерфейсы использует даемон. Детали синтаксиса, и как она взаимодействует с конфигурационным файлом, даны в разделе 13. Когда опция “-oX” используется для запуска даемона, pid-файл не пишется, если не задана опция “-oP” для задания имени pid-файла.
  • -pd” - Эта опция применяется когда встроенный интерпретатор Perl слинкован с exim`ом (смотрите раздел 12). Она перезадаёт установки опции “perl_at_start”, вызывая отсрочку запуска интерпретатора, насколько это необходимо.
  • -ps” - Эта опция применяется когда встроенный интерпретатор Perl слинкован с exim`ом (смотрите раздел 12). Она перезадаёт установки опции “perl_at_start”, вызывая запуск интерпретатора при старте exim`a.
  • -p<rval>:<sval>” - Для совместимости с sendmail эта опция эквивалентна:
-oMr <rval> -oMs <sval>

Она устанавливает входящий протокол и имя хоста (для вызывающих доверенных пользователей). Имя хоста и его двоеточие могут быть опущены, лишь когда протокол не задан. Отметьте, что exim уже имеет две закрытые опции “-pd” и “-ps”, ссылающиеся на встроенный perl. Поэтому невозможно установить значение протокола “p” или “s” используя эту опцию (но это не кажется реальным ограничением).

  • -q” - Использование этой опции, обычно, ограничено административными пользователями. Однако, есть конфигурационная опция, называемая “prod_requires_admin”, которая может быть установлена в ложь для ослабления этого ограничения (и тоже самое требуется для опций “-M”, “-R” и “-S”).

Опция “-q” запускает один процесс обработчика очереди. Он сканирует очередь ждущих сообщений, и запускает процесс доставки для каждого сообщения, по очереди. Процесс доставки может не производить доставку, если время повтора для адреса не наступило. Используйте “-qf” (смотрите ниже), если вы хотите отменить это.

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

Когда все стоящие в очереди сообщения были просмотрены, оригинальный процесс обработчика очереди завершается. Другими словами, делается один проход по ожидающей почте, одно сообщение одновременно. Используйте время с опцией “-q” (смотрите ниже), если вы хотите, чтобы просмотр происходил периодически.

Exim обрабатывает ожидающие сообщения в непредсказуемом порядке. Он не очень случаен, но, вероятно, будет разным в каждый запуск. Если одно сообщение портит (подвешивает ли, ещё ли как... - прим. lissyara) удалённый MTA, другие сообщения имеют шанс пройти, к тому же самому MTA, если они будут первыми при обработке.

Возможно произвести обработку сообщений в лексическом порядке, по идентификаторам сообщений, по существу являющимся, порядком в котором они прибыли, установив опцию “queue_run_in_order”, но это не рекомендуется для нормального использования.

  • -q<qflags>” - Опция “-q” может сопровождаться одним или несколькими флагами, изменяющими её поведение. Все они являются опциональными, но если присутствует более чем один, они должны появляться в правильном порядке. Каждый флаг описан отдельным пунктом, ниже.
  • -qq...” - Опция начинающаяся с “-qq” запрашивает двухступенчатое выполнение очереди. На првой стадии, сканируется очередь, как будто опция “queue_smtp_domains” совпадает с каждым доменом. Адреса роутятся, происходят локальные доставки, но удалённые транспорты не запускаются.

База данных совпадений, в которой хранится какие сообщения ждут специфических удалённых хостов, обновляется, как будто доставка на те хосты задержана. После завершения этого, происходит нормальное сканирование очереди, с нормальной маршрутизацией и доставкой. Сообщения которые роутятся на один и тот же хост, в основном, идут через одно SMTP-соединение, из-за данных БД совпадений, которые были установлены при первом сканировании очереди. Эта опция может быть полезной для хостов, которые подключаются к интернету периодически.

  • -q[q]i...” - Если флаг “i” присутствует, обработчик очереди запускает процессы доставки только для тех сообщений, которые до этого не были проверены (видимо, имеется в виду, что не было попыток их доставки - прим. lissyara). (“i” - значит “initial delivery”.) Это может быть полезным, если вы помещаете сообщения в очередь, используя “-odq”, и хотите, чтобы обработчик очереди обработал именно новые сообщения.
  • -q[q]f...” - Если присутствует один флаг “[i]f”, попытка доставки вызывается для каждого незамороженного сообщения, тогда как без “f” пробуются лишь те незамороженные адреса, у которых прошло время повтора.
  • -q[q]ff...” - Если флаг “[i]ff” присутствует, попытка доставки осуществляется для каждого сообщения, независимо от того, заморожено оно или нет.
  • -q[q][f[f]]l” - Флаг “[i]l” (строчная буква “L”) определяет, что нужно делать только локальные доставки. Если сообщению требуются удалённые доставки, оно остаётся в очереди, для более поздней доставки.
  • -q<qflags> <start id> <end id>” - Когда сканируется очередь, exim может пропустить сообщения, идентификаторы которых лексически меньше чем значение стартового идентификатора сообщения, следующего за опцией “-q”. Например:
exim -q 0t5C6f-0000c8-00

Сообщения, полученные ранее чем 0t5C6f-0000c8-00 не просматриваются. Если дан второй идентификатор сообщения, сообщения, идентификатор которых лексически больше него, также пропускаются. Если один и тотже идентификатор задан дважды, например:

exim -q 0t5C6f-0000c8-00 0t5C6f-0000c8-00

то процесс доставки запускается только для него. Это отличается от “-M”, в том, что учитываются данные повторов, и также отличается от “-Mc” в том, что в обработчике очереди, это засчитывается как доставка. Обратите внимание, что механизм выбора не затрагивает порядок, к котором сообщения сканируются. Есть и другие способы выбрать специфичные наборы для доставки в обработчике очереди - смотрите опции “-R” и “-S”.

  • -q<qflags><time>” - Когда присутствует значение времени, опция “-q” заставляет exim работать как даемон, запуская обработчик очереди с заданными интервалами времени (чей формат описан в разделе 6.15). Эта форма опции “-q”, обычно, комбинируется с опцией “-bd”, когда один процесс даемона обрабатывает обе функции. Общий способ запуска комбинированного даемона, при загрузке системы, заключается в использовании команды типа:
/usr/exim/bin/exim -bd -q30m

Такой даемон слушает входящие SMTP вызовы, а также запускает процесс обработчика очереди каждые 30 минут.

Когда даемон запускается с “-q” и с параметром времени, но без “-bd”, pid-файл не записывается, если явно не указана опция “-oP”.

  • -qR<rsflags> <string>” - Эта опция синоним с “-R”. Она предусмотрена для совместимости с sendmail.
  • -qS<rsflags> <string>” - Эта опция синоним “-S”.
  • -R<rsflags> <string>” - “<rsflags>” может быть пустым, в случае когда пустое место до строки опционально, если строка не “f”, “ff”, “r”, “rf” или “rff”, которые являются возможными значениями для “<rsflags>”. Пробел требуется, если “<rsflags>” не пустое.

Эта опция похожа на “-q”, без значения времени, т.е. она заставляет exim выполнить один запуск обработки очереди, за исключением того, что, сканируя сообщения в очереди, exim обрабатывает только те, которые имеют хотя бы один недоставленный адрес получателя, содержащий данную строку, проверенную регистронезависимым способом. Если “<rsflags>” начинается с “r”, “<string>” интерпретируется как регулярное выражение; иначе - это литеральная строка.

Когда сообщение выбрано, обрабатываются все его адреса. Для первого выбранного сообщения, exim перезадаёт любую информацию повторов и вызывает попытку доставки для каждого недоставленного адреса. Это означает, что если доставка какого-либо адреса в первом сообщении успешна, любая существующая информация повторов удаляется, и таким образом попытки доставки для этого адреса во впоследствии выбранных сообщениях (которые обрабатываются без форсирования), будут запущены. Однако, если доставка любого адреса неуспешна, информация повторов обновляется, и во впоследствии выбранных сообщениях неудачные адреса будут пропущены.

Если “<rsflags>” содержит “f” или “ff”, принудительная доставка применяется ко всем выбранным сообщениям, не только к первому; замороженные сообщения включаются, когда присутствует “ff”.

Опция “-R”, напрямую создаёт инициализацию доставки всех сообщений для данного домена, после того как хост был недоступен некоторое время. Когда SMTP команда ERTN принимается её ACL (смотрите раздел 39), её дефолтовый эффект - запуск exim`a с опцией “-R”, но это может быть изменено для запуска произвольной команды вместо неё.

  • -r” - Это документированная (для sendmail`a), устаревшее альтернативное имя для “-f”.
  • -S<rsflags> <string>” - Эта опция работает как “-R”, за исключением того, что, она проверяет строку каждого отправителя сообщения, вместо получателя. Если, также задана опция “-R”, оба условия должны выполняться для каждого выбранного сообщения. Если опции имеют флаги “f” или “ff”, предпринимаются ассоциированные с ними действия.
  • -Tqt <times>” - Эта опция исключительно для набора тестирования exim`a. Она не распознаётся, когда exim запущен нормально. Она позволяет установку “времён очереди” (“queue times”), таким образом могут быть протестированы различные возможности предупреждений/повторов.
  • -t” - Когда exim получает созданное локально, не-SMTP сообщение, на стандартный ввод, опция “-t” заставляет получателей сообщения получить строки заголовков “To:”, “Cc:” и “Bcc:” из сообщения, а не из аргументов команды. Адреса извлекаются до любых перезаписей адресов, и в случае наличия строки “Bcc:”, она удаляется.

Если у команды заданы какие-либо параметры, они задают адреса которым сообщение не будет доставлено. Таким образом, аргументы адресов удаляются из списка получателей, полученного из заголовков. Это совместимо со Smail 3 и соответствует документированному поведению некоторых версий sendmail, как описано в man-страницах ряда операционных систем (например Solaris 8, IRIX 6.5, HP-UX 11). Однако, некоторые версии sendmail добавляют аргументы адресов к полученным из заголовков, и книга O’Reilly “Sendmail” документирует этот способ.

Если есть любой заголовок “Resent-” в сообщении, exim извлекает получателей из всех заголовков “Resent-To:”, “Resent-Cc:” и “Resent-Bcc:”, вместо “To:”, “Cc:” и “Bcc:”. Эта опция для совместимости с sendmail и другими MTA. (До релиза 4.20, exim содержал ошибку, если опция “-t” использовалась вместе со строкой заголовка “Resent-”.)

RFC 2822 говорит о разных “Resent-” строках заголовков (для случая ,когда сообщение перевысылалось несколько раз). RFC, также, определяет, что они должны быть добавлены в начале сообщения, и разделены строками “Received:”. Непонятно, как опция “-t” должна работать в случае многих наборов (“sets”), и вообще неясно что подразумевается под “набором” (“set”). Практически, кажется что MUA не следуют RFC. Строки “Resent-” часто добавляются в конце заголовка, и если сообщение послано более одного раза, часто оригинальный набор заголовков “Resent-” переименовывается в “X-Resent-”? когда добавляется новый набор. Это удаляет любую возможную двусмысленность.

  • -ti” - Эта опция в точности эквивалентна “-t” и “-i”. Она предоставлена для совместимости с sendmail.
  • -tls-on-connect” - Эта опция доступна, когда exim скомпилен с поддержкой TLS. Она вынуждает все входящие SMTP подключения вести себя, как будто входящий порт перечислен в опции “tls_on_connect_ports”. Смотрите секцию 13.4 и 38 для дальнейших деталей.
  • -U” - Sendmail использует эту опцию для “начальной подачи сообщения” (“initial message submission”), и его документация заявляет, что в будущих релизах, он может жаловаться на синтаксически неправильные сообщения, вместо исправления их (я, так думаю, что исправления - тут использовалось слово fixing - прим. lissyara), когда этот флаг не установлен. Exim игнорирует эту опцию.
  • -v” - Эта опция заставляет exim писать информацию в стандартный поток ошибок, описывая что он делает. В частности, он показывает строки логов для приёма и доставки сообщений, и если произведено SMTP-подключение, показывается диалог SMTP. Некоторые показанные строки логов могут быть не записаны в лог, если установка “log_selector” отменяет их. Любые релевантные селекторы показываются с каждой строкой логов. Если не показывается ни одна, логгинг безусловен.
  • -x” - AIX использует “-x” в закрытых целях (“почта от локальной почтовой программы имеет расширенные символы National Language Support, в теле почтового сообщения”). Это устанавливается опцией “-x” при вызове MTA программой “mail”. Exim игнорирует эту опцию.


translated by lissyara