Linux-сервер своими руками — страница 63 из 119

> /etc/sendmail.me

Вот и все! Названия узлов будут скрыты. Описание прочих функций представлено в табл. 13.1.

Функции программы sendmail Таблица 13.1

Функция Описание
access_db Определяет таблицу доступа. В этой таблице указаны хосты, которым разрешена или запрещена отправка почты через ваш почтовый сервер. Эта опция эффективно используется для борьбы со спамом. Защита от спама подробно рассмотрена в одноименном разделе в гл. 23
accept_unresolvable_domains Разрешает отправлять почту доменам, которые не могут быть распознаны
bestmx_is-local Сообщения будут приниматься только в том случае, если запись МХ-сервера DNS указывает на этот почтовый сервер
blacklist_recipients «Черный список». Еще одна опция для борьбы со спамом. Для ее работы необходима опция access_db
dnsblИспользуется для работы с «черным списком», dnsbl — это сокращение от DNS Black List. В более ранних версиях эта опция называлась (Resolve Black List)
domaintable Используется для разрешения имен доменов
genericstable Используется для изменения адреса отправки в сообщениях
local_procmail Указывает, что доставлять почту нужно с помощью локальной утилиты procmail
mailertable Переопределяет маршрутизацию для конкретных доменов
masquerade_entire_domain Используется для маскировки (сокрытия) всего домена. Данная функция должна использоваться вместе с директивой MASQUERADE AS (или MASQUERADE_DOMAIN), например, MASQUERADE_AS(f117.ru)dnl
masquerade_envelope Позволяет скрыть имена хостов домена. Заменяет поле received from заголовка сообщения перед передачей сообщения другим
redirect Используется для перенаправления на другой почтовый сервер. Означает отказ от принятия почты с выдачей сообщения please try
(попытайтесь использовать этот адрес)
relay_based_on_MX Разрешает перенаправление (ретрансляцию) почты только для узлов, которые указаны в записях МХ-сервера DNS
relay_hosts_only Разрешает ретрансляцию только для узлов, указанных в access_db
relay_mail_from Разрешает ретрансляцию только, если отправитель указан в списке RELAY базы accessdb
smrsh Использование ограниченной оболочки sendmail
use_cf_file При указании этой функции sendmail будет обращаться к файлу sendmail.cf за списком доверенных пользователей
use_cw_file При указании этой функции sendmail будет обращаться к файлу sendmail.cw за списком локальных узлов
virtusertableПреобразует адрес получателя в адрес локального пользователя

В файле /etc/mail/sendmail.cw перечислены все псевдонимы данного почтового сервера. Предположим, что имя вашего сервера mail.dhsilabs.ru. Если отправитель отправит почту по адресу [email protected], письмо будет без проблем доставлено пользователю den. А если кто-то отправит письмо по адресу [email protected], то его доставка вызовет определенные трудности, так как не ясно какому узлу домена dhsilabs адресовано сообщение? Для решения этой проблемы в файл sendmail.cw нужно поместить строку:

dhsilabs.ru

Теперь, когда будет приходить почта формата [email protected], она будет доставлена почтовому серверу mail.dhsilabs.ru.

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

/etc/init.d/sendmail stop

Запустить sendmail заново можно с помощью команды:

/etc/init.d/sendmail start

Конечно, удобнее сначала отредактировать файл sendmail.cf с помощью m4, а потом выполнить команду /etc/init.d/sendmail restart для перезапуска программы sendmail.

13.2. Аутентификация в sendmail

Программы Sendmail 8.10/8.11 поддерживают SMTP AUTH, согласно стандарту RFC 2554. Аутентификация базируется на SASL. Она позволит вам несколько повысить безопасность вашей сети, но создаст определенные неудобства для пользователей, потому что не все почтовые клиенты ее поддерживают.

Вам потребуются библиотеки Cyrus SASL, исходные коды которых вы можете найти по адресу ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/. Последней версией на момент написания этих строк являлась 1.5.14. Желательно также выкачать последнюю версию sendmail, хорошо бы в исходных кодах. Скачать последнюю версию программы sendmail можно по адресу: http:// www.sendmail.org. Распакуйте библиотеку Cyrus SASL выполнив следующую последовательность:

# tar –xzf cyrus-sasl-1.5.24.tar.qz 

# cd cyrus-sasl-1.5.24/ 

# ./configure –prefix=/usr

# make

# make install

Распаковывать лучше всего, зарегистрировавшись в системе root. Сама по себе операция извлечения файлов из архива не требует таких полномочий, однако, если у вас не было прав суперпользователя, вам нужно будет изменить права доступа для файлов, которые будут распакованы в каталоги /usr/lib и /usr/include. Распаковав исходные коды, отредактируйте файл /usr/lib/sasl/Sendmail.conf. Если он не существует, создайте его. В конец этого файла необходимо добавить строку:

pwcheck_method: sasldb

Это укажет sendmail, что аутентификацию нужно проводить с использованием SASL. Теперь займитесь созданием базы данных всех пользователей, которые могут отправлять почту. Для этого используются две программы: saslpasswd и sasldblistusers. Они должны находиться в каталоге /sbin. Запускать их нужно от имени пользователя root.

# saslpasswd –a sendmail newuser

password:

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

sasldblistusers

Она применяется для просмотра всех записей в базе данных. После ее запуска вы должны увидеть что-то наподобие этого:

user: newuser realm: dhsilabs.com mech: CRAM-MD5 

user: newuser realm: dhsilabs.com mech: DIGEST-MD5 

user: newuser realm: dhsilabs.com mech: PLAIN

Отображенная информация означает, что пользователь newuser может аутентифицироваться тремя методами: CRAM-MD5, DIGEST-MD5, PLAIN. Рекомендую использовать метод CRAM-MD5, но в крайнем случае подойдет и PLAIN.

Далее проверьте, поддерживает ли ваш sendmail библиотеку SASL:

sendmail –d0.1 –bv root | grep SASL

При отсутствии поддержки SASL от вас потребуется перекомпилировать sendmail. Вот для чего я просил в начале раздела приготовить исходные коды sendmail. Итак, распакуйте sendmail, как обычно, программой tar:

tar –xzf senmail-x.xx.xx.tar.gz cd sendmail-x.xx.xx/

Теперь нужно создать файл sendmail-x.xx.x/devtools/Site /site.config.m4, в котором необходимо прописать следующие строки:

APPENDDEF('confENVDEF' , '-DSASL') 

APPENDDEF('conf_sendmail_LIBS', '-lsasl') 

APPENDDEF('confLIBDIRS', '-L/usr/lib/') 

APPENDDEF('confINCDIRS' , '-I/usr/include/' )

Напомню, создать файл в простейшем случае можно командой:

cat > sendmail-x.xx.x/devtools/Site/site.config.m4

Самое время запустить скрипт Build:

./Build 

./Build install

Если вы все сделали правильно, ваш sendmail теперь должен поддерживать SMTP AUTH. Проверить это можно с помощью уже знакомой команды:

sendmail –d0.1 –bv root | grep SASL

После этого приступите к настройке самой программы sendmail. Для этого в файл sendmail.me внесите следующие строки:

TRUST_AUTH_MECH('GSSAPI DIGEST-MD5 CRAM-MD5 PLAIN')dnl 

define('confAUTH_MECHANISMS', 'GSSAPI DIGEST-MD5 CRAM-MD5 PLAIN')dnl 

define('confDEF_AUTH_INFO', Vetc/mail/auth/auth-info')dnl 

FEATURE('no_default_msa')dnl turn off default entry for MSA 

DAEMON_OPTIONS('Port=25, Name=MSA, M=E')dnl

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

Запустите интерпретатор m4:

m4 senmail.mc > sendmail.cf

Скопируйте новый файл sendmail.cf на место старого, обычно он находится в каталоге /etc/mail:

ср ./sendmail.cf /etc/mail/sendmail.cf