Настройка Exim
🕛 03.08.2009, 19:25
Сервер Exim применяется по умолчанию в Debian GNU/Linux и пользуется умеренной популярностью. Данный сервер можно использовать и с другими пакетами. Так, например, Exim поставляется в составе расширения PowerTools системы Red Hat, поэтому его достаточно легко установить в Red Hat и других подобных дистрибутивных пакетах. Подобно sendmail, Exim представляет собой единую программу, но формат конфигурационного файла Exim сравнительно прост. Exim обладает приблизительно такими же возможностями, как и sendmail; в данном разделе рассматриваются некоторые из них, например, маскировка адресов, обработка писем, адресованных в разные домены, и использование режима ретрансляции почты.Поскольку Exim является сервером по умолчанию только для Debian, в данном нл^и разделе в основном принимается во внимание конфигурация данного сервера, устанавливаемая в системме Debian. В других системах для Exim может быть
по умолчанию выбрана другая конфигурация.
Конфигурационные файлы Exim
Главный конфигурационный файл Exim называется exim. conf. Обычно он располагается в каталоге /etc. В состав этого файла входят записи, представленные в следующем формате:
опция = значение
Как обычно, строки, содержащие комментарии, начинаются с символа #. Файл exim.conf, который используется в системе Debian, в основном состоит из комментариев, поясняющих назначение каждой записи. Комментарии существенно упрощают редактирование конфигурационного файла.
СОВЕТ При инсталляции Exim в системе Debian запускается сценарий с именем ^ eximconfig, в процессе выполнения которого генерируется файл exim.conf. Данный сценарий можно использовать для изменения конфигурации Exim; при этом нет необходимости непосредственно редактировать файл exim.conf.Если вам надо внести лишь незначительные изменения в конфигурацию системы, удобнее модифицировать exim. conf вручную, так как при использовании eximconf ig приходится отвечать на целый ряд вопросов. Во многих случаях eximconf ig может оказаться очень полезным инструментом, в особенности если вы мало знакомы со структурой конфигурационного файла Exim. В частности, данный сценарий помогает выбрать значения опций, наиболее подходящие для вашей системы.
Помимо exim. conf, Exim использует в качестве источников дополнительной информации другие файлы. Файлы, применяемые данным сервером в системе Debian, перечислены ниже.
- /etc/aliases. Этот файл выполняет те же функции, что и аналогичный файл sendmail. Он позволяет связать две учетные записи так, что письмо, адресованное одному пользователю, будет направлено другому. Например, если в этом файле присутствует запись root: amelia, то письмо, адресованное root, получит пользователь amelia. В файле aliases можно также указывать адреса, не принадлежащие локальным пользователям. Например, наличие записи root: amelia@ pangaea.edu приведет к тому, что письмо, принятое для локального пользователя root, будет перенаправлено по адресу amelia@pangaea.edu. В отличие от sendmail, в сервере Exim файл aliases не преобразовывается в двоичный формат.
- /etc/email-addresses. Записи в этом файле используются для изменения содержимого полей From: в заголовках исходящих сообщений. Например, наличие записи ben: bfranklin@pangaea.edu приведет к тому, что письмо, отправленное с локального компьютера пользователем ben, придет к получателю как сообщение отbfranklin@pangaea .edu.
Сценарий eximconf создает в файле /etc/aliases записи, посредством которых почта, адресованная postmaster перенаправляется root, а письма, непосредственно направленные root, будут переданы пользователю, которого вы укажете. Содержимое описанных выше файлов можно удалять или модифицировать, а при необходимости вы можете включать в эти файлы новые записи. Файл /etc/email-addresses, создаваемый по умолчанию в системе Debian, содержит лишь комментарии.
Маскировка адресов
Как было сказано ранее, вам может потребоваться, чтобы в сообщениях вместо имени, возвращаемого по команде hostname, отображалось другое имя узла или домена. Основные средства маскировки адресов включаются посредством опции qualify_domain. С помощью данной опции задается имя домена. Если почтовая программа не сгенерирует информацию об адресе, имя домена будет автоматически включено в сообщение. Предположим, что в файле exim. conf присутствует следующая запись:
qualify_domain = threeroomco.com
Если пользователь ben отправит письмо, а программа, с помощью которой это письмо было подготовлено, не укажет в поле From: имя домена, то Exim добавит имя threeroomco. com. Если доменное имя адреса не соответствует имени threeroomco. com, то Exim заменит адрес. Таким образом, содержимое поля From: будет выглядеть так: ben@threeroomco.com.
Еще одна опция, которую можно использовать для маскировки адресов, называется primary_hostname. Она применяется подобно qualif y_domain, и ее значение принимается в качестве значения по умолчанию для qualify_domain. Значение primary_hostname используется при переговорах о взаимодействии Exim и удаленного сервера имен. Имя, задаваемое посредством данной опции, применяется при формировании заголовка Received:.
Для более сложной маскировки адресов применяется файл /etc/email- addresses. Строго говоря, на файл /etc/email-addresses ссылается запись, расположенная в конце конфигурационного файла exim. con f. Эта запись имеет следующий вид:
*@threeroomco.com ${lookup{$1}lsearch{/etc/email-addresses}\
{$value}fail} bcfrF
Это одна из наиболее сложных записей, содержащихся в файле exim. conf. При настройке сервера не следует редактировать ее, допустимо лишь изменить имя домена в начале строки. С помощью данной записи Exim проверяет каждый адрес на принадлежность
домену threeroomco. com, а затем использует файл /etc/email-addresses для замены адреса. В первом поле записи, содержащейся в файле /etc/email-addresses (перед двоеточием), указывается почтовый адрес, предназначенный для сравнения, а во втором поле (после двоеточия) - адрес для замены. Данное средство позволяет выполнять маскировку для каждого пользователя; чтобы сделать это, достаточно лишь отредактировать файл email-addresses. При необходимости вы можете обрабатывать письма из разных доменов. Для этого надо либо продублировать приведенную выше запись в exim. conf, либо включить всю информацию, необходимую для замены адресов, в один файл email-addresses.
В данном разделе рассмотрены лишь некоторые средства маскировки адресов, предоставляемые Exim. Дополнительную информацию по этому вопросу вы можете получить в документации на Exim, обратившись по адресу http: //www. exim. org/exim-html-3.30/doc/html/spec_34.html.
Настройка Exim для приема почты
В конфигурационном файле exim. conf предусмотрены различные опции, позволяющие указать серверу, следует ли интерпретировать адрес как локальный. Эти опции кратко описаны ниже.
- local_domains. В качестве значения данной опции задается список доменных имен, разделенных двоеточиями. Эти имена Exim должен интерпретировать как локальные. Например, запись local_domains = localhost: threeroomco. com сообщает Exim о том, что адреса localhost и threeroomco.com являются локальными и письма, в которых они указаны, необходимо непосредственно доставлять пользователям. По умолчанию значение данной опции принимается равным значению qualif y_recipient. Опция qualify_recipient задает имя узла для входящих сообщений, в которых такая информация отсутствует.
- local_domains_include_host. Если значение данной опции равно true, Exim принимает письма, в адресе которых указано имя компьютера. Тот же результат можно получить, добавив имя узла к списку local domains.
- local_domains_include_host_literals. Если значение данной опции равно true, Exim принимает письма, в которых указан IP-адрес компьютера. Например, если Exim выполняется на компьютере с адресом 172.24.98.2 и на этом компьютере имеется учетная запись пользователя ben, Exim примет письмо с адресом ben@ [172.24.98.2]. Если вы не хотите, чтобы подобные письма обрабатывались сервером, необходимо установить значение false опции local_domains_ include_host_literals.
Сценарий eximconfig устанавливает эти опции исходя из ответов администратора на вопросы о домене, для которого необходимо принимать письма. Таким образом, если вы внимательно отнесетесь к вопросам, задаваемым данным сценарием, вы обнаружите, что необходимые для вас значения опций уже установлены.
Конфигурация Exim для ретрансляции писем
Подобно sendmail, в сервере Exim предусмотрен ряд опций, предназначенных как для ретрансляции писем, переданных другими программами, так и для использования
в качестве ретрансляторов других серверов. Сценарий eximconfig задает администратору вопросы, касающиеся ретрансляции писем, и в большинстве случаев устанавливает приемлемую конфигурацию сервера. Уточнить настройку Exim можно с помощью непосредственного редактирования файла exim conf.
Настройка Exim для работы в режиме ретранслятора
Основные опции exim conf предназначенные для реализации режима ретрансляции писем, описаны ниже.
- host_accept_relay. Для того чтобы сервер Eximог ретранслировать письма, переданные определенными компьютерами, вам надо указать в качестве значения данной опции их адреса (адреса отделяются друг от друга двоеточиями). В конфигурационном файле должно быть как минимум указано выражение host_accept_ relay = localhost, позволяющее Exim передавать письма, подготовленные локальными почтовыми программами. По мере расширения списка (в котором могут быть указаны доменные имена, IP-адреса, а также использоваться символы групповых операций) увеличивается число компьютеров, которым позволено пользоваться услугами сервера для передачи почты. Например, выражение host_accept_ relay = localhost: 192 .168. 99 . 0/24 :* . pangaea.edu указывает на то, что письма для передачи должны приниматься с локального узла, со всех узлов сети 192.168.99.0/24, а также со всех компьютеров домена pangaea. edu. Использование данной опции для указания IP-адресов компьютеров, принадлежащих домену, - один из самых безопасных способов обеспечения ретрансляции писем.
- relay domains. В качестве значения данной опции можно указать одно или несколько имен доменов, разделенных двоеточиями. В результате сервер Exim будет обрабатывать письма, направленные с любого компьютера, принадлежащего указанным доменам. Эта опция полезна тогда, когда необходимо, чтобы сервер обслуживал несколько доменов или один большой домен. Аналогичных результатов можно добиться, включая символ групповой операции (*) в имена, задаваемые в качестве значения опции host_accept_relay.
- relay_domains_include_local_mx. Если вы зададите значение yes данной опции, доступ к почтовому серверу автоматически получат компьютеры, указанные в записях MX серверов DNS. Такой подход очень удобен, так как избавляет от необходимости перенастраивать Exim при изменении конфигурации домена. Однако в этом случае повышается опасность использования сервера спамерами, которые имеют возможность управлять доменом и включать в конфигурационный файл сервера DNS записи MX.
- sender_address_relay. В качестве значения данной опции задается список почтовых адресов, разделенных двоеточиями, для которых разрешено использование сервера в качестве ретранслятора. В обычных условиях письмо должно соответствовать как значению данной опции, так и адресу узла, указанному с помощью опции host_accept_relay. (Вы можете задать проверку на соответствие любой из этих опций, включив в конфигурационный файл выражение relay_match_ host_or_sender = yes, но такая конфигурация опасна для системы, так как почтовый адрес легко подделать.) Данную опцию можно применить для того, чтобы ограничить круг пользователей, имеющих право использовать сервер в качестве ретранслятора.
Приведенные здесь опции позволяют настроить Exim для работы в режиме ретранслятора и указать, какие компьютеры локальной сети или внешних доменов имеют право доступа к данному серверу. Данные опции позволяют решать большинство задач по обеспечению ретрансляции почты. Если же вам необходимо установить специальную конфигурацию сервера, вы можете воспользоваться дополнительными опциями, например, host_auth_accept_relay (которая выполняет аутентификацию удаленной системы перед ретрансляцией писем) и tls_host_accept_relay (которая требует, чтобы удаленная система использовала средства аутентификации и кодирования TLS).
Настройка Exim для передачи почты через ретранслятор
Если ваш почтовый сервер должен передавать почту через ретранслятор, его надо настроить соответствующим образом. В конфигурационном файле Exim не предусмотрена специальная опция, позволяющая решить эту задачу, однако сценарий eximconfig генерирует набор записей, обеспечивающих необходимые установки. Опции, созданные с помощью eximconfig, выглядят следующим образом:
smarthost:
driver = domainlist
transport = remote_smtp
route_list = "* franklin,threeroomco. com bydns_a" end
Приведенная выше группа записей сообщает Exim о том, что письма, адресованные внешним пользователям, надо передавать через узел franklin. threeroomco. com. Чтобы использовать другой ретранслятор, надо изменить значение соответствующей опции.
Настройка Exim для противодействия распространению спама
В сервере Exim предусмотрен набор правил фильтрации. С помощью этих правил вы можете задавать адреса узлов, которым должна быть запрещена передача писем, указывать пользователей, от которых почта не должна приниматься, а также выполнять другие проверки на основе самых разнообразных критериев. Основные опции фильтрации описаны ниже.
- host_reject. Данная опция задается в конфигурационном файле exim. conf. Ее значение представляет собой список имен узлов и доменов, а также IP-адресов, разделенных двоеточиями. Почта, переданная с компьютеров, указанных посредством данной опции, должна блокироваться. Например, запись host_reject = * .badspammer.net: 10 .16. 8 . 0/24 указывает на то, что письма из домена badspammer. net, а также из сети 10.16.8.0/24 должны отвергаться. Система отказывается взаимодействовать с удаленным компьютером, заданным с помощью опции host_re j ect, уже на этапе установления соединения. В результате удаленный компьютер предпринимает повторные попытки обращения к вашему серверу, но связанная с этим дополнительная нагрузка на линии связи и компьютеры небольшая.
- host_reject_recipients. Данная опция действует так же, как иhost_ reject, но почтовые сообщения отвергаются лишь в процессе взаимодействия с удаленной программой, в частности, в тот момент, когда она передает команду RCPT ТО:, В результате попытки пересылки писем немедленно прекращаются.
- sender_reject. Данная опция блокирует письма от указанных отправителей. Роль отправителя может выполнять либо целый домен, либо отдельный пользователь в домене. Например, опция sender_re j ect = spammer@abigisp.com: badspammer. net указывает на то, что письма из домена badspammer. net и от пользователя spammer@abigisp.comдолжны отвергаться. Сервер Exim прекращает взаимодействие сразу же, как только сможет идентифицировать отправителя. В некоторых случаях это приводит к повторным попыткам передачи сообщений, предпринимаемым удаленными программами.
- sender_reject_recipients. Данная опция действует подобно опции sender_reject, но взаимодействие с удаленным компьютером прекращается после того, как выполняющаяся на нем программа укажет адрес получателя, т. е. передаст команду RCPT ТО:. Данный подход более эффективен по сравнению с использованием опции sender re j ect, так как при этом удаленная система больше не предпринимает попыток передачи сообщений.
- Фильтры, определяемые пользователем. Сервер Exim предоставляет пользователям возможность создавать собственные фильтры. Для их формирования используются файлы . forward, находящиеся в рабочих каталогах пользователей. Возможность создания новых фильтров превращает Exim в чрезвычайно мощный и гибкий инструмент. Фильтры, определяемые пользователем, во многом похожи на фильтры Procmail, которые будут рассматриваться далее в этой главе. Подробное описание средств создания пользовательских фильтров содержится файле filter.txt. gz, который поставляется в составе Exim. В Debian GNU/Linux этот файл располагается в каталоге /usr/doc/exim; распаковать его можно с помощью утилиты gunzip.
Если вам необходимо задать длинный список отправителей, письма от которых не должны приниматься, вы должны указать их в отдельном файле, а ссылку на этот файл задать в качестве значения соответствующей опции. Помимо перечисленных выше средств, в сервере Exim также предусмотрен ряд опций, предназначенных для работы со списками IP-адресов. Эти опции, располагающиеся в файле exim. conf, кратко описаны ниже.
- rfcrt^domains. Значением этой опции является перечень адресов серверов, поддерживающих списки IP-адресов (эти серверы описаны в табл. 19.1). Адреса серверов разделяются двоеточиями и могут сопровождаться последовательностями символов /warn или /reject. Значение /warn указывает серверу Exim на то, что он должен добавить поле заголовка с предупреждающим сообщением (который впоследствии может быть использован фильтром Procmail), a /re j ect означает, что письмо должно быть отвергнуто. Кроме того, в составе данной опции могут также использоваться последовательности символов /accept (формирование "белого списка") и /skiprelay (если домен отправителя указан в опции host_accept_relay, то список IP-адресов не должен использоваться).
- rbl hosts. По умолчанию принимается значение * данной опции; оно указывает на то, что сервер должен проверять все узлы, с которыми он взаимодействует, на соответствие спискам IP-адресов, указанных посредством опции rbl_doraains. При необходимости вы можете освободить некоторые серверы от этой проверки. Чтобы сделать это, вам надо указать их имена перед символом *; каждому имени должен предшествовать символ !. Например, выражение rbl hosts = lok.pangaea. edu: * освобождает ok. pangaea. edu от проверки на принадлежность спискам IP-адресов.
- rbl_reject_recipients. Последовательности символов /warn и /reject в составе значения опции rbl_domains указывают, следует ли добавить к письму поле заголовка с предупреждающим сообщением или отказаться от получения письма. Если эти последовательности не указаны, Exim по умолчанию отказывается от письма. Изменить поведение сервера позволяет опция rbl_re ject_recipients. Если вы зададите в конфигурационном файле выражение rbl_reject_ recipients = no, Exim будет по умолчанию добавлять в заголовки писем предупреждающие сообщения.
- recipients_reject_except. Данная опция позволяет задавать исключения из списков IP-адресов. Например, если указана опция recipients_reject_ except = postmaster@threeroomco. com, сервер Exim будет получать письма, адресованные пользователю postmaster@threeroomco.com, даже в том случае, если они были отправлены с компьютера, указанного в списке IP-адресов.
Дополнительную информацию об опциях, предназначенных для работы со списками IP-адресов, вы найдете в документации, поставляемой в комплекте с сервером Exim. Помимо опций, рассмотренных выше, Exim поддерживает дополнительные опции, имеющие лишь косвенное отношение к борьбе со спамом. Эти опции перечислены ниже.
- headers_check_syntax. Exim может проверить формат сообщений и отвергнуть их, если они составлены некорректно. Серверы некоторых спамеров неправильно формируют заголовки, поэтому, отвергая подобные сообщения, вы избавляетесь от писем с рекламными сообщениями. Чтобы сервер блокировал некорректно составленные письма, необходимо задать значение true опции header s_check_syntax.
- helo_verify. В процессе взаимодействия по протоколу сервер SMTP передает команду HELO или EHLO, указывая в ее составе свое имя. Обычно Exim не требует этой команды, но при необходимости вы можете задать список узлов, которые должны соблюдать все правила взаимодействия серверов. Так, например, выражение helo_verif у = * указывает, что все удаленные серверы должны строго следовать протоколу обмена. Опция helo_verif у не только требует передавать команду HELO или EHLO, но также включает проверку соответствия IP-адресов доменным именам. Системы спамеров часто бывают неверно сконфигурированы, поэтому передаваемые ими письма не выдерживают подобной проверки. Однако следует учитывать, что серверы, с которых поступают обычные письма, также бывают некорректно настроены. В этом случае будут потеряны нужные вам сообщения.
- message_size_limit. Данная опция также имеет лишь отдаленное отношение к борьбе со спамом, но с ее помощью можно избавиться от некоторых рекламных сообщений. По умолчанию устанавливается значение 0 опции message_size_
limit, которое отменяет ограничения на размер писем. Если вы зададите положительное значение данной опции, оно будет определять максимальный размер письма. Это предотвратит получение рекламных сообщений большого объема.
Средства фильтрации сообщений, предоставляемые Exim, и в особенности фильтры, определяемые пользователем, позволяют настроить систему в соответствии с вашими потребностями.