WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     | 1 |   ...   | 8 | 9 || 11 | 12 |   ...   | 14 |

«А TV AODISON WESLEY СЕТЕВЫЕ СРЕДСТВА РОДЕРИК В. Смит Сетевые средства Linux Advanced Linux Networking W. Smith A TT ADDISON-WESLEY Boston • San Francisco • New York • Toronto • Montreal ...»

-- [ Страница 10 ] --

Для того чтобы обеспечить доставку писем, надо решить еще две задачи: копирование сообщений на центральный почтовый сервер и передачу их адресатам. Обе эти задачи решаются посредством протоколов передачи почты. При использовании этих протоколов сообщения передаются по инициативе сервера. Взаимосвязь между протоколами передачи и получения почты рассматривалась в главе Из протоколов передачи почты в настоящее время наиболее популярным является SMTP (Simple Mail Transfer Protocol — простой протокол передачи почты). Все письма, передаваемые в среде проходят как минимум через один сервер SMTP. Обыч но серверы получения и передачи почты выполняются на одном и том же компьютере, так что письмо, полученное сервером SMTP, может быть в любой момент передано на пользовательский компьютер. Если в системе Linux предполагается обработка почты, сервер SMTP выполняет при этом основную роль. В состав каждого дистрибутивного пакета Linux входит по меньшей мене один сервер SMTP, однако различные системы содержат разные серверы. В данной главе рассматриваются наиболее популярные в на стоящее время серверы SMTP: и Postfix. Кроме того, в этой главе пойдет речь об инструменте Procmail, часто используемом совместно с сервером SMTP. Прежде чем вплотную приступить к настройке сервера SMTP, необходимо рассмотреть доступные программы, поддерживающие функционирование подобного сервера, и вопросы настрой ки домена для работы сервера.

Часто для обеспечения работы сервера в сети достаточно внести лишь минимальные изменения в состав его конфигурационного файла, но в некоторых случаях приходится выполнять сложные действия по настройке сервера. Для тех, кому необходима дополни тельная информация о серверах SMTP, можно порекомендовать следующие книги: Ко сталес (Costales) и (Allman) Sendmail (O'Reilly, Хант (Hunt) Linux Sendmail Administration (Sybex, 2001), Хэзел (Hazel) Exim: The Mail Transfer Agent (O'Reilly, 448 Часть III. Серверы Internet Блюм (Blum) Postfix (Sams, 2001), (Sill) The Handbook (APress, 2001) и карти (McCarthy) The Procmail Companion (Addison Wesley, Использование сервера SMTP Серверы SMTP часто называют агентами передачи почты (МТА — mail transfer agent).

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

• Получение почты. Чаще всего сервер SMTP выполняет функции центрального по чтового сервера сети. Письма, полученные сервером SMTP, могут быть просмотре ны с помощью специальных программ (например, pine или mutt), выполняющих ся на локальном компьютере, либо скопированы на другой узел сети посредством протокола получения почты.

• Передача писем в режиме ретранслятора. У пользователей локальной сети часто возникает необходимость передать сообщение другому пользователю, работающему в Internet. Сервер SMTP может быть сконфигурирован для перенаправления почты.

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

• Организация почты на локальном компьютере. Программы, выполняющиеся на том же компьютере, что и почтовый сервер, обращаются к серверу для переда чи почты. Подобные программы могут быть также сконфигурированы для работы с удаленным сервером SMTP. Многие из программ, работающие локальном ком пьютере, используют почтовый сервер для взаимодействия с пользователями. Так, например, программы, автоматизирующие выполнение задач администрирования, посылают по почте отчеты о своих действиях пользователю root.

Выполнение перечисленных выше функций имеет настолько большое значение для системы, что при инсталляции многих дистрибутивных пакетов Linux сервер SMTP уста навливается по умолчанию. В частности, данный сервер необходим для организации обмена почтой в пределах локального компьютера. (Теоретически вы можете настроить все программы так, чтобы они работали посредством удаленного сервера, но инстал лировать сервер SMTP на локальном компьютере гораздо проще, чем перенастраивать многочисленные программы.) Во многих дистрибутивных пакетах конфигурация сервера SMTP, установленная по умолчанию, обеспечивает передачу почты в пределах локального узла сети. Чтобы сервер выполнял другие функции, в частности мог поддерживать весь домен, его конфигура цию в большинстве случаев приходится пересматривать. В настоящее время электронная почта стала настолько важной службой, что ни одна локальная сеть не может обойтись без средств доставки писем. Однако установка собственного сервера — не единственный Глава 19. Передача почты: протокол SMTP способ поддержки обмена сообщениями. При необходимости вы можете также воспользо ваться услугами внешних серверов. Такое решение может быть приемлемым для неболь шой сети в случае, если вы посчитаете, что затраты на установку центрального почтового сервера не оправдывают себя. Однако наличие собственного сервера обеспечивает допол нительные возможности настройки средств доставки почты и позволяет контролировать процесс передачи писем. Так, например, при наличии сервера SMTP в своей сети вы мо жете быстро добавлять или удалять пользователей, блокировать получение нежелатель ных сообщений, устанавливать ограничения на размер сообщений и выполнять другие подобные действия. На поддержку собственного сервера потребуется затратить меньше средств, чем на оплату почтовых услуг сторонней организации. Таким образом, реше ние по установке почтового сервера в локальной сети в большинстве случаев оправдано, особенно если число пользователей сети велико и им требуются специальные услуги.

реализующие сервер SMTP в системе Linux • В составе системы Linux часто поставляется наиболее популярный в настоящее время почтовый сервер sendmail. Этот пакет предоставляет обшир ные возможности и многие программы по умолчанию считают, что он установлен в системе. Для обеспечения совместимости в состав некоторых пакетов даже вклю чается исполняемая программа sendmail. Конфигурационный файл sendmail имеет сложный формат, и это является причиной того, что некоторые пользователи отдают предпочтение альтернативным пакетам. Web-узел sendmail расположен по адресу org.

• Exim. Формат конфигурационного файла данного сервера проще, чем у sendmail, кроме того, Exim поддерживает разнообразные правила фильтрации почты. Этот сервер используется в и системах, созданных на ее основе. Адрес Web-узла Exim — org.

• Postfix. Как sendmail, так и Exim реализованы в виде большой "монолитной" программы. В отличие от этих продуктов, Postfix имеет модульную структуру. Это означает, что частные задачи, возникающие перед почтовым сервером, решаются с помощью отдельных небольших программ. При этом повышается как произво дительность сервера, так и уровень безопасности системы. Модульная структура и простота конфигурационного файла являются основными преимуществами Post fix по сравнению с sendmail. Данный сервер используется в качестве сервера по умолчанию в системе Mandrake. Дополнительную информацию о Postfix можно получить, обратившись по адресу org.

• Подобно Postfix, представляет собой модульный сервер, разработчи ки которого ставили перед собой задачу обеспечить высокую производительность и повышенный уровень защиты. Структура конфигурационного файла qmail про ще, чем у свервера sendmail, но, в отличие от Exim и Postfix, данный сервер плохо совместим с sendmail. Поэтому замена sendmail на qmail представляет собой достаточно сложную задачу. Несмотря на то что qmail по популярности уступает только sendmail, этот сервер редко включается в дистрибутивные пакеты Linux 450 Часть III. Серверы Internet в качестве сервера по умолчанию, поэтому в данной главе он не будет подробно рас сматриваться. Web-узел расположен по адресу org.

Помимо перечисленных выше, в системе Linux могут использоваться и другие по чтовые серверы. В качестве примера можно привести Courier и OpenMail Многие из почтовых серве ров распространяются в исходных кодах, но некоторые доступны лишь на коммерческой основе. Большинство пользователей отдают предпочтение упомянутым выше четырем серверам: Postfix и qmail. Все четыре продукта представляют собой мощные программы, способные обслуживать даже большие домены.

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

Если вам необходимо предоставить пользователям специальные услуги по обработке почты, внимательно ознакомьтесь с документацией на различные серверы и решите, какой из них наилучшим образом подходит для решения данной задачи. Возможно, вам придет ся заменить сервер, установленный по умолчанию, другим. В большинстве случаев это означает, что вместо сервера sendmail необходимо установить другой сервер. Проще всего заменить sendmail сервером Exim или Postfix. Несмотря на различия в структуре конфигурационных файлов, программы, непосредственно обращающиеся к sendmail, обычно хорошо взаимодействуют с Exim и Postfix, а формат очереди почтовых сообщений этих двух программ совпадает с форматом очереди sendmail. (Как и sendmail, Exim и Postfix используют формат т. е. хранят все письма в одном файле.) Заменить sendmail сервером qmail гораздо труднее, так как qmail по умолчанию поддерживает maildir (формат, в котором сообщения хранятся как отдельные файлы). Поэтому, чтобы установить qmail вместо sendmail, надо изменить стандартную конфигурацию qmail или заменить почтовые программы в вашей системе (в том числе и серверы получения почты, рассмотренные в главе Настройка домена для использования почтового сервера Многие почтовые серверы получают почту с внешних компьютеров. Существуют два способа адресации почтового сервера.

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

• Указание адреса домена. Для того чтобы сократить почтовый адрес, а также для того, чтобы обеспечить работу резервных почтовых серверов, в Глава 19. Передача почты: протокол SMTP ном файле сервера DNS предусмотрена запись MX. Если в почтовом адресе ука зано только имя домена, запись MX позволят направить это письмо на конкрет ный компьютер. Предположим, например, что в конфигурационном файле сер вера имен, управляющего доменом com, содержится запись MX, указывающая на компьютер В этом случае письмо, адресованное пользователю будет доставлено на узел com. Указав в конфигурационном файле сервера DNS несколько записей MX, администратор может организовать использование резервных почтовых серверов. По сравнению с непосредственной адресацией данный способ несколько усложняет администрирование домена.

Формат конфигурационного файла сервера DNS, в частности структура записей MX, рассматривалась в главе Если вы устанавливаете почтовый сервер по адресу com, соответствующая запись MX будет выглядеть следующим образом:

@ IN MX Эта строка содержится в конфигурационном файле зоны, имя которого указано в фай ле /var/named. Символ @ в начале строки означает, что запись применима ко всему домену. Идентификатор IN представляет собой стандартный компонент записи, описы вающей домен Internet, a MX определяет тип записи. Число 10 представляет приоритет записи. Сервер, осуществляющий передачу почты, сначала старается установить соедине ние с почтовыми серверами, которым соответствуют малые значения приоритетов, а если очередной сервер не отвечает, он обращается к компьютеру с более высоким приорите том. Это позволяет использовать в составе домена несколько почтовых серверов. В конце записи указывается полное доменное имя почтового сервера, завершающееся точкой.

Передавая письма на почтовый сервер вашей сети, внешним пользователям ДО статочно указать лишь имя домена. Однако локальные пользователи при на стройке своих клиентских программ должны задавать полное имя сервера SMTP.

Передача данных с помощью протокола SMTP Для того чтобы понять материал данной главы, надо хотя бы в общих чертах представ лять себе принцип передачи почтовых сообщений с помощью протокола SMTP. В частно сти, необходимо знать различия между заголовками конверта (envelope header), заголов ками сообщения (message header) и телом сообщения (message data). Заголовком конверта считаются поля From и То и содержащиеся в них адреса, которые указываются передаю щим компьютером при установлении SMTP-соединения. В особенности важен заголовок конверта То, так как именно его анализирует принимающая система, определяя, кому адресовано данное сообщение.

В отличие от заголовка конверта, заголовок сообщения входит в состав письма. Неред ко этот заголовок составляет значительную часть сообщения, доставляемого адресату.

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

452 Часть III. Серверы Internet В заголовке значение поля отделяется от его имени двоеточием.

В заголовке конверта двоеточие обычно не используется. Если сервер SMTP ЗАМЕТКУ использует формат данные, содержащиеся в заголовке конверта, хотя и используются при выполнении но не сохраняются в сооб щении. Некоторые серверы могут быть сконфигурированы так, чтобы адреса, указанные в полях From и То заголовка сохранялись в составе по ля заголовка сообщения. Это помогает в тех случаях, когда надо выяснить причину возникновения проблем при передаче писем.

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

Листинг 19.1. Пример SMTP-сеанса $ telnet Trying..

Connected to Escape character is 220 louiswu ESMTP Exim 3.12 #1 Wed, 30 Oct 2002 12:01:29 - HELO 250 louiswu Hello MAIL 250 is syntactically correct RCPT 250 is syntactically correct DATA 354 Enter message, ending with on a line by itself A Sample SMTP Session This is the text of the message.

250 OK id=15z87H-OOOOCX- QUIT 221 louiswu closing connection Connection closed by foreign host.

В большинстве случаев SMTP-соединение начинается по инициативе клиентской про граммы, в роли которой выступает программа подготовки писем или другой сервер SMTP (в сеансе, представленном в листинге 19.1, действия клиентской программы имитирует пользователь с помощью программы telnet). Клиент объявляет о своем намерении начать взаимодействие, передавая серверу команду HELO или EHLO. Затем с помощью команд MAIL FROM: и RCPT клиент задает заголовки конверта From и То. В ответ на каждую из этих команд сервер SMTP передает числовой код, посредством которого Глава 19. Передача почты: протокол SMTP он сообщает результаты обработки очередной команды. Текст, следующий за числовым кодом, предназначен для пользователя, который следит за ходом взаимодействия. Коман да DATA указывает на то, что передающий компьютер готов пересылать тело сообщения.

Получив ответ от сервера, клиент начинает передачу заголовков и данных сообщения.

(Заголовки сообщения передавать не обязательно. Если исключить их из листинга письмо все равно будет доставлено.) Заголовки отделяются от тела сообщения пустой строкой. Строка, содержащая только точку, является признаком окончания сообщения.

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

• Идентификация отправителя. Передающая система передает свой адрес принима ющему компьютеру различными способами, в частности, адрес содержится в соста ве команд HELO и MAIL FROM, а также поля заголовка Следует заметить, что если передающая система работает в режиме ретранслятора, в команде MAIL FROM и в поле заголовка будет содержаться адрес другого компьютера. Так или иначе, IP-адрес отправителя становится известен принимающей системе;

в ли стинге этот адрес указывается в ответе на команду HELO.

• Заголовки конверта и сообщения. В листинге 19.1 заголовки конверта и сообще ния соответствуют друг другу, но в других случаях ситуация может быть иной. Если вы получите сообщение, адресованное не вам, причина этого может состоять в том, что в поле То заголовка конверта был указан ваш адрес, а в поле заголовка сообщения — адрес другого пользователя. Поскольку действия по доставке письма определяются значением поля То заголовка конверта, то такое письмо будет пере дано вам. Почтовая программа, сохраняющая все данные о заголовках, помогла бы вам выяснить причины происходящего.

• Возможность отказаться от сообщения. Принимающий сервер SMTP может пре кратить работу по доставке письма на любом этапе, начиная с установки соединения и заканчивая обработки сообщения после его получения. Чаще всего управление доставкой сообщения осуществляется после ответа на команду RCPT но су ществует также возможность контроля на более ранних этапах взаимодействия.

Если получатель прерывает соединение перед получением команды RCPT некоторые отправители предпринимают повторную попытку передачи письма, что увеличивают нагрузку на сеть. Отказ от обработки после передачи содержимого письма имеет свой недостаток — если объем сообщения велик, такой подход также приведет к неоправданному увеличению трафика в сети.

• Предоставление информации о сервере. При проведении сеанса, приведенного в листинге отправитель получает лишь частичную информацию о сервере и никаких других данных. В данном примере сервер объявляет себя как Exim 3.12.

Некоторые программы позволяют скрыть номер версии;

если в средствах защиты сервера имеются недостатки, такая мера повышает безопасность системы. Сохраняя в секрете номер реализации сервера, вы лишаете хакера информации о возможных путях незаконного проникновения в систему. В листинге в ответ на команды MAIL RCPT принимающий сервер код 250 и сообщение is syntactically correct. Некоторые серверы могут быть сконфигуриро ваны так, что в случае, если в системе отсутствует учетная запись пользователя, 454 Часть III. Серверы Internet которому адресовано письмо, взаимодействие с передающим компьютером прекра тится после обработки команды RCPT Такая конфигурация предоставляет информацию, полезную для злоумышленника: посредством команд почтового сер вера он может подобрать корректное имя пользователя. В этом примере сервер Exim не предоставляет подобных данных, однако это порождает другую проблему. Если в письме указан несуществующий пользователь, сервер должен обработать, а затем проигнорировать письмо.

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

Маскировка адреса При настройке почтового сервера нередко задается маскировка адреса. Согласно ис ходной конфигурации, устанавливаемой при инсталляции сервера SMTP, он сообщает другим серверам имя узла, которое было задано при настройке сети и возвращается по ко манде hostname. Это имя сервер указывает при передаче команд HELO и MAIL оно же включается в поле заголовка сообщения. Кроме того, сервер сообщает имя узла, передавая другим программам ответы на полученные от них команды.

В большинстве случаев такая конфигурация устраивает системного администрато ра, но иногда возникает необходимость использовать для сервера другое имя. Пред положим, например, что ваш почтовый сервер расположен на компьютере с именем Возможно, вы захотите, чтобы сообщения выглядели как отправленные не с конкретного компьютера, а из домена com. (Это может понадобиться в том случае, если вы используете для отправки и получения почты различные серверы, или для того, чтобы упростить перенос почтовых серверов на другие компьютеры.) Не исключено, что вы захотите изменить имя узла в сети, защищенной брандмауэром, чтобы сообщения, переданные в ответ, адресовались на компьютер, до ступный извне. Сделать это можно, используя средства маскировки адресов. В результате их применения сервер, расположенный на компьютере com, будет объявлять себя как com. Маскировку адресов поддерживают все серверы, рассматриваемые в данной главе, но детали настройки различаются в разных продуктах. Некоторые серверы предоставляют в распоряжение администратора несколь ко опций, позволяющих настраивать команды, приветственные сообщения и заголовки для работы с другим именем, а в других серверах настройка осуществляется с помощью одной опции. В одних серверах относительно просто изменить заголовки существующих сообщений для отображения нового адреса, а при работе с другими решить данную задачу достаточно сложно.

Глава 19. Передача почты: протокол SMTP Некоторые администраторы считают изменение адресов недопустимым, так как по их мнению заголовки для того и существуют, чтобы дать возможность просле дить путь к исходной системе. Другие утверждают, что данное средство имеет право на жизнь, так как оно позволят устранить проблемы, возникающие, напри мер, при передаче сообщений в сеть, защищенную брандмауэром. Если вы еще не имеете достаточного опыта в администрировании почтовых серверов, вам не следует увлекаться маскировкой адресов. Если настройка компьютера будет выполнена неправильно, это приведет к некорректной обработке сообщений.

Обработка локальных сообщений Одна из проблем, возникающих при работе почтового сервера, состоит в том, что вам необходимо сообщать ему, какие адреса должны рассматриваться как локальные. Пред положим, что почтовый сервер выполняется на компьютере com. По умолчанию сервер SMTP настраивается для получения почты, адресованной пользователям компьютера com. Если при настройке домена вы указали запись MX, которая указывает на этот компьютер, он будет обрабатывать письма для пользователей домена com. Кроме того, вам, возможно, понадобится настроить почтовый сервер для обработки почты, направленной на другие компьютеры и в другие домены. В этом случае вам придется добавить к списку доменов, в которых сервер должен поддерживать передачу локальной почты, домен com.

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

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

Настраивая сервер SMTP в качестве ретранслятора, следует помнить, что подобная конфигурация представляет опасность для системы. Если почтовый сервер сконфигури рован так, чтобы принимать со многих компьютеров письма для перенаправления, он легко может быть использован для рассылки спама. Таким образом, вам необходимо най ти компромисс между требованиями к защите системы и потребностями в использовании 456 Часть III. Серверы Internet сервера в качестве ретранслятора. Конкретные установки зависят от роли, которую ваш сервер играет в сети, а эта роль, в свою очередь, частично зависит от структуры сети.

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

Например, руководство может потребовать от вас предоставить доступ к серверу поль зователям, работающим с портативными компьютерами. Серверы, которые используются для обработки сообщений, передаваемых с локальных компьютеров, можно настроить для предоставления доступа удаленным пользователям.

Пользователи, которые работают с портативными компьютерами и часто пере с места на место, регистрируясь на серверах различных провайдеров, создают множество проблем для системных администраторов. Предоставлять таким пользователям доступ к почтовому серверу опасно, так как каждый, кто зарегистрировался у того же сможет использовать ваш почтовый сервер для пересылки спама. Гораздо лучше, если пользователь, работающий с компьютером, будет передавать почту через сервер того провай дера, в сети которого он зарегистрировался в настоящий момент. Если же пе редачу через сервер провайдера по каким-то причинам реализовать не удается, вы можете создать на своем сервере конфигурацию под названием SMTP после POP. В этом случае сервер POP сообщает серверу SMTP о том, что тот может принимать письма с определенного IP-адреса в течение ограниченного периода времени. Чтобы сервер POP сгенерировал такое сообщение, пользователь дол жен успешно зарегистрироваться на нем и получить свою корреспонденцию.

Еще одно решение состоит в использовании SSH для регистрации в локальной системе или в настройке соответствующих средств для SMTP соединений.

Не что вы захотите сконфигурировать сервер SMTP для передачи всех или отдельных сообщений через другой сервер SMTP. Например, несмотря на то, что почто вые серверы рабочих станций могут непосредственно передать письма по назначению, их часто настраивают так, чтобы они передавали почту через сервер отдела. Если систе ма подключена по коммутируемой линии, использование сервера-ретранслятора остается единственным возможным решением. Многие провайдеры заносят адреса, которые вы деляются компьютерам, подключаемым через выделенные линии, в специальный список, предназначенный для борьбы со спамом, в результате чего исключается возможность пе редачи писем, минуя сервер SMTP провайдера. Часто благодаря использованию сервера в режиме ретранслятора удается повысить надежность почты в сети.

СОВЕТ Если вы сконфигурировали операционную систему для работы в сетях различ провайдеров, передача почты может быть затруднена. Большинство про вайдеров настраивают почтовые серверы так, чтобы они могли перенаправлять только письма, полученные из своей сети. Таким образом, если вы настрои те свой сервер SMTP для передачи сообщений почтовому серверу одного из провайдеров, серверы остальных провайдеров останутся для вас недоступны ми. Чтобы решить эту проблему, надо сформировать несколько конфигураци онных файлов сервера SMTP (по одному для каждого провайдера) и Глава 19. Передача почты: протокол SMTP чить в сценарий установки команду, которая будет выполнять копирование требуемого файла в стандартный конфигурационный файл и пе резапускать сервер. Предположим, что вы работаете с двумя провайдерами и используете В этом случае вы должны создать два конфигура ционных файла, сохранив их, например, под именами cf и cf. В сценарий, используемый для установки РРР-соеди нения, вы должны включить команду копирования требуемого файла в файл sendmail. cf.

Настройка сервера для борьбы со спамом Сразу после своего появления электронная почта стала широко применяться для об мена информацией между пользователями и до сих пор остается одним из наиболее по пулярных средств сетевого взаимодействия. К сожалению, недобросовестные рекламода тели также оценили E-mail как чрезвычайно удобное и недорогое средство, позволяющее доставлять рекламные сообщения потенциальным покупателям. Слово "к сожалению" приводится здесь по двум причинам. Во-первых, по электронной почте в настоящее время в основном распространяется реклама чрезвычайно низкого уровня: приглашения посе тить порнографические Web-узлы, приобрести продукты сомнительного качества и т. д.

Во-вторых, подобные сообщения создают дополнительную нагрузку на почтовые сер веры во всем мире, поэтому вред, наносимый спамом, нельзя недооценивать. Передача почтового сообщения стоит недорого;

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

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

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

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

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

• Списки IP-адресов. В настоящее время некоторые организации публикуют списки IP-адресов, которые можно использовать для блокирования нежелательных почто 458 Часть HI. Серверы Internet сообщений. В подобном списке содержатся адреса спамеров, открытых ретранс ляторов (т. е. почтовых серверов, предоставляющих всем желающим возможность передавать через них письма), компьютеров, подвергшихся взлому и используемых для распространения спама, и т. д. Многие почтовые серверы настроены для рабо ты с одним из таких списков. Письма, переданные с адресов, указанных в списке, отвергаются. Информация о некоторых из списков IP-адресов, применяемых для борьбы со спамом, приведены в табл.

• Сравнение с шаблоном сообщений, обработанных почтовым сервером. Систе ма Procmail, которая будет описываться далее в этой главе, может быть использо вана для проверки писем на соответствие заданным шаблонам. На базе Procmail построены сложные системы, предназначенные для борьбы со спамом, например SpamBouncer org). При необходимости вы можете самостоятельно сформировать фильтры Procmail.

• Сравнение с распределенными шаблонами. Одним из последних инструментов, предназначенных для борьбы со спамом, является Vipul's Razor sourcef net). Эта система использует базу данных SHA-кодов (Secure Hash Algorithm — защищенный алгоритм хеширования) сообщений спама. Вы можете сконфигурировать свой почтовый сервер для вычисления SHA-кодов полученных писем и блокировать рекламные сообщения на основании сравнения их с кодами Vipul's Razor.

Для блокирования большей части спама достаточно использовать один или два спо соба, например, один из списков IP-адресов и сравнение с шаблонами сообщений, об работанных почтовым сервером. Основная проблема борьбы со спамом состоит в том, что в настоящее время не существует технологии, позволяющей гарантированно распо знать спам и отделить его от обычных сообщений. Большинство способов блокирования основаны на тех или иных обобщениях. Эти способы позволяют отвергать сообщения спама, но вместе с ними блокируются также некоторые корректные сообщения. Этот эффект принято называть ложными срабатываниями (false positive). Иногда с потерей некоторых писем можно смириться, в других случаях ложные срабатывания не допусти мы. Для того чтобы уменьшить риск блокирования корректных сообщений, необходимо выполнять проверку на базе четко определенных критериев. Среди списков IP-адресов наименьшее число ложных срабатываний обеспечивают RBL и RSS. Списки IP-адресов RBL, RSS и DUL, поддерживаемые MAPS (Mail Abuse Prevention System — система борь бы с захватом почтовых программ), распространяются по подписке.

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

Таблица 19.1. Списки IP-адресов, используемые для борьбы со спамом Название списка Адрес сервера Описание Dial-Up List В данный список помещаются IP-адреса, выделяемые про вайдерами для поддержки РРР-соединений. Считается, что, зарегистрировавшись в сети провайдера, пользователь не должен применять собственный почтовый сервер, так как он может воспользоваться сервером провайдера. Попытки передать письма, минуя почтовый сервер провайдера, часто предпринимают распространители спама Realtime В этот список адреса серверов, замеченных List (RBL) в распространении спама, и серверов, конфигурация кото рых позволяет спамерам воспользоваться их услугами Relay Spam Stopper В данном списке содержатся адреса серверов, замеченных (RSS) org/rss/ org в распространении спама, а также серверов, работающих как открытые ретрансляторы. Проверка таких серверов выпол няется в полуавтоматическом режиме Open Relay Database Данный список выполняет те же функции, что и RSS, но для (ORDB) принятия решения о занесении в этот список адреса сервера используются менее строгие критерии. В результате при ис пользовании этого списка оказываются заблокированными многие корректные сообщения RFC Ignorant Адреса указаны на Web- Организация RFC Ignorant поддерживает несколько списков www. узле IP-адресов серверов, которые не соответствуют требованиям org стандартов, изложенных в документах RFC. часто используют некорректно настроенные программы, поэтому данные списки могут быть использованы для борьбы со спа мом 460 Часть III. Серверы Internet Если на отдельных рабочих станциях в сети установлены почтовые серверы, необходи мо следить за тем, чтобы они не были сконфигурированы как открытые ретрансляторы (open relay). Открытым ретранслятором называется почтовый сервер, который принимает сообщения от любого компьютера, подключенного к Internet, и передает их по назна чению. Многие дискуссии, посвященные использованию по сути сводились к вопросу о предоставлении другим компьютерам доступа к серверу. Настраивая почто вый сервер, необходимо открыть его для некоторых систем, но при этом надо следить за тем, чтобы число таких систем не оказалось слишком велико.

Чтобы поверить, не является ли почтовый сервер открытым ретранслятором, следует с компьютера, на котором расположен этот сервер, обратиться с помощью telnet по адресу org. В результате удаленный компьютер обратится к вашему почтовому серверу и начнет проверку. Ход тестирования отобразится на экране, а в конце будет выведено сообщение о состоянии вашего сервера. Следует заметить, что этот тест не является исчерпывающим;

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

Дополнительную информацию о конфигурациях, предназначенных для борьбы со спа мом, можно найти по адресу org/tsi/.

Настройка sendmail В настоящее время sendmail является самым популярным почтовым сервером в ми ре. Эта программа входит в состав различных дистрибутивных пакетов Linux, в том числе Red Hat, Slackware, SuSE и TurboLinux. Несмотря на то что в Debian и Mandrake по умолчанию устанавливаются другие серверы SMTP, sendmail также входит в ком плект поставки и при необходимости может заменить существующий почтовый сервер.

Как было сказано ранее, в настоящее время доступна версия 8.12.2 sendmail, но неко торые дистрибутивные пакеты Linux до сих пор поставляются с и более ранними версиями.

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

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

Конфигурационные файлы sendmail Основной конфигурационный файл sendmail называется обычно он располагается в каталоге /etc. Этот файл содержит большое количество опций, представ ленных в виде, неудобном для восприятия, поэтому анализировать содержимое данного файла и редактировать чрезвычайно сложно.

Обойти трудности, вызванные сложным форматом можно, создавая конфигурационный файл в простом и понятном а затем преобразуя его с по мощью утилиты т4 в файл Исходный файл, предназначенный для об работки программой заканчивается символами но конкретное имя и распо ложение может изменяться в зависимости от версии операционной системы. В Red Hat Глава 19. Передача почты: протокол SMTP это файл в Slackware — а в SuSE — Независимо от имени, исходный файл гораздо меньше и удобнее для восприятия, чем создаваемый на его основе файл Например, если в системе SuSE 7.1 файл содержит 1669 строк, то файл состоит всего из 221 строки, причем основную часть файла занимают комментарии (строки комментариев начинаются символами Для того чтобы создать файл cf из файла необходимо вызвать про грамму и перенаправить ввод и вывод. В системе SuSE этот вызов имеет следующий вид:

< /etc/mail/linux.mc > В некоторых версиях Linux перед тем как приступать к созданию файла из исходного файла необходимо установить дополнитель ный пакет. Например, в Red Hat для создания конфигурационного файла нужен пакет ВНИМАНИЕ Не следует изменять рабочий вариант файла Желательно ско пировать файл cf и исходный файл т4 в другой каталог. Если в результате редактирования вы повредите конфигурационный файл, то, ис пользуя созданную вы сможете восстановить рабочую конфигурацию sendmail.

После изменения конфигурационного файла необходимо перезапустить sendmail.

Во многих версиях Linux sendmail запускается с помощью сценария поэтому для перезапуска программы можно использовать опцию restart этого сценария.

Большинство записей в конфигурационном файле т4 задается в следующем формате:

Имя характеристики — это некоторое содержательное имя, например или В качестве опций могут быть указаны имена узлов, установки, спе цифические для sendmail, например и т. д. В определениях некоторых характеристик одинарные кавычки можно не использовать.

ВНИМАНИЕ Кавычки, в которые помещаются опции, на первый взгляд выглядят несколько 5 странно: в качестве открывающей и закрывающей используются различные ти пы кавычек. Необходимо следить за правильным их использованием. Если вы укажете в исходном файле обычные одинарные кавычки, то либо файл не будет обработан, либо конфигурационный файл cf будет сформи рован некорректно.

Помимо программа sendmail также использует при работе другие файлы.

• Этот двоичный файл создается на базе текстового файла access.

Файл access определяет, какие компьютеры могут обращаться к программе sendmail. Конфигурация sendmail в качестве ретранслятора во многом зави сит от содержимого этого файла. Многие сценарии запуска sendmail вызыва ют и если файл access изменился с момента последнего создания db, автоматически генерируется новый файл access. db.

462 Часть III. Серверы Internet • Этот двоичный файл также создается на базе текстового файла с ана логичным именем (aliases). Он определяет псевдонимы — имена, эквивалентные другим именам. Так, например, во многих дистрибутивных пакетах для пользова теля root определяется псевдоним postmaster. Возможно, вы захотите создать псевдоним для root, чтобы просматривать почту суперпользователя посредством обычной учетной записи. Подобно файлу при выполнении многих сценариев запуска файл генерируется автоматически.

Рассмотренные выше файлы обычно размещаются в каталоге /etc или Кроме того, в этом каталоге находятся другие файлы баз данных, определяющие особен ности работы Маскировка адреса sendmail Если вы хотите, чтобы сервер SMTP объявлял себя посредством имени, отличающего ся от имени компьютера, на котором он выполняется, вам необходимо сконфигурировать сервер для выполнения маскировки адреса. Принцип маскировки адреса был описан выше в этой главе. Для активизации механизма маскировки адреса вам надо включить в исходный файл т4 следующие две строки:

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

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

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

Настройка sendmail для получения почты Когда удаленный сервер передает почту вашему серверу, письма адресованы кон кретным пользователям, работающим на определенных компьютерах. Чтобы обеспечить доставку локальной почты, программа sendmail должна распознавать локальные ад реса. Почтовый сервер sendmail поддерживает файл, в котором указываются адреса локальных узлов. В различных дистрибутивных пакетах для данного файла используют ся разные имена. В Red Hat это файл а в SuSE — Если вам не удается обнаружить его, найдите в запись, которая начинается символами Fw. Эта запись содержит имя файла, в котором указаны имена локальных узлов. Независимо от имени, содержимое файла представля Глава 19. Передача почты: протокол SMTP ет собой набор строк, в каждой из которых задано имя узла. Строки, начинающиеся с символа #, считаются комментариями.

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

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

По умолчанию почтовый сервер, инсталлированный в сети, не настроен для работы в качестве ретранслятора. При попытке передать письмо на сервер программа подготов ки почты получит в ответ сообщение "relaying denied" ("ретрансляция запрещена"). Для того чтобы программа sendmail работала в качестве ретранслятора, надо активизиро вать соответствующие компоненты. В частности, в исходном конфигурационном файле необходимо задать записи FEATURE, указав в них следующие опции.

• relay_entire_domain. Если указана данная опция, sendmail принимает сооб щения из своего домена, а также письма, адресованные пользователям в его домене.

Для определения принадлежности к домену sendmail использует сервер DNS. Оп ция relay_entire_domain представляет собой удобное средство обеспечения ретрансляции.

• rom. Эта опция указывает серверу sendmail, что он должен принимать все письма, из содержимого поля From: которых следует, что они пе редаются из локального домена. От предыдущей опции rom от личается тем, что для принятия решения об обработке письма используется лишь адрес в поле посредством которого система представляется другим компью терам. Этот адрес может достаточно просто быть фальсифицирован. Данная опция не обеспечивает приемлемого уровня защиты от спама.

• Данная опция означает, что сервер sendmail должен при нимать письма в том случае, если в домене, которому принадлежит отправитель, присутствует запись MX, содержащая указание на этот сервер. Опция обеспечивает простой и удобный способ управления ре трансляцией. Чтобы настроить почтовый сервер для поддержки еще одного домена, не надо вносить изменения в конфигурационные файлы sendmail, достаточно лишь изменить конфигурацию сервера DNS. Однако подобный подход имеет су 464 Часть Серверы Internet недостаток. поддерживающие собственные домены, могут легко создать запись MX и использовать ваш сервер в своих целях.

• Если вы зададите эту будет использовать базу данных для принятия решений о предоставлении доступа. Письма будут при ниматься лишь от тех пользователей, которые работают на компьютерах, указанных в базе. Данную опцию удобно использовать для того, чтобы ограничить доступ к серверу некоторым набором узлов сети.

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

ВНИМАНИЕ Для управления ретрансляцией может использоваться также опция | но применять ее не рекомендуется. Она открыва ет доступ к серверу для любого компьютера. Сконфигурированный подобным образом сервер рано или поздно будет обнаружен спамерами и использован для передачи рекламных сообщений.

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

Как вы уже знаете, при запуске программа sendmail читает содержимое файла access Этот файл обычно хранится в каталоге /etc или /etc/mail и создается на базе файла access. Пример файла access приведен ниже.

# Разрешить прием писем с.

RELAY localhost RELAY 127.0.0.1 RELAY # Разрешить прием писем из локальной сети 192.168.99 RELAY Первые три записи присутствуют практически в любой конфигурации. Они сообща ют sendmail о том, что программа должна принимать письма с локального узла. Эти записи обеспечивают работу локальных почтовых программ. Последняя запись указыва ет на то, что сервер должен принимать для ретрансляции письма, отправленные из сети 192.168.99.0/24. Вместо IP-адресов можно указывать доменные имена, но IP-адреса слож нее фальсифицировать, поэтому при использовании их повышается уровень безопасности системы.

Все приведенные примеры оканчиваются опцией RELAY, но кроме нее в файле могут также использоваться и другие опции.

• ОК. Эта опция сообщает sendmail о том, что локальные письма должны прини маться, несмотря на то, что другие правила требуют отвергать их.

Глава 19. Передача почты: протокол SMTP • RELAY. Как вы, возможно, догадались, данная опция обеспечивает обработку пи сем, переданных с указанного компьютера или из указанного домена. Она также сообщает, что сервер должен передавать письма, поступившие на эти компьютеры или в эти домены.

• REJECT. Если вы собираетесь блокировать почту, поступающую с определенного узла или из определенного домена, вам следует использовать данную опцию. При этом письма будут возвращаться отправителю.

• DISCARD. Данная опция выполняет те же действия, что и REJECT, но письма не возвращаются отправителю.

• ллл текст. Эта опция также работает подобно но в возвращаемое сооб щение она включает код ошибки ллл и указанный текст.

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

# makemap hash < /etc/mail/access При инсталляции такая команда часто включается в сценарий запуска, по этому вызывать ее вручную не всегда нужно. В любом случае после внесения изменений в файл access необходимо перезапустить программу sendmail.

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

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

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

466 Часть III. Серверы Internet Конфигурация для противодействия попыткам передачи спама Существует несколько способов настройки sendmail для блокирования поступаю щих рекламных сообщений и предотвращения попыток использования сервера для пе редачи спама. Один из способов состоит в использовании файла access и его двоич ного аналога С помощью файла можно блокировать спам на основании анализа адресов отправителей. Если вы зададите для некоторых доменов или компьютеров, указанных с помощью имени или IP-адреса, опции REJECT или DISCARD, сообщения из этих источников будут отвергаться. Если вы регулярно получаете реклам ные сообщения с определенных адресов, этот способ позволит избавиться от них. Следуя описанному подходу, необходимо соблюдать осторожность, так как вместе со спамом бу дут отвергнуты и корректные сообщения, приходящие с тех же адресов или из тех же доменов. Если вы блокируете почту, поступающую из сети, которая принадлежит попу лярному провайдеру, вы рискуете потерять нужные вам письма.

Другой способ блокирования спама состоит в применении списков IP-адресов. Для того чтобы реализовать этот способ, надо указать в конфигурационном файле т4 опцию - see \ Данная запись указывает sendmail на то, что при проверке входящей почты дол жен использоваться список MAPS Если вы хотите использовать другой список, вам надо изменить вторую опцию в данной записи. Последнее поле записи содержит стро ку, которая включается в состав возвращаемого сообщения. В этой строке вы можете указать отправителю адрес Web-узла, содержащего список IP-адресов, на основании ко торого было отвергнуто его сообщение. Если окажется, что корректное сообщение было заблокировано по ошибке, его автор сможет принять меры для того, чтобы разрешить проблему.

В версии 8.10 программы sendmail порядок использования списков IP-адресов был существенно изменен. В этой главе описаны правила, применяемые в этой и последующих реализациях. Дополнительную информацию по данному вопро су найдете по адресу html.

Чтобы предотвратить использование почтового сервера для неавторизованной рассыл ки почты, необходимо ограничить доступ к нему. Проще всего сделать это, указав в фай ле access IP-адреса или диапазоны адресов компьютеров, которые могут использовать сервер для передачи писем. В некоторых случаях можно также указать другие опции управления ретрансляцией. Применение опции promiscuous_relay — не допустимо.

ВНИМАНИЕ Версии sendmail, предшествующие 8.9.0, настроены так, чтобы любой ком | пьютер мог воспользоваться сервером для передачи писем. Такой сервер необ ходимо заменить новой версией или перенастроить его, чтобы неограниченные услуги ретранслятора не предоставлялись другим узлам. Информацию по это му вопросу вы найдете по Версии sendmail, предшествующие 8.8.4, перенастро ить крайне сложно. Гораздо проще обновить почтовый сервер.

Глава 19. Передача почты: протокол SMTP Настройка Exim Сервер Exim применяется по умолчанию в Debian и пользуется умерен ной популярностью. Данный сервер можно использовать и с другими пакетами. Так, например, Exim поставляется в составе расширения PowerTools системы Red Hat, по этому его достаточно легко установить в Red Hat и других подобных дистрибутивных пакетах. Подобно Exim представляет собой единую программу, но формат конфигурационного файла Exim сравнительно прост. Exim обладает приблизительно та кими же возможностями, как и sendmail;

в данном разделе рассматриваются некоторые из них, например, маскировка адресов, обработка писем, адресованных в разные домены, и использование режима ретрансляции почты.

Поскольку Exim является сервером по умолчанию только для Debian, в данном разделе в основном принимается во внимание конфигурация данного сервера, устанавливаемая в системме Debian. В других системах для Exim может быть по умолчанию выбрана другая конфигурация.

Конфигурационные файлы Exim Главный конфигурационный файл Exim называется Обычно он распола гается в каталоге /etc. В состав этого файла входят записи, представленные в следующем формате:

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

СОВЕТ При инсталляции Exim в системе Debian запускается сценарий с именем ig, в процессе выполнения которого генерируется файл Данный сценарий можно использовать для изменения конфигурации Exim;

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

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

• /etc/aliases. Этот файл выполняет те же функции, что и аналогичный файл sendmail. Он позволяет связать две учетные записи так, что письмо, адресован ное одному пользователю, будет направлено другому. Например, если в этом фай ле присутствует запись amelia, то письмо, адресованное root, получит пользователь В файле можно также указывать адреса, не принад 468 Часть III. Серверы Internet лежащие локальным пользователям. Например, наличие записи edu приведет к тому, что письмо, принятое для локального пользова теля root, будет перенаправлено по адресу В отличие от в сервере Exim файл aliases не преобразовывается в двоичный формат.

• /etc/email-addresses. Записи в этом файле используются для изменения со держимого полей в заголовках исходящих сообщений. Например, наличие записи приведет к тому, что письмо, отправ ленное с локального компьютера пользователем ben, придет к получателю как сообщение от edu.

Сценарий создает в файле /etc/aliases записи, посредством которых почта, адресованная postmaster перенаправляется root, а письма, непосредственно направленные root, будут переданы пользователю, которого вы укажете. Содержимое описанных выше файлов можно удалять или модифицировать, а при необходимости вы можете включать в эти файлы новые записи. Файл /etc/email-addresses, создава емый по умолчанию в системе Debian, содержит лишь комментарии.

Маскировка адресов Как было сказано ранее, вам может потребоваться, чтобы в сообщениях вместо имени, возвращаемого по команде отображалось другое имя узла или домена. Основ ные средства маскировки адресов включаются посредством опции qualify_domain.

С помощью данной опции задается имя домена. Если почтовая программа не сгенери рует информацию об адресе, имя домена будет автоматически включено в сообщение.

Предположим, что в файле conf присутствует следующая запись:

= Если пользователь ben отправит письмо, а программа, с помощью которой это пись мо было подготовлено, не укажет в поле From: имя домена, то Exim добавит имя com. Если доменное имя адреса не соответствует имени com, то Exim заменит адрес. Таким образом, содержимое поля From: будет выглядеть так:

Еще одна опция, которую можно использовать для маскировки адресов, называет ся Она применяется подобно и ее значе ние принимается в качестве значения по умолчанию для y_domain. Значение primary_hostname используется при переговорах о взаимодействии Exim и удаленно го сервера имен. Имя, задаваемое посредством данной опции, применяется при форми ровании заголовка Для более сложной маскировки адресов применяется файл /etc/email-addresses.

Строго говоря, на файл /etc/email-addresses ссылается запись, расположенная в конце конфигурационного файла Эта запись имеет следующий вид:

bcfrF Это одна из наиболее сложных записей, содержащихся в файле При на стройке сервера не следует редактировать ее, допустимо лишь изменить имя домена в на чале строки. С помощью данной записи Exim проверяет каждый адрес на принадлежность Глава 19. Передача почты: протокол SMTP домену com, а затем использует файл /etc/email-addresses для за мены адреса. В первом поле записи, содержащейся в файле /etc/email-addresses (перед двоеточием), указывается почтовый адрес, предназначенный для сравнения, а во втором поле (после двоеточия) — адрес для замены. Данное средство позволяет выпол нять маскировку для каждого пользователя;

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

В данном разделе рассмотрены лишь некоторые средства маскировки адресов, предо ставляемые Exim. Дополнительную информацию по этому вопросу вы можете полу чить в документации на Exim, обратившись по адресу org/exim Настройка Exim для приема почты В конфигурационном файле exim. conf предусмотрены различные опции, позволя ющие указать серверу, следует ли интерпретировать адрес как локальный. Эти опции кратко описаны ниже.

• В качестве значения данной опции задается список доменных имен, разделенных двоеточиями. Эти имена Exim должен интерпретировать как локальные. Например, запись local_domains = com сообщает Exim о том, что адреса localhost и явля ются локальными и в которых они указаны, необходимо непосредственно доставлять пользователям. По умолчанию значение данной опции принимается рав ным значению Опция qualify_recipient задает имя узла для входящих сообщений, в которых такая информация отсутствует.

• Если значение данной опции равно true, Exim принимает письма, в адресе которых указано имя компьютера. Тот же ре зультат можно получить, добавив имя узла к списку local_domains.

• Если значение данной опции рав но true, Exim принимает письма, в которых указан IP-адрес компьютера. Напри мер, если Exim выполняется на компьютере с адресом 172.24.98.2 и на этом ком пьютере имеется учетная запись пользователя ben, Exim примет письмо с адресом ben@ Если вы не хотите, чтобы подобные письма обрабатыва лись сервером, необходимо установить значение опции Сценарий ig устанавливает эти опции исходя из ответов администратора на вопросы о для которого необходимо принимать письма. Таким образом, если вы внимательно отнесетесь к вопросам, задаваемым данным сценарием, вы обнаружите, что необходимые для вас значения опций уже установлены.

Конфигурация Exim для ретрансляции писем Подобно в сервере Exim предусмотрен ряд опций, предназначенных как для ретрансляции писем, переданных другими программами, так и для использования 470 Часть III. Серверы Internet в качестве ретрансляторов других серверов. Сценарий ig задает администра тору вопросы, касающиеся ретрансляции писем, и в большинстве случаев устанавливает приемлемую конфигурацию сервера. Уточнить настройку Exim можно с помощью непо средственного редактирования файла Настройка Exim для работы в режиме ретранслятора Основные опции предназначенные для реализации режима ретрансляции писем, описаны ниже.

• host_accept_relay. Для того чтобы сервер Exim ретранслировать письма, переданные определенными компьютерами, вам надо указать в качестве значения данной опции их адреса (адреса отделяются друг от друга двоеточиями). В конфигу рационном файле должно быть как минимум указано выражение host_accept_ relay = localhost, позволяющее Exim передавать письма, подготовленные ло кальными почтовыми программами. По мере расширения списка (в котором могут быть указаны доменные имена, IP-адреса, а также использоваться символы группо вых операций) увеличивается число компьютеров, которым позволено пользовать ся услугами сервера для передачи почты. Например, выражение relay = 192. 99. 0/24 :* edu указывает на то, что письма для передачи должны приниматься с локального узла, со всех узлов сети 192.168.99.0/24, а также со всех компьютеров домена pangaea. edu. Использова ние данной опции для указания IP-адресов компьютеров, принадлежащих домену, — один из самых безопасных способов обеспечения ретрансляции писем.

• relay_domains. В качестве значения данной опции можно указать одно или несколько имен доменов, разделенных двоеточиями. В результате сервер Exim будет обрабатывать письма, направленные с любого компьютера, принадлежащего указан ным доменам. Эта опция полезна тогда, когда необходимо, чтобы сервер обслуживал несколько доменов или один большой домен. Аналогичных результатов можно до биться, включая символ групповой операции (*) в имена, задаваемые в качестве значения опции • Если вы зададите значение yes данной опции, доступ к почтовому серверу автоматически получат указан ные в записях MX серверов DNS. Такой подход очень удобен, так как избавляет от необходимости перенастраивать Exim при изменении конфигурации домена. Одна ко в этом случае повышается опасность использования сервера спамерами, которые имеют возможность управлять доменом и включать в конфигурационный файл сер вера DNS записи MX.

• sender_address_relay. В качестве значения данной опции задается список по чтовых адресов, разделенных двоеточиями, для которых разрешено использование сервера в качестве ретранслятора. В обычных условиях письмо должно соответ ствовать как значению данной опции, так и адресу узла, указанному с помощью опции host_accept_relay. (Вы можете задать проверку на соответствие любой из этих опций, включив в конфигурационный файл выражение relay_match_ host_or_sender = yes, но такая конфигурация опасна для системы, так как почтовый адрес легко подделать.) Данную опцию можно применить для того, что Глава 19. Передача почты: протокол SMTP бы ограничить круг пользователей, имеющих право использовать сервер в качестве ретранслятора.

Приведенные здесь опции позволяют настроить Exim для работы в режиме ретранс лятора и указать, какие компьютеры локальной сети или внешних доменов имеют право доступа к данному серверу. Данные опции позволяют решать большинство задач по обес печению ретрансляции почты. Если же вам необходимо установить специальную кон фигурацию сервера, вы можете воспользоваться дополнительными опциями, например, (которая выполняет аутентификацию удаленной системы перед ретрансляцией писем) и tls_host_accept_relay (которая требует, чтобы уда ленная система использовала средства аутентификации и кодирования TLS).

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

driver domainlist transport = = end Приведенная выше группа записей сообщает Exim о том, что письма, адресованные внешним пользователям, надо передавать через узел Чтобы использовать другой ретранслятор, надо изменить значение соответствующей оп ции.

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

• host_reject. Данная опция задается в конфигурационном файле Ее значение представляет собой список имен узлов и доменов, а также IP-адресов, разделенных двоеточиями. Почта, переданная с компьютеров, указанных посред ством данной опции, должна блокироваться. Например, запись host_reject = * 10 8. 0/24 указывает на то, что письма из доме на а также из сети 10.16.8.0/24 должны отвергаться. Система отказывается взаимодействовать с удаленным компьютером, заданным с помощью опции уже на этапе установления соединения. В результате удален ный компьютер предпринимает повторные попытки обращения к вашему серверу, но связанная с этим дополнительная нагрузка на линии связи и компьютеры неболь 472 Часть III. Серверы Internet • Данная опция действует так же, как и reject, но почтовые сообщения отвергаются лишь в процессе взаимодействия с удаленной программой, в частности, в тот момент, когда она передает команду RCPT В результате попытки пересылки писем немедленно прекращаются.

• Данная опция блокирует письма от указанных отправителей.

Роль отправителя может выполнять либо целый домен, либо отдельный пользова тель в домене. Например, опция sender_re j ect = net указывает на то, что письма из домена net и от пользователя отвергаться. Сервер Exim прекра щает взаимодействие сразу же, как только сможет идентифицировать отправителя.

В некоторых случаях это приводит к повторным попыткам передачи сообщений, предпринимаемым удаленными программами.

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

передаст команду RCPT Данный подход более эффективен по сравнению с ис пользованием опции sender_re j ect, так как при этом удаленная система больше не предпринимает попыток передачи сообщений.

• Фильтры, определяемые пользователем. Сервер Exim предоставляет пользовате лям возможность создавать собственные фильтры. Для их формирования использу ются файлы. находящиеся в рабочих каталогах пользователей. Возмож ность создания новых фильтров превращает Exim в чрезвычайно мощный и гибкий инструмент. Фильтры, определяемые пользователем, во многом похожи на фильтры Procmail, которые будут рассматриваться далее в этой главе. Подробное описание средств создания пользовательских фильтров содержится файле gz, который поставляется в составе Exim. В Debian этот файл располагается в каталоге распаковать его можно с помощью утилиты gunzip.

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

• Значением этой опции является перечень адресов серверов, поддер живающих списки IP-адресов (эти серверы описаны в табл. Адреса серверов разделяются двоеточиями и могут сопровождаться последовательностями символов /warn или /reject. Значение /warn указывает серверу Exim на то, что он дол жен добавить поле заголовка с предупреждающим сообщением (который впослед ствии может быть использован фильтром Procmail), a /re j ect означает, что письмо должно быть отвергнуто. Кроме того, в составе данной опции могут также исполь зоваться последовательности символов /accept (формирование "белого списка") и /skiprelay (если домен отправителя указан в опции host_accept_relay, то список IP-адресов не должен использоваться).

• rbl_hosts. По умолчанию принимается значение * данной опции;

оно указывает на то, что сервер должен проверять все с которыми он взаимодействует, на со Глава 19. Передача почты: протокол SMTP ответствие спискам IP-адресов, указанных посредством опции При необходимости вы можете освободить некоторые серверы от этой проверки. Чтобы сделать это, вам надо указать их имена перед символом *;

каждому имени должен предшествовать символ !. Например, выражение rbl_hosts = * освобождает от проверки на принадлежность спискам • Последовательности символов /warn и /reject в составе значения опции указывают, следует ли добавить к письму поле заголовка с предупреждающим сообщением или отказаться от получения пись ма. Если эти последовательности не указаны, Exim по умолчанию отказывается от письма. Изменить поведение сервера позволяет опция rbl_re ject_recipients.

Если вы зададите в конфигурационном файле выражение rbl_reject_ recipients = no, Exim будет по умолчанию добавлять в заголовки писем пре дупреждающие сообщения.

• Данная опция позволяет задавать исключения из списков IP-адресов. Например, если указана опция recipients_reject_ except = com, сервер Exim будет получать пись ма, адресованные пользователю даже в том случае, если они были отправлены с компьютера, указанного в списке IP-адресов.

Дополнительную информацию об опциях, предназначенных для работы со списками IP-адресов, вы найдете в документации, поставляемой в комплекте с сервером Exim. По мимо опций, рассмотренных выше, Exim поддерживает дополнительные опции, имеющие лишь косвенное отношение к борьбе со спамом. Эти опции перечислены ниже.

• headers_check_syntax. Exim может проверить формат сообщений и отверг нуть их, если они составлены некорректно. Серверы некоторых спамеров непра вильно формируют заголовки, поэтому, отвергая подобные сообщения, вы избав ляетесь от писем с рекламными сообщениями. Чтобы сервер блокировал некор ректно составленные письма, необходимо задать значение true опции head s_check_syntax.

• helo_verify. В процессе взаимодействия по протоколу сервер SMTP передает команду HELO или EHLO, указывая в ее составе свое имя. Обычно Exim не требу ет этой команды, но при необходимости вы можете задать список узлов, которые должны соблюдать все правила взаимодействия серверов. Так, например, выра жение helo_verif у = * указывает, что все удаленные серверы должны строго следовать протоколу обмена. Опция helo_verif у не только требует передавать команду HELO или EHLO, но также включает проверку соответствия IP-адресов доменным именам. Системы спамеров часто бывают неверно сконфигурированы, поэтому передаваемые ими письма не выдерживают подобной проверки. Однако следует учитывать, что серверы, с которых поступают обычные письма, также бы вают некорректно настроены. В этом случае будут потеряны нужные вам сообщения.

• Данная опция также имеет лишь отдаленное отношение к борьбе со спамом, но с ее помощью можно избавиться от некоторых рекламных сообщений. По умолчанию устанавливается значение 0 опции message_size_ 474 III. Серверы Internet limit, которое отменяет ограничения на размер писем. Если вы зададите поло жительное значение данной опции, оно будет определять максимальный размер письма. Это предотвратит получение рекламных сообщений большого объема.

Средства фильтрации сообщений, предоставляемые Exim, и в особенности фильтры, определяемые пользователем, позволяют настроить систему в соответствии с вашими потребностями.

Настройка Postfix Как и в сервере Exim, конфигурационный файл Postfix достаточно прост. Настроить сервер Postfix сможет каждый, кто хотя бы поверхностно знает терминологию SMTP и способен понять назначение имен. Сервер Postfix имеет модульную структуру, т. е. его функции обеспечиваются совместным выполнением нескольких программ. Postfix предо ставляет приблизительно те же возможности, что и Exim. Подобно другим серверам SMTP, Postfix обеспечивает маскировку адресов, прием писем, адресованных в локаль ные домены, работу в режиме ретрансляции почты, а также предоставляет возможность противодействия распространению спама.

Postfix по умолчанию используется в Mandrake, но также может быть установлен и в других системах, например в Debian и SuSE. Этот сервер также входит в состав Pow erTools. предназначенный для Mandrake, может быть установлен в других дистрибутивных пакетах Linux, но сценарии содержащиеся в данном пакете, рабо тать не будут. Поскольку Postfix чаще всего применяется совместно с Mandrake, материал данного раздела будет излагаться с учетом конфигурации Postfix, устанавливаемой по умолчанию для данной версии системы. Настройка Postfix для остальных систем отлича ется от конфигурации для Mandrake лишь отдельными деталями.

Конфигурационный файл Postfix Особенности выполнения Postfix определяются содержимым конфигурационного фай ла который обычно располагается в каталоге /etc/postfix. Большинство записей в этом файле представлены в следующем формате:

опция = Некоторые записи cf определяют переменные, используемые далее в этом файле. Чтобы ссылаться на значение опции как на переменную, надо указать перед именем опции символ S и включить полученное имя в правую часть записи. В качестве примера рассмотрим следующие две записи (между которыми могут находиться другие строки):

= myorigin — $myhostname В первой записи переменной myhostname присваивается имя узла com, затем это же значение присваивается переменной myorigin. По добные цепочки определений часто используются в поэтому, чтобы определить значение переменной, надо проследить его, перемещаясь назад по конфигурационному файлу.

Файл cf в основном состоит из комментариев, которые содержатся в строках, начинающихся в символа #. Комментарии подробно описывают назначение каждой опции, Глава 19. Передача почты: протокол SMTP поэтому вы можете достаточно подробно изучить конфигурацию Postfix, просматривая лишь содержимое конфигурационного файла.

В файле содержатся ссылки на другие файлы. Как и в сервере некоторые из этих файлов (оканчивающиеся символами. представлены в двоичном формате. Они создаются на базе текстовых файлов с теми же именами, за исключением суффикса. db. В процессе использования сервера наиболее часто приходится редактиро вать файл (который преобразуется в файл db). Как и в одноименном файле сервера sendmail, в файле aliases задаются псевдонимы, используемые при доставке писем. Например, запись amelia указывает на то, что все письма, адресованные root, должны быть доставлены пользователю amelia. Для того чтобы преобразовать текстовый файл aliases в двоичный файл aliases надо вызвать команду postalias aliases, указав перед этим в качестве текущего каталог, в кото ром содержится файл aliases.

После того как вы модифицируете содержимое текстового файла и создадите файл. db, пройдет некоторое время перед тем, как Postfix учтет внесенные изменения. Для чтобы ускорить этот необходимо задать команду reload либо перезапустить Postfix, используя для этого сценарий SysV.

Маскировка адресов Опция позволяет задать имя, под которым Postfix будет представляться при взаимодействии с другими системами. По умолчанию в качестве значения данной опции задается переменная которая, в свою очередь, определяет доменное имя компьютера. Конфигурация по умолчанию приемлема во многих случаях, но если вашему компьютеру соответствует несколько имен или если вы хотите вместо имени узла использовать имя домена, вам придется изменить настройку сервера. Для этого надо задать новое значение опции myorigin, например:

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

Опция myorigin определяет только базовые средства маскировки адресов. Значение данной опции используется лишь в ходе начальных переговоров с удаленным сервером, предусмотренных протоколом SMTP, и для указания доменного имени в поле ес ли соответствующие данные не были включены в это поле программой подготовки писем.

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

Предположим, например, что клиентская программа, использующая сервер Postfix для пе редачи писем, включает в поле адрес com. Пред положим также, что вы хотите удалить идентификатор так, чтобы адрес имел вид Учитывая, что значением переменной 476 Часть III. Серверы Internet является имя домена com, вы можете использовать для получения тре буемого результата следующую запись:

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

Postfix позволяет выполнять еще более сложные действия по маскировке адресов.

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

sender_canonical_maps В файл sender_canonical необходимо включить записи, используемые для пре образования имен. Каждая строка этого файла должна содержать адрес, который мо жет находиться в составе заголовка, и адрес, которым он должен быть заменен. Сле дующие две строки заменяют имена и localhost на @localhost Аналогичный подход можно использовать для преобразования пользовательских имен.

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

После создания файла его необходимо преобразовать в двоич ный формат посредством команды postmap sender_canonical. Чтобы внесенные в файл изменения были учтены сервером Postfix, надо вызвать команду reload либо перезапустить сервер.

Выполняя настройку сервера, необходимо ограничиваться минимально допустимым уровнем маскировки адресов. В большинстве случаев конфигурация, установленная по умолчанию, позволяет Postfix выполнять свои функции, иногда приходится лишь скор ректировать значение myorigin. Опция в основном приме няется в тех случаях, когда сервер принимает для передачи письма, которые уже были обработаны почтовым сервером, выполняющимся в системе Linux или UNIX. Средства преобразования адресов воздействуют не только на заголовок они также затраги вают содержимое заголовка Многие администраторы неохотно используют данные средства, но в ряде случаев они могут быть очень полезны, особенно если ваши программы требуют, чтобы имена и адреса в поле были представлены в специ альном формате.

Настройка Postfix для получения почты Подобно другим почтовым серверам, Postfix считает локальными только адреса неко торых узлов. Чтобы определить, какой из компьютеров является локальным, Postfix ис пользует опцию По умолчанию для данной опции приняты значения $myhostname и Например, если переменная $mydomain имеет значение a — Глава 19. Передача почты: протокол SMTP com, то Postfix будет принимать письма, направленные на компьютеры При необходимости вы можете изменить или дополнить значения данной опции. На пример, если почтовый сервер обслуживает домен, вам необходимо добавить переменную Неплохо также указать для данной опции значение localhost. Значения опции mydestination отделяются друг от друга запятыми. Например, для почтово го сервера, обслуживающего один домен, в конфигурационный файл можно включить следующее выражение:

mydestination = localhost, $myhostname, $mydomain Для того чтобы указать, что опция mydestination занимает несколько строк, символ \ использовать не надо. Строка считается продолжением предыдущей, ЗАМЕТКУ если она начинается с пробела или знака табуляции.

Вы можете настроить сервер Postfix для обслуживания нескольких доменов, указав их посредством одной опции mydestination. В этом случае имена большинства доменов задаются явно.

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

Настройка Postfix для работы в режиме ретранслятора По умолчанию Postfix передает письма, которые удовлетворяют следующим крите риям.

• Отправитель находится в одной из сетей, указанных с помощью переменной $mynetworks. По умолчанию в качестве значения этой переменной заданы ад реса сетей, которым принадлежат все сетевые интерфейсы компьютера, в том числе интерфейс localhost.

• Отправитель принадлежит домену, указанному в переменной $relay_domains.

По умолчанию значение данной переменной равно значению переменной $mydestination.

• Отправитель пытается передать письмо на компьютер, принадлежащий одному из доменов, указанных в переменной $relay_domains, или их Конфигурация по умолчанию указывает на то, что Postfix должен обрабатывать почту из того домена, которому принадлежит сам сервер, и от компьютеров, непосредственно связанных с сервером, посредством сетевых интерфейсов. В большинстве случаев такая конфигурация вполне приемлема, но иногда приходится изменять ее. Чтобы сделать это, вам надо изменить значение $mynetworks или $relay_domains (либо модифициро вать обе переменные). Предположим, например, что Postfix должен обслуживать рабочую станцию com. Для этого вам надо переопределить значения пере менных следующим образом:

478 Часть III. Серверы Internet = 127.0.0.0/ relay_domains = Возможно, вам потребуется расширить набор компьютеров, обслуживаемых сервером.

В этом случае значения переменных могут выглядеть так:

mynetworks = 127.0.0.0/ relay_domains = pangaea.edu Данные опции сообщают о том, что письма должны приниматься из сетей и localhost а также с компьютеров, принадлежащих доменам $mydestination и Для управления действием mynetworks, relay_domains и некоторых других оп ций может использоваться опция По умолчанию эта опция отсутсвует в но при необходимости вы можете включить ее в состав конфигурационного файла. Значение данной опции соответству ет опции сервера Подробные сведения о smtpd_ sender_restrictions вы найдете в документации на сервер Postfix.

Настройка Postfix для передачи почты через ретранслятор В простейшем случае, чтобы сконфигурировать Postfix для передачи почты посред ством другого сервера, достаточно установить значение опции relayhost. Эта опция, находящаяся в файле указывает на компьютер, выполняющий функции ре транслятора. Если в конфигурационном файле сервера имен, управляющего доменом, присутствует запись MX, указывающая на сервер-ретранслятор, то в качестве значения опции relayhost можно задать имя этого домена. Например, если в роли ретрансля тора выступает сервер, расположенный на компьютере com, в файл cf необходимо включить следующую запись:

relayhost = Если ваш сервер находится в том же домене, что и сервер-ретранслятор, и если на ретранслятор, указывает запись MX, то вместо имени вы можете использовать переменную Такой подход предпочтительнее тем, что переносе почтового сервера, обслуживающего домен, на другой компьютер перена страивать Postfix не приходится.

В обычных условиях при передаче почты Postfix обращается к серверу DNS. Если же сервер имен в вашей сети отсутствует (например, если преобразование имен осуществля ется с помощью файлов /etc/hosts), вам необходимо включить в конфигурационный файл следующую запись:

disable_dns_lookups = yes Эта опция указывает серверу Postfix на то, что он не должен обращаться к серверу DNS для преобразования имен. В этом случае Postfix определяет адрес ретранслятора с помощью записи в файле /etc/hosts.

Глава 19. Передача почты: протокол SMTP Настройка Postfix для противодействия распространению спама Подобно и Exim, Postfix содержит средства, позволяющие бороться с рас пространением спама. Вы можете блокировать рекламные сообщения, сравнивая инфор мацию в заголовках писем с шаблонами, либо использовать списки IP-адресов.

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

header_checks = В файле указываются регулярные подобные приведен ным в листинге 19.2. Если заголовки почтового сообщения соответствуют регулярным выражениям, содержащимся в файле, и если в файле указано, что письмо должно быть отвергнуто, оно возвращается отправителю. Регулярные выражения могут задаваться ли бо в стиле описание), либо в стиле описание).

Листинг 19.2. Файл с регулярными выражениями Postfix, используемыми для фильтрации Поля Subject: заголовков сообщений, полученных от спамеров REJECT Accept Visa/ REJECT #### Поля From: и Received: заголовков сообщений, #### полученных от спамеров REJECT REJECT Регулярные выражения будут подобно рассматриваться далее в этой главе. ДО полнительную информацию о них вы можете получить, обратившись к страни цам справочной системы, посвященным программе egrep.

Опция предоставляет большие возможности, но она сложна в ис пользовании. Более простое решение проблемы спама состоит в применении списков IP адресов. Для работы с такими списками предназначены две приведенные ниже опции.

= = Опция maps_rbl_domains позволяет задавать адреса серверов, управляющих спис ками IP-адресов (эти серверы описаны в табл. 19.1). В качестве значения данной опции можно указать несколько доменных имен, разделенных запятыми или пробелами. Опция, содержащаяся во второй из приведенных выше строк, указывает на то, что информация, предоставляемая серверами, должна использоваться как основание для блокирования пи сем. Кроме опция может также принимать другие значения. Например, значение сообща 480 Часть III. Серверы Internet ет Postfix, что если для адреса отправителя не может быть выполнено обратное DNS письма не должны обрабатываться. Подробнее эти опции описаны в до кументации на Postfix.

Помимо описанных выше опций, Postfix предоставляет также опции, имеющие лишь косвенное отношение к борьбе со спамом. Некоторые из таких опций описаны ниже.

• По умолчанию для данной опции задается значение по.

Если вы измените его на Postfix будет обрабатывать письмо только в том слу чае, если при обмене по протоколу SMTP отправитель передаст команду HELO или EHLO. Этот подход позволяет блокировать действия некорректно написанных про грамм, часто используемых для распространения спама, но также отвергает обыч ные письма, отправляемые посредством неправильно сконфигурированного сервера SMTP.

• smtpd_helo_restrictions. Данная опция позволяет Postfix более строго кон тролировать использование команды HELO или EHLO при SMTP-взаимодействии.

Для опции предусмотрено несколько значений. На пример, означает, что Postfix должен прекратить взаимодействие, если для указанного доменного имени не может быть обнаружена запись А или MX. Значение требует, чтобы от правитель указал полное доменное имя узла. Более подробное описание опции smtpd_helo_restrictions приведено в документации на сервер Postfix.

• Если в конфигурационном файле Postfix указана данная опция, это означает, что информация в поле заголовка должна со ответствовать определенным критериям. Например, значение sender_domain указывает на то, что если в поле не задано имя узла, письмо должно быть отвергнуто, а значение требу ет, чтобы отправитель включал в адрес полностью определенное доменное имя.

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

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

Использование фильтров Procmail Серверы SMTP, описанные в данной главе, могут обрабатывать письма, отправленные с внешних компьютеров. До сих пор мы не рассматривали вопрос о том, что происходит с письмом после как оно принимается сервером. В простейшем случае почтовый сервер присоединяет сообщения к файлу, в котором хранятся принятые письма. При необходимости система Linux может быть сконфигурирована так, что в процесс доставки Глава 19. Передача почты: протокол SMTP писем будет включен инструмент Procmail. Procmail позволяет осуществлять сложную об работку писем, принятых почтовым сервером. Вы можете использовать готовые средства фильтрации, поставляемые в составе Procmail, либо создавать собственные фильтры. Изу чив принципы работы Procmail, вы можете решать такие задачи, связанные с доставкой почты, которые не могут быть решены другими способами.

Роль Procmail в процессе доставки почты Большинство почтовых серверов предназначено для передачи сообщений с одного компьютера на другой или от одного пользователя работающему на том же ком пьютере. В некоторых случаях среда доставки писем оказывается достаточно сложной, и возникает необходимость в фильтрации принятых сообщений. Одна из причин, по кото рой возникает потребность в фильтрации, — распространение спама — была рассмотрена ранее. Вы, вероятно, захотите отказаться от получения рекламных сообщений или, по крайней мере, собирать их в одной специально предназначенной для них папке. Средства для блокирования спама предусмотрены во всех рассмотренных ранее почтовых серверах, но они уступают по своим возможностям реализуемым посредством Procmail.

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

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

В результате у вас появится возможность читать письма с помощью программ, предусмот ренных для просмотра материалов групп новостей. Чтобы защитить вашу сеть от вирусов и "троянских коней", распространяемых по почте, вы можете организовать обработку по ступающих сообщений с помощью антивирусных программ. Эту задачу также позволяет решить Procmail. При необходимости можно создать фильтр, который будет воспроиз водить звуковой сигнал, оповещая вас о поступлении писем, содержащих определенные ключевые слова.

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

Для этого Procmail использует регулярные выражения, подобные тем, которые применя ются сервером Postfix для обработки данных в заголовках сообщений или программой egrep.

С помощью Procmail могут создаваться фильтры для всей системы или для отдельных пользователей. Например, фильтры, действующие в пределах системы, могут использо ваться для блокирования спама и борьбы с вирусами. Отдельные пользователи могут применять Procmail для распределения сообщений по папкам и выполнения других по добных действий. Конфигурация Procmail для использования в рамках системы задается с помощью файла Для индивидуального применения Procmail на страивается посредством файлов расположенных в рабочих каталогах 482 Часть III. Серверы Internet пользователей. Файлы, предназначенные для отдельных пользователей, имеют тот же формат, что и файлы, ориентированные на применение во всей системе.

ВНИМАНИЕ В большинстве версий Linux файл используется тогда, ко гда Procmail запускается по инициативе пользователя root. Поэтому надо вни мательно следить за тем, чтобы команды, выполняемые Procmail, не нанесли вреда системе. Кроме того, перенаправляя почту, необходимо принимать меры для того, чтобы создаваемые файлы были доступны для чтения пользователям, которым они предназначены. При работе с файлами.procmailrc, располо женными в пользовательских каталогах, подробные проблемы не возникают, так как в этом случае Procmail выполняется с привилегиями обычного пользователя.

В конфигурационном файле Procmail содержатся записи трех типов.

• Комментарии. Как и во многих других конфигурационных файлах, строки, содер жащие комментарии, начинаются с символа #.

• Записи, определяющие переменные окружения. В процессе работы Procmail ис пользует значения переменных окружения, например (расположение рабо чего каталога пользователя) и (каталог, в котором содержатся пользова тельские папки для хранения почтовых сообщений). Значения переменных окру жения устанавливаются в конфигурационном файле так же, как и в оболочке.

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

• Рецепты. Правила фильтрации Procmail называются рецептами (recipe). Основная работа по построению фильтра сводится к созданию рецепта. Каждый рецепт содер жит правила, определяющие обработку сообщения, соответствующего некоторому регулярному выражению. Таким образом, полный набор правил состоит из многих рецептов. Рецепты разделяются на две категории: рецепты с доставкой (deliver ing) и рецепты без доставки (nondelivering). Рецепты с доставкой ориентированы на включение сообщения в состав почтового ящика, блокирование сообщения или обработку его с помощью другой программы. Рецепты без доставки определяют вложенные рецепты, т. е. приводят к повторной обработке сообщения с помощью Procmail.

Описанные три типа записей могут располагаться в пределах конфигурационного фай ла в любой последовательности. Многие конфигурационные файлы Procmail начинаются с определения переменных окружения, за которыми следует набор рецептов. В процессе обработки поступающей почты Procmail сканирует письма и проверяет их на соответ ствие рецептам. Если письмо не соответствует ни одному рецепту, Procmail доставляет его в файл, определяемый посредством переменной Обычно это почтовый ящик, используемый по умолчанию, например Создание рецепта Создание рецепта может показаться очень сложной задачей, в особенности для тех, кто не знаком с регулярными выражениями. Формат рецепта имеет следующий вид:

Глава 19. Передача почты: протокол SMTP действие Рецепт можно условно разбить на три части: идентификационную строку, условия и действие.

Идентификационная строка Каждый рецепт начинается с символов : Цифра 0 не имеет специального значения, и рецептов, начинающихся с : 1 или больших номеров, не существует. После : 0 вы мо жете задать один или несколько флагов, которые изменяют поведение Procmail. Наиболее часто используются следующие флаги.

• Н. Данный указывает на то, что сравнению с шаблоном должны подвергаться заголовки сообщения. Этот флаг используется по умолчанию • В. Этот флаг задает сравнение тела сообщения с шаблоном.

• D. По умолчанию при сравнении с шаблоном не учитывается регистр символов.

Флаг D отменяет это соглашение.

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

• w. Этот флаг сообщает о том, что Procmail должен ожидать завершения действия, указанного в рецепте. Если действие не окончилось успешно, сообщение остается в очереди для обработки посредством других рецептов.

• Данный флаг действует подобно w, но подавляет сообщения об ошибках.

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

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

Условия Условия в составе рецепта состоят из любого (возможно, нулевого) числа строк, обыч но начинающихся с символа *. Как правило, в составе условий задаются регулярные вы ражения — строки символов, с которыми Procmail сравнивает входные данные (заголовок и тело сообщения). Большинство символов используется литерально, но некоторые сим волы имеют специальные значения. Специальные символы и выполняемые ими действия описаны ниже.

• Указывает на начало строки. Этот символ указывается во многих условиях Proc mail после символа *.

484 Часть III. Серверы Internet • Данный символ указывает на конец строки.

• Точке соответствует любой символ, кроме символа новой строки. Например, выражению удовлетворяют dog, dig, dug и любая другая последовательность, которая начинается с d и заканчивается д.

• а*. Данному выражению соответствует любое (в том числе нулевое) число симво лов, указанных перед звездочкой, следующих друг за другом. Очевидно, что вместо а вы можете подставить любой символ. Например, если вам надо найти после довательность, начинающуюся с цифр 802, за которыми следует произвольное ко личество неизвестных символов, а затем то сделать это поможет выражение • а+. Это выражение выполняет те же действия, что и но количество символов в последовательности не может быть нулевым.

• Данное выражение означает, что указанный символ может отсутствовать.

• \ Чтобы указать на то, что в строке может присутствовать одна из двух последовательностей символов, надо разделить эти последовательности символом |. При необходимости вы можете за дать выбор более чем из двух альтернативных вариантов, использовав несколько символов |.

• (последовательность) *. Это выражение похоже на но оно означает мно гократное повторение не одного символа, а целой последовательности.

• [ Набор символов, помещенных в квадратные скобки, означает, что в строке должен присутствовать любой из них. Например, выражению соответствуют символы а, е, о или и. Если два символа разделены дефисом (-), они задают диапазон символов. Например, выражению соответствуют символы т, о, р или q.

• \. Обратная косая черта отменяет специальное значение символа. Например, выра жение соответствует обычной точке.

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

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

• Данный символ инвертирует результат сравнения. Если условие начинается с сим вола то, для того, чтобы письмо соответствовало рецепту, оно не должно со ответствовать данному условию. Например, вы можете создать рецепт, которому соответствуют все сообщения, кроме адресованных пользователю postmaster.

Глава 19. Передача почты: протокол SMTP • <. Условие применяется в том случае, если длина сообщения меньше указанного числа байтов.

• >. Условие применяется в том случае, если длина сообщения больше указанного числа байтов.

Действие Действие в составе рецепта занимает одну строку и указывает Procmail, как следует обрабатывать сообщение. Простое действие лищь задает имя файла, в который Proc mail должен поместить сообщение. Действия Procmail хорошо сочетаются с sendmail, Exim, Postfix и другими серверами, использующими формат Если же вы работае те с или другим сервером, поддерживающим формат maildir, описание действия Procmail необходимо завершать косой чертой которая указывает на то, что Procmail должен сохранить сообщение в формате maildir. Procmail также поддерживает еще один формат хранения сообщений, для использования которого описание действия должно заканчиваться косой чертой и точкой.

Помимо записи писем в папки, Procmail также может выполнять другие действия, для описания которых в начале строки указываются перечисленные ниже символы.

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

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

• Открывающая фигурная скобка является признаком начала блока. В состав блока могут входить рецепты, которые применяются только к сообщениям, соответству ющим условиям включающего рецепта. (Включающий рецепт рецептом без доставки. Если сообщение не соответствует ни одному из включаемых рецеп тов, оно не доставляется.) Такая возможность может использоваться в том случае, если у вас есть несколько рецептов и вы хотите применять их только при выпол нении некоторых предварительных условий. Например, вложенные рецепты можно использовать для распознавания рекламных сообщений по некоторым признакам, каждый из которых не позволяет принять окончательное решение о типе письма.

Признаком окончания блока является закрывающая фигурная скобка.

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

486 _ Часть III. Серверы Internet Пример использования рецептов Приведенные выше сведения были необходимы для создания общего представления о работе Procmail. В листинге приведен чрезвычайно простой пример файла Procmail, предназначенного для фильтрации сообщений. Содержащиеся в нем рецепты пригодны для пользовательского файла поскольку они предусматривают доставку сообщений в папку рабочего каталога пользователя.

Листинг 19.3. Пример конфигурационного файла Procmail # Поиск рекламных сообщений. Проверка не затрагивает письма, t адресованные пользователю postmaster или отправленные им : { :0 В * : * From:.

/dev/null : * /dev/null # Проверка по ключевым словам rug и david и # перенаправление писем ату :0 с * * !

# Сообщения списков рассылки помещаются в отдельную папку :0:

* Листинг 19.3 иллюстрирует некоторые важные особенности рецептов Procmail.

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

(Это достигается посредством оператора отрицания, указанного в условиях Глава 19. Передача почты: протокол SMTP чающего рецепта.) Аналогичный результат можно получить, включив условие \ То:. *postmaster в состав каждого из фильтров, предназначенных для блокирования спама. В данном простом примере это может несколько сократить объем конфигурационного файла. В более сложных фильтрах при использовании вложенных рецептов объем файла уменьшается. Кроме того, применение вложен ных фильтров уменьшает вероятность ошибки, так как некоторые условия при этом указываются однократно.

• Регулярные выражения. В листинге 19.3 содержатся три рецепта, предназначен ные для фильтрации рекламных сообщений. Первый из них проверяет тело сообще ния (на это указывает флаг В) на наличие строки, содержащей последовательности 301, S и 1618. Этот рецепт предназначен для перехвата писем, содержащих указание на раздел 301 и номер которые часто используются спамерами для созда ния иллюзии официального сообщения. Второй из рецептов, предназначенных для фильтрации спама, блокирует все письма из домена net, а третий фильтр блокирует сообщения, содержащие в поле последовательность $.

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

• Копирование сообщений. Вместо того чтобы записывать сообщение в файл, второй рецепт, приведенный в рассматриваемом примере, передает его другому пользовате лю. На это указывают флаг с и восклицательный знак в начале описания действия.

Сообщение должно удовлетворять двум критериям: отправителем его должен быть пользователь и оно должно содержать слово rug в поле заголовка Sub j Если хотя бы одно из условий не выполняется, сообщение не копируется.

• Сортировка сообщений. Последний рецепт распределяет сообщения по папкам.

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

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

Использование существующих наборов фильтров Создание фильтров — достаточно сложная задача, отнимающая много сил и времени. Вместо того чтобы заниматься созданием фильтра с нуля, вы можете попы 488 Часть III. Серверы Internet таться применить для своих целей готовые фильтры. Некоторые из источников фильтров Procmail описаны ниже.

• SpamBouncer. Этот пакет представляет собой набор фильтров Procmail, предназна ченных для блокирования спама. Фильтры, входящие в состав SpamBouncer, доста точно сложны, но при необходимости вы можете адаптировать некоторые из них для решения собственных задач. Подробно эти фильтры описаны в документации, по ставляемой в составе пакета. Чтобы скопировать SpamBouncer, надо обратиться на его Web-страницу, расположенную по адресу org.

• SmartList. Этот пакет, реализующий список рассылки, создан на основе Procmail.

Дополнительную информацию о нем вы можете получить из документа SmartList FAQ, доступного по адресу • Советы и рецепты Тимо Салми Salmi) поддерживает Web-страни цу посредством кото рой он распространяет информацию о простых рецептах Procmail. Информацию, представленную на этой странице, нельзя рассматривать как готовый к использова нию пакет, такой как SpamBouncer или SmartList, однако вы можете найти на ней "заготовки" для своих фильтров.

• Примеры рецептов Procmail с комментариями. Web-узел / содержит примеры рецептов Procmail, снабженные комментариями, которые поясняют их работу.

Дополнительную информацию о фильтрах и рецептах, пригодных для использования, вы получите, выполнив в Internet поиск по ключевым словам Procmail recipes.

Многие полезные ссылки можно найти на Web-узле Procmail по адресу Простые наборы фильтров можно разместить в рабочем каталоге пользователя в фай ле.procmailrc. Если фильтр должен воздействовать на систему в целом, его надо включить в файл Некоторые пакеты, например SpamBouncer, со держат специальные файлы, поэтому при инсталляции необходимо следить, чтобы они были установлены корректно.

ВНИМАНИЕ В ряде случаев, чтобы выполнить задачу, недостаточно инсталлировать фильтр.

| Некоторые фильтры приходится настраивать, указывая в них имена у шов и да же имена пользователей. Разработчики многих фильтров ориентировались на потребности конкретных администраторов, в то время как перед вами могут стоять несколько другие задачи.

СОВЕТ Как системный администратор, вы можете позволить себе роскошь создать спе циальную учетную запись для тестирования. Такую запись удобно использовать для проверки фильтров Procmail. Пробные сообщения можно передавать, изме нив настройку программы подготовки писем и даже непосредственно взаимо действуя с сервером SMTP посредством программы telnet (для этого надо при установлении соединения указать порт 25).

Глава 19. Передача почты: протокол SMTP Запуск Procmail При обсуждении принципов фильтрации предполагалось, что программа Procmail уже запущена и обрабатывает поступающие сообщения. В большинстве версий Linux почто вые серверы уже сконфигурированы для использования Procmail при доставке почты.

Действия, необходимые для настройки серверов, описаны ниже.

• Чтобы настроить сервер для использования Procmail, необходимо вклю чить в конфигурационный файл три записи. Первая из них, сообщает sendmail о том, где расположены двоичные файлы Procmail. Записи и указывают sendmail на необходимость использования Procmail при доставке почты.

• Exim. Около двух третей конфигурационного файла используемого по умолчанию, занимает раздел Этот раздел посвящен исполь зованию Procmail для доставки почты. Убедитесь, что данный раздел присутствует в конфигурационном файле и что в нем указан требуемый двоичный файл.

• В конфигурационном файле используемом по умолчанию, для вызова Procmail применяется опция Если вы не укажете эту опцию, Postfix будет доставлять почту, минуя Procmail.

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

содержащий следующую строку:

-f $p&&exec $p \ Следите за тем, чтобы одинарные и двойные кавычки были указаны точно так, как в этом примере.

490 Часть III. Серверы Internet Резюме Электронная почта — одна из наиболее важных служб Internet. Linux обеспечивает ра боту самых различных почтовых серверов, как всем известного так и новых продуктов, например Exim и Postfix. Независимо от того, какой сервер SMTP вы использу ете, можете настроить его для выполнения некоторых стандартных действий, скажем, для получения писем и перенаправления их другим системам. При настройке сервера необ ходимо уделять внимание различным деталям, например, указывать набор компьютеров, с которых сервер должен получать письма для передачи другим системам, принимать меры для блокировки спама и т. д. После получения сообщения сервером SMTP оно может быть обработано с помощью Procmail. Procmail позволяет отвергать рекламные со общения, передавать письма другим программам, пересылать копии сообщений другим пользователям и выполнять прочие, самые разнообразные задачи. Procmail обеспечивает большую гибкость в работе, в частности, правила фильтрации может создавать не только системный администратор, но и любой пользователь.

I Поддержка Web-сервера Многие пользователи не видят различий между системой World Wide Web и Internet в целом, хотя каждый специалист знает, что функционирование Internet обеспечивается большим количеством серверов, поддерживающих различные протоколы. Если же гово рить о наиболее популярной службе Internet, то ею, несомненно, окажется Web. Наличие Web-сервера — одно из условий успешной работы практически каждой организации. Web сервер, по сути, является "лицом" компании в среде Internet.

В системе Linux работа Web-сервера может обеспечиваться различными программами, однако наибольшей популярностью среди администраторов пользуется продукт Apache.

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

Организовать выполнение основных функций Web-сервера в системе Linux не трудно, но разобраться с опциями, предназначенными для поддержки расширенных возможно стей сервера, достаточно сложно. Описать эти опции в одной главе невозможно. Если вам потребуется подробная информация о работе Web-сервера, вам следует обратиться к документации на программный продукт, который вы собираетесь использовать, или к изданиям, специально посвященным этому вопросу: Энгельскелла (Engelschall) Apache Desktop Reference (Addison Wesley, или Олда Linux Apache Server Adminis tration (Sybex, 2001). Есть также книги, в которых описываются специальные функции Web-сервера. В качестве примера можно привести книгу (Meltzer) и Микалски (Michalski), Writing CGI Applications with Perl (Addison Wesley, 2001).

Использование Web-сервера Несмотря на то что Web-серверы очень важны для различных организаций, Web-сер вер не обязательно должен присутствовать на каждом компьютере и даже в каждой сети.

Более того, установка сервера, в котором нет необходимости, приведет к неоправданным затратам времени и усилий и даже может создать угрозу безопасности системы.

492 Часть III. Серверы Internet Web-сервер — это программа, реализующая обмен данными посредством HTTP (Hyper text Transfer Protocol — протокол передачи гипертекстовой информации). Web-сервер при нимает запросы от клиентов через некоторый порт (как правило, это порт с номером 80).

HTTP-клиент (обычно его называют Web-броузером) передает Web-серверу запрос на по лучение документа. Получив запрос, Web-сервер читает документ с жесткого диска, или, если запрос предполагает вызов получает документ, сгенерированный этим сценарием. Затем документ передается клиенту. В протоколе HTTP предусмотрена также возможность передачи Web-серверу данных для обработки.

Web-сервер используется для организации Web-узла — набора документов, к которым пользователи могут обращаться, указывая URL (Uniform Resource Locator — унифициро ванный локатор ресурса). (Следует различать понятия Web-узел и узел сети. Если Web узел представляет собой набор документов, то узел сети — это лишь компьютер или другое устройство, подключенное к сети.) Чаще всего начинаются с //, но в некоторых случаях в начале указываются другие протоколы, например //.

Web-серверы поддерживают // и https : //;

другие протоколы поддерживаются другими серверами.

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

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

Следует хорошо представлять себе различия между Web-узлом и Web-сервером. Web узел, как было сказано выше, — это набор документов, представленных в Web, при обра щении к которым пользователи указывают URL. В этих URL содержится доменное имя, которое часто отражает название организации. В отличие от Web-узла, Web-сервер — это набор программных или аппаратных средств, обеспечивающих поддержку Web-узла. При желании можно организовать работу Web-узла, не устанавливая в локальной сети Web сервер. Для этого надо воспользоваться услугами сторонней организации, предоставля ющей дисковое пространство своего Web-сервера для размещения на нем требуемых документов и программ. Как вы узнаете из данной главы, Web-сервер можно настроить так, чтобы его действия зависели от имени, указанного в запросе. Чтобы при указании имени, принадлежащего вашему домену, обращение осуществлялось к внешнему серверу, на котором размещены ваши документы, вам надо специальным образом настроить сер вер DNS (настройка сервера DNS описывалось в главе Например, если вы разместили документы на Web-сервере по адресу и хотите связать с этим сервером имя в вашем домене, вам надо включить в конфигурационный файл DNS следующую запись:

Глава 20. Поддержка Web-сервера www IN A 10.102.201. Сервер, на котором размещаются ваши документы, необходимо настроить для обра ботки обращений по указанному вами адресу. Кроме того, вам необходимо иметь доступ к внешнему компьютеру, на котором выполняется Web-сервер, для того, чтобы записать данные на его диск.

Размещение данных на внешнем сервере имеет ряд преимуществ по сравнению с под держкой собственного Web-сервера. Например, пропускная способность линии, посред ством которой ваша локальная сеть подключена к Internet, может быть недостаточной для организации обмена данными с Web-сервером. (Так, например, линия с пропускной способностью 200 Кбод, которая может находиться в нерабочем состоянии до пяти часов в месяц, хороша для домашнего использования, но не подходит для большой компании, такой как ЮМ.) Размещая данные на сервере другой организации (например, на серве ре вы избавлены от необходимости поддерживать собственный Web-сервер.

Недостатком такого подхода является необходимость платить деньги за аренду диско вого пространства на сервере (от нескольких долларов до нескольких тысяч долларов в месяц, в зависимости от объема данных и трафика). Кроме того, некоторые внешние серверы не обеспечивают необходимых ресурсов. Например, может оказаться, что сервер не поддерживает CGI или SSL.

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

В этом случае в составе URL вместо имени вашей организации будет указано имя про вайдера, например Такой подход приемлем для частных лиц и небольших организаций. Однако при этом возможности по представле нию данных в Web чрезвычайно ограничены, кроме того, для коммерческой организации нежелательно, чтобы в составе URL указывалось имя провайдера.

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

494 III. Серверы Internet реализующие Web-сервер в системе Linux В настоящее время существует несколько программных продуктов, позволяющих обеспечить функционирование Web-сервера в системе Linux. Некоторые программы име ют небольшой размер и поддерживают лишь ограниченный набор возможностей, другие представляют собой большие пакеты и позволяют реализовать разнообразные, даже самые "экзотические", функции. Ниже описаны наиболее популярные Web-серверы, предназна ченные для Linux.

• Apache. Этот продукт поставляется в составе каждого дистрибутивного пакета Linux. Как правило, процедура установки системы запрашивает пользователя, сле дует ли инсталлировать сервер Apache. По данным Netcraft netcraf com), в марте 2002 г. 65% всех работающий в Internet Web-серверов составляли серверы Apache. По этой причине основное, внимание в данной гла ве уделяется данному продукту. Apache представляет собой полнофункциональ ный Web-сервер и реализует расширенные возможности, например поддержива ет сценарии CGI и SSL-взаимодействие. Web-узел Apache расположен по адресу • Roxen. Этот продукт также представляет собой полнофункциональный Web-сер вер;

во многом он напоминает Apache. Его настройка осуществляется посред ством Web-интерфейса, что привлекает некоторых начинающих администраторов.

Дополнительную информацию о Roxen можно получить, обратившись по адресу • thttpd. Данный сервер отличается небольшим размером кода. Если объем Apache составляет около 300 Кбайт (в зависимости от набора используемых компонен тов эта цифра может изменяться), то объем thttpd — всего 50 Кбайт. Данный сервер работает быстро и эффективно. Несмотря на размер, он поддерживает сце нарии CGI, но не обеспечивает SSL-взаимодействие. Более подробные сведения об этом сервере можно получить по адресу • Zeus. Большинство Web-серверов, предназначенных для работы в системе Linux, бесплатно распространяются в исходных кодах, но Zeus является исключением.

Это коммерческий продукт;

цена составляет долларов. Согласно информа ции, опубликованной на Web-узле Zeus.

zws/), данный сервер обеспечивает лучшую масштабируемость по сравнению с другими серверами. Это проявляется при интенсивных обращениях клиентов к Web-серверу.

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

Глава 20. Поддержка Web-сервера • Нетрадиционные серверы. Некоторые программы используют протокол HTTP для выполнения специальных действий, не поддерживаемых обычными Web-серверами.

Например, инструменты удаленного администрирования, которые рассматривались в главе формально могут считаться Web-серверами. Взаимодействие с ними можно организовать посредством обычных Web-броузеров, но они принимают об ращения от клиентов через порт, отличный от порта 80. Подобные серверы в данной главе рассматриваться не будут.

Pages:     | 1 |   ...   | 8 | 9 || 11 | 12 |   ...   | 14 |



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.