Перевод выполнен Алексеем Паутовым в рамках некоммерческого проекта RussianLDP (http://www.rldp.ru/). Именно на этом сайте и надлежит искать новые версии, если таковые будут.
Командная строка 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. Exim понятия не имеет об одиночном файле алиасов, но может быть сконфигурирован для выполнения с опцией -bi.
Некоторые опции exim доступны только для доверенных пользователей (trusted users), и другие доступны лишь для административных пользователей (admin users). В описании ниже фразы "пользователь exim" (Exim user) и "группа Exim" (Exim group) означают пользователя и группу, заданных как EXIM_USER и EXIM_GROUP в Local/Makefile, или установленных опциями exim_user и exim_group конфигурационного файла. Они не обязательно должны использовать имя exim.
Доверенные пользователи это root, пользователь exim любой пользователь, перечисленный в конфигурационной опции trusted_users, и любой пользователь, текущая или дополнительная группа которого перечислена в конфигурационной опции trusted_groups. Обратите внимание, что группе exim доверие автоматически не устанавливается.
Доверенным пользователям всегда разрешено использовать опцию -f или продолжение строки From для определения отправителя конверта сообщения, принятого exim через локальный интерфейс (смотрите ниже опции -bm и -f). Смотрите опцию untrusted_set_sender для способа разрешить недоверенным пользователям устанавливать отправителя конверта.
Для доверенных пользователей никогда не проверяется содержимое заголовков From: и никогда не добавляется строка заголвка Sender:. Кроме того, любые существующие строки Sender: во входящих локальных (не по TCP/IP) сообщениях не удаляются.
Также доверенные пользователи могут задать имя хоста, адрес хоста, адрес интерфейса, имя протокола, значение ident и аутентификационные данные при отправке сообщения локально. Таким образом, они могут вставить в локальную очередь exim сообщения, которые имеют характеристики сообщений, полученных с удалённых хостов. Недоверенные пользователи, при некоторых обстоятельствах, используют -f, но никогда не могут устанавливать другие значения, доступные для доверенных пользователей.
Административный пользователь: root, пользователь exim, любые другие пользователи, которые являются членами группы exim или любой группы, перечисленной в конфигурационной опции admin_groups. Текущая группа не должна быть одной из этих групп.
Административным пользователям разрешено просматривать список очереди и выполнять определённые операции над сообщениями, например, вызывать принудительную ошибку доставки сообщения. Также необходимо быть административным пользователем, чтобы видеть полную информацию, предоставляемую монитором exim и полную отладочную информацию.
По умолчанию использование опций -M, -q, -R и -S для попытки доставки доставки сообщения в очереди, доступно только административным пользователям. Однако, это ограничение может быть ослаблено установкой опции prod_requires_admin в false (то есть, задав no_prod_requires_admin).
Точно так же использование опции -bp для получения списка всех сообщений в очереди доступно лишь административным пользователям, если queue_list_requires_admin не установлена в false.
Предупреждение: Если Вы конфигурируете Вашу систему так, чтобы административные пользователи имели возможность редактировать конфигурационный файл exim, Вы даёте этим пользователям простой способ получить root-доступ. Дальнейшее обсуждение этой проблемы в начале главы 6.
Командные опции описаны в алфавитном порядке, ниже.
Опция -bd может использоваться только административными пользователями. Если установлены опции -d (отладка) или -v (проверка), демон не отключается от контрольного терминала. При работе таким способом он может быть остановлен нажатием Ctrl+C.
По умолчанию exim ждёт входящие подключения на стандартном SMTP-порту на всех работающих интерфейсах хоста. Однако, он может слушать на других портах, на нескольких портах и только на определённых интерфейсах. Раздел 13 сожержит описание опций, управляющих этим.
Когда слушающий демон запущен без использования -oX (то есть, не отменяя нормальную конфигурацию), он пишет идентификатор процесса в файл с именем exim-daemon.pid, находящийся в каталоге спула exim. Это местоположение может быть перезадано установкой PID_FILE_PATH в Local/Makefile. Файл записывается в то время, когда exim всё ещё работает от пользователя root.
Когда -oX используется в командной строке для запуска слушающего демона, идентификатор процесса не записывается в pid-файл, находящийся по нормальному пути. Однако, опция -oP может быть использована для задания пути в командной строке, если pid-файл необходим.
Сигнал SIGHUP может быть использован для непосредственного перевызова демона. Это необходимо сделать всякий раз, когда конфигурационный файл exim или файл, непосредственно в него включенный посредством .include, изменён, а также всякий раз, когда установлена новая версия exim. Нет необходимости делать это, когда изменяются другие файлы, на которые ссылаются из конфигурации (например, файлы алиасов), поскольку они перечитываются при каждом использовании.
Если exim собран с USE_READLINE=yes в Local/Makefile, то он пробует динамически загрузить библиотеку libreadline каждый раз, когда опция -be используется без параметров командной строки. В случае успеха он использует функцию readline(), которая предоставляет обширные средства редактирования строки, для чтения тестовых данных. История строк поддерживается.
Длинные выражения раскрытия могут быть разбиты на несколько строк, используя продолжения с обратным слэшем. Как в рабочей конфигурации exim, пустые символы игнорируются в начале строк продолжения. Каждый аргумент или строка данных проходят через механизм раскрытия строк и результат выводится. Значения переменных из конфигурационного файла (например, $qualify_domain) доступны, но значения специфичные для сообщения (например, $domain) не установлены, поскольку нет сообщения в обработке. Примечание: Если Вы используете этот механизм для тестирования поиска, и изменяете файлы данных или БД, которые используете, Вы должны выйти и рестартовать exim перед новой попыткой такого же поиска. Иначе, поскольку каждый процесс exim кэширует результаты поисков, Вы получите такой же результат, как и прежде.
Если Вы хотите тестировать системный фильтр, используйте -bF вместо -bf. Вы можете использовать обе опции -bF и -bf в одной команде для проверки системного фильтра и пользовательского одновременно. Например:
exim -bF /system/filter -bf /user/filter </test/message |
Это полезно, когда системный фильтр добавляет строки заголовка или устанавливает переменные фильтра, применяемые пользовательским фильтром.
Если тестируемый файл фильтра не начинается с одной из специальных строк
# Exim filter # Sieve filter |
Результаты команды exim, использующей -bf, если не обнаружены ошибки, являются списком действий, которые exim попробовал бы предпринять, если бы это было реальное сообщение. Более подробное рассмотрение тестирования фильтров дано в отдельной главе 54, озаглавленной Интерфейс Exim для фильтрации почты.
Когда тестируется файл фильтра, отправитель конверта может быть задан при помощи опции -f или при помощи строки From в начале тестового сообщения. Различные параметры, которые бы обычно брались из адреса получателя конверта сообщения, могут быть установлены посредством дополнительных опций командной строки (смотрите последующие четыре опции).
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 (RFC 1413). Их нельзя произвести в тестировании с использованием опции -bh, поскольку отсутсвует входящее SMTP-соединение.
Предупреждение 2: Обратные вызовы проверки адреса (смотрите раздел 39.32) также пропускаются при тестировании с использованием опции -bh. Если Вы хотите, чтобы эти обратные вызовы произошли, используйте опцию -bhc вместо -bh.
Сообщения, доставленные в течение сессии тестирования, отбрасываются, и никакие данные не записываются ни в один из реальных протоколов. Могут быть паузы, когда присходит поиск в DNS (или другой), и они могут исчерпать лимит времени. Опция -oMi может использоваться для определения специфического IP-адреса и порта, если есть такая необходимость.
Утилита exim_checkaccess, упакованная (packaged) версия -bh, чей вывод только лишь говорит, допустим ли данный адрес получателя для данного хоста или нет. Смотрите раздел 49.8.
Если встречатеся опция -bi, то запускается команда, определённая как bi_command в конфигурационном файле, под uid и gid вызывашего exim. Если используется опция -oA, её значение передаётся команде как параметр. Команда, установленная bi_command, может не содержать аргументов. Команда может использовать exim_dbmbuild или другие срадства для перестройки файла алиасов, если это необходимо. Если опция bi_command не задана, вызов exim с -bi пустая команда.
Если какие-либо адреса в сообщении неквалифицированные (не имеют домена), они квалифицируются значением опции qualify_domain или qualify_recipient. Опция -bnq (смотрите ниже) является способом подавить это для особых случаев.
Проверки политик на содержимое локальных сообщений могут быть осуществлены при помощи не-SMTP ACL. Для дополнительных деталей смотрите главу 39.
В случае упешного приёма сообщения, код возврата ноль. Иначе, действием управляет установка опции -oe x: смотрите ниже. Формат сообщения должна соответствовать RFC 2822 за тем исключением, что для совместимости с Sendmail и Smail строка в одной из форм:
From sender Fri Jan 5 12:55 GMT 1997 From sender Fri, 5 Jan 97 12:55:05 |
Указанный отправитель обрабатывается, как если бы он давался как параметр опции -f, но если опция -f присутствует, её параметр используется вместо адреса, взятого из сообщения. Вызывающая exim программа должна работать от доверенного пользователя для установки отправителя сообщения.
Иногда квалификация не требуется. Например, если используется -bS (пакетный SMTP) для повторной передачи сообщений, пришедших с удалённого хоста, после контентного сканирования Вы, вероятно, не хотите квалифицировать неполные адреса в строках заголовков. Такие строки будут присутствовать только, если Вы не захотели включить проверку синтаксиса заголовков в соответствующей ACL.
Опция -bnq подавляет всю квалификацию неквалифицированных адресов в сообщениях, приходящих на локальный хост. Когда она используется, неполный адрес в конверте вызывает ошибки (вызывающие отклонение сообщения), а неполные адреса в строках заголовка оставляются как есть.
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.
Каждое сообщение очереди отображается как в этом примере:
25m 2.9K 0t5C6f-0000c8-00 <alice@wonderland.fict.example> red.king@looking-glass.fict.example <other addresses> |
Первая строка содержит временной отрезок, который сообщение находится в очереди (в данном случае 25 минут), размер сообщения (2,9 kb), уникальный локальный идентификатор сообщения и отправителя сообщения, как содержится в конверте. Для рикошетов адрес отправителя пуст и появляется как <>. Если сообщение послано локально недоверенным пользователем, который изменил адрес отправителя по умолчанию, логин пользователя показывается в круглых скобках перед адресом отправителя.
Если сообщение заморожено (приостановлена попытка его доставки), тогда в конце этой строки показывается текст *** frozen ***. Получатели сообщения (взятые из конверта, а не из заголовков) показаны в последующих строках. Адреса, по которым сообщение уже доставлено, отмечены символом D. Если оригинальный адрес раскрывается в несколько адресов через файл алиасов или форвардов, оригинальный показывается с D только, когда завершены доставки для всех дочерних адресов.
exim -brt bach.comp.mus.example Retry rule: *.comp.mus.example F,2h,15m; F,4d,30m; |
Смотрите раздел 32 для информации о правилах повторов exim. Первый аргумент, являющийся обязательным, может быть полным адресом в форме local_part@domain или только именем домена. Если второй аргумент содержит точку, он интерпретируется как опциональное второе имя домена, если не найдено правил повтора для первого аргумента, используется второй. Это связано с поведением exim, когда ищется правило повтора для удалённого хоста: если правило не найдено, используется общее совпадение с почтовым доменом. В конце можно дать для использования в правилах повторов параметр, являющийся именем для специфической ошибки доставки. Например:
exim -brt haydn.comp.mus.example quota_3d Retry rule: *@haydn.comp.mus.example quota_3d F,1h,15m |
Само сообщение читается из стандартного ввода, содержимое входящих пакетных 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.
В этом использовании, если вызывающему доверяют или установлена опция untrusted_set_sender, то отправителям в командах SMTP MAIL верят. Иначе содержимое этих команд игнорируется и отправителем всегда будет пользователь, вызвавший exim. Неквалифицированные адреса автоматически квалифицируются с использованием qualify_domain и qualify_recipient, соответственно, если не используется опция -bnq.
Опция -bs также используется для запуска exim из inetd, как альтернативу использованию слушающего демона. Exim может различать эти два случая проверяя, является ли стандартный ввод TCP/IP сокетом. Когда exim вызывается из inetd предполагается, что источник почты удалённый, и описанное выше относительно квалификации неполных адресов не применяется. В этой ситуации exim ведёт себя точно так же, как и слушающий демон при приёме сообщения.
Если аргументов не дано, exim запускается в интерактивной манере, запрашивая с правой угловой скобкой адреса для тестирования. В отличие от тестовой опции -be, Вы не можете заставить exim использовать функцию readline(), поскольку он запущен от root, и это вопрос безопасности.
Каждый адрес обрабатыватся, как будто он адрес получателя сообщения (сравните опцию -bv). Он передаётся роутерам, а результат записывается на стандартный вывод. Однако, некоторые роутеры, у которых установлено no_address_test, обходятся. Это может сделать опцию -bt более лёгкой для использования в настоящих тестах роутеров, если первый маршрутизатор передаёт всё программе сканирования.
Код возврата 2, если какой-либо адрес напрямую потерпел неудачу, 1 если никакой адрес не потерпел неудачу напрямую, но по крайней мере один не мог быть разрешён по некоторым причинам. Код возврата 0 даёётся лишь в случае, если все адреса были удачны.
Предупреждение: Опция -bt может сделать только относительно простое тестирование. Если любой из маршрутизаторов проводит тестирование адреса отправителя сообщения, Вы можете использовать опцию -f для установки соответствующего отправителя. Без этого предполагается, что отправитель пользователь, вызывавший программу, квалифицируемый доменом по умолчанию. Однако, если Вы установили (например) маршрутизаторы, поведение которых зависит от содержимого входящего сообщения, Вы не сможете протестировать эти условия с использованием -bt. Опция -N предоставляет один из способов сделать такие тесты.
Как часть этой операции -bV заставляет exim читать и проверять синтаксис конфигурационного файла. Однако это лишь статическая проверка. Он не может проверить значения, которые должны быть раскрыты. Например, хотя ACL с орфографическими ошибками находится, ошибки в параметрах не находятся. Вы не можете положиться только на -bV для нахождения всех опечаток (например), необходимо более-менее реалистичное тестирование. Опции -bh и -N предоставляют более реалистичные средства тестирования.
Если проверка неудачна, и вызывающий не административный пользователь, детали об ошибке не выводятся, поскольку они могут содержать секретную информацию, например, имя пользователя и пароль для доступа к БД.
Если аргументов не дано, exim запускается в интерактивном режиме с приглашением в виде правой угловой скобки, запрашивая адреса для проверки. В отличие от тестовой опции -be, Вы не можете заставить exim использовать функцию readline(), поскольку он запущен от пользователя exim, и это вопрос безопасности.
Проверка отличается от тестирования адресов (опция -bt), к которой роутеры, имеющие no_verify, пропускаются, и если адрес принят роутером, имеющим установленную опцию no_verify, проверка не пройдена. Адрес проверяется как получатель, если используется опция -bv. Для тестирования проверки адреса отправителя должна использоваться опция -bvs.
Если опция -v не задана, вывод состоит из одной строки для каждого адреса, начинающейся с заявления, прошёл адрес проверку или нет. В последнем случае приводится причина. Иначе даётся больше деталей о том, как адрес был обработан. В случае перенаправления адреса все сгенерированные адреса также рассматриваются. Без -v генерируется более одного адреса по перенаправлению, заставляя верификацию завершиться полностью.
Возвращённый код 2, если любой адрес был напрямую неудачен, 1, если нет напрямую неудачных адресов, но по крайней мере один не мог быть разрешён в DNS по каким-либо причинам. Возвращённый код 0, если все адреса успешны.
Если какой-то роутер в конфигурации производит какие-либо тесты для адресов отправителя сообщения, Вы должны использовать опцию -f для установки соответствующего отправителя при запуске тестов с опцией -bv. Без этого предполагается, что отправителем является вызвавший программу пользователь с соответствующим доменом.
Когда эта опция используется программой, работающей не от root или пользователя exim, и список отличается от указанного при компиляции, exim сбрасывает свои root-привилегии и выполняется под реальным и эффективным uid и gid пользователя, что его вызвал. Однако, если в Local/Makefile задана опция ALT_CONFIG_ROOT_ONLY, root-права доступа оставляются для опции -C лишь в случае, если вызвавший exim пользователь root.
Таким образом, пользователю exim не даются привилегии в отношении этого. Эта компиляционная опция по умолчанию не установлена в исходном архиве exim. Однако, если Вы используете версию exim из пакетов, то тот, кто собирал программу, мог включить эту опцию.
Установка 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 привелигированного exim с произвольным конфигурационным файлом.
Средство -C полезно для того, чтобы гарантировать, что конфигурационный файл синаксически корректен, но не может использоваться для тестовых доставок, если у вызвавшего пользователя нет привилегий или в случае экзотической конфигурации, не требующей прав доступа. Проверки пользователя или группы файла, фигурирующего в этой опции не производятся.
Вся опция (включая равно, если оно присутствует) должна быть в пределах одной строки. -D может использоваться для установки значения макрокоманды в виде пустой строки, в этом случае символ равно опционален. Эти две команды синонимичны:
exim -DABC ... exim -DABC= ... |
Для включения пробелов в макроопределения могут использоваться кавычки. Если Вы используете кавычки, пробелы разрешены вокруг имён макрокоманд и символа равно. Например:
exim '-D ABC = something' ... |
Опция -D может быть повторена до 10 раз в одной командной строке.
acl ACL interpretation authauthenticators deliver general delivery logic dns DNS lookups (see also resolver) dnsbl DNS black list (aka RBL) code execarguments for execv() calls expand detailed debugging for string expansions filter filter handling hints_lookuphints 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 loadsystem 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_infosetting info for the process log queue_run queue runs receive general message reception logic resolverturn 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, но включает её (в смысле, тоже убирает эту отладку), когда используется как -all. Причина этого в том, что +all то, что люди чаще всего используют для генерации отладки для разработчиков exim. Если включено +memory, вывод будет огромен и он редко представляет интерес, таким образом, теперь его нужно явно затребовать. Однако, -all действительно отключает всё.
Опция resolver создаёт вывод лишь в случае, если DNS-ресолвер был скомпилирован с включенным DEBUG. Это не так на некоторых операционных системах. Также, к сожалению, отладочный вывод DNS-ресолвера пишется на стандартный вывод, а не на стандартный вывод ошибок.
По умолчанию (-d без аргументов) не включает expand, filter, interface, load, memory, pid, resolver и timestamp. Однако, выбор pid принудителен, когда отладка включена для демона, который передаёт её другому, перезапускаясь. Exim также автоматически добавляет pid к строкам отладки, когда параллельно выполняются несколько удалённых доставок.
Опция timestamp причина появления текущего времени в начале всех выводимых строк отладки. Она может быть полезной при попытках найти задержки в обработке.
Если опция debug_print установлена в любом драйвере, он создаёт вывод каждый раз, когда выбрана отладка, даже если опция -v не используется.
Процессам, запущенным как пользователь root или пользователь exim, всегда доверяют. Прочие доверенные пользователи задаются опцией 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.
Совпадения повторов для любого из адресов отменяются: exim пробует произвести доставку, даже когда нормальное время повтора не наступило. Эта опция требует, чтобы вызывающий пользователь был административным. Однако, существует опция, называемая prod_requires_admin, которая может быть установлена в ложь для ослабления этого ограничения (и то же самое требуется для опций -q, -R и -S).
Доставки происходят синхронно, то есть, оригинальный процесс exim не завершается, пока не завершатся все попытки доставки. Вывода нет, если нет серьёзных ошибок. Если Вы хотите видеть, что происходит, используйте опцию -v или просматривайте основной протокол exim.
Поскольку -N сбрасывает любое сообщение, к которому применяется, только root или пользователь exim разрешается использовать эту опцию с -bd, -q, -R или -M. Другими словами, обычный пользователь может использовать эту опцию только когда предоставляет входящее сообщение к которому будет применена эта опция. Хотя транспортировка никогда не бывает неудачной, при установленной опции -N, адрес может быть задержан из-за конфигурационных проблем транспорта или роутинга. Как только -N используется для попытки доставки, она прилипает к сообщению и применяется для всех последующих попыток доставки сообщения, которые могут быть для него.
Когда все сообщения получены, принимающие процессы завершаются, оставляя процессы доставки завершаться самостоятельно. Стандартный вывод и поток ошибок закрываются в начале каждого процесса доставки. Это действие по умолчанию, если не задана опция -od.
Если одна из опций организации очереди в конфигурационном файле (queue_only или queue_only_file, например) включена, -odb перезадаёт её, если queue_only_override установлена в истину, что является настройкой по умолчанию. Если queue_only_override установлена в ложь, -odb не имеет эффекта.
Оригинальный принимающий процесс exim не завершается, пока процесс доставки сообщения не завершится. Стандартный поток ошибок остаётся открытым в течение доставки.
Однако, как -odb, эта опция не имеет эффекта, если queue_only_override установлена в ложь, и установлена одна из опций организации очереди в конфигурационном файле.
Если происходит временная ошибка доставки во время текущей синхронной доставки, сообщение остаётся в очереди для дальнейшей доставки, и оригинальные процессы приёма завершаются. Смотрите раздел 47 для подробностей о способе установить ограничения конфигурации, чтобы с этой опцией сообщения никогда не ставились в очередь.
Когда -odqs работает, процесс доставки запускается для каждого входящего сообщения по умолчанию в фоновом режиме, но в режиме переднего плана (foreground) только если есть опция -odi. Адреса получателя роутятся, и локальные доставки происходят нормальным способом. Однако, если требуются какие-либо доставки по SMTP, они не завершаюся сразу, таким образом, сообщение остаётся в очереди, пока следующий процесс обработчика очереди не найдёт его. Поскольку роутинг завершён, exim знает, какие сообщения ждут, для каких хостов, таким образом несколько сообщений к одному хосту могут быть посланы в одном SMTP-соединении. Конфигурационная опция queue_smtp_domains имеет такой же эффект для специфических доменов. Смотрите также опцию -qq.
Если это сообщение об ошибках успешно отправлено, получающий процесс exim выходит с кодом возврата ноль. Если нет, возвращаемый код 2, если проблема в том, что оригнальное сообщение не имеет получателей, или 1 для любой другой ошибки. Эта опция значение по умолчанию -oe x, если exim вызывается под именем rmail.
Опция -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.
-oMr <rval> -oMs <sval> |
Она устанавливает входящий протокол и имя хоста (для вызывающих доверенных пользователей). Имя хоста и его двоеточие могут быть опущены, лишь когда протокол не задан. Отметтьте, что exim уже имеет две закрытые опции -pd и -ps, ссылающиеся на строенный perl. Поэтому невозможно установить значение протокола p или s используя эту опцию (но это не кажется реальным ограничением).
Опция -q запускает один процесс обработчика очереди. Он сканирует очередь ждущих сообщений, и запускает процесс доставки для каждого сообщения, по очереди. Процесс доставки может не производить доставку, если время повтора для адреса не наступило. Используйте -qf (смотрите ниже), если вы хотите отменить это.
Если процесс доставки порождает другие процессы для доставки других сообщений по SMTP-соединениям, обработчик очереди ждёт, пока они завершаться, перед продолжением работы.
Когда все стоящие в очереди сообщения были просмотрены, оригинальный процесс обработчика очереди завершается. Другими словами, делается один проход по ожидающей почте, одно сообщение одновременно. Используйте время с опцией -q (смотрите ниже), если хотите, чтобы просмотр происходил периодически.
Exim обрабатывает ожидающие сообщения в непредсказуемом порядке. Он не очень случаен, но, вероятно, будет разным в каждый запуск. Если одно сообщение портит удалённый MTA, другие сообщения имеют шанс пройти к тому же самому MTA, если они будут первыми при обработке.
Возможно произвести обработку сообщений в лексическом порядке по идентификаторам сообщений, по существу являющимся порядком, в котором они прибыли, установив опцию queue_run_in_order, но это не рекомендуется для нормального использования.
База данных совпадений, в которой хранится, какие сообщения ждут специфических удалённых хостов, обновляется, как будто доставка на те хосты задержана. После завершения этого, происходит нормальное сканирование очереди с нормальной маршрутизацией и доставкой. Сообщения, которые роутятся на один и тот же хост, в основном, идут через одно SMTP-соединенеие, из-за данных БД совпадений, которые были установлены при первом сканировании очереди. Эта опция может быть полезной для хостов, которые подключаются к интернету периодически.
exim -q 0t5C6f-0000c8-00 |
Сообщения, полученные ранее, чем 0t5C6f-0000c8-00, не просматриваются. Если задан второй идентификатор сообщения, то те сообщения, идентификатор которых лексически больше него, также пропускаются. Если один и тот же идентификатор задан дважды, например:
exim -q 0t5C6f-0000c8-00 0t5C6f-0000c8-00 |
/usr/exim/bin/exim -bd -q30m |
Такой демон слушает входящие SMTP-вызовы, а также запускает процесс обработчика очереди через каждые 30 минут.
Когда демон запускается с -q и с параметром времени, но без -bd, pid-файл не записывается, если явно не указана опция -oP.
Эта опция похожа на -q, без значения времени, то есть, она заставляет exim выполнить один запуск обработки очереди за исключением того, что, сканируя сообщения в очереди, exim обрабатывает только те, которые имеют хотя бы один недоставленный адрес получателя, содержащий данную строку, проверенную регистронезависимым способом. Если rsflags начинается с r, string интерпретируется как регулярное выражение, иначе это литеральная строка.
Когда сообщение выбрано, обрабатываются все его адреса. Для первого выбранного сообщения, exim пререзадаёт любую информацию повторов и вызывает попытку доставки для каждого недоставленного адреса. Это означает, что если доставка какого-либо адреса в первом сообщении успешна, любая существующая информация повторов удаляется, и таким образом попытки доставки для этого адреса во впоследствии выбранных сообщениях (которые обрабатываются без форсирования), будут запущены. Однако, если доставка любого адреса неуспешна, информация повторов обновляется, и во впоследствии выбранных сообщениях неудачные адреса будут пропущены.
Если <rsflags> содержит f или ff, принудительная доставка применяется ко всем выбранным сообщениям, а не только к первому; замороженные сообщения включаются, когда присутсвует ff.
Опция -R напрямую создаёт инициализацию доставки всех сообщений для данного домена, после того как хост был недоступен некоторое время. Когда SMTP команда ERTN принимается её ACL (смотрите раздел 39), её эффект по умолчанию: запуск exim с опцией -R, но это может быть изменено для запуска произвольной команды вместо неё.
Если у команды заданы какие-либо параметры, они задают адреса, по которым сообщение не будет доставлено. Таким образом, аргументы адресов удаляются из списка получателей, полученного из заголовков. Это совместимо со 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, когда добавляется новый набор. Это удаляет любую возможную двусмысленность.