Все о почте





Почтовый сервер Exim: "Я не Sendmail, я иной"

Автор Арсений Чеботарев   
09.11.2006 г.
Оглавление
1. Почтовый сервер Exim: "Я не Sendmail, я иной"
2. Глобальные параметры
3. Транспорты, Директоры и Маршрутизаторы
4. Списки рассылки и виртуальные сервера

Организация списка рассылки

Драйвер forwardfile может быть использован для организации несложных списков рассылки, например так:

rassylka:
driver = forwardfile
domains = comizdat.lan
no_more
file = /opt/lists/$local_part
no_check_local_user
forbid_pipe
forbid_file
errors_to = $Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
 

В этом примере имя получателя служит переключателем списков рассылки, то есть письмо, посланное по адресу Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script , будет разослано по списку /opt/lists/list1. Если такой файл не найден, то, согласно опции no_more, обработка сообщения будет прекращена и сообщение об ошибке будет направлено по адресу Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script Опции с префиксом forbid отменяют расширение имен адресатов до имени файла или канала; no_check_local_user отменяет проверку прав файла. Если нужно прикрыть рассылку, сделав ее доступной только для определенных пользователей, можно добавить следующие параметры:

require_files =/opt/lists/$local_part
senders = lsearch;/opt/lists/$local_part

Настройка виртуальных серверов

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

local_domains = comizdat.lan: dbm;/etc/virtual_hosts

DBM файл можно "изготовить" из обычного текстового файла посредством команды exim_dbmbuild.

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

Настоящий виртуальный домен может быть получен как с модификацией конверта, так и без такового. Первый метод описывается таким директором:

virtual:
driver = aliasfile
domains = dbm;/etc/mail/domains
no_more
file = /etc/mail/$domain
search_type = lsearch

После подстановки псевдонима письмо получит новый конверт и начнет новый цикл доставки. Проверка доменов гарантирует, что будут "перелицованы" только определенные домены.

Формирование списков

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

  • полным именем домена, как abc.domain.com;
  • именем с подстановочными знаками * (*. domain.com);
  • именем с префиксом!, что обозначает "все, кроме указанных", (!*.domain.com);
  • абсолютным именем файла, который содержит в каждой строке отдельный элемент списка, который, в свою очередь, может быть одним из перечисленного, то есть содержать метасимволы - и так далее (например: /etc/mail-redirection-allowed);
  • одиночным вхождением символа @ (обозначает имя компьютера, как указано в primary_hostname. Таким образом, файл конфигурации можно скопировать с одного компьютера на другой без модификации);
  • строкой, начинающейся с ^ (обозначает регулярное выражение в терминах языка perl. Если доменное имя подходит под это условие (вызывает совпадение), то считается, что такое имя входит в список);
  • если в качестве префикса стоит один из методов поиска по одному ключу, а остальная часть - имя файла, по которому нужно осуществить поиск, то имя домена ищется в указанном файле. И если оно там найдено, считается, что оно входит в список: local_dоmains=cdb;/etc/mail/local_domains.cdb;
  • аналогично для методов доступа, основанных на запросах, строка должна содержать метод и запрос: mysql;select dom from domains where dom='$key';
  • все перечисленные методы могут быть использованы одновременно, результат их выполнения будет учтен в порядке упоминания - так что ставьте более быстрые и более вероятные варианты ближе к началу списка.

Сложный список может выглядеть, например, так:

[email protected]: comizdat.com: *.comizdat.ua:
^[1-2]\d {3}\.fict\.book$: \ dbm;/etc/exim/locals/: nis;domains.byname: \
nisplus;[name=$key,status=local],domains.org_dir

Программное управление доставкой

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

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

OUR_DOMAIN=comizdat.lan
primary_hostname=mail.OUR_DOMAIN
qualify_domain=OUR_DOMAIN
local_domains=localhost: OUR_DOMAIN

Аналогично подстановке макро существует множество встроенных (зарезервированных) переменных, которые автоматически принимают значения в контексте обрабатываемого почтового сообщения. Кто знаком с программированием веб-приложений, тот встречался с подобной техникой. Синтаксически встроенные переменные обозначаются знаком $, и в случае, если их нужно отделить от окружающего текста, заключаются в фигурные скобки - например, ${domain} обозначает домен назначения текущего письма.

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

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

Как всегда, используя мощные инструменты, будьте внимательны. Не рассчитав силы вычислительной системы, можно несколькими строками конфигурации (например, прямыми и обратными проверками по DNS) значительно удорожить и замедлить доставку.

В любом случае, попробуйте - возможно, это именно то, что вам нужно.


Арсений Чеботарев

Официальный сайт почтового сервера Exim - http://www.exim.org



 
« Настройка почтового сервера MDaemon   Связка IMAP imapfilter MUA вместо fetchmail procmail mutt »

Какой формат писем вы предпочитаете?




Форум

Mail.Ru будет продавать баннеры по телев...
Касательно "соединения" в одной рекламной кампании ТВ и интернет-рекла...
Автор: Последние новости
[email protected]:37
Mail delivery failed: returning message ...
Здравствуйте. Не знал в какую тему писать, не частый гость на форумах....
Автор: timat
[email protected]:52
Mail.Ru продаст медийку за контакт
Mail.Ru продаст медийку за контакт Интернет-компания будет размещать б...
Автор: Последние новости
[email protected]:46
есть ли быстрый фильтр по папкам?
куда такой ког можно вставить?
Автор: timat
[email protected]:01
«Биржевой лидер»: Mail.ru вводит поиск л...
Единственным отличием было то, что людей можно было искать только в со...
Автор: Последние новости
[email protected]:38
Поиск Mail.ru научился искать людей в со...
В настоящее время поиск по пользовательским профилям осуществляется в ...
Автор: Последние новости
[email protected]:24
Поиск Mail.ru распространят на социальны...
По сообщению источника, на стартовом варианте новой функции можно буде...
Автор: Последние новости
[email protected]:52
Mail.ru, как и "Яндекс", научи...
Аналогичная функция есть и в Яндексе. Наряду с вертикалью в основном п...
Автор: Последние новости
[email protected]:59
© 2006-2022 AboutMail.ru