Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sistema_TCP.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
603.97 Кб
Скачать

34. Почтовый агент Postfix

Постфикс — популярная альтернатива программе sendmail. Вице Венема (Wietse Venema) начал работу над проектом Postfix в 1996 году, когда проводил годичный творче­ ский отпуск в Исследовательском центре им. Т. Дж. Уотсона компании IBM (Т. J. Watson Research Center), и до сих пор активно работает над ним. Целью разработки програм­ мы Postfix является не только безопасность (хотя это ее первоочередная и самая главная цель!), но и реализация политики распространения открытого программного обеспече­ ния, высокое быстродействие, надежность и гибкость. Все основные дистрибутивные пакеты системы Linux включают Postfix, а начиная с версии 10.3 система Mac OS X по умолчанию оснащается почтовой системой Postfix, а не sendmail.

Более подробно регулярные выражения описаны в разделе 2.3.

О системе Postfix следует знать два самых важных факта: во-первых, она поставляет­ ся в практически работоспособном виде (простейшие файлы конфигурации состоят из одной-двух строк) и, во-вторых, эффективно использует ассоциативные массивы регу­ лярных выражений для фильтрации почты, особенно в сочетании с библиотекой PCRE (Perl Compatible Regular Expression). Система Postfix совместима с программой sendmail в том смысле, что файлы aliases и .forward системы Postfix имеют тот же формат и семантику, что и аналогичные файлы в системе sendmail.

Система Postfix поддерживает протокол ESMTP. Кроме того, поддерживаются вирту­ альные домены и фильтрация спама.

Для перезаписи адресов система Postfix использует поиск в таблицах, которые мо­ гут быть записаны в обычных файлах или в форматах Berkeley DB, DBM, LDAP, NIS, NetInfo и SQL. Кроме того, система Postfix поддерживает протокол почтового фильтра программы sendmail, поэтому ее функционирование можно легко настроить с помощью множества открытых почтовых фильтров (внешних программ, решающих специальные задачи в ходе сеанса SMTP; см. раздел 20.6).

Архитектура системы Postfix

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

Запуск системы Postfix и слежение за всеми ее процессами выполняет программа master. В ее конфигурационном файле, master.cf, перечислены все вспомогатель­ ные программы, а также информация о том, как они должны запускаться. Значения, по умолчанию установленные в этом файле, удовлетворяют большую часть потребностей пользователей, так что изощряться не обязательно. В основном, приходится отключать программы, например smtpd, которые клиент не должен прослушивать на порту SMTP.

Самые важные серверные программы, вовлеченные в доставку электронной почты, показаны на рис. 20.4.

Глава 20. Электронная почта 877

Рис. 20.4. Серверные программы системы Postfix

Получение почты

Программа smtpd получает почту, поступающую в систему через сервер SMTP. Она также проверяет, имеют ли право клиенты, установившие соединение, отправлять по­ чту, которую они пытаются доставить. Если электронная почта послана локально с по­ мощью программы /usr/lib/sendmail, то файл записывается в каталог /var/spool/ postfix/maildrop. Этот каталог периодически сканируется программой pickup, об­ рабатывающей любой найденный новый файл.

Вся входящая почта проходит через программу cleanup, которая добавляет пропу­ щенные заголовки и перезаписывает адреса в соответствии с таблицами canonical и virtual. Прежде чем вставить сообщение в очередь входящих сообщений, программа cleanup передает его программе trivial-rewrite, которая выполняет небольшое ре­ дактирование адресов, например добавляет почтовый домен к не полностью заданным адресам.

Управление почтовыми очередями ожидания

Программа qmgr управляет пятью очередями, содержащими почту, ожидающую до­ ставки.

incoming — поступающая почта

active — доставленная почта

deferred — почта, доставка которой завершилась неудачей

hold — почта, заблокированная в очереди администратором

corrupt — почта, которую невозможно прочитать или проанализировать 
Менеджер очереди обычно выбирает следующее сообщение для обработки, руко­ водствуясь простой стратегией FIFO, но помимо нее он также поддерживает сложный алгоритм приоритетного обслуживания, который среди всей массы сообщений отдает предпочтение сообщениям, направленным избранным получателям. 
Для того чтобы не перегружать узел, предназначенный для получения почты, осо­ бенно после его выхода из строя, система Postfix использует алгоритм медленного пуска, управляющий скоростью доставки почты. 
Отложенная почта получает временную метку о повторной доставке, которая имеет экспоненциальное затухание, чтобы не затрачивать ресурсы на недоставленные сообще­ ния. Избежать излишних попыток доставить почту, которую невозможно доставить, по­ зволяет кеш статуса.

878 Часть II. Работа в сети

Отправка сообщений

Программа qmgr с помощью программы trivial-rewrite решает, куда следует по­ слать сообщение. Вместо решений, принимаемых программой trivial-rewrite, мож­ но использовать поиск в таблицах (transport_maps).

Доставка почты удаленным узлам через сервер SMTP выполняется программой smtp. Программа lmtp доставляет почту, используя протокол LMTP (Local Mail Transfer Protocol), определенный в документе RFC2033. Протокол LMTP основан на протоколе SMTP, но был модифицирован так, что почтовый сервер не обязан управлять почтовой очередью. Этот обработчик почты очень полезен для доставки сообщений на почтовые серверы, такие как Cyrus IMAP.

Программа local предназначена для локальной доставки электронной почты. Она находит адреса в таблице aliases и следует инструкциям, указанным в файлах полу­ чателя .forward. Сообщения пересылаются на другой адрес, передаются внешней про­ грамме для обработки или сохраняются в почтовых папках пользователя.

Программа virtual доставляет почту в “виртуальные почтовые ящики”, т.е. в по­ чтовые ящики, не связанные с локальной учетной записью в системе Linux, но имею­ щие корректные адреса.

В заключение программа pipe выполняет доставку посредством внешних программ. Безопасность

Система Postfix обеспечивает безопасность на нескольких уровнях. Большинство серверных программ системы Postfix могут выполняться в окружении, созданном с по­ мощью команды chroot. Это отдельные программы, не имеющие отношений типа “предок-потомок”. Ни одна из них не имеет механизма setuid. Каталог maildrop запол­ няется группой postdrop, для которой программа postdrop установила идентификатор setgid.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]