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

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 —> filter facility

Exim's interfaces to mail filtering


1. Форвардинг и фильтрация в exim

  • 1.1. Введенеие
  • 1.2. Работа фильтра
  • 1.3. Тестирование нового файла фильтра
  • 1.4. Инсталляция файла фильтра
  • 1.5. Тестирование проинсталлированного файла фильтра
  • 1.6. Детали фильтрующих команд

    2. Файлы фильтра sieve
  • 2.1. Распознание фильтров sieve
  • 2.2. Сохранение в заданные каталоги
  • 2.3. Строки содержащие имена заголовков
  • 2.4. Тест exists с пустыми списками заголовков
  • 2.5. Тесты заголовков с неверной кодировкой MIME в заголовке
  • 2.6. Тестирование адреса для нескольких адресов на заголовок
  • 2.7. Семантика keep
  • 2.8. Семантика fileinto
  • 2.9. Семантика redirect
  • 2.10. Строковые аргументы
  • 2.11. Множественные единицы
  • 2.12. Соответствие RFC

    3. Файлы фильтра exim`a
  • 3.1. Формат файлов фильтра exim`a
  • 3.2. Значения данных в командах фильтра
  • 3.3. Раскрытие строки
  • 3.4. Некоторые полезные общие переменные
  • 3.5. Переменные заголовков
  • 3.6. Пользовательские перемeнные
  • 3.7. Текущая директория
  • 3.8. Важные доставки
  • 3.9. Команды фильтра
  • 3.10. Команда add
  • 3.11. Команда deliver
  • 3.12. Команда save
  • 3.13. Команда pipe
  • 3.14. Почтовые команды
  • 3.15. Команды логгинга
  • 3.16. Команда finish
  • 3.17. Команда testprint
  • 3.18. Команда fail
  • 3.19. Команда freeze
  • 3.20. Команда headers
  • 3.21. Удовлетворение условий команд
  • 3.22. Условия тестирования строк
  • 3.23. Тестирование числовых условий
  • 3.24. Тестирование важных доставок
  • 3.25. Тестирование на сообщения о ошибке
  • 3.26. Тестирование списка адресов
  • 3.27. Тестирование на персональность почты
  • 3.28. Адреса альясов для персональных условий
  • 3.29. Детали персональных условий
  • 3.30. Тестирование статуса доставки
  • 3.31. Пользовательские мультипочтовые ящики
  • 3.32. Игнорирование ошибок доставки
  • 3.33. Примеры команд фильтра exim`a

    1 Форвардинг и фильтрация в exim

       Этот документ описывает пользовательский интерфейс к встроенному средству фильтрации exim`a, и имеет копирайты University of Cambridge 2006. Это относится к exim версии 4.62.

    1.1 Введенеие

       Большинство почтовых агентов UNIX (программ, которые доставляют почту) дают возможность индивидуальным пользователям задать автоматический форвардинг их почты, обычно, путём помещения списка адресов форвардинга в файле с именем .forward в их домашних директориях. Exim расширяет это средство, путём разрешения установки в инструкции форвардинга, более чем просто списка адресов, в смысле предоставления .forward с условиями. Операция установки правил называется фильтрацией (filtering), а, файл который их содержит, называется файлом фильтра (filter file).
       Exim поддерживает два различных вида файлов фильтра. Фильтр exim`a содержит инструкции в формате, который уникален для exim`a. Фильтр sieve содержит инструкции в формате Sieve, который задан в RFC3028. Так как это стандартный формат, фильтры sieve уже могут быть знакомы некоторым пользователям. Файлы sieve, также, могут быть портируемы между различными окружениями. Однако, средство фильтрации exim`a содержит больше особенностей (типа раскрытия переменных), и лучше интегрируются с окружением хоста (типа использования внешних процессов и труб).
       Выбор, какой вид фильтра использовать, может быть оставлен конечному пользователю, при условии, что системный администратор сконфигурировал exim для обоих видов фильтра. Однако, если важна совместимость, sieve - единственный выбор.
       Способность использовать фильтрацию, или традиционный форвардинг, может быть включена системным администратором, и некоторые индвидуальные средства могут быть отдельно включены или отключены. Текущий документ должен предоставить описание, что должно быть включено. В отсутствие этого, проконсультируйтесь у вашего системного администратора.
       Этот документ описывает, как использовать файл фильтра, и формат его содержимого. Он предназначен для использования конечными пользователями. Охватываются оба - фильтры sieve и фильтры exim`a. Однако, для фильтров sieve, обсуждается лишь то, что воплощено в exim`e, с тех пор, как sieve описан самостоятельно.
       Содержимое традиционных файлов
    .forward тут не описывается. Они, обычно, содержат лишь список адресов, имён файлов, или команд труб, разделённых запятыми или новыми строками, но, также доступны иные типы элементов. Полная детализация может быть найдена в части спецификации exim`a, посвящённой роутеру redirect, которая также описывает, как системный администратор может установить и контролировать использование фильтрации.

    1.2 Работа фильтра

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

    1.3 Тестирование нового файла фильтра

       Файлы фильтра, особенно в сложных случаях, всегда должны быть протестированы, для нахождения ошибок. Exim предоставляет средство для предварительного тестирования файла фильтра до его инсталляции. Тестируется синтаксис файла и его базовые операции, и, также, может быть использовано с традиционными файлами .forward.
       Поскольку фильтр может тестировать содержимое сообщения, требуется тестовое сообщение. Предполагается, что вы имеете новый файл фильтра, называемый
    myfilter, и тестовое сообщение в файле с именем test-message. Предполагается, что exim инсталлирован с обычным именем /usr/sbin/sendmail (некоторые операционные системы используют /usr/lib/sendmail), может быть использована следующая команда:
    /usr/sbin/sendmail -bf myfilter <test-message
    

       Опция -bf говорит exim`y, что следующий элемент командной строки - имя файла фильтра для тестирования. Также есть подобная опция -bF, но используется для тестирования файлов системного фильтра, как противоположность пользовательским файлам фильтра, и по этой причине используется только системным администратором.
       Тестовое сообщение предоставляется на стандартном вводе. Если в фильтре нет тестов зависящих от сообщения, может использоваться пустой файл (
    /dev/null). Предоставляемое сообщение должно начинаться со строк заголовков, или разделительной строки сообщения From , которая находится во многих файлах каталогов мульти-сообщений. Отметтьте, что пустые строки завершают строки заголовков. Выдаётся предупреждающее сообщение, если нет прочитанных строк заголовков.
       Результат запуска этой команды, при условии, что в файле фильтра не было обнаружено ошибок, - список действий, которые exim предпринял бы, если бы представленное сообщение было реальным. Например, для фильтра exim`a, вывод:
    Deliver message to: gulliver@lilliput.fict.example
    Save message to: /home/lemuel/mail/archive
    

    означает, что одна копия сообщения будет послана на gulliver@lilliput.fict.example, и другая будет добавлена к файлу /home/lemuel/mail/archive, если всё пройдёт хорошо.
       Сами действия, при тестировании фильтра этим способом, не производятся; тут нет проверок, например, что любые адреса форвардинга действительны. Для фильтра exim`a, если вы хотите знать причины, почему были предприняты такие действия, добавьте к команде опцию
    -v. Это заставляет exim выводить результаты любых условных тестов и к отступу вывода в зависимости от глубины вложенности команд if. Дальнейший дополнительный вывод от тестирования фильтра мошет быть сгенерён путём команды testprint, как описано ниже.
       Когда exim выводит список действий которые он предпринял бы, если любые текстовые строки включены в вывод, непечатаемые символы конвертируются в их символьные последовательности. В частности, если любая текстовая строка содержит символ новой строки, в тестовом выводе он отображается как
    \n.
       При тестировании фильтра этим способом, exim создаёт
    конверт (envelope) для сообщения. Получатель, по умолчанию, пользователь запустивший команду, он же и отправитель, но команда может запущена с опцией -f, для предоставления иного отправителя. Например:
    /usr/sbin/sendmail -bf myfilter \
       -f islington@never.where <test-message
    

       Альтернативно, если не используется опция -f, но первая строка предоставленного сообщения - разделитель From файл каталога сообщений (не то же самое, что и строка заголовка From:), отправитель берётся из неё. Если присутствует -f, содержимое любых строк From - игнорируется.
       
    return path - тоже самое что и отправитель конверта, если сообщение не содержит заголовка Return-path:, в случае чего он берётся оттуда. Вам не нужно беспокоится о этом, если вы хотите тестировать возможности файла фильтра который полагается на адрес отправителя или путь возврата.
       Возможно изменить получателя конверта, путём задания дальнейших опций. Опция
    -bfd изменяет домен адреса получателя, тогда как опция -bfl изменяет локальную часть (local part), т.е. часть до символа @. Это может использоваться для тестирования некоторых файлов фильтра.
       Опции
    -bfp и -bfs определяют преффикс или суффикс локальной части. Они уместны лишь когда осуществляется поддержка для мульти-персональных почтовых ящиков; смотрите описание в секции 3.31, ниже.

    1.4 Инсталляция файла фильтра

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

    1.5 Тестирование проинсталлированного файла фильтра

       Тестирование файла фильтра до инсталляции не может выявить все потенциальные проблемы; например, реально не запускаются команды передачи сообщений в трубы. Некоторые живые тесты следует провести когда фильтр проинсталлирован.
       Если это возможно, протестируйте ваш фильтр путём посылки сообщений от одного из иных аккаунтов. Если вы посылаете сообщение себе от фильтруемого аккаунта, и доставка неудачна, сообщение о ошибке будет послано назад на тот же аккаунт, который может вызвать иную ошибку доставки. Это может вызвать бесконечную последовательность таких сообщений, поскольку сообщение о неудачной доставке самостоятельно генерирует последующие сообщения. Однако, обычно, что ошибка возвращается вам, и, что постмастер захочет исследовать приложенное сообщение.
       Если вы хотите тестировать фильтр exim`a от того же самого аккаунта, разумная предострожность - включить строку
    if error_message then finish endif
    

    как первую команду фильтра, возле тестирования. Это вызывает фильтрацию брошенных сообщений об ошибке доставки, и с тех пор не имеющих сгенерированного места назначения, сообщения не будут доставлены на оригинальный адрес. Если нет хорошей причины так не делать, рекомендуется делать вышеуказанный тест для всех файлов фильтров exim`a. (Это не применяется к файлам sieve.)

    1.6 Детали фильтрующих команд

       Команды фильтрации для фильтров sieve и exim совершенно различаются в синтаксисе и семантике. Механизм sieve определён в RFC3028; в следующей части мы описываем, как он интегрирован в exim. Последующие части детально охватывают фильтрацию exim`a.

    2 Файлы фильтра sieve

       Код для фильтрации sieve в exim был пожертвован Michael Haardt, и большинство содержимого этой части взято из примечаний, которые он предоставил. Поскольку sieve - расширяемый язык, обратите внимание на понимание Sieve в этом контексте как специфическая реализация Sieve для Exim (the specific implementation of Sieve for Exim).
       Эта часть не содержит описание sieve, поскольку оно может быть найдено в RFC3028, который может быть прочитан вместе с этими примечаниями.
       Реализация exim sieve представляет ядро описанное в RFC3028, сравнительные тесты, расширения
    copy, envelope, fileinto, и vacation, но не расширение reject. Exim не подерживает уведомления о доставке сообщений (MDNs), таким образом добавление этого к фильтру sieve (как требуется для reject) вызовет недоразумение.
       С целью корректной работы sieve в exim системному администратору необходимо создать некоторые настройки в конфигурации exim`a. Это описано в части роутера
    redirect, в полной спецификации exim`a.

    2.1 Распознание фильтров sieve

       Файл фильтра интерпретируется как фильтр sieve, если его первая строка
    # Sieve filter
    

       Это - отличает его от обычного файла .forward, или файла фильтра exim`a.

    2.1 Сохранение в заданные каталоги

       Если системный администратор сделал установки как описано в спецификации exim`a, и вы используете keep или fileinto для сохранения почты в директорию, абсолютные файлы сохраняются где задано, относительные файлы сохраняются в $home и inbox находится в стандартном местоположени почтового ящика.

    2.3 Строки содержащие имена заголовков

       RFC3028 не определяет, что происходит если строка указывает на поле заголовка не содержащее допустимое имя заголовка, например, оно содержит двоеточие. Эта реализация генерирует ошибку, вместо игнорирования поля заголовка, с целью облегчить отладку скриптов, которые вписаны в общую реализацию sieve.

    2.4 Тест exists с пустыми списками заголовков

       Тест exists успешен лишь если все заданные заголовки существуют. RFC3028 неясно определяет что происходит на пустом списке заголовков. Эта реализация вычисляет, условие как истинное, интерпретируя RFC в строгом смысле.

    2.5 Тесты заголовков с неверной кодировкой MIME в заголовке

       Некоторые MUA обрабатывают данные неправильно закодированные base64, генерируя чушь. Иные - игнорируют хлам после символа равно в данных кодированных base64. RFC2047 не определяет как реагировать в этом случае, лишь заявляет, что клиент не должен запрещать обработку сообщения по этой причине. RFC2045 определяет, что неверные даные должны быть проигнорированы (повидимому, найдя конец строки символов). Также он определяет, что неверные данные могут вызвать отклонение сообщения с ними (и там он указывает на переговоры о истинном нарушении кодирования), что начисто противоречит их игнорированию.
       RFC3028 не определяет как обрабатывать некорректные слова MIME. Эта реализация обращается с ними буквально, как будто слова корректны, но их набор символов не может быть конвертирован в UTF-8.

    2.6 Тестирование адреса для нескольких адресов на заголовок

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

    2.7 Семантика keep

       Команда keep эквивалентна
    fileinto "inbox";
    

       Она сохраняет сообщение и сбрасывает неявный флаг keep. Она не устанавливает неявный флаг keep; нет команды для установки его как только он был сброшен.

    2.8 Семантика fileinto

       RFC3028 не определяет должен ли fileinto пробовать создать почтовую директорию, если она не существует. Эта реализация позволяет системным администраторам конфигурировать использование опций create_directory, create_file и file_must_exist. транспорта appendfile. Для дополнительных деталей, смотрите транспорт appendfile в спецификации exim`a.

    2.9 Семантика redirect

       Скрипты sieve предполагаются совместимыми между серверами, таким образом эта реализация не позволяет редирект почты на неквалифицированные адреса, поскольку домен зависит от используемой системы. На системах с виртуальными почтовыми доменами, дефолтовый домен, вероятно, не то, что ожидает пользователь.

    2.10 Строковые аргументы

       Могут быть недоразумения, если строка аргументов к require сравнивается регистрозависимо или регистронезависмо. Эта реализация сравнивает их с типом сравнения :is (значение по умолчанию, смотрите раздел 2.7.1 RFC) и компаратором i;ascii-casemap (значение по умолчанию, смотрите раздел 2.7.3 RFC). RFC ясно определяет дефолтовую команду, таким образом, любые отличающиеся реализации грубо нарушают RFC3028. То же самое каасается имён компатарторов, также заданных как строки.

    2.11 Множественные единицы

       В RFC3028 есть ошибка: суффикс G означает гига-, а не терабайт. Эта ошибка очевидна, поскольку RFC3028 определяет G как означающее 2^30 (что является гига, а не тера) и это - то, что данная реализация использует как фактор масштабирования для суффикса G.

    2.12 Соответствие RFC

       Exim требует, чтобы первая строка фильтра sieve была:
    # Sieve filter
    

       Разумеется, RFC не определяют эту строку. Однако, не ожидайте, что примеры будут работать без её добавления.
       RFC3028 требует использования CRLF для завершения строки. Рационально, что CRLF универсально используется в сетевых протоколах для обозначения конца строки. Эта реализация не встраивает sieve в сетевой протокол, а использует скрипты sieve как часть MTA exim. Поскольку все части exim используют LF как символ новой строки, эта реализация делает точно также, по умолчанию, что может изменить системный администратор (во время компиляции exim`a), для использования вместо этого - CRLF.
       Exim нарушает RFC2822, секцию 3.6.8, путём приёма 8-ми битных имён заголовков, таким образом, эта реализация повторяет это нарушение для сохранения совместимости с exim. Это - подготовка к данным в UTF-8.
       Скрипты sieve не могут содержать символы NUL в строках, но почтовые заголовки могут содержать символы NUL закодированные MIME, которые никогда не смогут совпасть со скриптами sieve, использующими точное сравнение. По этой причине, эта реализация расширяет синтаксис экранированных строк sieve на
    \0 - для описания символа NUL, нарушение \0 создаёт тоже самое что и 0 в RFC3028. Одинаковые без использования \0, следующие тесты все истинны в этой реализации. Реализации которые используют строки С-стиля приводят лишь к оценке первого теста как истинного.
    Subject: =?iso-8859-1?q?abc=00def
    
    header :contains "Subject" ["abc"]
    header :contains "Subject" ["def"]
    header :matches "Subject" ["abc?def"]
    

       Отметтьте, что учитывая что sieve бывает в MUA, RFC2074 может быть интерпретировано, что NUL символы укорачивающие строку разрешены для реализаций sieve, однако не рекомендуются. В будущем, позволяется использование кодированных символов NUL в заголовках, но это не рекомендуется. Примеры выше показывают как.
       RFC3028 сообщает, что если реализация не в сосотоянии конвертировать набор символов в UTF-8, две строки не могут быть эквивалентны, если одна содержит октеты более чем 127. Предполагается, что все неизвестные наборы символов - однобайтовые наборы символов, с нижними 128 октетами не существующими в US-ASCII, таким образом эта реализация нарушает RFC3028 и обрабатывает такие слова MIME буквально. Этим способом они иногда могут сравнены.
       Директория определеённая путём
    fileinto не должна содержать последовательность символов .., для избежания проблем с безопасностью. RFC3028 не определяет синтаксис директорий, отделяя keep эквивалентом к
    fileinto "INBOX";
    

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

    3 Файлы фильтра exim`a

       Эта часть содержит полное описание содержимого файлов фильтра exim`a.

    3.1 Формат файлов фильтра exim`a

       Отдельно от начального пустого постранства, первый текст в файле фильтра exim`a должен быть
    # Exim filter
    

       Это - то, что отличает его от обычного файла .forward, или файла фильтра sieve. Если у файла нет этой начальной строки (или эквивалентной для фильтра sieve), он обрабатывается как обычный файл .forward, и тот и другой, когда доставляется почта, и когда используется механизм тестирования -bf. Пустое пространство в строке - опционально, и может использоваться любая капитализация (Слово capitalization - переводится однозначно, и что оно значит в этом предложении - я не знаю - прим. lissyara). Дальнейший текст в этой строке обрабатывается как комментарий. Например, вы могли бы иметь
    #   Exim filter   <<== do not edit or remove this line!
    

       Оставшаяся часть файла - последовательность фильтрующих команд, которые состоят из ключевых слов и значений данных. Например, в команде
    deliver gulliver@lilliput.fict.example
    

    ключевое слово - deliver, и значение данных - gulliver@lilliput.fict.example. Пустое пространство или новые строки отделяются от компонентов команд, исключая случай условия для команды if, где круглые скобки также действуют как разделители. Полные команды отделяются от каждой другой путём пустого пространства или перевода строки; нет специальных терминаторов. Таким образом, некоторые команды могут находится в одной строке, или одна команда может располагаться на нескольких строках.
       Если символ
    # сопровождает разделитель где угодно в команде, всё, что следует за # до следующего символа новой строки - игнорируется. Это предоставляет способ включения комментариев в файл фильтра.

    3.2 Значения данных в командах фильтра

       Есть два способа, которыми значения данных могут быть введены:

  • Если текст не содержит пустого пространства, они могут быть набраны дословно. Однако, если это - часть условия, оно также должно быть свободно от круглых скобок, так как они используются для группирования в условиях.
  • Иначе, текст должен быть заключён в двойные кавычки. В этом случае, символ \ (обратный слэш) обрабатывается как экранирующий символ (escape character) в строке, вызывая специальную обработку следующего символа, или символов:
    последовательность
    значение
    \n замещается на новую строку
    \r замещается на возврат каретки
    \t замещается на табуляцию

       Обратный слэш сопровождаемый тремя восьмеричными цифрами - замещается на символ определённый этими цифрами, и \x сопровождаемый вплоть до двух шестнадцатеричных цифр - обрабатывается подобным образом. Обратный слэш сопровождаемый иными символами - замещается на второй символ, таким образом, в частности, \" превращается в ", и \\ превращается в \. Элементы данных помещённый в двойные кавычки могут быть продолжены на следующей строке путём завершения первой строки обратным слэшом. Любое начальное пустое пространство в начале строки продолжения - игнорируется.
       В дополнение к символу экранирования, обрабатывающему, что происходит когда строка помещена в кавычки, много значений данных подчиняются
    раскрытию строк (string expansion, как описано в следующей секции), в случае чего символы $ и \ - также многозначимы. Это способ, если действительно в строке требуется один символ обратного слэша, и строка, также помещена в кавычки, должена быть введена последовательность \\\\.
       Максимальная разрешённая длинна строки данных до раскрытия - 1024 символа.

    3.3 Раскрытие строки

       Большинство значений данных раскрываются до использования. Раскрытие состоит из замещения подстрок начинающихся на $, иным текстом. Полные средства раскрытия, доступные в exim`e - обширны. Если вы хотите знать всё, что exim может делать со строками, вы должны проконсультироваться с частью посвящённой раскрытию строк, в документации exim`a.
       В файлах фильтра, наиболее частым использованием раскрытия строк является замещение содержимого переменных. Например, подстановка
    $reply_address
    

    заменяется адресом, на который должны быть посланы ответы на сообщение. Если имя переменной сопровождается буквой, цифрой, или подчёркиванием, оно должно быть помещено в фигурные скобки, например
    ${reply_address}
    

       Если символ $ реально требуется в раскрываемой строке, он должен быть экранирован обратным слэшом, и, поскольку обратный слэш также экранируется внутри кавычек в вводимых строках, в этом случае, он должен быть удвоен. Следующие два примера иллюстрируют два различных пути тестирования на символ $ в сообщении:
    if $message_body contains \$ then ...
    if $message_body contains "\\$" then ...
    

       Вы можете предотвратить часть строки от раскрытия, путём помещения её между двумя \N. Например,
    if $message_body contains \N$$$$\N then ...
    

    тестирует на четыре символа доллара.

    3.4 Некоторые полезные общие переменные

       Полный список переменных доступен в документации exim`a. Это - сокращённый список наиболее полезных в персональном файле фильтра:

  • $body_linecount: Число строк в теле сообщения.
  • $body_zerocount: Число символов бинарных нулей в теле сообщения.
  • $home: В обычных конфигурациях, эта переменная, обычно, содержит пользовательскую домашнюю директорию. Однако, системный администратор может это изменить.
  • $local_part: Часть почтового адреса которая предшествует символу @, обычно, логин пользователя. Если включена поддержка мультиперсональных ящиков (смотрите ниже, секцию 3.31) и преффикс или суффикс локальной части распознан, он удаляется из строки в этой переемнной.
  • $local_part_prefix: Если включена поддержка мультиперсональных ящиков (смотрите ниже, секцию 3.31) и преффикс или суффикс локальной части распознан, эта переменная содержит преффикс. Иначе, она содержит пустую строку.
  • $local_part_suffix: Если включена поддержка мультиперсональных ящиков (смотрите ниже, секцию 3.31) и преффикс или суффикс локальной части распознан, эта переменная содержит суффикс. Иначе, она содержит пустую строку.
  • $message_body: Начальная часть тела сообщения. По умолчанию, в эту перемнную считывается до 500 символов, но системный администратор может сконфигурировать иное значение. Новые строки в теле, конвертируются в единичные пробелы.
  • $message_body_end: Финальная часть тела сообщения, отформатированная и ограниченная тем же способом что и $message_body.
  • $message_body_size: Размер тела сообщения, в байтах.
  • $message_exim_id: Локальная идентификационная строка сообщения, которая уникальна для каждого сообщения обрабатываемого одним хостом.
  • $message_headers: Строки заголовоков сообщения, объединённые в одну строку, с символами новой строки между ними.
  • $message_size: Размер всего сообщения, в байтах.
  • $original_local_part: Когда адрес который прибывает с сообщением обрабатывается, эта переменная содержит то же самое значение, что и переменная $local_part. Однако, если адрес сгенерирован путём альясинга, форвардинга, или обработки файла фильтра, эта переменная содержит локальную часть оригинального адреса.
  • $reply_address: Содержимое заголовка Reply-to:, если сообщение его содержит; иначе, содержимое заголовка From:. Это - адрес, на который обычно посылаются ответы на сообщение.
  • $return_path: Путь возврата, это - поле, отправителя, которое было передано как часть конверта сообщения, если сообщение послано на иной хост. Это - адрес, на который отправляются ошибки доставки. Во многих случаях, эта переменная имеет то же значение, что и $sender_address, но если, например, раскрывается входящее сообщение на список рассылки, $return_path может быть изменено на адрес ответственного за список рассылки.
  • $sender_address: Адрес отправителя, который был принят в конверте сообщения. Это - не обязательно содержимое строк заголока From: или Sender:. Для доставки сообщений о ошибке (рикошетов), у них нет адреса отправителя, и эта переменная пуста.
  • $tod_full: Полная версия времени и даты, например: Wed, 18 Oct 1995 09:51:40 +0100. Временная зона, всегда даётся как числовое смещение от GMT.
  • $tod_log: Время и дата в формате используемом для записи в файлы логов exim`a, без временной зоны, например: 1995-10-12 15:32:29.
  • $tod_zone: Смещение локальной временной зоны, например: +0100.

    3.5 Переменные заголовков

       Это - специальный набор раскрываемых переменных, содержащих строки заголовков при обработке сообщения. Эти переменные имеют имена начинающиеся с $header_, сопровождаемое именем строки заголовка, завершаемое двоеточием. Например,
    $header_from:
    $header_subject:
    

       Весь элемент, включая завершающее двоеточие, заменяется содержимым строки заголовка. Если есть более одного заголовка с одним и тем же именем, их содержимое объединяется. Для строк заголовков, чьи данные состоят из списка адресов (например, From: и To:), запятые и символы новой строки вставляются между каждым набором адресов. Для всех других строк заголовоков, используется лишь символ новой строки.
       Начальное и завершающее пустое пространство - удаляется из данных строки заголовка, и если в них есть любые слова MIME, которые закодированы как задано в RFC2047 (поскольку они содержат не-ASCII символы), они декодируются и переводятся, если возможно, в локальную кодировку. Попытка перевода предпринимается лишь в операционных системах, которые обладают функцией
    iconv(). Это создаёт такой же поиск по строкам заголовков, как и при показе MUA. Дефолтовая кодировка устанвливается в ISO-8859-1, но это может быть изменено средством команды headers (смотрите ниже).
       Если вы хотите видеть фактическую кодировку, в которой созданы строки заголовков, вы можете определить
    $rheader_ вместо $header_. Этим вставляются сырые (raw) строки заголовков, немодифицированные.
       Также есть промежуточная форма, запрашиваемая путём
    $bheader_, с удалёнными начальными и конечными пробелами, и декодированными словами MIME, но не переведённой кодировкой. Если попытка декодирования того, что на первый взгляд показалось словами MIME - неудачна, возвращается сырая строка. Если декодирование производит бинарные нули, они заменяются знаком вопроса.
       Капитализация (невкурил - но перевод именно такой - прим. lissyara) следующего за
    $header_ - несущественна. Поскольку любые печатные символы, исключая двоеточие, могут находится в имени заголовка сообщения (это - требование RFC2822, документ описывает формат почтовых сообщений), в этом случае не должны использоваться фигурные скобки, так как они будут взяты как часть имени заголовка. Два укорочения (блин - несмог подобрать более корректное слово - прим. lissyara) разрешены в именовании переменных заголовков:

  • Начальные $header_, $rheader_, или $bheader_ могут быть заменены $h_, $rh_, или $bh_, соответственно.
  • Завершающее двоеточие может быть опущено, если следующий символ - пустое пространство. Символ пустого пространства поддерживается в раскрываемых строках. Однако, это не рекомендуется, поскольку вы можете забыть двоеточие когда оно действительно необходимо.
       Если сообщение не содержит заголовок с данным именем, подставляется пустая строка. Это важно для корректного правописания имён заголовков. Не используйте
    $header_Reply_to, когда вам реально нужен $header_Reply-to.

    3.6 Пользовательские перемeнные

       Есть десять пользовательских переменных с именами $n0 - $n9, число которых может быть увеличено путём команды add (смотрите секцию 3.10). Они могут использоваться для подсчёта очков сообщения, различными способами. Если exim сконфигурирован на работу системного фильтра (system filter) для каждого сообщения, значения в этих переменных копируются в переменные $sn0 - $sn9 в конце системного фильтра, таким образом, делая их доступными в пользовательских фильтрах. Как эти переменные используются - полностью зависит от индивидуальной инсталляции.

    3.7 Текущая директория

       Содержимое вашего файла фильтра не должно предполагать какую-то рабочую директорию. Лучше всего - использовать абсолютные пути для имён файлов; вы можете использовать переменную $home обычным способом, для ссылки на вашу домашнюю директорию. Команда save автоматически вставляет $home в начало всех неабсолютных путей.

    3.8 Важные доставки

       Когда в ходе доставки сообщение обрабатывается файлом фильтра, то, что происходит дальше, т.е. после обработки файлом фильтра, зависит от того, установил ли фильтр какие-либо важные доставки (significant deliveries). Если установлена хоть одна важная доставка, фильтр подготовливается к обработке доставки для текущего адреса, и дальнейшая обаботка более не имеет места. Однако, если нет установленных важных доставок, exim продолжает обработку текущего адреса как будто не было файла фильтра, и, обычно, производит доставку копии сообщения в локальный почтовый ящик. В частности, это происходит в специальном случае, когда файл фильтра содержит лишь комментарии.
       Команды доставки -
    deliver, save и pipe, по умолчанию - важные. Однако, если такой команде предшествует слово unseen, эта доставка не рассматривается как важная. В противоположность, иные команды, типа mail и vacation не устанавливают важность доставки, если им не предшествует слово seen. Следующие примеры команд устанавливают важные доставки:
    deliver jack@beanstalk.example
    pipe $home/bin/mymailscript
    seen mail subject "message discarded"
    seen finish
    

       Следующие примеры команд не устанавливают важные доставки:
    unseen deliver jack@beanstalk.example
    unseen pipe $home/bin/mymailscript
    mail subject "message discarded"
    finish
    

    3.9 Команды фильтра

       Команды фильтра которые описаны в последующих секциях, перeчисланы ниже, секция, где они описаны - в круглых скобках:

  • add - увеличивает пользовательскую переменную (секция 3.10)
  • deliver - доставка на почтовый адрес (секция 3.11)
  • fail - принудительная ошибка доставки (используется системным администратором) (секция 3.18)
  • finish - конец обработки (секция 3.16)
  • freeze - заморозка сообщения (используется системным администратором) (секция 3.19)
  • headers - установить кодировку заголовков (секция 3.20)
  • if - условие(-я) тестирования (секция 3.21)
  • logfile - задать файл логов (секция 3.15)
  • logwrite - записать в лог файл (секция 3.15)
  • mail - послать ответное сообщение (секция 3.14)
  • pipe - труба к команде (секция 3.13)
  • save - сохранить в файл (секция 3.12)
  • testprint - напечатать при тестировании (секция 3.17)
  • vacation - заказная форма mail (секция 3.14)
       Команда
    headers имеет дополнительные параметры, которые могут использоваться лишь в системном фильтре. Команды fail и freeze доступны лишь когда средство фильтрации exim`a используется как системный фильтр, и, поэтому, используется лишь системным администратором, а не обычными пользователями. Они упоминаются лишь в этом документе; для дополнительной информации, смотрите главную спецификацию exim`a.

    3.10 Команда add

         add <number> to <user variable>
    e.g. add 2 to n3
    

       Есть 10 пользовательских переменных этого типа, с именами $n0 - $n9. Их значения могут быть получены путём обычного синтаксиса раскрытия (например, $n3) в этих командах. В начале фильтрования, все эти переменные содержат ноль. Оба аргумента команды add раскрываются до начала использования, делая возможным добавление переменной к самой себе. Вычитание может приводить к добавлению отрицательных чисел.

    3.11 Команда deliver

         deliver <mail address>
    e.g. deliver "Dr Livingstone <David@somewhere.africa.example>"
    

       Эта команда обеспечивает операцию форвардинга. Доставка устаналивается важной, если команде не предшествует unseen (смотрите раздел 3.8). Сообщение шлётся на данный адрес, точно также, как происходит если адрес появился в традиционном файле .forward. Если вы хотите доставить сообщение к нескольким различным адресам, вы можете использовать несколько, а не одну команду deliver (каждый может иметь лишь один адрес). Однако, от повторяющихся адресов - отказываются.
       Для доставки копии сообщения в ваш обычный почтовый ящик, ваше имя логина должно быть дано как адрес. Один раз адрес обрабатыватся механизмом фильтрации, идентичный сгенерированный адрес не будет обработан снова, таким образом не вызывая петель.
       Однако, если вы обладаете почтовым альясом, вы не должны ссылаться на него. Например, если почтовый адрес
    L.Gulliver приводит к альясу на lg303, затем все ссылки в файле .forward Gulliver`a должны быть на lg303. Ссылки на альяс не работают для сообщений которые адресованы на этот альяс, поскольку, как и обработка файл .forward, альясинг выполняется лишь раз для адреса, для предотвращения петель.
       Может появляться, опционально, следующий новый адрес, второй адрес, с предшествующим
    errors_to. Этим изменяется адрес, на который посылаются ошибки доставки форвардившихся сообщений. Вместо отправки сообщения оригинальному отправителю, они идут на новый адрес. Для обычных пользователей, разрешено лишь значение пользователя которому принадлежит обрабатываемый фильтр. Например, пользователь lg303, чей почтовый ящик в домене lilliput.example мог бы иметь файл фильтра, который содержит
    deliver jon@elsewhere.example errors_to lg303@lilliput.example
    

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

    3.12 Команда save

         save <file name>
    e.g. save $home/mail/bookfolder
    

       Эта команда определяет, что копия сообщения будет добавлена к заданному файлу (т.е., файл будет использован как почтовая директория). Доставка которая установлена save - важна, если команде не предшествует unseen (смотрите раздел 3.8).
       Может быть более одной команды
    save; каждая вызывает запись копии сообщения в файл являющийся её аргументом, при условии, что они различны (дублирующиеся команды save - игнорируются).
       Если имя файла не начинается с символа
    /, добавляется содержимое переменной $home, если она не пуста. В обычных конфигурациях, эта переменная, обычно, установлена в пользовательском фильтре в пользовательскую домашнюю директорию, но системный администратор может установить её в другой путь. В некоторых конфигурациях, $home может быть незадана, в случае чнго могут быть сгенерированы неабсолютные пути. Такие конфигурации конвертируют его в абсолютный путь, когда имеет место доставка. В системном фильтре, $home никогда не установлена.
       Пользователь, разумеется, должен обладать разрешением записывать в файл, и запись файла происходит в процессе работающем от пользователя, под основной группой пользователя. Любые вторичные группы, к которым может принадлежать пользователь, обычно, не используются в аккаунте, однако, системный администратор может сконфигурировать exim для их установки. В дополнение, способность использовать эту команду всеми, контролируется системным администратором - она может быть запрещена на некоторых системах.
       Опциональное значение режима, может быть задано после имени. Значение режима интерпретируется как восьмеричное число, даже если оно не начинается с нуля. Например:
    save /some/folder 640
    

       Это даёт возможность пользователям перезадавать общесистемный режим для доставки в файл, который обычно 600. Если существующий файл не имеет корректный режим, он изменяется.
       Альтернативная форма доставки может быть включена на вашей системе, в которых каждое сообщение доставляется в новый файл в заданной директории. В этом случае, эта функциональность может быть запрошена путём задания, после команды
    save, имени директории, завершаемой слэшом, например:
    save separated/messages/
    

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

    3.13 Команда pipe

         pipe <command>
    e.g. pipe "$home/bin/countmail $sender_address"
    

       Эта команда определяет, что сообщение будет доставлено к заданной команде, используя трубу. Доставка, которую она устанавливает, - важна, если команде не предшествует unseen (смотрите раздел 3.8). Помните, однако, что доставки не закончатся пока обрабатывается фильтр. Все доставки происходят позже. Таким образом, результат работы трубы недоступен в фильтре.
       Когда доставки завершены, запускается отдельный процесс, и копия сообщения передаётся на стандартный ввод. Процесс работает от пользователя, под первичной группой пользователя. Любые вторичные группы, к которым может принадлежать пользователь, обычно, не используются в аккаунте, однако, системный администратор может сконфигурировать exim для их установки. Может быть более одной команды
    pipe; каждая вызывает запись копии сообщения в аргумент pipe, при условии, что они различны (дублирующиеся команды pipe - игнорируются).
       Когда приходит время транспортировки сообщения, команда предоставленная
    pipe разделяется exim`ом на имя команды и несколько аргументов. Они разделяются пустым пространством, исключая аргументы в двойных кавычках, в случае чего обратный слэш интерпретируется как символ экранирования, или в одиночных кавычках, в случае чего экранирование не распознаётся. Отметтьте, что вся команда, обычно, предоставляется в двойных кавычках, второй уровень помещения в кавычки - требуется для внутренних двойных кавычек. Например:
    pipe "$home/myscript \"size is $message_size\""
    

       Раскрытие строки выполняет отдельные компоненты после разделения строки, после чего команда запускается непосредственно exim`ом, она не запускается под шеллом. Поэтому, подстановка не может изменить число аргументов, ни кавычек, обратных слэшей, или иных метасимволов shell в переменных, вызывая недоразумение.
       Документация для некоторых программ, которые обычно запускаются через этот вид трубы, часто советует что команда должна начинаться с
    IFS=" "
    

       Это - команда shell, и она не должна присутствовать в файлах фильтра exim`a, поскольку ему ненормально запускать команду под shell.
       Однако, есть опция, которую администратор может установить, вызывая использование shell. В этом случае, вся команда раскрывается как одна строка, и передаётся shell`y для интерпретации. Этого рекомендуется избегать всегда, когда возможно, поскольку это может вызвать проблемы, когда вставленные переменные сожержат метасимволы shell`a.
       Дефолтовая PATH устанавливаемая для команды - определяется системным администратором, обычно содержит,самое малое,
    /bin и /usr/bin, таким образом, большинство команд доступны без задания полного пути имени файла. Однако, системный администратор может ограничить средство трубы, так, что имя команды не сможет содержать любые символы /, и должно быть найдено в одной из директорий в сконфигурированном PATH. Системный администратор также может вообще заблокировать использование команды pipe.
       Когда команда запущена, установлено множество переменных окружения. Полный список для доставок в трубы может быть найден в руководстве exim`a. Те, которые могут быть полезны для доставок
    pipe из файлов пользовательских фильтров, таковы:
    Имя
    Значение
    DOMAIN домен адреса
    HOME ваша домашняя директория
    LOCAL_PART смотрите ниже
    LOCAL_PART_PREFIX смотрите ниже
    LOCAL_PART_SUFFIX смотрите ниже
    LOGNAME ваше имя логина
    MESSAGE_ID уникальный идентификатор сообщения
    PATH путь поиска команды
    RECIPIENT полный адрес получателя
    SENDER отправитель сообщения
    SHELL /bin/sh
    USER смотрите ниже

       LOCAL_PART, LOGNAME, и USER установлены в одно и то же значение, а именно, в ваш логин. LOCAL_PART_PREFIX и LOCAL_PART_SUFFIX могут быть установлены, если exim скнфигурирован распознавать префиксы или суффиксы локальных частей адресов. Например, сообщение адресованное на pat-suf2@domain.example может вызвать запуск фильтра для пользователя pat. Если установлена доставка в pipe, LOCAL_PART_SUFFIX будет -suf2, когда работает команда трубы. Системный администратор должен специально сконфигурировать exim для доступности этой особенности.
       Если вы запускаете команду, которая является скриптом shell, будте очень осторожны в использовании данных из входящего сообщения в командах вашего скрипта. RFC2822 очень щедро в символах, которым разрешено появляться в почтовых адресах, и, в частности, адрес пожет начинаться с вертикальной черты, или слэша. По этой причине, вы всегда должны окружать кавычками любые аргументы, которые связаны с данными сообщения, как тут:
    /some/command '$SENDER'
    

    таким образом, метасимволы shell не вызовут неожиданных эффектов.
       Запомните, что ранее объяснявшаяся команда трубы не запускается во время интерпретации файла фильтра. Фильтр лишь определяет, какие доставки требуются для одного из частных адресов сообщения. Сами доставки происходят позднее, когда exim htibn что всё что необходимо сообщению - завершено.
       В следствии этого, вы не можете проверять код возврата из команды трубы, внутри фильтра. Тем не менее, код возврата команды - важен, поскольку exim использует его для принятия решения - была ли доставка удачной или неудачной.
       Команда должна возвращать код завершения ноль, если всё прошло успешно. Большинство ненулевых кодов рассматриваются exim`ом как индицирующие ошибку трубы. Это - рассматривается как неудача доставки, вызывая возврат сообщения к отправителю. Однако, есть некоторые коды, которые рассматриваются как временные ошибки. Сообщение остаётся на диске, в спуле exim`a, и доставка пробуется снова, позднее, пока время повторов ошибки доставки не будет слишком долгим. Окончательный код для этого случая может быть задан системным администратором, значение по умолчанию - 73 и 75.
       Команда трубы, обычно, не должна ничего записывать в свой стандартный выод или файловый дескриптор стандартной ошибки. Если это происходит, вне зависмости от записанного, оно, обычно, возвращается отправителю как ошибка доставки, хотя это действие может быть изменено системным администратором.

    3.14 Почтовые команды

       Есть две команды, которые вызывают создание нового почтового сообщения, каждай из которых считается важной доставкой, если команде не предшествует seen (смотрите раздел 3.8). Это - мощщное средство, но оно должно использоваться с осторожностью, поскольку есть опасность создания бесконечных последовательностей сообщений. Системный администратор может полностью запретить использование этих команд.
       Для помощи в избежении последовательности сообщений, эти команды не имеют силы, когда когда входящее сообщение - рикошет (сообщение о ошибке доставки), и сообщения посылаемые этим способом, обрабатываются как отчёт о ошибке доставки. Таким образом, они не вызывают возврата рикошетов. Базовая команда посыла почты - такова:
    mail [to <address-list>]
         [cc <address-list>]
         [bcc <address-list>]
         [from <address>]
         [reply_to <address>]
         [subject <text>]
         [extra_headers <text>]
         [text <text>]
         [[expand] file <filename>]
         [return message]
         [log <log file name>]
         [once <note file name>]
         [once_repeat <time interval>]
    
    e.g. mail text "Your message about $h_subject: has been received"
    

       Каждый <address-list> может содержать несколько адресов, разделённых запятыми, в формате строк заголовков To: и Cc:. Фактически, текст, который вы тут помещаете, копируется с воответствующие строки заголовоков. Он может содержать дополнительную информацию, как почтовый адрес. Например:
    mail to "Julius Caesar <jc@rome.example>, \
             <ma@rome.example> (Mark A.)"
    

       Подобным образом, текст предоставленный для from и reply_to копируется в соответтсвующие строки заголовков.
       Для удобства использования в большинстве случаев, также есть команда с именем
    vacation. Она ведёт себя таким же образом как и mail, за исключением что по умолчанию опции subject, file, log, once и once_repeat, таковы:
    subject "On vacation"
    expand file .vacation.msg
    log  .vacation.log
    once .vacation
    once_repeat 7d
    

    соответственно. Те же самые имена файлов м периоды повторов используются традиционной командой UNIX vacation. Значения по умолчанию могут быть перезаданы явным заданием установок, но если дано имя файла, его содержимое раскрывается лишь если запрошено явно.
       Предупреждение: Команда
    vacation всегда должна использоваться условно, подчиняясь наименьшему условию personal (смотрите ниже, раздел 3.27), так, чтобы не посылать автоматические ответы на не персональные сообщения от списков рассылки, или ещё каких-то. Отсылка автоматических ответов на списки рассылки или управляющему списком рассылки - Интернетный Грех (дословно :) - прим. lissyara).
       Для обеих команд, пара аргументов ключ/значение, может фигурировать в любом порядке. Должен фигурировать по меньшей мере один из
    text или file (исключение с vacation, где умолчание - file); если представлены обе, текстовая строка фигурирует первой в сообщении. Если expand предшествует file, каждая строка файла подчиняется раскрытию строк до её включения в сообщение.
       Несколько строк текста могут быть предоставлены к
    text путём включения экранирующей последовательности \n в строке где требуется новая строка. Если команда - вывод в течение тестирования файла фильтра, новые строки в тексте отображаются как \n.
       Отметтьте, что ключевое слово для создания заголовка
    Reply-To: - reply_to, поскольку ключевые слова exim`a могут содержать подчёркивания, но не дефисы. Если представлено ключевое слово from, и данный адрес не совпадает с пользователем владеющим файлом .forward, exim, обычно, добавляет к сообщению заголовок Sender:, если не сконфигурировано не делать этого.
       Ключевое слово
    extra_headers позволяет вам добавлять нестандартные строки заголовков к сообщению. Предоставляемые текст должен быть одной или более синтаксически верными строками заголовоков, в соответствии с RFC2822. Вы можете использовать \n внутри текста в кавычках, для задания новых строк между заголовками, и, также, для задания продолжающихся строк заголовков. Например:
    extra_headers "h1: first\nh2: second\n continued\nh3: third"
    

       В конце финальной строки заголовков не будет новой строки.
       Если аргумент
    to не присутствует, сообщение посылается на адрес в переменной $reply_address (смотрите выше, раздел 3.3). Все заголовки In-Reply-To: автоматически включаются в создаваемое сообщение, давая ссылку на идентификатор входящего сообщения.
       Если задана
    return message, входящее сообщение вызвавшее запуск файла фильтра, добавляется к концу сообщения, и на каждый адрес посылается не более одного сообщения, если не задана once_repeat. Этим определяется временной интервал после которого посылается иная копия сообщения. Интервал задаётся как последовательность чисел, каждая сопровождаемая начальной буквой одного из seconds, minutes, hours, days, или weeks. Например,
    once_repeat 5d4h
    

    вызывает отсылку нового сообщения если прошло 5 дней и 4 часа после того как было послано последнее. Не должно быть пробелов (в смысле - пустого пространства - прим. lissyara) во временном интервале.
       Обычно, имя файла заданное для
    once, используется как базовое имя для прямых файловых операций (DBM). Существует несколько различных библиотек DBM. Некоторые операционные системы предоставляют по умолчанию одну, но даже в этом случае, при сборке exim`a могут использоваться иные. С некоторыми библиотеками DBM, для определения результата once используются два файла с суффиксами .dir и .pag добавляемыми к именам. В некоторых других, используется один файл с суффиксом .db, или имя используется неизменным.
       Использование файла DBM для реализация возможности
    once означает, что файл растёт до такого размера, как необходимо. Обычно, это не проблема, но некоторые администраторы хотя его ограничить. Средство может быть сконфигурировано, чтобы не использовать файл DBM, но вместо этого, используется обычный файл с максимальным размером. Данные в таком файле ищутся последовательно, и, если файл запоняется, старые вхождения удаляются, для добавления новых. Это средство, которым некоторые корреспонденты могут передавать вторую копию сообщения после непредсказуемого интервала. Проконсультируйтесь с вашей локальной информацией, чтобы убедиться, что ваша система сконфигурирована таким способом.
       Более чем одна команда
    mail или vacation может фигурировать в одном запуске файла фильтра; они все не выполняются, когда они все для одного и того же получателя (не уверен что правильно перевёл - прим. lissyara).

    3.15 Команды логгинга

       Логи могут быть взяты при помощи файла фильтра. Это средство, обычно, доступно в обычных конфигурациях, но есть некоторые ситуации когда они не могут быть получены. Также, системный администратор может их отключить. Проверьте вашу локальную информацию, если сомневаетесь.
       Логгинг имеет место когда файл фильтра интерпретируется. Он не находится в очереди до более позднего времени, как команды доставки. Причина этого в том, что файл логов необходимо открывать лишь один раз для каждой операции записи. Есть две команды, ни одна из которых не назначает важную доставку. Первая - задаёт файл, в который впоследствии выводится логгинг:
         logfile <file name>
    e.g. logfile $home/filter.log
    

       Имя файла должно быть полностью квалифицированным. Вы можете использовать $home, как в этом примере, для ссылки на вашу домашнюю директорию. Имя файла может опционально сопровождаться режимом для этого файла, который используется, если файл создаётся. Например:
    logfile $home/filter.log 0644
    

       Число интепретируется как восьмеричное, если оно не начинается с нуля.Дефолтовый режим - 600. Это предполагает, что команда logfile, обычно, появляется как первая команда в файле фильтра. Как только появился файл логов, для записи в него может быть использована команда logwrite:
         logwrite "<some text string>"
    e.g. logwrite "$tod_log $message_id processed"
    

       Возможно иметь более, чем одну команду logfile, для задания записи в различные файлы логов, в различных ситуациях. Запись имеет место в конце файла, и символ новой строки добавляется в конце каждой строки, если его там нет. Новая строка может быть помещена в середине строки, используя экранирующую последовательность \n. Строки от одновременных доставок могут чередоваться в файле, так как тут нет взаимной блокировки, таким образом, вы должны планировать ваш логгинг с учётом этого. Однако, данные не теряются.

    3.16 Команда finish

       Команда finish, которая не имеет аргументов, вызывает остановку интепретации файла фильтра exim`ом. Она не важное действие, если её не предшествует seen. Фильтр может содержать лишь одну команду seen finish - это, чёрная дыра.

    3.17 Команда testprint

       Иногда, полезна возможность распечатать значения переменных, когда тестируется файл фильтра. Команда
         testprint <text>
    e.g. testprint "home=$home reply_address=$reply_address"
    

    ничего не делает, когда почта доставляется. Однако, когда код фильтра тестируется при помощи опции -bf (смотрите выше, секцию 1.3), значение строки пишется на стандартный вывод.

    3.18 Команда fail

       Когда средство фильтрации exim`a используется как системный фильтр, доступна команда fail, для принудительной неудачи доставки. Поскольку эта команда, обычно, используется лишь системным адмнистратором, и не включена для использования обычными пользователями, она более описана в главной спецификации exim`a более подробно, чем в этом документе.

    3.19 Команда freeze

       Когда средство фильтрации exim`a используется как системный фильтр, доступна команда freeze, для заморозки сообщения в очереди. Поскольку эта команда, обычно, используется лишь системным адмнистратором, и не включена для использования обычными пользователями, она более описана в главной спецификации exim`a более подробно, чем в этом документе.

    3.20 Команда headers

       Команда headers может использоваться для изменения целевой кодировки, которая используется при переводе содержимого сообщения кодированных строк заголовков, для вставки путём механизма $header_ (смотрите секцию 3.5, выше). Значение по умолчанию может быть установлено в конфигурации exim`a; если не задано, используется ISO-8859-1. На данный момент, поддерживаемый формат headers в файлах пользовательских фильтрах, как в этом примере:
    headers charset "UTF-8"
    

       Т.е., headers сопровождается словом charset, и, затем, именем кодировки. Этот частный пример может быть полезным, если вы хотите сравнить содержимое заголовков со строкой UTF-8.
       В файлах системного фильтра, команда
    headers может использоваться для добавления или удаления строк заголовков из сообщения. Эти особенности описаны в главной спецификации exim`a.

    3.21 Удовлетворение условий команд

       Большинство силы фильтрования происходит из способности тестировать условия и удовлетворять условия различных команд, зависящих от результата. Команда if используется для выполнения специальных условий, и её общая форма - такова:
    if    <condition>
    then  <commands>
    elif  <condition>
    then  <commands>
    else  <commands>
    endif
    

       Тут может быть любое число секций elif и then (включая отсутствие), и опциональная секция else. Любое число команд, включая вложенные команды if, могут фигурировать в секции <commands>.
       Условия могут быть скомбинированы используя слова
    and и or, и, для задания как комбинируются отдельные условия, могут использоваться круглые скобки. Без скобок, and - более приоритетна, чем or. Например:
    if
    $h_subject: contains "Make money" or
    $h_precedence: is "junk" or
    ($h_sender: matches ^\\d{8}@ and not personal) or
    $message_body contains "this is not spam"
    then
    seen finish
    endif
    

       Условию может предшествовать not, для его отрицания, и, также, есть некоторые отрицательные формы условия, которые более похожи на английский язык.

    3.22 Условия тестирования строк

       Есть несколько условий, которые оперируют текстовыми строками, используя слова begins, ends, is, contains и matches. Если вы хотите применить тот же самый тест к более чем одной строке заголовков, вы можете легко объединить их в одну строку для тестирования, как в этом примере:
    if "$h_to:, $h_cc:" contains me@domain.example then ...
    

       Если имя условия тестирования строки написано в нижнем регистре, тестирование букв происходит без учёта регистра; если оно написано в верхнем регистре (например, CONTAINS), регистр букв берётся в расчёт.
         <text1> begins <text2>
         <text1> does not begin <text2>
    e.g. $header_from: begins "Friend@"
    

       Тест begins проверяет присутствие второй строки в начале первой, обе строки будут раскрыты.
         <text1> ends <text2>
         <text1> does not end <text2>
    e.g. $header_from: ends "public.com.example"
    

       Тест ends проверяет присутствие второй строки в конце первой, обе строки будут раскрыты.
         <text1> is <text2>
         <text1> is not <text2>
    e.g. $local_part_suffix is "-foo"
    

       Тест is проверяет точное соответствие между строками, вначале раскрывая обе.
         <text1> contains <text2>
         <text1> does not contain <text2>
    e.g. $header_subject: contains "evolution"
    

       Тест contains проверяет частичное соответствие строк, обе строки будут раскрыты.
         <text1> matches <text2>
         <text1> does not match <text2>
    e.g. $sender_address matches "(bill|john)@"
    

       Для теста matches, после раскрытия обеих строк, вторая интерпретируется как регулярное выражение. Exim использует библиотеку регулярных выражений PCRE, которая предоставляет регулярные выражения совместимые с perl.
       Сравнение успешно, если регулярное выражение совпадает с любой частью первой строки. Если вы хотите, чтобы регулярное выражение совпадало лишь с началом или концом строки, вы должны явно закодировать требования, используя метасимволы
    ^ или $.
       Верхний пример, являющийся неестественным, совпадает со всеми этими адресами:
    bill@test.example
    john@some.example
    spoonbill@example.com
    littlejohn@example.com
    

       Для совпадения лишь с двумя первыми, вы могли бы использовать это:
    if $sender_address matches "^(bill|john)@" then ...
    

       Нужно быть внимательным, если вам необходим обратный слэш в регулярном выражении, поскольку обратный слэш интерпретируется как экранирующий символ обоими, кодом раскрытия строк, и обычной обработкой строк в кавычках exim`ом. Например, если вы хотите проверить адрес отправителя на домен завершающийся на .com, то регулярное выражение - таково:
    \.com$
    

       Обратный слэш и символ доллара, в этом выражении, должны быть экранированы, при использовании в команде фильтра, так как они будут интерпретированы кодом раскрытия. Таким образом, реально вы напишете:
    if $sender_address matches \\.com\$
    

       Альтернативным способом обработки этого, является использование флагов раскрытия \N, для подавления раскрытия:
    if $sender_address matches \N\.com$\N
    

       Всё, что между двумя вхождениями \N, копируется без раскрытия строки (и, фактически, вам не нужна финальная последовательность, поскольку она в конце строки). Если регулярное выражения дано в кавычках (обязательно, лишь если оно содержит пустое пространство), вы должны написать дважды:
    if $sender_address matches "\\\\.com\\$"
    

    или
    if $sender_address matches "\\N\\.com$\\N"
    

       Если регулярное выражение содержит субвыражение в квадратных скобках, то после успешного сравнения в последующих действиях могут использоваться числовые переменные, типа $1. Если сравнение неудачно, значения числовых переменных остаются неизменными. Предыдущие значения не восстанавливаются после endif. Другими словами, всегда доступен лишь один набор значений. Если условие содержит несколько подусловий, соединённых с помощью and или or, эта строка извлекается из последнего успешного совпадения, которое доступно в последующих действиях. Числовые значения из любых единичных субусловий также доступны для использования в последующих субусловиях, поскольку раскрытие строки условия происходит до его тестирования.

    3.23 Тестирование числовых условий

       Следующие условия доступны для выполнения числовых тестов:
         <number1> is above <number2>
         <number1> is not above <number2>
         <number1> is below <number2>
         <number1> is not below <number2>
    e.g. $message_size is not above 10k
    

       Аргументы <number> должны раскрываться в строку цифр, опционально сопровождаемую одной из букв K или M (верхнего или нижнего регистра), которые вызывают умножение на 1024 или 1024x1024, соответственно.

    3.24 Тестирование важных доставок

       Вы можете использовать условие delivered, для тестирования выполняла ли предыдущая команда фильтра установку важной доставки. Например:
    if not delivered then save mail/anomalous endif
    

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

    3.25 Тестирование на сообщения о ошибке

       Условие error_message - истинно, если входящее сообщение - рикошет (ошибка доставки сообщения). Помещение команды
    if error_message then finish endif
    

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

    3.26 Тестирование списка адресов

       Это - средство для циклического обхода списка адресов, и применения условия к каждому из них. Оно имеет форму
    foranyaddress <string> (<condition>)
    

    где <string> - интерпретируется как список адресов RFC2822, как в типичной строке заголовка, и <condition> - любое допустимое условие фильтра, или комбинация условий. Синтаксис group, который задан для некоторых строк заголовков содержащих адрес - поддерживается.
       Круглые скобки, окружающие условие, - обязательны, для определения границ от возможных последующих субусловий вложенных команд
    if. Внутри условия, переменная раскрытия $thisaddress - установлена в некомментирующую часть каждого адреса в строке, по очереди. Например, если строка
    B.Simpson <bart@sfld.example>, lisa@sfld.example (his sister)
    

    тогда $thisaddress будет принимать значение bart@sfld.example и lisa@sfld.example, по очереди.
       Если в списке больше нет действительных адресов, всё условие - ложно. Если внутреннее условие истинно, для одного любого из адресов, общее условие - истинно, и цикл завершается. Если внутреннее условие ложно для всех адресов в списке, общее условие - ложно. Этот пример тестирует на присутствие восьмицифровой локальной части в любом адресе в заголовке
    To::
    if foranyaddress $h_to: ( $thisaddress matches ^\\d{8}@ ) then ...
    

       Когда истинно общее условие, значение $thisaddress в команде которая следует за then, берётся последнее значение внутри петли. В конце команды if, значение $thisaddress сбрасывается к тому, каким оно было до этого. Это полезно для избегания использования многочисленных foranyaddress, вложенных, или иначе, в одну команду if, если значение $thisaddress используется впоследствии, поскольку оно всегда очищается. Вместо этого, следовало бы использовать вложенные команды if.
       Строки заголовков могут быть соединены вместе, если проверка применяется более чем к одному из них. Например:
    if foranyaddress $h_to:,$h_cc: ....
    

       Этим сканируются адреса в обоих заголовках - To: и Cc:.

    3.27 Тестирование на персональность почты

       Обычное требование - различать входящую персональную почту, и почту от почтовых рассылок, или от роботов, или иных автоматических процессов (например, рикошеты). В частности, это тестирование, обычно, требуется для vacation messages.
       Условие
    personal проверяет, что сообщение - не рикошет, и что почтовый адрес текущего пользователя присутствует в строке заголовка To:. Также, оно проверяет, что отправитель - не текущий пользователь, или один из множества обычных даемонов, и что в сообщении нет строки заголовка, начинающейся с List-. В конце, оно проверяет содержимое строки заголовка Precedence:, если она есть.
       Вы должны всегда использовать условие
    personal, когда генерируете автоматические ответы. Этот пример показывает использование personal в файле фильтра, который отсылает сообщение о отпуске:
    if personal then
    mail to $reply_address
    subject "I am on holiday"
    file $home/vacation/message
    once $home/vacation/once
    once_repeat 10d
    endif
    

       Это - замачиво, когда пишется команда, типа вышеприведённой, для цитирования оригинальной темы в ответе. Например:
    subject "Re: $h_subject:"
    

       Однако - это опасно делать. Это может позволить кому-то иному подписать вас на выбранный список рассылки, при условии, что список принимает рикошеты как подтверждения о подписке. (Из фильтров, сообщения всегда шлются как рикошеты.) Хорошо управляемые списки требуют ,чтобы сообщение было не-рикошетом, для подтверждения подписки, таким образом, опасность относительно мала.
       Если для локальных частей используются преффиксы или суффиксы - что-то, что зависит от конфигурации exim`a (смотрите ниже, раздел 3.31), тесты для текущего пользователя завершаются с полным адресом (включая преффикс и суффикс, если они есть), как с удалённым преффиксом и суффиксом. Если система сконфигурирована для перезаписи локальных частей почтовых адресов, например, для перезаписи
    dag46 как Dirk.Gently, перезаписанная форма адресов также используется в тестах.

    3.28 Адреса альясов для персональных условий

       Вполне обычно для людей имеющих почтовые аккаунты на нескольких различных системах - форвардить всю их почту на одну систему, и в этом случае проверка на персональную почту должна проверять все их различные почтовые адреса. Для разрешения этого, ключевое условие personal может сопровождаться
    alias <address>
    

    любое число раз, например:
    if personal alias smith@else.where.example
                alias jones@other.place.example
    then ...
    

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

    3.29 Детали персональных условий

       Основной тест personal примерно эквавалентен следующему:
    not error_message and
    $message_headers does not contain "\nList-Id:" and
    $message_headers does not contain "\nList-Help:" and
    $message_headers does not contain "\nList-Subscribe:" and
    $message_headers does not contain "\nList-Unsubscribe:" and
    $message_headers does not contain "\nList-Post:" and
    $message_headers does not contain "\nList-Owner:" and
    $message_headers does not contain "\nList-Archive:" and
    (
    "${if def h_auto-submitted:{present}{absent}}" is "absent" or
    $header_auto-submitted: is "no"
    ) and
    $header_precedence: does not contain "bulk" and
    $header_precedence: does not contain "list" and
    $header_precedence: does not contain "junk" and
    foranyaddress $header_to:
    ( $thisaddress contains "$local_part$domain" ) and
    not foranyaddress $header_from:
    (
    $thisaddress contains "$local_part@$domain" or
    $thisaddress contains "server@" or
    $thisaddress contains "daemon@" or
    $thisaddress contains "root@" or
    $thisaddress contains "listserv@" or
    $thisaddress contains "majordomo@" or
    $thisaddress contains "-request@" or
    $thisaddress matches  "^owner-[^@]+@"
    )
    

       Переменная $local_part содержит локальную часть почтового адреса пользователя, файл фильтра которого работает, обычно - это ваш логин. Переменная $domain - содержит почтовый домен. Как объяснено выше, если заданы альясы или перезапись, или если используются преффиксы и суффиксы, тесты для текущего пользователя завершаются с альтернативными адресами.

    3.30 Тестирование статуса доставки

       Есть два условия, которые предназначены, главным образом, для использования в файлах системного фильтра, но которые также доступны в файлах пользовательских фильтров. Условие first_delivery - истинно, если это - первый процесс, пытающийся доставить сообщение, и ложно в других случаях. Этот индикатор не сбрасывается после успешного завершения первого процесса доставки; если происходит сбой, или неполадки с питанием (например), следующая доставка предпринимается также, как первая (first delivery).
       В пользовательском файле фильтра
    first_delivery будет ложно, если до этого в фильтре были ошибки, или доставка для пользователя неудачна, например, из-за ошибки квоты, или если форвардинг к удалённому адресу был задержан по каким-то причинам.
       Условие
    manually_thawed - истинно, если сообщение было заморожено по каким-то причинам, и впоследствии разморожено системным администратором. Оно - необычно для использования в пользовательских файлах фильтров.

    3.31 Пользовательские мультипочтовые ящики

       Системный администратор может сконфигурировать exim так, что пользователи могут установить варианты их почтовых адресов, и обрабатывать их раздельно. Проконсультируйтесь с вашим системным администратором или локальной документацией, чтобы узнать, включено ли это средство в вашей системе, и если так, каковы его детали.
       Средство включает в себя использование преффикса или суффикса в почтовом адресе. Например, вся поста адресованая на
    lg303-<something> была бы собственностью пользователя lg303, который мог бы определить, как она должна быть обработана, в зависмости от значения <something>.
       Возможны два способа, которыми это можно сделать. Первая возможность - использование нескольких файлов
    .forward, которые должны быть файлами фильтра, таким образом, они могут различать разные случаи, путём ссылки на переменные $local_part_prefix или $local_part_suffix, как в последнем примере, в секции 3.33, ниже.
       Возможно сконфигурировать exim на поддержку обоих схем одновременно. В этом случае, специфический файл
    .forward-foo ищется первым; если он не найден, используется основной файл .forward.
       Тест
    personal (смотрите раздел 3.27) включает преффиксы и суффиксы в свои проверки.

    3.32 Игнорирование ошибок доставки

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

    3.33 Примеры команд фильтра exim`a

       Простой форвардинг:
    # Exim filter
    deliver baggins@rivendell.middle-earth.example
    

       Обработка отпуска, используя традиционные средства, предполагая, что .vacation.msg и иные файлы находятся в вашей домашней директории:
    # Exim filter
    unseen pipe "/usr/ucb/vacation \"$local_part\""
    

       Обработка отпуска внутри exim`a, вначале должен быть создан файл с именем .vacation.msg, в вашей домашней директории:
    # Exim filter
    if personal then vacation endif
    

       Файлы некоторых сообщений по теме:
    # Exim filter
    if $header_subject: contains "empire" or
    $header_subject: contains "foundation"
    then
    save $home/mail/f+e
    endif
    

       Сохранение всех несрочных сообщений по будним дням:
    # Exim filter
    if $header_subject: does not contain "urgent" and
    $tod_full matches "^(...),"
    then
    save $home/mail/$1
    endif
    

       Отбрасывание прочь (ф топку - прим. lissyara :) - как вы думаете, какое у меня щас настроение и состояние, после того, как больше года ушло на перевод и до конца осталось два абзаца? :)) всех сообщений от одного сайта, исключая письма от postmaster:
    # Exim filter
    if $reply_address contains "@spam.site.example" and
    $reply_address does not contain "postmaster@"
    then
    seen finish
    endif
    

       Обработка персональных мультипочтовых ящиков:
    # Exim filter
    if $local_part_suffix is "-foo"
    then
    save $home/mail/foo
    elif $local_part_suffix is "-bar"
    then
    save $home/mail/bar
    endif
    

    =======================
       От переводчика.
       Отдельная благодарность тем кто помогал - сколько-то глав было взято из рассылки exim.org.ua - пару лет назад там пытались начать перевод несколько человек, но, осилив несколько частей дело заглохло. Однако, - если бы не они, я бы потратил ещё несколько месяцев.
       Отдельная благодарность Andy - он перевёл части которые не осилил я - 4 и 41. Тоже лишний месяц.
       Ещё одна благодарность dikens3 - он постоянно присылает ошибки найденные в переводе - в основном грамматические и орфографические.
       Также благодарность тем нескольким людям которые присылали ошибки найденные в переводе - к сожалению поименно перечилить не смогу - контакты утеряны, но это ничуть не умаляет их вклад.

       На перевод ушло больше года. Всё моё свободное время. Приходил с работы, садился, и сидел до часу-дву-трёх-четырёх. В 6 утра вставал и шёл на работу.
       Однако, по итогам, могу заявить - человек куда прочнее, чем принято думать, и в физическом, и в психологическом плане :).


    2007-05-17 23:44, 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. Поискал погуглил, ничего толкового не нашел пришлось все самому делать. И вот решил поделиться опытом. Начинаем......
    2008-11-11, lissyara
    Samba+ NT ACL

    Использование vfs самбы - модули full_audit и recycle. Настройка для использования в качестве файлопомойки с 500+ одновременно работающих юзеров. Раздача прав через нативный виндовый интерфейс.
    2008-11-11, Raven2000
    Upgrading OpenBSD

    Сегодня мы будем обновлять OpenBSD. Систему необходимо поддерживать в актуальном виде и следить, чтобы все работало, как часы и все дырки были залатаны до прихода врага =)
    2008-11-10, lexy
    SMSTools 3

    Как автоматизировать отправку и обработку входящих сообщений при помощи мобильного телефона, датакабеля и компа
    2008-11-06, Cancer
    Asterisk IP PBX

    Установка VoiP сервера Asterisk IP PBX для соединения двух шлюзов и АТС
    2008-10-30, atrium
    Samba & CUPS & AD & ACL

    Настройка Samba в роли доменного файл-сервера, и CUPS в роли принт-сервера для Windows клиентов
    2008-10-17, Raven2000
    src & ports

    Конечно, в OpenBSD система портов никогда не сможет быть полной сравнение с той же системой во FreeBSD. Связано это с тем, что разработчики включают в порты лишь те приложение которые протестированн
    2008-10-13, Morty
    Mysql - базовое описание

    Базовое описание и принципы работы с MySQL
    2008-10-10, Cancer
    exim&dovecot + fetchmail + SSL

    Exim & Dovecot + Postfixadmin & Roundcube + Fetchmail & smtp_relay С возможностью отправлять письма через смтп релей провайдера. С использование SSL шифрование: POP3s IMAPs sSMTP
    2008-10-09, m0ps
    Дополнительные порты для роутера

    Увеличение количества Ethernet портов маршрутизатора за счет свободных портов коммутатора пробросив vlan с сабинтерфейса роутера на интерфейс коммутатора.
    2008-10-06, princeps
    Bacula

    Настройка сервера системы резервного копирования Bacula на FreeBSD для бэкапов FreeBSD и Windows машин
    2008-10-02, zheromo
    Postfix + DBMail

    Создание почтовой системы на основе Postfix + DBMail + SASL2 + TLS + DSpam + ClamAV + RoundCubeWebMail
    2008-10-02, Cancer
    SugarForge CRM

    SugarForge CRM предоставляет подавляющее большинство функциональных возможностей CRM систем
    2008-09-12, arksu
    ng_ipacct + squid

    Подсчет трафика с помощью ng_ipacct. Связка ng_ipacct + squid + парсер логов + авторизатор + nginx + mysql и куча служебных скриптов для работы всей системы.
    2008-09-03, Raven2000
    GLPI

    Мне надо было найти замену существующей программы инвентаризации, чтобы за компьютерами, принтерами, картриджами, лицензиями и тп был учет. Желательно с дополнительными бонусами типа системы подачи...
    2008-09-03, salimk
    POWERDNS

    Статья о том как мигрировать с DNS сетвера ISC Bind на POWERDNS
    2008-09-03, DNK
    Rinetd

    Редирект TCP портов с помощью утилиты rinetd - просто до безобразия - само прилодение простое, конфиг в одну строчку - что ещё надо для счастья? =)
    2008-09-03, L!Ner
    eGroupWare

    Это сервер групповой работы. Он укомплектован собственным веб-интерфейсом, который обеспечивает доступ к вашим данным с любой платформы по всей планете.
    2008-08-30, jafff
    MAC адрес

    У девайса VoIP Planet VIP-000 слетел MAC адрес и стал FF-FF-FF-FF-FF-FF, как я его востанавливал
    2008-08-30, Morty
    clonehdd

    Перенесение, бэкапирование HDD,легко и просто
    2008-07-31, Raven2000
    Proxy Auto Configuration

    Возникла необходимость автоматически настраивать прокси для всех компов и не бегать например если поменялось что-то на сервере прокси. Для этого давно существует технология Proxy Auto Configuration.
    2008-07-29, f0s
    NNTP сервер

    Конфигурирование собственного NNTP-сервера.
    2008-07-28, Al
    spamooborona

    настройка yandex spamooborona в качестве smtp-proxy для работы с exim
    2008-07-28, Cancer
    SQUID+SAMS +Rejik-(NCSA)

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

    Эта замечательная утилита поставляется с FreeBSD по умолчанию, и она имеет неплохой потенциал. Можно создавать архивы модифицировать их, а так же живьем переносить всю операционную систему с данными
    2008-07-16, Andy2k
    BIND & AD

    Настройка BIND для обслуживания запросов контроллеров Active Directory. Альтернатива поднятию DNS от Microsoft.
    2008-07-16, aleksey.kravchenko
    Samba (PDC+BDC)

    Поднять главный (офис) и резервный (филиал) контроллер домена на базе Samba и OpenLDAP, организовать синхронизацию и репликацию между ними. Запись в LDAP должена выполняться только на PDC.
    2008-07-14, aleksey.kravchenko
    OpenVPN + LDAP

    Статья о том, как настроить OpenVPN с авторизацией пользователей в OpenLDAP.
    2008-07-14, aleksey.kravchenko
    ProFTPd + LDAP

    ProFTPd с авторизацией пользователей в OpenLDAP
    2008-07-13, lissyara
    Asus Eee PC

    Дали на несколько дней поиграться Asus Eee PC - мелкий ноутбок по смешной цене. Ну, первым делом ставим правильный ОС и смотрим - что из этого получиться.
    2008-07-09, terminus
    DNS сервер Unbound

    Установка и настройка кеширующего DNS сервера Unbound под управлением FreeBSD 7.0
    2008-07-08, f0s
    mozilla autoconfig

    Автонастройка браузера и почты Mozilla Seamonkey пользователям
    2008-07-05, lissyara
    iftop

    Утилита предназначена для мониторинга загрузки канала в режиме реального времени - позволяет видеть кто именно занял полосу. Полезно для организаций с FreeBSD на шлюзовой машине.
    2008-07-02, manefesto
    snd_hda

    Патчим snd_hda для корректной работы с наушниками
    2008-06-27, Grishun_U_S
    dd : бэкапируем windows

    Клонирование разделов windows с помощью загрузочного диска FreeBSD
    2008-06-25, terminus
    DNS сервер NSD

    Установка и настройка авторитарного DNS сервера NSD под управлением FreeBSD 7.0
    2008-06-17, Al
    NetXtreme BCM5722

    Драйвер для сетевой карты NetXtreme BCM5722 Gigabit Ethernet
    2008-06-15, tango
    Amanda

    Установка и настройка сервера резервного копирования Amanda на FreeBSD.
    2008-06-12, LMik
    Виртуальный свитч

    Статья описывает создание виртуального коммутатора для соединения удаленных физических ethernet сетей.
    2008-06-08, littlesavage
    SiS*Mirage*1 на D201GLY2

    Как заставить работать видеоrарту SiS*Mirage*1 на материнской D201GLY2
    2008-06-06, nsand
    Рыбалка на FreeBSD

    Стьатья о том как настроить рыбалку со спутника под FreeBSD
    2008-06-06, nsand
    TT budget S-1401

    Настройка драйвера ttbudget (SkyStar3) под FreeBSD
    2008-05-30, Andy2k
    NOD32 mirror

    Скрипт для создания зеркала обновлений для антивируса NOD. Автоматически ищет нужные логин-пароль для получения обновлений. В теории не требует обслуживания.
    2008-05-25, Romzes
    метаданные exif

    Пример сортировки фотографий сделаных разными фотоаппаратами, с разными названиями, датами создания/модификации. Из под консоли, конечно.
    2008-05-23, FenX
    svn+apache+trac

    Установка связки Apache2.2 + Subversion + Trac (Установка и настройка SVN сервера с доступом к репозиториям по http протоколу)
    2008-05-22, Grishun_U_S
    простой конфиг PF

    В статье разбирается простой конфигурационный файл pf "изнутри можно все"
    2008-05-20, KrivoSoft
    HAVP

    HAVP(HTTP AntiVirus proxy)- работает как http прокси, проверяющий файлики используя LibClamav. В заметке описан процес прикручивания антивируса к уже работающему прокси серверу squid.
    2008-05-20, Covax
    ALTQ в IPFW

    Исполльзование ALTQ вместе с IPFW
    2008-05-19, nonalog2007
    pppoe

    Настройка ADSL-модема для подключения к Интернет.
    2008-05-04, Abigor
    php + mssql

    Настройка php на freebsd для работы с базами в mssql по доменной авторизации.
    2008-04-28, serge
    i386=>amd64

    Рассматриваеться способ удаленной миграции с архитектуры i386 на amd64 на рабочем сервере.
    2008-04-24, Mr.Y
    Lan over Bluetooth

    Статья описывает как используя Bluetooth, объединить две FreeBSD машины в сеть.
    2008-04-19, lissyara
    WiFi WPA

    Подключение FreeBSD к беспроводной WiFi сети с использованием шифрования WPA.
    2008-04-18, nikll
    nginx+php-fpm+mysql

    Статья о настройке мощного веб сервера который не ляжет от хорошей нагрузки.
    2008-04-16, nikll
    qmail-ldap + AD

    Статья о том как я прикрутил qmail к АД win2003 (с упровлением почтовыми аккаунтами через консоль mmc из под винды)
    2008-04-14, SHPAk
    Приглашение csh/tcsh

    Приглашение csh/tcsh не всегда удобно. Здесь описано как помянять оное...
    2008-04-07, inspirra
    deltup, xdelta, bdelta

    Некоторые тонкости создания бинарных патчей. И использование "The dynamic deltup server network" для экономии на обновлениях исходников программ устанавливаемых из портов.
    2008-04-02, fr33man
    exim + cyrus-imapd

    Руководство по настройке почтовой системы на базе OpenBSD-4.2: exim + cyrus-imapd + mysql
    2008-03-30, Morty
    LiveCD (+restore)

    LiveCD, который развернет мне на жёсткий диск готовую настроенную систему
    2008-03-25, lissyara
    BlueTooth mouse

    Краткое повествование о том, как привернуть BlueTooth мышь к FreeBSD. Краткое - потому как делается это с полпинка...
    2008-03-21, moonug
    ProFTPD+iconv

    Порт позволяющий включить перекодировку имён файлов в proftpd. Раньше для этого был патч, а щас всё поломали =))
    2008-03-11, helloworld
    vsftpd + mysql

    Настройка фтп сервера vsftpd с пользователями из mysql
    2008-03-06, Raven2000
    Call of Duty 4

    Call of Duty 4: Modern Warfare — компьютерная игра, продолжение серии COD, разработанное студией Infinity Ward. Это первая игра в серии, действие которой происходит не во время мировой войны.
    2008-03-04, schizoid
    NeTAMS 2

    Netams, статистика, биллинг, огрнаичение и подсчет трафика
    2008-03-04, schizoid
    NeTAMS

    Программа для учета и управления сетевым трафиком
    2008-03-01, Le1
    EA Battlefield 2 server

    Установка игрового сервера EA Battlefield 2 под ОС FreeBSD
    2008-02-25, dikens3
    Dynamic DNS

    Свой сервер с динамическим IP-Адресом.
    2008-02-23, fr33man
    squid ntlm

    Настройка Squid с аутентификацией ntlm, под OpenBSD. Решение проблем сборки с поддержкой АД.
    2008-02-18, lissyara
    BlueTooth

    Встала задача залить на Нокию гиг музыки через BlueTooth. ОС - правильный - FreeBSD, вот про то как это сделать из под неё - и рассказ. Также немного про нынешнее состояние дел с голубыми зубами =)
    2008-02-17, Raven2000
    NFS & Win2k3

    При работе с UNIX системами на предприятиях часто приходится организовывать совместную работу с Windows. Необходимо обеспечить взаимодействие UNIX<>WIN бывает, что доступ по FTP или др не устраивает.
    2008-02-14, Morty
    Lightsquid

    Снятие статистики с OOPS, SQUID с помощью lightsquid - нечто на подобии SARGa, и выполняет туже задачу, подбивает статистику пользования прокси сервером
    2008-02-14, Morty
    OOPS

    Краткое описание установки и настройки прозрачного прокси-сервера OOPS
    2008-02-12, fr33man
    Apache

    Настройка web-сервера apache, на базе OpenBSD. Нужен был web сервер. Стандартно нужно было ставить apache. Но я помнил, когда раньше работал с OpenBSD, что апач поставляется вместе с системой. Так
    2008-02-11, Raven2000
    Установка OpenBSD

    OpenBSD — свободная многоплатформенная операционная система, основанная на 4.4BSD — BSD-реализации UNIX системы. Основным отличием OpenBSD от других свободных операционных систем, базирующихся на
    2008-01-31, serge
    ApacheStats

    Сбор статистики с веб-сервера Apache в Cacti с использованием модулей mod_status и mod_info. Отображается число хитов в секунду, загрузка чилдренов и прочая полезная инфа.
    2008-01-30, Raven2000
    CVSUP и софт через Proxy

    При работе за прокси люди испытывают неудобство при обновление портов и установки портов. Хотя, наверное, догадываются, что FreeBSD может элегантно обходить эти камни, но не знают как.
    2008-01-25, nikll
    kde и smb

    статья о том как фрю сделать членом win2003 домена и о том как в кде 3.5 ходить по доменным шарам с нормальной русской кодировкой
    2008-01-21, Fastman
    Создание программ на QT4/С++

    Установка и настройка QT4. Пример создание приложения с GUI.
    2008-01-17, Morty
    stunnel для pop3,smtp

    Создание защищенного подключения для сервисов POP3, SMTP, Imap , www с помощью stunnel
    2008-01-09, lissyara
    Atheros AR5007EG

    Прикручивание карточки Atheros AR5007EG (в ноутбуке Toshiba L40-139) под FreeBSD.
    2008-01-04, LMik
    growfs

    Статья наглядно описывает изменение размера раздела диска в FreeBSD при помощи growfs, без потери данных находящихся на диске.
    2007-12-23, serge
    FreeBSD на VDS

    Рассматривается настройка FreeBSD6.2 на VDS с чистой ОС.
    2007-12-22, serge
    OTRS на Apache1

    Рассматривается установка Open Ticket Request System для работы на хостинг сервере в связке apache1.3 + mod_perl + mysql50.
    подписка

        вверх      
    Статистика сайта
    Сейчас на сайте находится: 16 чел.
    За последние 30 мин было: 63 человек
    За сегодня было
    11766 показов,
    522 уникальных IP
     

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

    © lissyara 2006-10-24 08:47 MSK

    Протестируйте новые bybit бонусы и купоны для выгодного трейдинга.

    Время генерации страницы 0.2524 секунд
    Из них PHP: 51%; SQL: 49%; Число SQL-запросов: 56 шт.
    У Вас отключено GZIP-сжатие в браузере. Размер страницы 410446