Настройка sendmail
🕛 03.08.2009, 19:24
В настоящее время sendmail является самым популярным почтовым сервером в мире. Эта программа входит в состав различных дистрибутивных пакетов Linux, в том числе Caldera, Red Hat, Slackware, SuSE и TurboLinux. Несмотря на то что в Debian и Mandrake по умолчанию устанавливаются другие серверы SMTP, sendmail также входит в комплект поставки и при необходимости может заменить существующий почтовый сервер. Как было сказано ранее, в настоящее время доступна версия 8.12.2 sendmail, но некоторые дистрибутивные пакеты Linux до сих пор поставляются с 8.11.x и более ранними версиями.Формат конфигурационного файла sendmail чрезвычайно сложен, но в распоряжение администратора предоставляются специальные утилиты, посредством которых можно преобразовать файл, заданный в простом формате, в рабочий вариант конфигурационного файла, используемого sendmail. Помимо структуры конфигурационных файлов, в данном разделе будут рассматриваться специальные вопросы настройки sendmail: маскировка адреса, обработка локальных сообщений и обеспечение работы в режиме ретранслятора.
Конфигурационные файлы sendmail
Основной конфигурационный файл sendmail называется sendmail. cf; обычно он располагается в каталоге /etc. Этот файл содержит большое количество опций, представленных в виде, неудобном для восприятия, поэтому анализировать содержимое данного файла и редактировать его чрезвычайно сложно.
Обойти трудности, вызванные сложным форматом sendmail. cf, можно, создавая конфигурационный файл в простом и понятном формате, а затем преобразуя его с помощью утилиты т4 в файл sendmail.cf. Исходный файл, предназначенный для обработки программой ш4, заканчивается символами .тс, но конкретное его имя и расположение может изменяться в зависимости от версии операционной системы. В Red Hat
это файл /etc/sendmail.mc, в Slackware - /usr/src/sendmail/cf/cf/linux. smtp .mc, а в SuSE - /etc/mail/linux.mc. Независимо от имени, исходный файл m4 гораздо меньше и удобнее для восприятия, чем создаваемый на его основе файл .cf. Например, если в системе SuSE 7.1 файл sendmail.cf содержит 1669 строк, то файл linux.mc состоит всего из 221 строки, причем основную часть файла занимают комментарии (строки комментариев начинаются символами dnl).
Для того чтобы создать файл sendmail. cf из файла т4, необходимо вызвать программу т4 и перенаправить ввод и вывод. В системе SuSE этот вызов имеет следующий вид:
# m4 < /etc/mail/linux.mc > /etc/sendmail .cf
В некоторых версиях Linux перед тем как приступать к созданию файла sendmail.cf из исходного файла т4, необходимо установить дополнительный пакет. Например, в Red Hat для создания конфигурационного файла нужен пакет sendmail-cf.
Не следует изменять рабочий вариант файла sendmail. cf. Желательно скопировать файлзепатаИ . cf и исходный файл т4 в другой каталог. Если в результате редактирования вы повредите конфигурационный файл, то, используя созданную копию, вы сможете восстановить рабочую конфигурацию sendmail.
После изменения конфигурационного файла необходимо перезапустить sendmail. Во многих версиях Linux sendmail запускается с помощью сценария SysV, поэтому для перезапуска программы можно использовать опцию restart этого сценария.
Большинство записей в конфигурационном файле т4 задается в следующем формате:
ИМЯ_ХАРАКТЕРИСТИКИ(sопцияГ [, лопция2' [,...]>
Имя характеристики - это некоторое содержательное имя, например define или MASQUERADE_AS. В качестве опций могут быть указаны имена узлов, установки, специфические для sendmail, например always_add_domain, и т. д. В определениях некоторых характеристик одинарные кавычки можно не использовать.
Кавычки, в которые помещаются опции, на первый взгляд выглядят несколько 5 странно: в качестве открывающей и закрывающей используются различные типы кавычек. Необходимо следить за правильным их использованием. Если вы укажете в исходном файле т4 обычные одинарные кавычки, то либо файл не будет обработан, либо конфигурационный файл sendmail. cf будет сформирован некорректно.
Помимо sendmail.cf, программа sendmail также использует при работе другие файлы.
- access.db. Этот двоичный файл создается на базе текстового файла access. Файл access .db определяет, какие компьютеры могут обращаться к программе sendmail. Конфигурация sendmail в качестве ретранслятора во многом зависит от содержимого этого файла. Многие сценарии запуска sendmail вызывают makemap, и если файл access изменился с момента последнего создания access. db, автоматически генерируется новый файл access . db.
- aliases . db. Этот двоичный файл также создается на базе текстового файла с аналогичным именем (aliases). Он определяет псевдонимы - имена, эквивалентные другим именам. Так, например, во многих дистрибутивных пакетах для пользователя root определяется псевдоним postmaster. Возможно, вы захотите создать псевдоним для root, чтобы просматривать почту суперпользователя посредством обычной учетной записи. Подобно файлу access.db, при выполнении многих сценариев запуска файл aliases.db генерируется автоматически.
Рассмотренные выше файлы обычно размещаются в каталоге /etc или /etc/mail. Кроме того, в этом каталоге находятся другие файлы баз данных, определяющие особенности работы sendmail.
Маскировка адреса sendmail
Если вы хотите, чтобы сервер SMTP объявлял себя посредством имени, отличающегося от имени компьютера, на котором он выполняется, вам необходимо сконфигурировать сервер для выполнения маскировки адреса. Принцип маскировки адреса был описан выше в этой главе. Для активизации механизма маскировки адреса вам надо включить в исходный файл т4 следующие две строки:
MASQUERADE_AS(утребуемый_адрес') FEATURE(masquerade_envelope)
Запись MASQUERADE_AS активизирует базовые средства маскировки, которые включают адрес в поле заголовка From: в случае, если пользовательская программа не задает имя узла. Поскольку большинство почтовых программ корректно заполняет это поле, данное средство в основном используется, если пользовательская программа сконфигурирована неправильно. Запись FEATURE (masquerade_envelope) изменяет поле From:, даже если в нем был задан адрес узла.
Если вы хотите, чтобы маскировка применялась только для сообщений от пользователей определенного домена, вам надо включить дополнительные записи, ограничивающие использование средств маскировки.
MASQUERADE_DOMAIN('домен-источник') FEATURE ( ,limited_masquerade')
Эти опции сообщают sendmail о том, что маскировка должна применяться для адресов указанного домена-источника. Подобная конфигурация чаще всего устанавливается, если почтовый сервер обслуживает два домена.
Настройка sendmail для получения почты
Когда удаленный сервер передает почту вашему серверу, письма адресованы конкретным пользователям, работающим на определенных компьютерах. Чтобы обеспечить доставку локальной почты, программа sendmail должна распознавать локальные адреса. Почтовый сервер sendmail поддерживает файл, в котором указываются адреса локальных узлов. В различных дистрибутивных пакетах для данного файла используются разные имена. В Red Hat это файл /etc/mail/local-host-names, а в SuSE -/etc/sendmail. cw. Если вам не удается обнаружить его, найдите в sendmail. cf запись, которая начинается символами Fw. Эта запись содержит имя файла, в котором указаны имена локальных узлов. Независимо от имени, содержимое файла представляет собой набор строк, в каждой из которых задано имя узла. Строки, начинающиеся с символа #, считаются комментариями.
Работа в режиме ретранслятора
Как было сказано ранее, ретрансляция является важным режимом работы почтового сервера. Как правило, настраивая sendmail, приходится обеспечивать ретрансляцию писем, созданных на локальной машине, почты из локальной сети и, возможно, сообщений с некоторых удаленных компьютеров. При этом необходимо следить за тем, чтобы сервер был закрыт для спамеров. Кроме того, не исключено, что вам потребуется сконфигурировать систему для передачи исходящей почты, используя в качестве ретранслятора внешний сервер. В конфигурационном файле sendmail предусмотрены различные опции, имеющие отношение к режиму ретрансляции.
Настройка sendmail для ретрансляции писем
При конфигурировании почтового сервера очень часто приходится обеспечивать передачу писем из локальной сети. Сервер получает сообщения от пользовательских программ и в случае возникновения проблем с передачей данных в сети может временно хранить эти сообщения на своем диске. Для обеспечения подобного взаимодействия адрес почтового сервера должен быть указан при настройке программ подготовки почты.
По умолчанию почтовый сервер, инсталлированный в сети, не настроен для работы в качестве ретранслятора. При попытке передать письмо на сервер программа подготовки почты получит в ответ сообщение "relaying denied" ("ретрансляция запрещена"). Для того чтобы программа sendmail работала в качестве ретранслятора, надо активизировать соответствующие компоненты. В частности, в исходном конфигурационном файле необходимо задать записи FEATURE, указав в них следующие опции.
- relay_entire_domain. Если указана данная опция, sendmail принимает сообщения из своего домена, а также письма, адресованные пользователям в его домене. Для определения принадлежности к домену sendmail использует сервер DNS. Опция relay_entire_domain представляет собой удобное средство обеспечения ретрансляции.
- relay_local_f rom. Эта опция указывает серверу sendmail, что он должен принимать все письма, из содержимого поля From: которых следует, что они передаются из локального домена. От предыдущей опции relay_local_from отличается тем, что для принятия решения об обработке письма используется лишь адрес в поле From:, посредством которого система представляется другим компьютерам. Этот адрес может достаточно просто быть фальсифицирован. Данная опция не обеспечивает приемлемого уровня защиты от спама.
- relay_based_on_MX. Данная опция означает, что сервер sendmail должен принимать письма в том случае, если в домене, которому принадлежит отправитель, присутствует запись MX, содержащая указание на этот сервер. Опция relay_based_on_MX обеспечивает простой и удобный способ управления ретрансляцией. Чтобы настроить почтовый сервер для поддержки еще одного домена, не надо вносить изменения в конфигурационные файлы sendmail, достаточно лишь изменить конфигурацию сервера DNS. Однако подобный подход имеет существенный недостаток. Спамеры, поддерживающие собственные домены, могут легко создать запись MX и использовать ваш сервер в своих целях.
- relay_hosts_only. Если вы зададите этуопцию, sendmail будет использовать базу данных для принятия решений о предоставлении доступа. Письма будут приниматься лишь от тех пользователей, которые работают на компьютерах, указанных в базе. Данную опцию удобно использовать для того, чтобы ограничить доступ к серверу некоторым набором узлов сети.
- access_db. Данная опция часто устанавливается по умолчанию при настройке sendmail. Подобно опции relay_hosts_only, она сообщает sendmail о том, что решение о предоставлении доступа должно приниматься на основе содержимого базы данных. Однако в данном случае в базе могут указываться не только отдельные компьютеры, но и целые домены.
ВНИМАНИЕ Для управления ретрансляцией может использоваться также опция | promiscuous_relay, но применять ее не рекомендуется. Она открывает доступ к серверу для любого компьютера. Сконфигурированный подобным образом сервер рано или поздно будет обнаружен спамерами и использован для передачи рекламных сообщений.
Ниже приведен пример записи в конфигурационном файле т4. FEATURE(,access_db' )
Данная запись часто устанавливается по умолчанию, но она не обеспечивает реальной ретрансляции писем, передаваемых с удаленных узлов, так как в файле access.db, автоматически создаваемом при установке системы, указывается только локальный домен.
Как вы уже знаете, при запуске программа sendmail читает содержимое файла access .db. Этот файл обычно хранится в каталоге /etc или /etc/mail и создается на базе файла access. Пример файла access приведен ниже.
# Разрешить прием писем с localhost. . . localhost.localdomain RELAY localhost RELAY 127.0.0.1 RELAY
# Разрешить прием писем из локальной сети 192.168.99 RELAY
Первые три записи присутствуют практически в любой конфигурации. Они сообщают sendmail о том, что программа должна принимать письма с локального узла. Эти записи обеспечивают работу локальных почтовых программ. Последняя запись указывает на то, что сервер должен принимать для ретрансляции письма, отправленные из сети 192.168.99.0/24. Вместо IP-адресов можно указывать доменные имена, но IP-адреса сложнее фальсифицировать, поэтому при использовании их повышается уровень безопасности системы.
Все приведенные примеры оканчиваются опцией RELAY, но кроме нее в файле access могут также использоваться и другие опции.
- ОК. Эта опция сообщает sendmail о том, что локальные письма должны приниматься, несмотря на то, что другие правила требуют отвергать их.
- RELAY. Как вы, возможно, догадались, данная опция обеспечивает обработку писем, переданных с указанного компьютера или из указанного домена. Она также сообщает, что сервер должен передавать письма, поступившие на эти компьютеры или в эти домены.
- REJECT. Если вы собираетесь блокировать почту, поступающую с определенного узла или из определенного домена, вам следует использовать данную опцию. При этом письма будут возвращаться отправителю.
- DISCARD. Данная опция выполняет те же действия, что и REJECT, но письма не возвращаются отправителю.
- ллл текст. Эта опция также работает подобно REJECT, но в возвращаемое сообщение она включает код ошибки ллл и указанный текст.
Отредактировав файл access, вам необходимо сгенерировать двоичный файл базы данных. Для этого надо использовать команду makemap, которая имеет следующий вид:
# makemap hash /etc/mail/access .db < /etc/mail/access
При инсталляции sendmail такая команда часто включается в сценарий запуска, поэтому вызывать ее вручную не всегда нужно. В любом случае после внесения изменений в файл access необходимо перезапустить программу sendmail.
Настройка sendmail для передачи почты через ретранслятор
В предыдущем разделе рассматривался вопрос об использовании программы sendmail для ретрансляции почты. Однако, настраивая почтовый сервер, необходимо также принимать во внимание и вопросы передачи писем через ретранслятор, функции которого выполняет другой сервер. Часто при организации работы небольшой сети и даже одного компьютера приходится использовать в качестве ретранслятора почтовый сервер провайдера. Несмотря на то что компьютер под управлением Linux, на котором установлена программа sendmail, может передавать почту самостоятельно, многие провайдеры запрещают это, включая IP-адреса, предоставляемые своим клиентам, в списки адресов, предназначенные для борьбы со спамом. Кроме того, некоторые компьютеры бывают выключены в течение длительного времени, в результате чего становится невозможным их использование в качестве почтовых серверов. В особенности это относится к портативным компьютерам.
В большинстве случаев конфигурация sendmail, установленная по умолчанию, не предполагает передачу писем через ретранслятор. Чтобы обеспечить такую возможность, надо включить в конфигурационный файл т4 следующую запись:
FEATURE('nullclient', лoutgoing.mail.relay')
В данном случае outgoing.mail.relay - это имя компьютера, используемого для ретрансляции почты. После того как вы создадите файл sendmail.cf и перезапустите sendmail, вся исходящая почта будет передаваться через указанный почтовый сервер. Выполнив настройку sendmail, убедитесь, что письма корректно доставляются адресатам.
Конфигурация sendmail для противодействия попыткам передачи спама
Существует несколько способов настройки sendmail для блокирования поступающих рекламных сообщений и предотвращения попыток использования сервера для передачи спама. Один из способов состоит в использовании файла access и его двоичного аналога access.db. С помощью файла access.db можно блокировать спам на основании анализа адресов отправителей. Если вы зададите для некоторых доменов или компьютеров, указанных с помощью имени или IP-адреса, опции REJECT или DISCARD, сообщения из этих источников будут отвергаться. Если вы регулярно получаете рекламные сообщения с определенных адресов, этот способ позволит избавиться от них. Следуя описанному подходу, необходимо соблюдать осторожность, так как вместе со спамом будут отвергнуты и корректные сообщения, приходящие с тех же адресов или из тех же доменов. Если вы блокируете почту, поступающую из сети, которая принадлежит популярному провайдеру, вы рискуете потерять нужные вам письма.
Другой способ блокирования спама состоит в применении списков IP-адресов. Для того чтобы реализовать этот способ, надо указать в конфигурационном файле т4 опцию dnsbl.
FEATURE(dnsbl, ^lackholes.mail-abuse.org', ^Rejected - see \ http://www.mail-abuse.org/rbl/')
Данная запись указывает sendmail на то, что при проверке входящей почты должен использоваться список MAPS RBL. Если вы хотите использовать другой список, вам надо изменить вторую опцию в данной записи. Последнее поле записи содержит строку, которая включается в состав возвращаемого сообщения. В этой строке вы можете указать отправителю адрес Web-узла, содержащего список IP-адресов, на основании которого было отвергнуто его сообщение. Если окажется, что корректное сообщение было заблокировано по ошибке, его автор сможет принять меры для того, чтобы разрешить проблему.
«§^ В версии 8.10 программы sendmail порядок использования списков IP-адресов нл*%^ был существенно изменен. В этой главе описаны правила, применяемые в этой
и последующих реализациях. Дополнительную информацию по данному вопросу вй найдете по адресу http: //mail-abuse. org/rbl/usage. html.
Чтобы предотвратить использование почтового сервера для неавторизованной рассылки почты, необходимо ограничить доступ к нему. Проще всего сделать это, указав в файле access IP-адреса или диапазоны адресов компьютеров, которые могут использовать сервер для передачи писем. В некоторых случаях можно также указать другие опции управления ретрансляцией. Применение опции promiscuous_relay - не допустимо.
ВНИМАНИЕ Версии sendmail, предшествующие 8.9.0, настроены так, чтобы любой ком-| пьютер мог воспользоваться сервером для передачи писем. Такой сервер необходимо заменить новой версией или перенастроить его, чтобы неограниченные услуги ретранслятора не предоставлялись другим узлам. Информацию по этому вопросу вы найдете по адресу http: //mail-abuse.org/tsi/ar-fix. html#sendmail_8. Версии sendmail, предшествующие 8.8.4, перенастроить крайне сложно. Гораздо проще обновить почтовый сервер.