Мы — долго запрягаем, быстро ездим, и сильно тормозим.

RFC
Программирование
FreeBSD
man
EXIM
  4.62
  4.70
  часть 1
  часть 2
  часть 3
  часть 4
  часть 5
  часть 6
  часть 7
  часть 8
  часть 9
  часть 10
  часть 11
  часть 12
  часть 13
  часть 14
  часть 15
  часть 16
  часть 17
  часть 18
  часть 19
  часть 20
  часть 21
  часть 22
  часть 23
  часть 24
  часть 25
  часть 26
  часть 27
  часть 28
  часть 29
  часть 30
  часть 31
  часть 32
  часть 33
  часть 34
  часть 35
  часть 36
  часть 37
  часть 38
  часть 39
  часть 40
  часть 41
  часть 42
  часть 43
  часть 44
  часть 45
  часть 46
  часть 47
  часть 48
  часть 49
  часть 50
  часть 51
  часть 52
  часть 53
  часть 54
  часть 55
  filter facility


www.lissyara.su —> документация —> EXIM —> 4.70 —> часть 7

7. Дефолтовый конфигурационный файл.


    Дефолтовый конфигурационный файл, поставляемый с exim`ом как src/configure.default, достаточен для хоста, не имеющему особых требований к почтовой системе. В качестве вводной главы, в конфигурировании exim`а, этот раздел представляет собой путь через значения по-умолчанию, давая краткие пояснения параметров настройки. Детальные описания опций, даются в последующих главах. Дефолтовый конфигурационный файл содержит много комментариев о том, как изменить умолчальные значения. Однако, необходимо отметить, что имеется множество опций, которые вообще не упомянуты в дефолтовой конфигурации.

7.1 Главные конфигурационные настройки

   Главные (глобальные) конфигурационные опции должны быть в начале файла. Первое, что необходимо установить, после вводных комментариев, это строка:
# primary_hostname =

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

   Первые три раскомментированные линии таковы:
domainlist local_domains = @
domainlist relay_to_domains =
hostlist   relay_from_hosts = 127.0.0.1

   Фактически, они не параметры настройки. Это определения двух именованных списков доменов, и одного именованого списка хостов. Exim позволяет давать имена спискам доменов, хостов и e-mail адресов для облегчения управления конфигурационным файлом (смотрите секцию 10.5).
   Первая строка задаёт список доменов, называемый
local_domains; он используется позже, в конфигурации, для определения доменов которые нужно доставлять на локальный хост.
   Tут, в этом списке, только одно значение, строка
@. Это специальная форма, вхождение которой означает имя локального хоста. Таким образом, если локалхост называется a.host.example, то почта к любому пользователю типа any.user@a.host.example будет доставляться локально. Поскольку на имя локалхоста ссылаются косвенно, то можно использовать одинаковый конфиг на разных хостах.
   Вторая строка задаёт список доменов, называемый
relay_to_domains, но список пуст. Позже, в конфигурации, будет часть контролирующая релеинг почты через локальный хост; он позволяет релеить любые домены из этого списка. По дефолту, здесь, не разрешён релей на основе имён почтовых доменов.
   Третья строка задаёт список хостов, называемый
relay_from_hosts. Этот список используется позже, в конфигурации, для разрешения релея от любых хостов или IP-адресов, которые совпадают со списком. По-умолчанию, в нём содержится только IP-адрес интерфейса обратной петли, что означает, что процессы на локальном хосте могут пересылать почту к другим хостам через exim, соединяясь с ним по TCP/IP на интерфейсе обратной петли.
   Для того, чтобы не было непонимания: В этом пункте конфигурации мы не устанавливаем никаких значений директив. Мы просто задаём некоторые домены и хосты, использующиеся в директивах заданных позже.

   Следующие две строки - настоящие опции настройки:
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data

   Эти опции задают Access Control Lists (списки контроля доступа - ACLs), которые используются в течение входящего SMTP-подключения для каждого получателя сообщения (на каждую команду RCPT), и после того, как сообщение было получено, соотвественно.Названия списков - acl_check_rcpt и acl_check_data, и мы доберёмся до их определения ниже, в конфигурационной секции ACL. RCPT ACL контролирует, какие получатели разрешены для входящих сообщений - если конфигурация не содержит ACL для проверки получателей, то никакая почта по SMTP не принимается. DATA ACL разрешает проверку содержимого сообщения.

   Следующие две закомментированные строки:
# av_scanner = clamd:/tmp/clamd
# spamd_address = 127.0.0.1 783

   Они - пример настроек, которые могут использоваться когда exim скомпилен с расширением контентного сканирования (content-scanning extension). Первая задаёт интерфейс к сканеру вирусов, и вторая задаёт интерфейс к SpamAssassin. Дальнейшие детали даются в разделе 41.
   После них идут ещё 3 закомментированные строки:
# tls_advertise_hosts = *
# tls_certificate = /etc/ssl/exim.crt
# tls_privatekey = /etc/ssl/exim.pem

   Они являются примером настроек, которые могут использоваться, если Exim скомпилирован с поддержкой TLS (SSL), смотрите секцию 4.7. Первая опция задаёт список клиентов, которые при подключении к серверу могут использовать TLS, * в этом случае подразумевает любого клиента. Остальные опции служат для указания того, где Exim должен искать свой TLS сертификат и приватный ключ (private key), которые вместе однозначно идентифицируют сервер для всех клиентов. Вы можете найти дополнительную информацию в главе 39.

Дальше следуют две закомментированые опции:
# daemon_smtp_ports = 25 : 465 : 587
# tls_on_connect_ports = 465

   Эти опции предоставляют улучшенную поддержку удалённым пользователям, которые желают использовать этот сервер для отправки почты. Они редко используются, если Вы не используете TLS (как его включать было описано в предыдущем параграфе) и аутентификацию (о которой говорится в секции 7.7). Очень часто стандартный SMTP порт (25-ый) заблокирован для пользователей из конечных сетей (end-user network), поэтому RFC 4409 позволяет использовать альтернативный, 587-ой порт для передачи почты. К сожалению некоторые приложения (особенно Microsoft Outlook) не могут быть настроены на использование 587-го порта, т.к. настройки выше также включают нестандартный 465 "smtps" ("ssmtp") порт (см. секцию 13.4).

   Далее ещё две закомментированных строки:
# qualify_domain =
# qualify_recipient =

   Первая из них задаёт домен, который exim использует, при создании полного адреса электронной почты, из имени логина локального пользователя. Часто это необходимо при получении exim`ом почты от локального процесса. Если вы не задали qualify_domain, то используется значение primary_hostname. Если вы задали обе эти опции, то можно иметь разные домены для адресов получателей и отправителей. Если же используете только первую, то её значение используется для обоих директив.

   Следующая строка может быть раскомментирована, если вы хотите чтобы exim понимал адреса формы
user@[10.11.12.13], то есть с буквальным доменом (domain literal - IP-адрес в квадратных скобках) вместо именованного домена.
# allow_domain_literals

   RFC всё ещё требуют эту форму, но много людей считают что в современном интернете посылка почты определённым хостам, указывая их IP-адрес имеет мало смысла. Этот старый формат использовался людьми рассылающими спам. Однако, некоторые полагают, что есть обстоятельства (например письма постмастеру), когда этот формат полезен.

   Следующая строка конфигурации, своего рода защита:
never_users = root

   Это определяет, что никакая доставка не должна осуществляться от имени пользователя root. Нормальное соглашение заключалось в том, что root - псевдоним системного администратора. Зта опция - охранная. Список пользователей, определённых как never_users - неполный, при компиляции в Local/Makefile есть опция FIXED_NEVER_USERS, задающая список, который не может быть отменён. Содержимое never_users добавляется к списку. По-умолчанию, FIXED_NEVER_USERS содержит пользователя root.

   Когда удалённый хост коннектится к exim`y, чтобы послать почту, единственная информация, которую имеет exim, о идентификации хоста - это его IP-адрес. Следующая конфигурационная строка,
host_lookup = *

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

   Следующие две строки занимаются вызовом
ident, как определено в RFC1413, следовательно их имена:
rfc1413_hosts = *
rfc1413_query_timeout = 5s

   Эти настройки заставляют exim делать вызовы ident для всех входящих SMTP подключений. Вы можете ограничить список хостов, на которые делается этот вызов, или изменить таймаут, если он используется. Можно поставить таймаут в ноль, тогда все вызовы ident будут заблокированы. Хотя они обходятся дёшево, и могут дать полезную информацию для трассировки проблем сообщений, некоторые хосты и фаерволлы имеют проблемы с запросами ident. Это может привести к таймауту вместо немедленного сброса подключения, в случае отказа, приводя к задержке на старте входящего SMTP подключения.

   Когда exim получает сообщения по SMTP, то ожидается, что все хосты будут иметь полное доменное имя, как требуется по определению SNMP. Однако если на ваш сервер шлют сообщения простые пользователи, то они могут иметь неподходящие адреса. Две закомментированные опции:
# sender_unqualified_hosts =
# recipient_unqualified_hosts =

указывают как вы можете задать хосты, которым разрешается посылать неполные адреса отправителей и получателей (имеются ввиду адреса без домена - тока имя пользователя).

   Опция
percent_hack_domains также закомментирована:
# percent_hack_domains =

   Она обеспечивает список доменов, для которых должно работать percent hack. Это - почти устаревшая опция явной почтовой маршрутизации. Если вы ничего не знаете об этом - то также можете проигнорировать эту опцию. (Прим. переводчика: а вообще имеются ввиду адреса, типа user%domain1.su@domain2.su - когда письмо приходит на сервер domain2.su, а тот уже пересылает его на domain1.su. Но лучше это не использовать.)

   Два последних параметра настройки дефолтовой конфигурации касаются сообщений,
замороженных в очереди exim`a. Когда сообщение заморожено, exim не продолжает попытки доставить его. Замораживание происходит когда сообщение об отлупе сталкивается с постоянным отказом, поскольку отправитель оригинального сообщения, вызвавшего рикошет, недопустим, и таким образом отлуп нельзя доставить. Это - наиболее частая причина, но есть и другие причины заморозки, и замороженные сообщения - не всегда рикошеты.
ignore_bounce_errors_after = 2d
timeout_frozen_after = 7d

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

7.2 Конфигурация ACL

   В дефолтовой конфигурации, секция ACL следует за главной конфигурацией. Она начинается со строки
begin acl

и она содержит определения двух ACL, называемых acl_check_rcpt и acl_check_data на которые выше ссылались параметры настройки acl_smtp_rcpt и acl_smtp_data.

   Первая ACL, используется для всех команд RCPT для входящих SMTP сообщений. Каждая команда RCPT  определяет одного получателя сообщения. Утверждения ACL рассматриваются до тех пор, пока адрес либо принимается либо отклоняется. Тогда команда RCPT либо принята, либо отклонена, согласно результату обработки ACL.
acl_check_rcpt:

   Эта строка, состоящая из названия завершённого двоеточием, отмечает начало ACL и именует её.

accept  hosts = :

   Это утверждение ACL принимает получателя, если хост соответствует списку. Но что означает этот странный список? Он, фактически, не содержит никаких имён хостов, или адресов IP. Присутствие двоеточия, помещает в пустой элемент в список; exim сопоставляет его только с входящими сообщениями, которые идут не с удалённого хоста (только с локалхоста), поскольку в этом случае, имя удалённого хоста пустой. Двоеточие важно. Без него список пуст, и никогда ничему не соответствует.
   То, что делает это утверждение, - разрешает безоговорочный приём всех получателей в сообщениях переданных по SMTP от локальных процессов, с использованием стандартного ввода и вывода (т.е. без использования TCP/IP). Множество MUA работает в такой манере.

deny    message       = Restricted characters in address
        domains       = +local_domains
        local_parts   = ^[.] : ^.*[@%!/|]

deny    message       = Restricted characters in address
        domains       = !+local_domains
        local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

   Это утверждение занимается тем, чтобы локальная часть адреса не содержали некоторые символы - @, %, !, /, |, или точки в необычных местах. Хотя эти символы могут абсолютно законно использоваться в локальной части адреса (в случае @ и начальной точки, только если корректно заэкранировано), обычно они не встречаются в почтовых адресах.
   Первые три имеют прошлые ассоциации с явным роутингом адресов (символ процента используется до сих пор - смотрите опцию
percent_hack_domains). Адреса содержащие эти символы регулярно пробуют спамеры, в попытках обойти ограничения релея почты, и программами проверяющими хост на открытый релей. Если вы в них не нуждаетесь, то самое безопасное - отклонить их на ранней стадии. Эта конфигурация отклоняет эти символы для всех удалённых хостов. Это преднамеренная политика, для достижения, насколько возможно, максимальной безопасности.
   Первое правило более строгое, и оно применяется к сообщениям, которые адресованы к одному из локальных доменов, которые крутятся на этом хосте. Это осуществляется первым условием, которое ограничивает его доменами перечисленными в списке
local_domains.  Символ + используется для указания ссылки на именованный список. В данной конфигурации, тут только один домен в local_domains, но вообще, может быть несколько.
   Второе условие в первом утверждение использует два регулярных выражения, для блокирования локальных частей начинающихся с точки, или содержащих
@, %, !, /, или |. Если у вас есть учётки использующие эти символы, то надо изменить это правило.
   Пустые компоненты (две точки подряд) недопустимы по RFC2822, но exim разрешает их, поскольку с ними столкнулись практически. (Обычно локальная часть выглядит так:
first-initial.second-initial.family-name, но иногда бывает, что второго инициала нет, как у автора exim) Однако, локальная часть начинающаяся с точки, или содержащая /../ может вызывать проблемы, если она используется как часть имени (например в списке рассылки). Также это истинно для локальных частей содержащих слэши. Символ трубы | также может принести неприятности, если локальная часть легкомысленно включена в командную строку шелла.
   Второе правило, применяемое ко всем прочим доменам менее строго. Это позволяет локальным пользователям посылать сообщения к другим серверам, использующим слэши и трубы в локальной части адреса. Оно блокирует локальные части начинающиеся с точки, слэша, или трубы, но разрешает эти символы внутри локальной части. Однако, последовательность
/../ - запрещена. Использование @, %, и ! заблокировано. Мотивация - запретить пользователям (или пользовательским вирусам) от определённые виды атак на удалённые сервера.

accept  local_parts   = postmaster
        domains       = +local_domains

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

require verify        = sender

   Это утверждение требует, чтобы адрес отправителя был проверен до того, как будут последующие проверки ACL. Если проверка неудачна, то отказывается в доставке входящему адресу получателя.  Проверка состоит из попытки маршрутизировать адрес, с целью выяснить, можно ли по нему доставить сообщение о рикошете. В случае удалённых адресов, проверяется только домен, но для более точной проверки может использоваться callouts. Смотрите раздел 40.40 для получения дополнительной информации о проверке адреса.

accept  hosts         = +relay_from_hosts
        control       = submission

   Это утверждение принимает адрес, если сообщение приходит с одного из хостов которым разрешён релей через этот хост. Проверка получателя тут опущена, поскольку во многих случаях клиенты - тупые MUA которые не в состоянии справиться ответами об ошибке SMTP. По этой же причине, вторая строка задаёт режим подчинения (submission mode) для принятых сообщений. Это детально описано в разделе 44.1; это заставляет exim`a исправлять сообщения которые недоделаны (неполные или несовершенные), например, потому что у них отсутствует строка заголовка Date:. Если вы передаёте их наружу, с MTA, вы, вероятно, должны тут добавить проверку получателя, и отключить режим подчинения.

accept  authenticated = *
        control       = submission

   Это утверждение принимает адрес, если клиентский хост подтвердил свою подлинность. Снова задан режим подчинения, поскольку сообщения, вероятнее всего, будут прибывать с MUA. В умолчальном конфиге не заданы аутентификаторы, хотя, он включает в себя закомемнтированные примеры описанные в 7.7. Это означает, что, фактически, клиенты не могут аутентифицировать, пока вы не завершите определение айтентификаторов.
require message = relay not permitted
	domains = +local_domains : +relay_domains

   Это утверждение отклоняет адреса, если их домен не является локальным или одним из доменов для которых этот хост является релеем.
require verify = recipient

   Это утверждение требует проверки адреса отправителя; если проверка неуспешна, адрес отклоняется.
# deny    message     = rejected because $sender_host_address \
#                       is in a black list at $dnslist_domain\n\
#                       $dnslist_text
#         dnslists    = black.list.example
#
# warn	dnslists    = black.list.example
#	message     = X-Warning: $sender_host_address is in \
#			a black list at $dnslist_domain
#         log_message = found in $dnslist_domain

   Эти закомментированные строки - пример того как вы можете сконфигурировать exim для проверки отправляющего хоста в блэк-листах DNS. Первое утверждение отклоняет сообщения с хостов находящихся в чёрных списках, тогда как второе только добавляет строку заголовка с предупреждением.
# require verify = csa

   Эта закомментированная строка - пример того, как вы можете включить проверку клиентской SMTP авторизации (CSA).
accept

   Финальное утверждение в первой ACL безоговорочно принимает любых отправителей, которые успешно прошли предыдущие тесты.
acl_check_data:

   Эта строка отмечает начало второго ACL, и именует его. Большая часть содержимого этого ACL закомментирована:
# deny    malware   = *
#         message   = This message contains a virus \
#                     ($malware_name).

   Эти строки - пример того, как сделать чтобы сообщения были просканированы на вирусы, когда exim скомпилен с поддержкой контентного сканирования, и установлен подходящий сканнер вирусов. Если в сообщении найден вирус, то оно отклоняется с заданным сообщением об ошибке.

# warn    spam      = nobody
#         message   = X-Spam_score: $spam_score\n\
#                     X-Spam_score_int: $spam_score_int\n\
#                     X-Spam_bar: $spam_bar\n\
#                     X-Spam_report: $spam_report

   Эти строки - пример того, как сделать, чтобы сообщения были просканированы SpamAssassin, когда exim скомпилен с поддержкой контентного сканирования, и установлен SpamAssassin. Проверка SpamAssassin`ом выполняется от пользователя nobody, и результаты добавляются к сообщению как ряд дополнительных заголовков. В этом случае, сообщение не отклоняется, вне зависимости от того сколько очков ему поставлено.

accept

   Это заключительная строка в DATA ACL, сообщение принимается безоговорочно.

7.3 Конфигурация роутера (маршрутизатора)

   Конфигурация роутеров в дефолтовом конфиге, начинается со следующей линии:
begin routers

   Роутеры - это модули в exim`e, принимающие решение о том, куда слать сообщение. Адрес передаётся каждому маршрутизатору, по очереди, и он его либо принимает, либо нет. Это значит, что порядок в котором заданы роутеры - важен. Каждый роутер, позднее, полностью описан в его разделе, в этом руководстве. Тут даны только краткие обзоры.

# domain_literal:
#   driver = ipliteral
#   domains = !+local_domains
#   transport = remote_smtp

   Этот маршрутизатор закомментирован, поскольку большинство серверов не поддерживает буквальные адреса (вида user@[10.9.8.7]). Если вы раскомментируете этот роутер, также необходимо будет раскомментить опцию allow_domain_literals в основной части конфигурации.

dnslookup:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
  no_more

   Первый незакомментированный роутер обрабатывает адреса, не относящиеся к локальным доменом. Это задано строкой
domains = ! +local_domains

   Опция domains - список доменов к которым применяется этот роутер, но восклицательный знак является признаком отрицания (несоответствия), таким образом роутер используется только для доменов, которые не находятся в списке local_domains (который был определён в начале конфигурации). Символ + используется для указания ссылки на именованный список. Адреса в других доменах передаются следующим роутерам.
   Имя драйвера маршрутизатора -
dnslookup, оно задано в опции driver. Вас не должно смущать то, что имя маршрутизатора такое же как и имя драйвера. Название примера может быть произвольным, но имя заданное в опции driver - должен быть один из модулей драйверов из исполняемого файла exim`a.
   Роутер
dnslookup маршрутизирует адреса, ища их домены в DNS, для получения списка хостов к которым к которым должен маршрутизироваться адрес. Если роутер успешен, адрес ставиться в очередь транспорта remote_smtp, как задано в опции transport. Если роутер не находит домен в DNS, то никакие дальнейшие роутеры не рассматриваются из-за опции no_more, таким образом адрес неудачен, и не доставляется (возвращается сообщение о ошибке).
   Опция
ignore_target_hosts задаёт список IP-АДРЕСОВ, которые должны полностью игнорироваться. Эта опция присутствует по причине, что было много случаев, когда MX-запись в DNS указывает на имя хоста с адресом 0.0.0.0 или из 127-й подсети (обычно, 127.0.0.1). Полное игнорирование этих адресов лишает возможности exim маршрутизировать почту к ним, таким образом доставка срывается. Иначе, exim писал бы в логи о проблеме маршрутизации, и продолжал пытаться доставить сообщение, с определённым таймаутом.

system_aliases:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup{$local_part}lsearch{/etc/aliases}}
# user = exim
  file_transport = address_file
  pipe_transport = address_pipe

   Управление передаётся этому и последующим роутерам, только если адрес в локальном домене. Этот роутер проверяет, заданa ли локальная часть как альяс в /etc/aliases, и если это так, переадресовывает адрес согласно данным найденным в этом файле. Если для локальной части не найдено никаких данных, то значение опции data пустое, и адрес передаётся следующему роутеру.
   
/etc/aliases - обычно это файл системных альясов. Именно по этому на него, по-умолчанию, ссылается конфигурационный файл. Однако, это можно поменять, изменив опцию SYSTEM_ALIASES_FILE в Local/Makefile до сборки exim`a.

userforward:
  driver = redirect
  check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
  file = $home/.forward
# allow_filter
  no_verify
  no_expn
  check_ancestor
  file_transport = address_file
  pipe_transport = address_pipe
  reply_transport = address_reply

   Этот маршрутизатор - самый сложный в дефолтовой конфигурации. Это другой перенаправляющий роутер, но он ищет данные перенаправления установленные отдельными пользователями. Установка check_local_user задаёт проверку локальной части, что она логин локального пользователя. Если это не так - роутер пропускается. За опцией check_local_user следуют две закомментированные опции, а именно:
# local_part_suffix = +* : -*
# local_part_suffix_optional

указывают, как можно задать распознание локальной части суффиксов. Если раскомментировать первое, то суффикс начинающийся с плюса или минуса, за которым идёт какая-то последовательность символов, удаляется из локальной части и помещается в переменную $local_part_suffix. Вторая опция суффикса определяет, что присутствие суффикса в локальной части является опциональны. Когда суффикс есть, проверка локального логина пользователя использует локальную часть без суффикса.
   Когда найден локальный аккаунт пользователя, то просматривается файл
.forward в домашней директории пользователя. Если он не существует, или пуст, то роутер пропускается. Иначе, содержимое .forward интерпретируется как данные перенаправления (для дополнительных деталей, обратитесь к главе 22).
   Традиционный файл
.forward содержит лишь список адресов, каналов (труб), или файлов. Exim поддерживает всё это по-умолчанию. Однако, если установлена опция allow_filter (по дефолту, она закомментирована), содержимое файла интерпретируется инструкции exim`a или sieve, если файл начинается с #Exim filter или #Sieve filter, соответственно. Фильтры пользователей обсуждаются в отдельном документе Exim’s interfaces to mail filtering.
   Опции
no_verify и no_expn означают что этот роутер пропущен, когда проверяется адрес, или когда он выполняется вследствие команды SMTP EXPN. Есть две причины, чтобы это сделать:

  • 1. В действительности, не очень важно, есть у пользователя файл .forward или нет, при проверке адреса на существование; это делается сознательно, чтобы не тратить ресурсы на бесполезную работу.
  • 2. Ещё более важно, когда exim проверяет адрес или обрабатывает команду EXPN во время SMTP сессии он работает от имени своего пользователя, а не от root. Группа - тоже его группа, и никаких дополнительных групп не установлено. Поэтому, вполне возможно, что exim не сможет прочитать пользовательский файл .forward в этот момент.
       Установка
    check_ancestor препятствует роутеру генерить новый адрес, являющийся таким же как и предыдущий, который переадресуется. (Это связано с относительно плохим взаимодействием между альясингом и форвардингом - смотрите раздел 22.5)
       Три финальных параметра настройки задают транспорты, которые должны использоваться когда форвардинг совершает прямую доставку в файл, или в трубу, или делает авто-ответ, соответственно. Например, если файл
    .forward содержит
    a.nother@elsewhere.example, /home/spqr/archive
    

    доставка в /home/spqr/archive будет осуществлена запуском транспорта address_file.

    localuser:
      driver = accept
      check_local_user
    # local_part_suffix = +* : -*
    # local_part_suffix_optional
      transport = local_delivery
    

       Последний роутер устанавливает доставку в локальные почтовые ящики, при условии, что локальная часть адреса является логином пользователя, принимая адрес и задавая его транспорту local_delivery. Иначе, т.к. достигнут конец роутеров, адрес возвращается отправителю. Закомментированные настройки суффиксов выполняют ту же самую роль, что и в роутере userforward.

    7.4 Транспортная конфигурация

       Транспорты задают механизмы для фактической доставки сообщений. Они работают только когда на них ссылаются роутеры, таким образом порядок в котором они заданы - неважен. Раздел транспортов начинается с
    begin transports
    

       Определены один удалённый и четыре локальных транспорта.

    remote_smtp:
      driver = smtp
    

       Этот транспорт используется для доставки сообщений через SMTP-соединение. Все его опции - умолчальные. Список удалённых хостов даётся маршрутизатором.

    local_delivery:
      driver = appendfile
      file = /var/mail/$local_part
      delivery_date_add
      envelope_to_add
      return_path_add
    # group = mail
    # mode = 0660
    

       Транспорт appendfile используется для локальной доставки в пользовательские почтовые ящики, в традиционном формате BSD mailbox. По дефолту, он запускается под uid и gid локального пользователя, что требует установки липкого (sticky) бита на директории /var/mail. Некоторые системы используют иной подход к запуску доставки почты, под специфической группой, вместо использования липкого бита. Закомментированные опции показывают, как это может быть сделано.
       При доставке, exim добавляет к сообщению три заголовка:
    Delivery-date:, Envelope-to: и Return-path:. Это регулируется тремя опциями, с подобными названиями.

    address_pipe:
      driver = pipe
      return_output
    

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

    address_file:
      driver = appendfile
      delivery_date_add
      envelope_to_add
      return_path_add
    

       Это транспорт используется для обработки доставки в файлы, проиведённым редиректом. Имя файла не задаётся в appendfile, поскольку оно приходит от маршрутизатора redirect.

    address_reply:
      driver = autoreply
    

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

    7.5 Дефолтовые правила повторов

       Секция повторов конфигурационного файла, содержит правила затрагивающие поведение exim`a при повторах доставки сообщений, которые не удалось доставить с первого раза. Она начинается со строки
    begin retry
    

       В дефолтовой конфигурации, есть только одно правило, применяемое ко всем ошибкам:
    *   *   F,2h,15m; G,16h,1h,1.5; F,4d,6h
    

       Это заставляет exim пытаться доставить любой временно неудачный адрес в течение двух часов каждые 15 минут, затем интервал начинается с часа и увеличивается с фактором полтора пока не пройдёт 16 часов, затем каждые 6 часов, до срока в 4 дня. Если адрес не удаётся доставить после 4-х дней временного отказа, то происходит генреация рикошета (письмо возвращается отправителю).
       Если секция повторов удалена из конфигурации, или она пуста (т.е. - не задано никаких правил повторов), exim не предпринимает попыток повторных доставок. Это превращает временные ошибки в постоянные.

    7.6 Конфигурация перезаписи

       Раздел конфигурации перезаписи, начинаемый с
    begin rewrite
    

    содержит правила для перезаписи адресов в прибывших сообщениях. В дефолтовом конфиге нет правил перезаписи.

    7.7 Конфигурация аутентификаторов

       Секция аутентификаторов файла конфигурации, начинаемая с
    begin authenticators
    

    задаёт механизмы для использования в команде SMTP AUTH. В дефолтовом кофигурационном файле содержаться два закомментированных примера аутентификаторов, которые поддерживают аутентификацию пользователь/пароль открытым текстом, используя стандартный механизм PLAIN, и традиционный, но нестандартный механизм LOGIN, в которых exim выступает в роли сервера. PLAIN и LOGIN поддерживаются большинством MUA.
       Пример аутентификатора PLAIN выглядит так:
    #PLAIN:
    #  driver                  = plaintext
    #  server_set_id           = $auth2
    #  server_prompts          = :
    #  server_condition        = Authentication is not yet configured
    #  server_advertise_condition = ${if def:tls_cipher }
    

       И пример аутентификатора LOGIN:
    #LOGIN:
    #  driver                  = plaintext
    #  server_set_id           = $auth1
    #  server_prompts          = <| Username: | Password:
    #  server_condition        = Authentication is not yet configured
    #  server_advertise_condition = ${if def:tls_cipher }
    

       Опция server_set_id заставляет exim запомнить авторизованное имя пользователя в $authenticated_id, которая может быть использована позднее, в ACL или роутерах. Опция server_prompts конфигурирует аутентификатор plaintext таким образом, что он реализует детали специфического аутентификационного механизма, т.е. - PLAIN или LOGIN. Установка server_advertise_condition контролирует, когда exim посылает клиентам приглашение аутентифицироваться; в примере, это происходит лишь при запуске TLS или SSL, таким образом, для включения этих аутентификаторов вам также необходимо добавить поддержку TLS, как описано в разделе 7.1.
       Установка
    server_condition определяет как проверить корректность пользователя и пароля. В примерах, она просто выводит сообщение о ошибке. Чтобы аутентификаторы заработали, вы должны использовать выражение раскрытия стоки, похожее на примеры в главе 34.
       Помните, что последовательность параметров для PLAIN и LOGIN различна; пользователь и пароль находятся в различных позициях. В главе 34 описаны оба.


    =============
    translated by lissyara
    verifying by Gerk



    Ссылка на обсуждение: http://forum.lissyara.su/viewforum.php?f=20.



  • Хостинг HOST-FOOD

    2014-07-27, lissyara
    gmirror

    Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
    2013-08-20, zentarim
    Scan+Print server FreeBSD 9

    Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
    2011-11-20, BlackCat
    Разъём на WiFi-карту

    Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
    2011-09-14, manefesto
    Настройка git+gitosis

    Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
    2011-08-14, zentarim
    Wi-FI роутер + DHCP + DNS

    Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
    2011-06-15, -ZG-
    Охранная система на FreeBSD+LPT

    В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
    2011-03-13, terminus
    ng_nat

    Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
    2011-02-20, Капитан
    Nagios+Digitemp

    Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
    2011-02-17, Le1
    Zyxel Configuration

    Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
    2011-02-16, fox
    hast carp zfs ucarp cluster

    HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
    2011-02-04, BlackCat
    Восстановление ZFS

    История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
    2011-02-03, Капитан
    1-Wire

    Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
    2011-01-28, Капитан
    Температура в серверной

    Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
    2011-01-21, m4rkell
    Syslog server

    Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
    2011-01-07, lissyara
    Canon/gphotofs

    Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
    2010-12-13, Al
    IPSec

    Описание принципов работы IPSEC и способов аутентификации.
    2010-12-07, manefesto
    FreeBSD on flash

    Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
    2010-12-05, Fomalhaut
    root ZFS, GPT

    Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
    2010-09-05, Cancer
    Настройка аудиоплеера на ximp3

    Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
    2010-08-31, Cancer
    Установка и настройка OpenVPN

    На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
    2010-08-25, manefesto
    freebsd lvm

    Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
    2010-04-30, gonzo111
    proftpd file auth&quota

    Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
    2010-04-22, lissyara
    tw_cli

    Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
    2010-04-14, fox
    MySQL Master+Master

    MySQL (Master Master) and (Master Slave) Как настроить репликацию…
    2010-03-09, terminus
    DNS zones

    Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
    2010-03-09, aspera
    Squid+AD (group access)

    Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
    2010-03-02, BlackCat
    Шлюз: Часть 4

    Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
    2010-03-01, BlackCat
    Шлюз: Часть 3

    Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
    2010-03-01, BlackCat
    Шлюз: Часть 2

    Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
    2010-03-01, BlackCat
    Шлюз: Часть 1

    Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
    2010-02-23, Morty
    darkstat

    Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
    2010-01-23, gonzo111
    squid+sams+sqstat

    Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
    2009-12-19, schizoid
    mpd5 + radius + ng_car + Abills

    Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
    2009-11-16, lissyara
    UFS->ZFS

    Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
    2009-11-13, gx_ua
    fusefs-ntfs

    Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
    2009-11-12, Morty
    LiveCD

    Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
    2009-09-27, lissyara
    Samba как PDC

    Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
    2009-08-30, terminus
    ipfw nat

    Подробное руководство по ipfw nat, сложные случаи конфигурации.
    2009-08-24, levantuev
    HotSpot

    Установка Hotspot системы в общественное заведение.
    2009-08-18, lissyara
    diskless

    Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
    2009-07-29, BAV_Lug
    Видеонаблюдение

    Настройка бюджетного варианта видеонаблюдения на удаленном объекте
    2009-07-22, Cancer
    OpenLDAP адресная книга

    Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
    2009-06-30, SergeySL
    AimSniff

    Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
    2009-06-25, atrium
    Управление правами доступа

    Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX.
    2009-06-16, DNK
    Exim+PgSQL

    Установка почтовой системы exim+pgsql на FreeBSD 7.1
    2009-05-30, mvalery
    HDD(mbr) -> HDD(gpt)

    Как разбить диск размером более 2TB на разделы, сделать загрузочным, а затем перенести на него информацию с рабочей системы — донора.
    2009-05-22, Cancer
    SendXMPP

    Отправка сообщений на Джаббер сервер по средствам SendXMPP
    2009-05-11, Raven2000
    Network UPS Tools

    Network UPS Tools представляет собой набор программ, которые обеспечивают общий интерфейс для мониторинга и администрирование UPS оборудования.
    2009-04-29, m0ps
    IPSEC over GRE with RIP

    Пример IPSEC over GRE и динамическим роутингом (RIP), с ADSL в качестве последней мили на оборудовании Cisco.
    2009-04-24, WhiteBear777
    qemu network

    Появилась необходимость поставить на БСД эмулятор(qemu) и настроить в качестве гостевой ОС Windows XP, предоставив ей выход в локалку и в сеть internet...
    2009-04-22, vp
    freebsd + huawei 162 gsm modem

    В статье описывается простой способ подключения модема huawei 162 к freebsd + первичная настройка smstools
    2009-04-12, mvalery
    Мониторинг RAID

    Мониторинг из командной строки RAID компаний AMCC 3ware, HighPoint, Dell (Perc 5/i и PERC 6/i) и LSI (MegaRAID SAS 8408E и SAS1078)
    2009-04-09, texnotronic
    RAID1 via LAN

    Функциональности DRBD во FreeBSD можно добиться примонтировав блочное устройство по сети при помощи GEOM Gate (ggate) и добавив его в зеркало с локальным диском средствами gmirror.
    2009-04-03, Raven2000
    Оптимизация хоста для CMS

    В последнее время на старый и не очень быстрый ПК (Celeron 800 RAM 256) мною было навешано с десяток сайтов и некоторые были из серии тяжелых CMS. И так нам дано FreeBSD 7.1 и ~10 сайтов/CMS.
    2009-04-01, atrium
    VSFTPD + AD && MySQL

    Настройка самого безопасного сервера FTP - vsftpd.
    2009-03-31, Dron
    Peoplenet + C-motech (3G)

    Описание подключения к сети Peoplenet посредством 3G модема С-motech CCu-650U на FreeBSD
    2009-03-25, lissyara
    mod_auth_external

    mod_auth_external - авторизация пользователей в apache c помощью внешней программы - например, системных пользователей.
    2009-03-24, gx_ua
    Lightsquid

    Частично lightsquid может заменить sams: быстрая и простая инсталляция, быстрый парсер, cgi скрипт для динамической генерации отчета, нет привязки к БД, различные графические отчеты, мультиязычный инт
    2009-03-18, LHC
    Установка Zabbix-1.6

    Установка и первоначальная настройка системы мониторинга Zabbix (версия 1.6)
    2009-03-16, Cancer
    Принт-Сервер Samba+LPD & AD

    Простейшая настройка Принт-Сервера на FreeBSD используя Samba+LPD & AD
    2009-03-04, Mad_caterpillar
    ipsec_vpnc

    Настройка VPN IPSec концентратора на FreeBSD 6.2 для клиента cisco с использованием ipsec-tools и авторизацией в активной директории
    2009-02-18, Andy
    Free-SA

    Программа анализирует log файлы Squid'а и формирует по ним отчет.
    2009-02-02, Cancer
    Openfire Jabber Server

    Установка Jabber сервера на примере Openfire
    подписка

        вверх      
    Статистика сайта
    Сейчас на сайте находится: 21 чел.
    За последние 30 мин было: 73 человек
    За сегодня было
    1117 показов,
    225 уникальных IP
     

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.0466 секунд
    Из них PHP: 48%; SQL: 52%; Число SQL-запросов: 56 шт.
    Исходный размер: 216229; Сжатая: 38331