Exim 1 Введение

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

Введение

Exim - агент передачи почты (MTA) для хостов, на которых запущена UNIX, или UNIX-like операционная система. Он был спроектирован с учетом, что будет выполняться на хостах, постоянно связанных с интернетом. Однако, он может использоваться и на хостах, которые периодически связываются с Internet, с соответствующей корректировкой конфигурационных настроек.

В настоящее время, конфигурационные файлы существуют для следующих операционных систем: AIX, BSD/OS (иначе - BSDI), Darwin (Mac OS X), DGUX, Dragonfly, FreeBSD, GNU/Hurd, GNU/Linux, HI-OSF (Hitachi), HI-UX, HP-UX, IRIX, MIPS RISCOS, NetBSD, OpenBSD, OpenUNIX, QNX, SCO, SCO SVR4.2 (иначе - UNIX-SV), Solaris (aka SunOS5), SunOS4, Tru64-Unix (formerly Digital UNIX, formerly DEC-OSF1), Ultrix, и Unixware. Некоторые из этих операционных систем более не используются и не могут быть легко проверены, таким образом, конфигурационные файлы, возможно нерабочие.

Также есть конфигурационные файлы для сборки exim в среде Cygwin, которая может быть установлена на системах с работающей ОС Windows. Однако, этот документ не содержит какой бы то ни было информации о работе exim в среде Cygwin.

Сроки и условия для использования и распространения exim содержатся в файле “NOTICE”. Exim распространяется в соответствии с GNU General Public Licence, копия которой может быть найдена в файле “LICENCE”.

Использование, поставка, или реклама exim для массовой рассылки непрошенной электронной почты несовместимо с основными целями программы, которые сосредоточены вокруг бесплатных сервисов, которые увеличивают качество персональной связи. Автор exim расценивает массовую беспорядочную рассылку электронной почты как антиобщественное, безответственное злоупотребление Интернетом.
Exim многим обязан Smail 3 и его автору, Рону Карру (Ron Karr). Без опыта запуска и работы кода Smail 3, я, возможно, никогда бы и не собрался писать новый MTA. Многие из идей и пользовательских интерфейсов были первоначально взяты от Smail 3, хотя фактический код exim полностью новый, и развился далеко за пределы начальной концепции.

Много людей, и в Кембридже и во всём мире внесли свой вклад в разработку и тестирование exim, а также в портирование его на различные операционные системы. Я благодарен им всем. Дистрибутив, теперь, содержит файл с именем “ACKNOWLEDGMENTS”, в котором я начал запись имён всех, кто помог.

Документация exim

Эта редакция спецификации exim применима к версии 4.62. Независимые изменения от версии 4.61 отмечены в некоторых вариантах документа; этот параграф отмечен таким же образом, если версия документа способна отображать изменения.

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

Более “лёгкое” обсуждение Exim, с более многосторонними объяснительными и вводными материалами может быть найдено в книге “The Exim SMTP Mail Server”, изданной в Кембридже (http://www.uit.co.uk/exim-book/).

Также, эта книга содержит главу, дающую общее введение в SMTP и интернет-почту. Однако, неизбежно, что книга врятли будет полностью совместима с последним выпуском exim. (Отметьте, что более ранняя книга о exim, изданная O’Reilly, посвящена exim 3, и много тонкостей изменились в exim4.)

Если вы используете exim из дистрибутива debian, вы можете найти информацию о особенностях этого дистрибутива в файле

/usr/share/doc/exim4-base/README.Debian

Команда “man update-exim.conf” - иной источник debian-специфичной информации. Поскольку программа развивается, в новых версиях могут быть особенности, которые ещё не внесены в этот документ, обновляемый лишь когда изменяется самая существенная цифра дробной части версии. Спецификации новых возможностей, ещё не находящихся в этом документе, помещены в файл “doc/NewStuff” дистрибутива exim.

Некоторые особенности могут быть классифицированы как “экспериментальные”. При разработке они могут несовместимо измениться, или вообще быть убраны. Поэтому они не описаны в этом руководстве. Информацию о экспериментальных особенностях можно найти в файле “doc/experimental.txt”.

Все изменения в программе (новые особенности, исправления ошибок, или другие изменения) кратко описаны в файле “doc/ChangeLog”.

Эта спецификация доступна в качестве ASCII файла “doc/spec.txt”, таким образом поиск легко осуществим любым текстовым редактором. Другие файлы в директории “doc”:

“OptionLists.txt”  - список всех опций в алфавитном порядке
“dbm.discuss.txt”  - обсуждение библиотек DBM
“exim.8”           - страница man опций командной строки exim
“experimental.txt” - документация экспериментальных особенностей
“filter.txt”       - спецификация языка фильтра
“pcrepattern.txt”  - спецификация регулярных выражений PCRE
“pcretest.txt”     - спецификация программы тестирования PCRE
“Exim3.upgrade”    - примечания обновления с релиза 2 до релиза 3
“Exim4.upgrade”    - примечания обновления с релиза 3 до релиза 4

Главная спецификация и спецификация языка фильтрации также доступны в других форматах (HTML, PostScript, PDF, и Texinfo). Раздел 1.6, ниже, описывает как получить их.

FTP и WEB сайты

Главный сайт исходных кодов exim, в настоящее время, FTP-сайт университета Кембрижда, содержание которого описано ниже, в “Где найти дистрибутив exim”. Кроме того, есть веб- и ftp-сайт www.exim.org]. Также, сейчас здесь хостится университет Кембриджа. Раньше, сайт www.exim.org хостился много лет на Energis Squared, ранее Planet Online Ltd, за поддержку которого я благодарен.

Кроме файлов tar, дистрибутива exim, веб-сайт exim`a содержит множество различно отформатированных версий документации, включая FAQ в HTML и текстовом форматах. Версия HTML идёт с индексным файлом ключевых слов. Недавнее дополнение к онлайн-документации exim - wiki (http://www.exim.org/eximwiki/). Мы надеемся, что это облегчит внесение примеров, подсказок и хав-ту пользователей exim.

Листы рассылки

Это - три главных листа рассылки exim:

“exim-users@exim.org”    - общий список обсуждения
“exim-dev@exim.org”      - обсуждение ошибок, расширений и т.п.
“exim-announce@exim.org” - модерируемый, небольшой по объёму список анонсов

Вы можете подписаться на эти списки, изменить ваши существующие подписки, и просматривать или искать в архивах по ссылке на список рассылки на домашней странице exim. Если вы используете exim из дистрибутива debain, вы можете подписаться на дебиан-специфичную рассылку “pkg-exim4-users@lists.alioth.debian.org”.

Курсы exim

Время от времени (приблизительно ежегодно, на момент написания), автор exim проводит учебные курсы в университете Кембриджа, в Англии. Детали предстоящих курсов можно найти на сайте http://www-tus.csx.cam.ac.uk/courses/exim/.

Сообщения об ошибках

Сообщения об очевидных ошибках должны посылаться по электронной почте на адрес bugs@exim.org Однако, если вы неуверенны, является ли такое поведение ошибкой, лучше всего будет отправить сообщение на лист рассылки “exim-dev” и обсудить его.

Где найти дистрибутив exim

Главный ftp-сайт дистрибутива exim это:

ftp://ftp.csx.cam.ac.uk/pub/software/email/exim

Это его зеркало:

ftp://ftp.exim.org/pub/exim

Ссылки на файлы даны относительно директории “exim” на этом сайте. Также есть много независимых зеркал по всему миру. Те, которые я знаю, перечислены в файле “Mirrors”.

Внутри каталога “exim” есть подкаталоги с именами “exim3” (для предыдущего дистрибутива exim3), “exim4” (для последнего дистрибутива exim4) и “Testing” - для тестовых версий. в подкаталоге “exim4”, всегда может быть найден текущий релиз в файлах с именами:

exim-n.nn.tar.gz
exim-n.nn.tar.bz2

где “n.nn” - самый большой номер версии в директории. Два файла содержат идентичные данные; различие лишь в типе компрессии. Файл “.bz2”, обычно, намного меньше чем “.gz”.

В настоящее время, дистрибутивы подписываются GPG ключом Филипа Хазэля. Соответствующий открытый ключ доступен на множестве ключевых серверов, и также скопирован в файл “Public-Key”. Подписи для tar находятся в:

exim-n.nn.tar.gz.sig
exim-n.nn.tar.bz2.sig

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

Главный дистрибутив содержит ASCII версию этой спецификации и другую документацию; другие форматы документации доступны на FTP-сайте, внутри директории “exim4”, в отдельных файлах:

exim-html-n.nn.tar.gz
exim-pdf-n.nn.tar.gz
exim-postscript-n.nn.tar.gz
exim-texinfo-n.nn.tar.gz

Эти tar-файлы содержат только директорию “doc”, а не полный дистрибутив, и также доступны в форматах “.bz2” и “.gz”. FAQ доступен для загрузки в двух различных форматах:

exim4/FAQ.txt.gz
exim4/FAQ.html.tar.gz

Первый из них - один файл ASCII, в котом можно искать текстовым редактором. Второй - директория с HTML файлами, к которой можно обратиться начиная с файла “index.html”. HTML-версия FAQ (которая также включена в тарболл с HTML-документацией), включает индекс по ключевым словам, который часто является самым удобным средством поиска.

Список пожеланий

Список пожеланий поддерживается, он содержит идеи представленных новых возможностей. Время от времени файл экспортируется на FTP-сайт в файл “exim4/WishList”. Элементы удаляются из списка по мере их реализации.

Материалы содействия

На FTP-сайте есть директория с именем “Contrib”, содержащая разные файлы, внесённые в сообщество exim`a его пользователями. Также есть коллекция примеров конфигурации в “exim4/config.samples.tar.gz”. На эти примеры ссылаются из FAQ.

Ограничения

  • Exim спроектирован для использования как интернет-MTA, и поэтому обрабатывает адреса только в формате доменов по RFC2822. Он не может обрабатывать адреса UUCP с восклицательными знаками, хотя простые двухкомпонентные адреса с восклицательными знаками могут быть конвертированы конфигурацией перезаписи адресов. Это ограничение не препятствует привязке exim`a, через интерфейс, к UUCP, как транспортного механизма, при условии, что используются адреса доменов.
  • Exim настаивает на прикреплении каждому обрабатываемому адресу домена. Для входящих локальных сообщений, адреса без домена автоматически квалифицируются (дополняются доменом - прим. lissyara) сконфигурированным значением домена. Опции конфигурации определяют, от каких удалённых систем неквалифицированные адреса являются допустимыми. Тогда они квалифицируются по прибытию.
  • Единственные внешние транспортные механизмы, реализованные на данный момент, это SMTP и LMTP по сети TCP/IP (включая поддержку IPv6). Однако, доступен транспорт pipe, и есть средства для записи сообщений в файлы и трубы (pipe), опционально в пакетном SMTP-формате; эти средства могут использоваться для отсылки сообщений другим транспортным механизмам, типа UUCP, если они могут обработать адреса в доменном стиле. Также обслуживается пакетный SMTP-ввод.
  • Exim не спроектирован для хранения почты для хостов соединяющихся по модему. Когда объём такой почты является большим, то лучше доставить сообщения в файлы (т.е. убрать из очереди exim`a) и впоследствии передать её, дозванивающимся хостам, другими средствами.
  • Хотя exim имеет базовые возможности для сканирования входящих сообщений, они не являются достаточно полными для полной проверки на вирусы и спам. Такие операции лучше осуществлять используя пакеты сторонних программ. Если вы скомпилите exim с контентным сканированием, то поддержится множество сканеров прямо на интерфейсах.

Рабочая (выполняемая) конфигурация

Рабочая конфигурация exim`a находится в одном текстовом файле, разделённом на множество секций. Вхождения, в этом файле, состоят из ключевых слов и значений, в стиле конфигуреционного файла Smail 3. Дефолтовый конфигурационный файл, поставляемый с дистрибутивом, подходит для простых вариантов, и описан далее, в разделе 7.

Интерфейс вызова

Как и множество других MTA, exim принял интерфейс командной строки sendmail, таким образом, чтобы он мог быть прямой заменой для “/usr/lib/sendmail” или “/usr/sbin/sendmail” при отправке почты, но вы не нуждаетесь в каких-либо знаниях о sendmail для запуска exim. Для других действий, кроме отсылки почты, также существуют sendmail-совместимые опции, но те, которые производят вывод (например, “-bp”, которая выводит сообщения находящиеся в очереди) делают это в собственном формате exim`a. также есть дополнительные опции, совместимые с Smail 3, и некоторые будущие опции, являющиеся новыми в exim`e. раздел 5 документирует все опции командной строки exim. Из этой информации автоматически составляется man-страница, являющаяся частью дистрибутива exim.

Управление сообщениями, находящимися в очереди, может осуществляться через привилигированные опции командной строки. Также, существует дополнительная программа, называющаяся eximon, отображающая информацию в иксах (X window), и содержащая графический интерфейс к административным опциям командной строки exim.

Терминология

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

Когда сообщение не может быть доставлено, то обычно, оно возвращается отправителю в виде сообщения об ошибке доставки, или “сообщения о недоставке” (“non-delivery report” - NDR). Для этого действия, обычно, используется термин “рикошет” (“bounce”), и отчёты об ошибках часто называют “рикошетами” (“bounce messages”). Это - короткая запись “ошибочного сообщения о неудаче доставки” (“delivery failure error report”). У этих сообщений пустой адрес отправителя в “конверте” (“envelope” - смотрите ниже) сообщения, для того чтобы гарантировать, что они не станут причинами будущих рикошетов.

Термин “по-умолчанию” (“default”) часто появляется в этом руководстве. Он используется для определения значения, использующегося при отсутствии настроек (этой конкретной опции - прим. lissyara) в конфигурационном файле. Оно, также, может задать действие выполняемое при условии, что в конфигурационном файле не указано иное.

Термин “отсрочка” (“defer”, иногда - задержка) используется когда доставка сообщения адресату не может быть осуществлена немедленно, по каким-либо причинам (хост может быть в дауне, или переполнен локальный почтовый ящик пользователя). Такие доставки “отсрочиваются” (“deferred”, или - задерживаются) до более позднего времени.

Слово “домен” (“domain”) иногда используется для обозначения всего, кроме первого компонента имени хоста. Это не используется здесь в этом смысле, в данном документе, обычно, оно означает часть e-mail адреса, следующую за символом “@”.

Сообщение, находящееся в пути, имеет привязанный “конверт” (“envelope”), также как заголовок и тело. Конверт содержит адрес отправителя (тот, кому будут доставляться рикошеты), и любое число адресов получателей. Ссылки на отправителя, или получателей сообщения, обычно означают адреса в конверте. MTA использует эти адреса для доставки, и для возвращения рикошетов, а не адреса фигурирующие в строках заголовков.

Заголовок” (“header”) сообщения - это первая часть текста сообщения, состоящая из множества строк, каждая из которых имеет имя, типа “From:”, “To:”, “Subject:” и т.п. Длинные строки заголовка могут быть разрезаны на несколько строк, с выравниванием продолжений. Заголовок отделён от тела пустой линией.

Термин “локальная часть” (“local part”), взятый из RFC2822, используется для того, чтобы обозначить часть адреса электронной почты, предшествующую символу “@”. Часть следующая за “@”, называется “домен” (“domain”) или “почтовый домен” (“mail domain”).

Термины “локальная доставка” (“local delivery”) и “удалённая доставка” (“remote delivery”) используются для различения доставки в файл или трубу (pipe) на локальном хосте, от доставки по SMTP через TCP/IP, на другой хост. Все хосты, кроме того на котором запущен exim, считаются “удалёнными” (“remote”).

Термин “Обратный путь” (“Return path”) - другое имя использующееся для адреса отправителя, в конверте сообщения.

Термин “очередь” (“queue”) используется для того, чтобы ссылаться на сообщения ожидающие доставки, этот термин широко используется в контексте MTA. Однако в случае exim, действительность больше походит на объединение (ещё можно перевести как пруд, водоём, и т.п. - прим. lissyara), потому что обычно нет упорядочивания ожидающих сообщений.

Термин “обработчик очереди” (“queue runner”) используется для описания процесса, просматривающего очередь и пытающегося доставить те сообщения, у которых наступило время доставки. Этот термин используется и в других MTA, и также имеет отношение к команде “runq”, но в exim, обычно, ожидающие сообщения обрабатываются в непредсказуемом порядке.

Термин “директория подкачки” (“spool directory”) используется как директория, в которой exim сохраняет сообщения своей очереди - т.е. те, которые находятся в процессе доставки. Это не должно путаться с директорией, в которой хранятся локальные почтовые ящики, и которую некоторые люди также называют “spool directory”. В документации exim, слово “spool” всегда используется в первом смысле.


translated by lissyara