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

RFC
Программирование
FreeBSD
man
EXIM
  4.62
  часть 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
  filter facility
  4.70


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

10. Списки доменов, узлов, адресов и локальных частей [почтового] адреса


    Многие конфигурационные опции Exim содержат списки доменов, узлов, email адресов, или локальных частей [почтового] адреса. Например, опция hold_domains содержит список доменов, для которых доставка на данный момент временно приостановлена. Эти списки также используются как данные в списках управления доступом (см. главу 39), и как параметры к условиям раскрытия, типа match_domain.
   Каждый элемент в одном из этих списков - шаблон, проверяемый на соответствие домену, узлу, email адресу, или локальной части [почтового] адреса, соответственно. В секциях ниже описаны различные типы шаблонов для каждого случая, но сначала мы затронем некоторые общие средства, которые применяются для всех четырех типов списков.

10.1 Раскрытие списков

   Каждый список раскрывается как одиночная строка перед использованием. Результатом раскрытия должен быть список, возможно, содержащий пустые элементы, разделённый на отдельные элементы для совпадения. По-умолчанию, символ-разделитель - двоеточие, но в случае необходимости он может быть изменён. Смотрите разделы 6.19 и 6.20 для деталей о синтаксисе списка; по второму линку обсуждается способ определения пустых элементов списка.
   При неудачном раскрытии строки, Exim ведет себя так будто бы тестируемый элемент (домен, узел, адрес, или локальная часть [почтового] адреса) не в списке. Другие отказы раскрытия приводят к временным ошибкам.
   Если элемент списка - регулярное выражение, знак обратного слеша, знак доллара и возможно другой спецсимвол в выражении, он должен быть защищен от неправильной интерпретации функцией раскрытия. Самый простой способ это сделать - использовать особенность раскрытия
\N, чтобы обозначить что содержимое регулярного выражения не должно раскрываться. Например, в списке управления доступом вы можете указать:
deny senders = \N^\d{8}\w@.*\.baddomain\.example$\N : \
               ${lookup{$domain}lsearch{/badsenders/bydomain}}

   Первый элемент - это регулярное выражение защищенное от раскрытия указанием \N, а второй использует раскрытие для получения списка нежелательных отправителей на основе домена получателя.

10.2 Отрицаемые элементы в списках

   Элемент в списке может положительным или отрицательным. Отрицательные элементы идентифицируются предшествующим знаком восклицания, за которым может следовать пробел. Список определяет набор элементов (доменов, etc). Когда Exim обрабатывает один из этих списков, он пытается найти домен, узел, адрес или локальную часть [почтового] адреса в наборе, определенном списком. Это работает так:
   Список сканируется слева направо. Если совпадает положительный элемент, проверяется, установлена ли тема; если совпадает отрицательный - тема не устанавливается. Если достигнут конец списка и не было совпадения темы ни с одним шаблоном, она устанавливается в последний элемент списка, если последний элемент был отрицательным, и не устанавливается если он был положительным.
domainlist relay_domains = !a.b.c : *.b.c

соответствует любому домену оканчивающемуся .b.c за исключением a.b.c. Домены не соответствующие ни a.b.c ни *.b.c не соответствуют, т.к. последний элемент списка позитивный. Тем не менее если бы было установлено
domainlist relay_domains = !a.b.c

тогда бы совпадали все домены кроме a.b.c т.к. последний элемент списка позитивный. Другими словами список, оканчивающийся отрицательным элементом интерпретируется так, как если бы он имел дополнительный элемент :* в конце.
   Другой способ подумать о положительных и отрицательных элементах списков - это читать соединитель как
или после положительных элементов, и как и - после отрицательных.

10.3 Имена файлов в списках

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

  • Для списков доменов и хостов если где-либо в строке файла встречается символ # он и все следующие символы игнорируются.
  • Т.к. локальные части [почтового] адреса могут содержать знаки # комментарий в списке адресов или локальных частей [почтового] адреса распознается только если # стоит после пробела либо в начале строки. Например:
    not#comment@x.y.z   # but this is a comment
    

       Указывая имя файла в списке имеет такой эффект как вставка каждой строки файла в качестве элемента в список (пустые строки и комментарии исключаются). Тем не менее есть одно важное отличие: файл читается при каждой обработке списка, таким образом если его содержимое периодически меняется, изменяется и поведение Exim.
       Если имени файла предшествует восклицательный знак значение любых совпадений с файлом инвертируется. Например, если
    hold_domains = !/etc/nohold-domains
    

    и файл содержит строки
    !a.b.c
    *.b.c
    

    тогда a.b.c будет находится в списке доменов определенных в hold_domains, в то время как любой домен совпадающий с *.b.c - нет.

    10.4 Файл lsearch не нелинейный список

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

    10.5 Именованные списки

       Списку доменов, хостов, e-mail адресов или локальных частей адреса можно дать название, которое используется для обращения к списку в другом месте конфигурации. Это особенно удобно, если один и тот же список нужно использовать в нескольких различных местах. Например, часто задают список доменов называемый local_domains для всех локальных доменов, обрабатываемых на этой машине, с использованием конфигурационной строки типа:
    domainlist local_domains = localhost:my.dom.example
    

       На именованный список можно ссылаться, давая его имя с предшествующим ему знаком +, например, роутер предназначенный для обработки локальных доменов, был бы сконфигурен со строкой:
    domains = +local_domains
    

       Первый роутер в конфигурации, обычно, тот, который обрабатывает все домены, кроме локальных, используя конфигурацию с инвертированным элементом, как этот:
    dnslookup:
        driver = dnslookup
        domains = ! +local_domains
        transport = remote_smtp
        no_more
    

       Четыре вида именованных списков создаются конфигурационными строками, начинающимися со слов domainlist, hostlist, addresslist или localpartlist соответственно. Задаваемые вами списки помещайте после них. Например:
    hostlist    relay_hosts = 192.168.23.0/24 : my.friend.example
    addresslist bad_senders = cdb;/etc/badsenders
    

       Именованный список может обращаться к другим именованным спискам:
    domainlist  dom1 = first.example : second.example
    domainlist  dom2 = +dom1 : third.example
    domainlist  dom3 = fourth.example : +dom2 : fifth.example
    

       Внимание: Если последний элемент, в списке на который ссылаются, отрицательный (инвертированный), то может быть вовсе не тот эффект, который вы ожидали, поскольку отрицание не передаётся на следующий (более высокий) уровень. Например, рассмотрите:
    domainlist  dom1 = !a.b
    domainlist  dom2 = +dom1 : *.b
    

       Второй список задан: или в списке dom1 или *.b. Первый список задаёт только не a.b, таким образом домен x.y совпадает с ним. Это означает, что он также соответствует и второму списку. Эффект не такой же как:
    domainlist  dom2 = !a.b : *.b
    

    что не соответствует x.y. Вообще, по возможности, лучше избегать отрицания в списках.
       Именованные списки могут быть выгодны в плане производительности. Когда exim роутит адрес или проверяет входящее сообщение, он кэширует результаты теста именованного списка. Так, если у вас есть такой пункт:
    domains = +local_domains
    

    в нескольких маршрутизаторах или нескольких ACL, то фактически, тестируется только в первом. Однако, кэширование работает, лишь если в пределах списка, или любых подсписков, нет раскрытий. Другими словами, кэширование происходит только для списков, про которые известно, что они будут одинаковыми при каждом обращении.
       По умолчанию, могут быть до 16 именованных списков каждого типа. Этот предел может быть увеличен изменением компиляционной переменной. Использование списков хостов и доменов рекомендуется для концепции типа локальных доменов, релейных доменов и релейных хостов. В дефолтовом конфиге так и установлено.

    10.6 Сравнение именованных списков с макросами

       На первый взгляд, как могло бы показаться, в файле конфигурации, именованные списки неотличимы от макросов. Однако, макрос - лишь текстовая замена. Если вы напишете
    ALIST = host1 : host2
    auth_advertise_hosts = !ALIST
    

    то оно, вероятно, не будет делать то, что вы хотите, потому что это, то же самое что и
    auth_advertise_hosts = !host1 : host2
    

       Заметьте, что второе имя хоста не инвертировано. Однако, если вы используете список хостов, и напишете
    hostlist alist = host1 : host2
    auth_advertise_hosts = ! +alist
    

    то отрицание применяется ко всему списку, и в итоге это эквивалентно
    auth_advertise_hosts = !host1 : !host2
    

    10.7 Кэширование именованных списков

       При обработке сообщения exim кэширует результат проверки именованного списка, если есть уверенность, что список статический. Практически, это означает, что кэширование работает только если список не содержит символов $, что гарантирует, что список не будет изменяться при раскрытии. Однако, иногда, вы можете иметь раскрываемый список, про который вы знаете, что это в пределах одного сообщения это будет тот же самый список при каждой проверке. Например:
    domainlist special_domains = \
               ${lookup{$sender_host_address}cdb{/some/file}}
    

       Это обеспечивает список доменов, который зависит лишь от IP-адреса хоста отправителя. Если этот список доменов используется неоднократно (например в нескольких строках ACL, или в нескольких роутерах), по дефолту, результат не кэшируется, поскольку exim не знает, что каждую проверку это будет один и тот же список.
       Добавив
    _cache к domainlist вы можете сказать exim`y что результат можно кэшировать. Например:
    domainlist_cache special_domains = ${lookup{...
    

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

    10.8 Списки доменов

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

  • Если паттерн состоит из единственного символа @, он совпадает с именем локального хоста, установленному опцией primary_hostname (или по-умолчанию). Это позволяет использовать один и тот же конфигурационный файл на нескольких разных хостах, различающихся лишь названием.
  • Если паттерн содержит строку @[] - он совпадает с любым локальным IP-адресом (висящим на интерфейсах), находящемуся в квадратных скобках, как в адресе e-mail, в доменных литералах (это когда вместо имени хоста используется его IP-адрес). В сегодняшнем интернете, использование доменных литералов спорно...
  • Если паттерн состоит из строки @mx_any, то это совпадает с любым доменом, чья MX-запись указывает на локальных хост, или на любой хост который перечислен в hosts_treat_as_local. Элементы @mx_primary и @mx_secondary являются подобными, за тем исключением, что первый соответствует лишь в случае если первичных MX указывает на локальную машину, а второй, лишь когда нет первичной записи MX указывающей на локалхост, но на него указывает вторичная MX-запись. Первичная MX запись, означает, что у неё самое маленькое значение, и их может быть более одной.
       Поиск MX, соответствующей образцу, выполняется с опциями резольвера для отключения раскрытия имён. Таким образом, например, однокомпонентный домен не будет раскрыт резольвером, добавлением дефолтового домена. Смотрите опции
    qualify_single и search_parents роутера dnslookup для подробной информации о раскрытии домена.
       Иногда можно игнорировать определённые IP-адреса, при использовании одного из этих паттернов. Вы можете задать их сразу за образцом, при помощи
    /ignore=<ip list>, где <ip list> - список IP-адресов. При обработке паттерна, эти адреса игнорируются (сравните с опцией ignore_target_hosts в роутере). Например:
    domains = @mx_any/ignore=127.0.0.1
    

       Этот пример совпадает с любым доменом имеющим MX-запись указывающую на один из IP-адресов локальной машины, за исключением 127.0.0.1.
       Список IP-адресов обрабатывается тем же самым кодом, который обрабатывает список хостов, таким образом тут можно писать сети в виде CIDR, и также тут могут находится негативные элементы.
       Поскольку список IP-адресов является подсписком внутри списка доменов, вы должны быть осторожны, при использовании разделителей если тут больше одного адреса. Как и в любом другом списке, дефолтовый разделитель может быть заменён. Таким образом, можно сделать так:
    domains = @mx_any/ignore=<;127.0.0.1;0.0.0.0 : \
              an.other.domain : ...
    

    чтобы подсписок использовал в качестве разделителя точку с запятой (;). При использовании адресов IPv6, полезно поменять разделитель и для главного списка:
    domains = <? @mx_any/ignore=<;127.0.0.1;::1 ? \
              an.other.domain ? ...
    

  • Если паттерн начинается со звёздочки (*), оставшиеся символы паттерна сравниваются с последними символами домена. Использование звёздочки в списках доменов отличается от её использования в частично соответствующих поисках. В списке доменов, символ следующий за звёздочкой не должен быть точкой, тогда как частичное соответствие работает лишь в разделённых точкой компонентах. Например, элемент списка доменов типа *key.ex совпадает с donkey.ex также как и с cipher.key.ex
  • Если паттерн начинается с символа крышки (^), то он обрабатывается как регулярное выражение, и совпадает с доменом с использованием соответствующей функции регулярного выражения. Крышка обрабатывается как часть регулярного выражения. Справочная информация описывающая синтаксис регулярных выражений дается в главе 8.
       Предупреждение: Поскольку список доменов раскрывается до обработки, необходимо предварить обратным слешем символы обратного слэша и доллара
    $, или использовать специальную последовательность \N (смотрите раздел 11) для определения того, что не надо раскрывать (если вы действительно не хотите строить регулярное выражение при помощи раскрытия, разумеется).
  • Если паттерн начинается с имени одноключевого поиска, сопровождающегося точкой с запятой (например, dbm; или lsearch;), то остаток паттерна должен быть именем файла в подходящем для поиска формате. Например, для cdb; это должен быть абсолютный путь:
    domains = cdb;/etc/mail/local_domains.cdb
    

       Соответствующий тип поиска производится по файлу, с использованием доменного имени как ключа. В большинстве случаев, данные которые ищутся не нужны, exim`а интересует лишь есть или нет ключ в файле. Однако, при использовании поиска для опции domains в роутере или domains кондишене ACL, данные сохраняются в переменной $domain_data и могут быть использованы в других опциях роутера или в утверждениях, в той же самой ACL.

  • Любое имя типа одноключевого поиска может предваряться частью <n>-, где <n> опционально, например:
    domains = partial-dbm;/partial/domains
    

       Это вызывает частично-соответствующую логику; описание как это работает, дано в секции 9.7.

  • Любой из одноключевых поисков может сопровождаться звёздочкой. Это вызывает поиск дефолтового значения для ключа содержащего единственную звёздочку, если первоначальный поиск неудачен. Это бесполезная особенность при использовании списка доменов для выбора специфического домена (поскольку совпадает любой домен), но это может иметь значение если результат поиска используется через переменную раскрытия $domain_data.
  • Если паттерн начинается с имени поиска в стиле запросов, сопровождаемого точкой с запятой (например,  nisplus; или ldap;), оставшаяся часть паттерна должна быть соответствующим запросом для поиска, как описано в разделе 9. Например:
    hold_domains = mysql;select domain from holdlist \
    		where domain = '$domain';
    

       В большинстве случаев, данные поиска не используются (так, для SQL-запроса, к примеру, не имеет значения выбираемое поле). Exim интересуется лишь тем, успешен запрос или нет. Однако, при использовании поиска в опции domains в роутере, данные сохраняются в переменной $domain_data и могут быть использованы в других опциях.

  • Если ни один из вышеупомянутых случаев не применяется, производится регистронезависимое текстовое сравнение между паттерном и доменом.
       Вот пример, использующий несколько различных видов паттернов:
    domainlist funny_domains = \
    		@ : \
    		lib.unseen.edu : \
    		*.foundation.fict.example : \
    		\N^[1-2]\d{3}\.fict\.example$\N : \
    		partial-dbm;/opt/data/penguin/book : \
    		nis;domains.byname : \
    		nisplus;[name=$domain,status=local],domains.org_dir
    

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

    10.9 Списки хостов

       Списки хостов используются для контроля, что можно делать удалённым хостам. Например, некоторым хостам можно разрешить релей через локальную машину, и некоторым может быть разрешено использовать команду SMTP ETRN. Хосты могут быть идентифицированы двумя различными путями, по имени или по IP-адресу. В списке хостов некоторые типы паттернов совпадают с именем хоста, и некоторые совпадают с IP-адресом. Вы должны быть особенно осторожны при использовании одноключевых поисков, и гарантировать что используется правильный ключ.

    10.10 Специальные паттерны списка хостов

       Если элемент списка хостов - пустая строка, то она совпадает только когда не используется удалённый хост. Так происходит при получении сообщения от локального процесса используя SMTP на стандартном вводе, т.е. когда не используется соединение TCP/IP.
       Специальный паттерн
    * в списке хостов совпадает с любым хостом, или ни с каким хостом (наверное, имеется ввиду то самое подключение без TCP/IP, от локальных процессов). Фактически, ни имя ни Ip-адрес не просматриваются.

    10.11 Паттерны списка хостов, совпадающие с IP-адресом

       Если хост IPv4 соединяется с хостом IPv6 и запрос принимается на сокет IPv6, входящий адрес на хосте IPv6 фигурирует как ::ffff:<v4address>. Когда такой адрес проверяется в списке хостов, он сначала преобразуется в традиционный адрес IPv4. (Не все операционные системы принимают вызовы IPv4 на сокеты IPv6, поскольку были проблемы с безопасностью.)
       Следующие типы паттернов в списках хостов проверяют удалённый хост, просматривая его IP-адрес:

  • Если паттерн - просто имя домена (не регулярное выражение, не начинается с *, не является разновидностью поиска), exim вызывает функцию операционной системы для нахождения ассоциации с IP-адресом (или адресами). По возможности, он использует функцию getipnodebyname(), если же она недоступна, то gethostbyname(). Обычно, она вызывает поиск в DNS. Результат сравнивается с IP-адресом хоста.
       Если происходит временная проблема (типа таймаута DNS) при поиске имени хоста, происходит временная ошибка. Например, если список начинается с использования условия ACL, то ACL даёт
    задерживающий (defer) ответ, обычно приводящий к временной ошибке SMTP. Что происходит при невозможности найти адрес для имени хоста, описано ниже, в разделе 10.14.
  • Если паттерн - @, он заменяется первичным именем хоста, и используется как имя домена, как описано.
  • Если паттерн - IP-адрес, он сравнивается с IP-адресом хоста. Адреса IPv4 даются в нормальной нотации пунктирной четвёрки. Адреса IPv6 можно использовать в формате с двоеточием в качестве разделителя, но двоеточия должны быть удвоены, чтобы они не были приняты за разделитель, при использовании дефолтовго разделителя. Адреса IPv6 распознаются даже когда exim собран без поддержки IPv6. Это означает, что если они фигурируют в списке хостов только для IPv4, exim не станет из обрабатывать как имена хостов. Они - лишь адреса, которые никогда не совпадают с хостом клиента.
  • Если паттерн - @[], он совпадает с IP-адресом любого интерфейса локального хоста. Например, если локалхост - хост IPv4 с одним адресом интерфейса 10.45.23.56, эти две ACL будут иметь одинаковый эффект:
    accept hosts = 127.0.0.1 : 10.45.23.56
    accept hosts = @[]
    

  • Если паттерн - IP-адрес со слешем и маской сети (например 10.11.42.0/24), он совпадает с IP-адресом хоста при такой маске. Это позволяет включать целую сеть хостов одним пунктом. Маска используется в CIDR-нотации; это задаёт число битов адреса, которые должны совпадать, начиная с конца адреса.
       Отметьте: Маска - это не число адресов, при этом это не самое большое число диапазона адресов. Это число битов в сетевой части адреса. Вышеупомянутый пример определяет 24-х битовую сетевую маску, таким образом она совпадает с 256 адресами в сети 10.11.42.0. Элемент типа
    192.168.23.236/31
    

    совпадает лишь с двумя адресами, 192.168.23.236 и 192.168.23.237. Маска со значением 32 для адреса IPv6 - тоже самое что её отсутствие; такому элементу соответствует единственный адрес.
       Вот другой пример, показывающий сети IPv4 и IPv6:
    recipient_unqualified_hosts = 192.168.0.0/16: \
                                  3ffe::ffff::836f::::/48
    

       Удвоение разделителей списка применяется лишь в случае когда эти элементы используется внутри строки списка хостов. Это не требуется при задании их внутри файла. Например:
    recipient_unqualified_hosts = /opt/exim/unqualnets
    

    может использовать файл содержащий
    172.16.0.0/12
    3ffe:ffff:836f::/48
    

    и будет иметь точно такой же эффект как и предыдущий пример. При использовании адресов IPv6 внутри строки, обычно более удобно использовать изменение символа разделителя. Такой список содержит теже самые две сети:
    recipient_unqualified_hosts = <; 172.16.0.0/12; \
                                     3ffe:ffff:836f::/48
    

       Разделитель изменён на точку запятой использованием <; в начале списка.

    10.12 Паттерны списка хостов для одноключевого поиска по имени хоста

       Когда хост идентифицируется по одноключевому поиску его полного IP-адреса, паттерн принимает такой вид:
    net-<single-key-search-type>;<search-data>
    

       Например:
    hosts_lookup = net-cdb;/hosts-by-ip.db
    

       Текстовая форма Ip-адреса хоста используется как ключ поиска. Адреса IPv6 конвертируются к несокращённой форме, с использованием строчных букв, с точками в качестве разделителей, поскольку двоеточие - ограничитель ключа в файлах lsearch. [Двоеточия могут использоваться в внутри ключа в файлах lsearch, если пометить ключ в кавычки, но это было добавлено позже.] Данные возвращённые поиском не используются.
       Одноключевые поиски также могут выполняться с использованием IP-адресов с маской, используя паттерн такой формы:
    net<number>-<single-key-search-type>;<search-data>
    

       Например:
    net24-dbm;/networks.db
    

       Ip-адрес хоста замаскирован используя <number> в качестве длинны маски. Текстовая строка создаётся из скрытого маской значения, сопровождаемого маской, и это иcпользуется как ключ поиска. Например, если у хоста IP-адрес 192.168.34.6, то ключ для вышеупомянутого примера - 192.168.34.0/24. Адреса IPv6 конвертируются в текстовый вид, с использованием строчных букв, и точек, вместо двоеточия, в качестве разделителей, поскольку двоеточие - признак конца ключа в файлах lsearch. Всегда используются полные адреса IPv6, а не аббревиатуры.
       Внимание: Специфические
    net32-(для адреса IPv4) или net128-(для адреса IPv6), не тоже самое что и специфическое net- без номера. В предыдущем случае ключевые строки включают значение маски, тогда как в последнем IP-адрес используется самостоятельно.

    10.13 Паттерны списка хостов совпадающие по имени хоста

       Существует несколько типов паттернов, требующих, чтобы exim знал имя удалённого хоста. Они являются подстановочными паттернами или поиском по имени. (Если полное имя хоста даётся без какого-либо подстановочного знака, оно используется для поиска соответствующего IP-адреса, как описано выше, в секции 10.11.)
       Если при столкновении exim`a с одним из этих паттернов, удалённое имя хоста неизвестно, оно будет найдено по IP-адресу. Хотя многие сервера интернета являются вполне добросовестными, и имеют обратные DNS-записи, есть много хостов у которых её нет (прим. lissyara: иногда очень проблематично добиться от провайдера обратной записи, обусловлено это, по моему, тем что там работают люди понятия не имеющие как её прописать). Следовательно, имя не всегда может быть найдено, и это может привести к нежелательным эффектам. Позаботьтесь об этом при конфигурировании списков хостов с подстановочными паттернами.Рассмотрите вариант, если имя не может быть найдено.
       Из-за проблем с разрешением имён хостов по IP-адресам, соответствие имён хостов не такое же как совпадение IP-адресов.
       По-умолчанию, для нахождения имени хоста, exim делает обратный DNS-поиск; если в DNS имя не найдено, пробуются системные функции
    gethostbyaddr() или getipnodebyaddr() - какая доступна. Порядок, в котором производится поиск, может быть изменён установками опции host_lookup_order.
       Есть несколько опций управляющих поведением в случае, если имя хоста не найдено. Они описаны ниже, в разделе 10.14.
       В результате альясинга, хосты могут иметь более одного имени. При обработке любого из следующих типов паттернов, все имена хостов проверяются:

  • Если паттерн начинается с *, остаток элемента должен соответствовать концу имени хоста. Например, *.b.c совпадает со всеми хостами, имена которых заканчивается на .b.c. Эта специальная простая форма используется, поскольку она очень часто необходима. Другие виды подстановок требуют использования регулярных выражений.
  • Если элемент начинается с ^, то это берётся как регулярное выражение которое не совпадает с именем хоста. Например:
    ^(a|b)\.c\.d$
    

    является регулярным выражением, совпадающим с двумя хостами a.c.d или b.c.d.Когда регулярное выражение используется в списке хостов, вы должны позаботится о том, чтобы обратный слэш (\) и символ доллара ($) не были неверно восприняты как часть раскрытия строки. Самый простой способ избежать этого - использовать \N для того чтобы отметить нужную часть строки как не раскрываемую.
    sender_unqualified_hosts = \N^(a|b)\.c\.d$\N : ....
    

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

    10.14 Поведение, когда IP-адрес не может быть найден

       Когда обрабатывается список хостов, exim`y может понадобиться найти IP-адрес по имени (смотрите секцию 10.11), или имя хоста по IP-адресу (смотрите секцию 10.13). В любом случае, при невозможности найти информацию поведение одинаковое.
       По-умолчанию, exim ведёт себя так, будто хост не совпадает со списком. Это не всегда совпадает с тем, что вам нужно. Для изменения поведения exim`a есть специальные элементы -
    +include_unknown или +ignore_unknown которые могут появляться в списке (на верхнем уровне, они не признаются в списках файлов).

  • Если любой элемент, который следует +include_unknown требует информации, которая не может быть найдена, exim ведет себя так, будто хост соответствует списку. Например,
    host_reject_connection = +include_unknown:*.enemy.ex
    

    отклоняет подключения от любых хостов, чьи имена совпадают с *.enemy.ex, и от тех хостов, чьи имена не могут быть найдены.

  • Если любой элемент, который следует +ignore_unknown требует информации, которая не может быть найдена, exim игнорирует этот пункт и переходит к оставшейся части списка. Например:
    accept hosts = +ignore_unknown : friend.example : \
                   192.168.4.5
    

    принимает (почту, видимо :))) от любого хоста, имя которого friend.example, и от 192.168.4.5, независимо найдено или нет его имя. Без +ignore_unknown, если имя 192.168.4.5 не найдено, почта отклоняется.
       Оба элемента,
    +include_unknown и +ignore_unknown могут появляться в одном списке. Эффект от каждого длиться до следующего или до конца списка.
       Заметтьте: Эта секция применяется к постоянным ошибкам поиска. Она не применяется к временным ошибкам DNS. Они всегда вызывают задержку сообщения (кроме тех случаев, когда
    dns_again_means_nonexist преобразовывает их в постоянные ошибки).

    10.15 Список шаблонов хостов для одноключевого поиска по имени хоста

       Если паттерн имеет форму
    <single-key-search-type>;<search-data>
    

    например
    dbm;/host/accept/list
    

    то выполняется одноключевой поиск, с использованием имени хоста в качестве ключа. Если поиск успешен, хост совпадает с элементом. Данные, возвращённые поиском, не используются.
       Напоминание: С этим видом паттерна вы должны иметь имена хостов как ключи в файле, а не IP-адреса. Если вам нужно сделать поиск основанный на Ip-адресах, то необходимо предварить тип поиска преффиксом
    net- (смотрите секцию 10.12). Однако, ничто не препятствует вам использовать два элемента в одном списке, один для поиска адреса, другой для поиска имени, с использованием обоими одного и того же файла.

    10.16 Список шаблонов хостов для поиска в стиле запросов

       Если паттерн имеет форму
    <query-style-search-type>;<query>
    

    то выполняются запросы, если они успешны, имя хоста совпадает с элементом. Данные, которые искались, не используются. Переменные $sender_host_address и $sender_host_name могут использоваться в запросе. Например:
    hosts_lookup = pgsql;\
                select ip from hostlist where ip='$sender_host_address'
    

       Значение переменной $sender_host_address для адреса IPv6 содержит двоеточия. Если вам необходимо, вы можете использовать элемент раскрытия sg для изменения этого. Если хотите использовать адреса с маской, то можете использовать оператор раскрытия mask.
       Если запрос содержит ссылку на
    $sender_host_name, exim автоматически ищет имя хоста, если это не было сделано раньше. (Смотрите секцию 10.13, для подробностей о поиске имён хостов.)
       Историческое примечание: до релиза 4.30, exim всегда пытался найти имя хоста перед выполнением запроса, если типу поиска не предшествовало
    net-. Сейчас это не так. Для обратной совместимости, net- распознаётся при поиске в стиле запроса, но его присутствие или отсутствие не имеет никакого эффекта. (Разумеется, для одноключевых поисков, net- является важным. Смотрите секцию 10.12.)

    10.17 Смешивание безразличных имён хостов и адресов в списках хостов

       Если вы используете поиск имени или безразличного имени хоста и IP-адреса в одном списке хостов, то вы должны размещать IP-адреса вначале. Например, в ACL вы могли бы иметь:
    accept hosts = 10.9.8.7 : *.friend.example
    

       Причина этого, в том, что exim обрабатывает списки слева направо. Это позволяет проверить IP-адрес без запроса DNS, а при достижении элемента требующего разрешения имени в адрес происходит ошибка, если невозможно найти имя хоста для сравнения с паттерном. Если вышеупомянутый список был бы в обратном порядке, утверждение accept было бы неудачно для хоста имя которого найти невозможно, даже если его IP адрес 10.9.8.7.
       Если же вам действительно необходимо проверять первыми имена, и продолжить проверять IP-адреса, то вы можете переписать эту ACL таким образом:
    accept hosts = *.friend.example
    accept hosts = 10.9.8.7
    

       Если первый accept неудачен, exim продолжает проверять второе утверждение. Смотрите секцию 39, для получения подробной информации о ACL.

    10.18 Списки адресов

       Списки адресов содержат паттерны совпадающие с почтовыми адресами. Есть лишь один специальный случай: адрес отправителя для рикошета всегда пустой. Вы можете проверить это, задав пустой элемент в списке адресов. Например, вы могли бы установить опцию маршрутизатора, для обработки рикошетов:
    senders = :
    

       Присутствие двоеточия означает пустой элемент. Если никаких данных нет (в смысле, не было бы даже двоеточия - прим. lissyara), то список пуст и не соответствует вообще ничему. Пустой отправитель также может быть обнаружен регулярным выражением, соответствующим пустой строке, и поиском в стиле запросов, успешному в случае если переменная $sender_address пуста.
       Непустые элементы списка адресов могут быть прямыми адресами электронной почты. Например:
    senders = jbc@askone.example : hs@anacreon.example
    

       Разрешается некоторое число безразличий (т.е. шаблонов). Если паттерн содержит символ @, но он не регулярное выражение, и не начинается с типа поиска заканчивающегося точкой с запятой (описано ниже), локальная часть адреса сравнивается с локальной частью паттерна, которая может начинаться со звёздочки. Если локальная часть совпадает, проверяется точно таким же образом для шаблона списка доменов. Например, домен может быть безразличным, обращаясь к именованному списку, или быть поиском:
    deny senders = *@*.spamming.site:\
                   *@+hostile_domains:\
                   bozo@partial-lsearch;/list/of/dodgy/sites:\
                   *@dbm;/bad/domains.db
    

       Если локальная часть начинается с восклицательного знака, требуется чтобы это было определено как регулярное выражение, поскольку в противном случае восклицательный знак, как обычно в списках, будет воспринят как символ отрицания.
       Если непустой паттерн не регулярное выражение, или поиск не содержит символ
    @, это сравнивается с доменной частью адреса. Так понимаются только два формата - литеральный домен (домен в виде IP-адреса) или шаблон домена начинающийся со звёздочки. В обоих случаях, эффект точно такой же, как будто *@ предшествовала паттерну. Например:
    deny senders = enemy.domain : *.enemy.domain
    

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

  • Если (после раскрытия) паттерн начинается с ^, регулярное выражение сравнивается с полным адресом, с паттерном в качестве регулярного выражения. Вы должны позаботится о том, чтобы символы обратного слэша (\) и доллара ($) не были неправильно восприняты как часть раскрытия строки.Самый простой способ избежать этого - использовать \N чтобы отметить эту часть строки как не раскрываемую. Например:
    deny senders = \N^.*this.*@example\.com$\N : \
                   \N^\d{8}.+@spamhaus.example$\N : ...
    

       Последовательность \N удаляется при раскрытии, таким образом элементы действительно начинаются с крышки (^), к тому времени как они интерпретируются как паттерн адреса.

  • Полные адреса могут искаться с использованием паттерна который с типа поиска завершаемого точкой с запятой, и сопровождаемого данными для поиска. Например:
    deny senders = cdb;/etc/blocked.senders : \
                   mysql;select address from blocked where \
                   address='${quote_mysql:$sender_address}'
    

       Могут использоваться и одноключевой стиль, и стиль запросов. Для одноключевого типа, exim использует полный адрес как ключ. Однако, пустые ключи не поддерживаются одноключевым поиском, таким образом, сравнение с пустым адресом всегда будет неудачно. Это ограничение не применяется к поиску в стиле запросов.
       Частичное соответствие для одноключевых поисков (раздел 9.7) не может использоваться, и игнорируется, если задано, с записью в журнал событий (paniclog). Однако, вы можете сконфигурить дефолтовые параметры поиска, как описано в секции 9.6, но это полезно лишь для значений по-умолчанию типа
    *@. Например, с этим поиском:
    accept senders = lsearch*@;/some/file
    

    файл может содержать строки типа таких:
    user1@domain1.example
    *@domain2.example
    

    и для адреса отправителя nimrod@jaeger.example последовательность пробуемых ключей будет:
    nimrod@jaeger.example
    *@jaeger.example
    *
    

       Предупреждение 1: Не включайте строку * в ключевой файл, поскольку это означало бы что соответствие любому адресу, делая эту проверку бесполезной.
       Предупреждение 2: Не путайте эти два вида элементов:
    deny recipients = dbm*@;/some/file
    deny recipients = *@dbm;/some/file
    

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

  • Если паттерн начинается с @@ сопровождаемых элементом одноключевого поиска (например @@lsearch;/some/file), проверяемый адрес разбивается на локальную и доменную части. Домен ищется в файле. Если он там не найден, в этом пункте нет соответствий. Если он найден, найденные в файле данные обрабатываются как список паттернов локальных частей, разделённых двоеточиями, каждый из которых, по очереди, сравнивается с локальной частью.
       Поиск может быть частичным, и/или одним относящимся к поиску с дефолтовым ключом
    * (смотрите раздел 9.6). Искомая локальная часть паттерна, может быть регулярным выражением, или начинаться с *, или даже к будущему поиску. Также, они могут быть независимо инвертированы. Например:
    deny senders = @@dbm;/etc/reject-by-domain
    

    данные из DBM файла, могли бы содержать строки:
    baddomain.com:  !postmaster : *
    

    для отклонения всех отправителей, кроме postmaster из этого домена.
       Если требуется, чтобы локальная часть, начиналась с восклицательного знака, это должно быть определено с использованием регулярного выражения. В файлах
    lsearch, отдельные записи могут быть разбиты на несколько строк, для выравнивания, но разделяющие двоеточия всё ещё могут включаться в перевод строки. Пустое место вокруг двоеточий игнорируется. Например:
    aol.com:  spammer1 : spammer2 : ^[0-9]+$ :
    spammer3 : spammer4
    

       Как и во всех списках exim`a, разделённых двоеточиями, двоеточие может быть включено в элемент, путём его (двоеточия) удвоения.
       Если последний элемент списка начинается с правой угловой скобки (
    >), остаток элемента берётся как новый ключ поиска для получения списка продолжения локальных частей. Новый ключ может быть последовательностью символов. Таким образом омжно иметь такие вхождения в файле
    aol.com: spammer1 : spammer 2 : >*
    xyz.com: spammer3 : >*
    *:       ^\d{8}$
    

    в файле который ищется с @@dbm*, для задания совпадения с 8-цифровой локальной частью для всех доменов, в дополнение к специфическим локальным частям перечисленным для каждого домена. Конечно, использование этой особенности стоит другого поиска каждый раз когда цепочка сопровождается (видимо, символом > - прим. lissyara), но целью было уменьшить нагрузку.
       При использовании этого средства, возможно создание петель, и для того чтобы их выявить, цепочки не могут содержать более пятидесяти элементов.

  • Стиль @@<lookup> элемента может использоваться для поиска в стиле запросов, но в этом случае, средство цепочек недоступно. Поиск может вернуть только один список локальных частей.
       Предупреждение: есть важное различие между элементами списка адресов в этих двух примерах:
    senders = +my_list
    senders = *@+my_list
    

       В первом, my_list является именованным списком адресов, тогда как во втором примере - именованный список доменов.

    10.19 Регистр букв в списках адресов

       Домены в e-mail адресах всегда обрабатываются регистронезависимо, но для локальных частей, на некоторых системах, это может быть существенно (смотрите caseful_local_part для разъяснения того, как exim работает с этими адресами при роутинге). Однако, RFC 2505 (Anti-Spam Recommendations for SMTP MTAs - антиспамовые рекомендации для SMTP MTA) предлагает чтобы соответствие адресов спискам заблокированных было сделано в регистронезависимой маненре. Так как большинство списков адресов в exim`e используется для этого вида управления, exim пытается сделать это (регистронезависимый поиск, видимо - прим. lissyara) по-умолчанию.
       Доменная часть адреса всегда переводится в нижний регистр до сравнения её со списком адресов. Локальная часть, по дефолту, переводится в нижний регистр, и любые производимые сравнения строки делаются регистронезависимо. Это значит, что данные могут быть непосредственно в списках адресов, в файлах включаемых простые имена файлов, и в любых файлах в которых производится поиск с использованием механизма
    @@, могут быть в любом регистре. Однако, ключи в файлах, поиск в которых производится по типу отличному от lsearch (который выполняется регистронезависимо), должны быть в строчных буквах, поскольку в них поиск регистрозависим.
       Для разрешения регистрозависимого совпадения в списках адресов, если элемент списка адресов является строкой
    +caseful, оригинальный регистр локальной части восстанавливается для любого проводимого сравнения, и сравнения строк становятся регистрозависимы. Это не затрагивает домен, остающийся в нижнем регистре. Однако, хотя независимые сравнения доменов остаются регистронезависимы, регулярные выражения производящие сравнение со всем адресом, становятся  регистрозависимыми после того, как был обнаружен пункт +caseful.

    10.20 Списки локальных частей

       Чувствительность к регистру в списках локальных частей обрабатывается таким же образом для списков адресов, как только что описано. Элемент +caseful может использоваться, по необходимости. В установке опции local_parts в роутере с установленным в false пунктом caseful_local_part адрес в строчных буквах и изначально сравнивается регистронезависмо. В этом случае, +caseful восстановит регистрозависимое сравнение в списках локальных частей, но не в других местах роутера. Если в роутере опция caseful_local_part установлена в true, сравнение в опции local_parts регистрозависимо с начала маршрутизатора.
       Если список локальных частей расположен в файле (смотрите секцию 10.3), комментарии обрабатываются также как и списки адресов - они распознаются лишь в случае, если символу
    # предшествует пустой символ, или символ начала новой строки. Иначе, списки локальных частей сравниваются точно также как и списки доменов, за исключением специальных элементов относящихся к локальному хосту (@, @[], @mx_any, @mx_primary и @mx_secondary) которые не распознаются. Обратитесь к секции 10.8 для получения дополнительных деталей о других доступных типах элементов.


    =============
    begin translation by http://exim.org.ua/mailman/listinfo/exim-doc-translation
    edit, verification and complete translation by lissyara



    Ссылка на обсуждение: 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
    2009-01-28, Cancer
    mpd5 + сжатие и шифрование

    Установка VPN сервера mpd5 + сжатие и шифрование
    2009-01-26, vp
    freebsd + webcamera

    Подключение и настройка вебмкамеры для работы с freebsd на примере Logitech QCam STX
    2009-01-10, Grishun_U_S
    конфиг для офисов

    В статье разбирается конфиг для офиса, пользователи которого имеют строгие ограничения по портам. Заворачиваем www трафик на транспарентный прокси, а остальное NAT'им. Эффективно делим канал интернет
    2008-12-27, Storoge
    sftp+chroot

    Возникла необходимость дать возможность нескольким пользователям заливать на сервер контент для своих сайтов через sftp, чтобы при этом не страдала безопасность.
    2008-12-13, Morty
    PurefFTPd

    Администрирование pureftpd-сервера с помощью вэб интерфейса Usermanager
    2008-12-11, lissyara
    termlog

    Небольшая простая утилита, использующаяся для записи в файл всего что происходит на терминалах системы. Полезно, когда есть доступ по ssh у тех, кому не очень доверяете. Паранойя - это не плохо =)
    2008-11-26, Cancer
    SQUID+SAMS +Rejik-(ADLDAP)

    Установка Прокси сервера SQUID с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf,РЕЖИК собственно рубит банеры и запрещает пользователям ходить на запрещенные сайты,
    2008-11-22, dvg_lab
    php5-oci8

    Решение проблем segmentation fault (core dumped) при работе с oracle8-client и php5-oci8
    2008-11-21, m0ps
    NTP

    Пример настройки NTP сервера для локальной сети и клиента, для синхронизации времени с локальный NTP сервером. Обновление ntpd из портов.
    2008-11-20, Cancer
    SQUID+SAMS +Rejik-(NTLM)

    Установка Прокси сервера SQUID с аутентификацией по NTL с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf, РЕЖИК собственно рубит банеры и запрещает пользователям хо
    2008-11-20, UA
    Hotspot

    Настройка безпроводной точки доступа (WiFi) на freebsd
    2008-11-12, Shaman
    Enemy Territory

    Появилась у меня такое желание поднять сервер Enemy Territory. Поискал погуглил, ничего толкового не нашел пришлось все самому делать. И вот решил поделиться опытом. Начинаем......
    подписка

        вверх      
    Статистика сайта
    Сейчас на сайте находится: 11 чел.
    За последние 30 мин было: 37 человек
    За сегодня было
    7280 показов,
    828 уникальных IP
     

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

    © lissyara 2006-10-24 08:47 MSK

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