Опубликован: 21.11.2006 | Доступ: свободный | Студентов: 1811 / 140 | Оценка: 4.09 / 4.00 | Длительность: 38:34:00
Лекция 5:

Протокол SMTP

Программа sendmail

Программа sendmail является прародительницей всех программных пакетов для работы с SMTP. На протяжении многих лет она использовалась в среде UNIX. Ее развитие и поддержку осуществляет sendmail Consortium (http://www.sendmail.org). К моменту издания этой книги текущая версия sendmail была 8.9.3. Версия 8.10 проходит бета-тестирование, и, возможно, вскоре будет доступной, так что наведывайтесь почаще на Web-сайт, где всегда есть свежая информация о новых версиях программы.

Итак, sendmail одно из наиболее мощных программных средств для работы с SMTP. Однако, вследствие универсальности этой программы, ее довольно сложно конфигурировать. К счастью, для работы с ней существует достаточное количество различных руководств и других документов, которые помогут администратору почтовой системы правильно установить и настроить sendmail. В большинство дистрибутивов ОС Linux sendmail входит в качестве основного программного средства для работы с SMTP, когда установлена поддержка этого протокола. В этом случае в системе генерируется универсальный конфигурационный файл, который позволяет серверу на базе ОС Linux принимать и передавать почтовые сообщения по протоколу SMTP при условии, что имеется непосредственное соединение с сетью Internet. Если вам это не подходит, то придется изменить конфигурационный файл sendmail в соответствии со специфическими требованиями.

Конфигурирование sendmail может потребовать некоторой предварительной подготовки. Изданы целые книги лишь про установку и настройку sendmail. Sendmail Consortium открыл специальный Web-сайт для того, чтобы оказывать помощь администраторам систем электронной почты в настройке sendmail и решении проблем, возникающих при ее эксплуатации. Одна из заслуживающих внимания возможностей программы sendmail состоит в том, что она содержит типовой конфигурационный файл и автоматизированную систему для генерации новых конфигураций на его основе. Все, что от вас потребуется, — создать текстовый файл, в котором содержатся необходимые параметры и возможности. В листинге 5.8 представлен пример текстового файла sendmail, который можно использовать для генерации конфигурационного файла.

1 divert(-1)
2 divert(0)dnl
3 include(` ../m4/cf.m4')dnl
4
5 OSTYPE(`linux')
6
7 FEATURE (`allmasquerade')dnl
8 FEATURE (`masquerade_envelope')dnl
9 FEATURE (`always_add_domain')dnl
10 FEATURE(`nodns')dnl
11 FEATURE(`nocanonify')dnl
12 FEATURE(`local_procmail')dnl
13 FEATURE(`uucpdomain')dnl
14
15 MAILER(`smtp')dnl
16 MAILER(`uucp')dnl
17 MAILER(`procmail')dnl
18
19 define(`SMART_HOST', `uucp-dom:mail.isp.net')dnl
Листинг 5.8. Пример описания файла конфигурации sendmail

Когда работа над файлом описания завершена, его необходимо обработать специальной программой-макропроцессором m4. Формат использования программы m4 следующий:

m4 mailhost.m4 > sendmail.cf

По этой команде генерируется конфигурационный файл sendmail.cf с параметрами и возможностями, заданными в файле описания. В "Установка и конфигурирование sendmail" , этот процесс рассмотрен более детально.

Следует отметить также широкое распространение sendmail. Большинство серверов сети Internet работают именно с этой программой, так что при обнаружении каких-либо неполадок или дыр в защите они оперативно устраняются. Так, весной 1999 года в Internet появился широко известный вирус Melissa. Это был типичный макровирус, поражавший документы Microsoft Word. Его распространению способствовало то, что этот вирус, используя программный пакет для обработки почты Microsoft Outlook, посылал свои копии на другие компьютеры, адреса которых находились в адресной книге Microsoft Outlook. Несмотря на то что вирус не оказывал прямого воздействия на программу sendmail, программисты разработали специальный фильтр, который можно включать в конфигурацию sendmail на SMTP-сервере. Этот фильтр сканирует почтовые сообщения, и если в них обнаруживается вирус Melissa, то пересылка аннулируется. Довольно изящно, не правда ли?

Программа qmail

Программный пакет qmail, написанный Дэном Бернстейном (Dan Bernstein), является полноценным заменителем программного пакета sendmail. Основное внимание при его создании уделялось вопросам надежности и безопасности — двум довольно впечатляющим целям. Дэн организовал в Internet свой сервер на базе qmail и объявил приз в $1000 тому, кто сможет взломать его защиту. На момент написания книги никто не обратился за этой премией. Кроме того, в qmail предлагается улучшенный метод помещения корреспонденции в электронные почтовые ящики пользователей с использованием нового формата почтового ящика, более устойчивого к сбоям в системе. Возможно, главным преимуществом qmail является простота конфигурирования. Для ее настройки используются простые текстовые файлы в формате ASCII. Программа qmail является удачным выбором для простого почтового сервера.

Текущая версия qmail — 1.03. В настоящее время пакет qmail пока не входит ни в одну из версий ОС Linux. Если вы решите использовать этот программный пакет, то нужно получить его через Internet с сайта по поддержке qmail по адресу http://www.qmail.org, а затем самостоятельно скомпилировать (но в Linux это только полдела!).

После того как вы получили и скомпилировали пакет, его нужно еще установить. Для поддержки заявленного высокого уровня безопасности программа qmail должна устанавливаться и впоследствии запускаться с определенными идентификатором пользователя и группой. В принципе, программой используется две группы и семь идентификаторов пользователя. Для хранения исходных и конфигурационных файлов программа qmail использует каталог /var/qmail. Если в вашей версии ОС Linux уже установлен пакет sendmail, то необходимо удалить его (или по крайней мере запретить его использование в системе), чтобы программа qmail смогла получить управление TCP-портом для протокола SMTP с целью обработки входящих SMTP-запросов. Программа qmail также устанавливает специальный набор инструкций, в которых описан процесс проверки правильности работы демона qmail при включении и выключении системы.

Программа smail

Пакет smail является реализацией программного обеспечения SMTP, предложенной GNU Project. Как известно, этой организации принадлежит большинство прав на разработку и распространение утилит для ОС Linux. Организация проекта GNU имеет большое количество зеркальных серверов, где анонсируются новые версии smail. На момент написания книги текущей версией этой программы была версия 3.2. Некоторые распространители ОС Linux даже включают smail в виде пакета готового к установке.

Программа smail приобрела популярность среди тех администраторов почтовых систем, которые хотели иметь программный пакет SMTP, совмещающий гибкость sendmail и легкость конфигурирования. В действительности, серверы, на которых используется протокол UUCP для передачи почты, совершают намного больше действий, чем простое добавление доменного имени в конфигурационный файл. Основной конфигурационный файл smail находится в каталоге /usr/lib/smail/config. В листинге 5.9 показан пример конфигурационного файла для smail.

1 #
2 #list all domain names this host will accept mail for
3 hostnames=mail.smallorg.org:smallorg.org:mail
4 #
5 #describe our advertised domain name
6 visible_name=smallorg.org
7 #
8 #identify our default SMTP gateway to the Internet
9 smart_path=mail.isp.net
10 smart_transport=smtp
11 #
12 #list domains we are authoritative for
13 auth_domains=smallorg.org
Листинг 5.9. Пример конфигурационного файла для smail

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

Одна из полезных возможностей smail — ее способность доставлять сообщения немедленно, без помещения их в очередь. Такой способ ускоряет доставку электронной почты, но может повлечь за собой появление определенных проблем при больших объемах электронной почты. Для решения этой проблемы можно сконфигурировать smail таким образом, чтобы почта помещалась в очередь, как это делается в sendmail.

Программа exim

Программа exim для работы с SMTP была разработана Кембриджским университетом на основании общественной лицензии GNU. Она доступна в настоящее время для большинства версий ОС UNIX, включая Linux. Текущая версия exim — 3.02. Ее возможности по защите SMTP от спамеров и хакеров снискали заслуженное уважение среди пользователей Linux. В exim имеется несколько конфигурационных файлов, которые могут ограничивать доступ на основе имен хостов, IP-адресов или доменных имен. Более подробную информацию о программе exim можно получить через Web-сайт в Internet по адресу http://www.exim.org.

Резюме

Простой протокол передачи почты Simple Mail Transfer Protocol (SMTP) позволяет компьютерам передавать сообщения от пользователя на одном компьютере пользователю (или нескольким пользователям) на другом компьютере. Протокол SMTP описан в документе RFC 821, где определен стандартный набор команд, идентифицирующих отправителя и получателя сообщения, а также команд, используемых для передачи сообщения. Почтовое сообщение может быть представлено в произвольной форме, но его стандартный формат был определен в RFC 822. Этим форматом предусмотрено существование в сообщении двух частей — заголовка и тела сообщения. Заголовок сообщения содержит поля, которые несут важную информацию о сообщении; здесь указывается отправитель сообщения, его получатели, тема сообщения и комментарии. Двоичные данные при пересылке по электронной почте по протоколу SMTP должны кодироваться в текстовый формат ASCII. Для кодирования и передачи двоичных данных по сети Internet был разработан стандарт для включения их в обычное почтовое сообщение формата RFC 822. Новые поля заголовка, предусмотренные RFC 822, которые помогают идентифицировать вложенные двоичные данные, описаны в RFC 2045 и 2046. В ОС Linux протокол SMTP поддерживается несколькими программными пакетами. Программный пакет sendmail является стандартным для большинства UNIX-платформ. Версия sendmail была разработана и для ОС Linux. Другие программы для работы с SMTPqmail, smail и exim — содержат некоторые улучшения и/или легче в использовании, по сравнению с sendmail.