Sendmail и аутентификация SASL


Выявление контролируемых сделок. Уведомление о контролируемых www.ibfsunited.com.

Больше всего проблем доставляют пользователи, которые могут пользоваться услугами электронной почты из любой точки мира. Почтовый сервер должен принимать почту из любого места, если она предназначена для такого пользователя. Президент вашей компании, отправившись в Антарктиду на важную встречу с крупным клиентом, ожидает, что почтовый сервер беспрепятственно примет почту от него, несмотря на всю вашу хитрую борьбу со спамом. Сделать это позволяет протокол простой авторизации и уровня безопасности (Simple Authentication and Security Layer, SASL). Протокол SASL требует, чтобы пользователь прошел аутентификацию на почтовом сервере, прежде чем он примет почту. Это означает, что некоторые, «законные», пользователи смогут пользоваться услугами почтового сервера независимо от своего местонахождения, а другие смогут отправлять почту только с известных, добропорядочных IP-адресов.

Для включения поддержки SASL в Sendmail понадобится пересобрать Sendmail из исходных текстов. Чтобы избежать мучений с программой Sendmail, входящей в базовую установку системы, FreeBSD включает «порт» Sendmail в /usr/ports/mail/sendmail. С помощью этого «порта» можно собрать Sendmail с дополнительными параметрами и использовать эту программу вместо той, что входит в базовую установку системы. Использование «порта» означает, что вы легко можете пересобрать Sendmail с нужными параметрами, избежав процедуры наложения заплаток на базовую систему Sendmail (и их последующего обновления). Заглянув в файл Makefile «порта», можно увидеть множество дополнительных параметров Sendmail, начиная от поддержки баз данных для хранения внутренней информации и заканчивая интеграцией с LDAP. Перейдите в каталог «порта» и запустите команду:

# make SENDMAIL_WITH_SASL2=YES all install clean

Она соберет программное обеспечение поддержки SASL версии 2 и Sendmail с поддержкой SASL, после чего установит программы в каталог /usr/local, как все «порты».

saslauthd(8)

Демон saslauthd(8) выполняет аутентификацию пользователя по запросу других приложений. В данном случае нам нужно, чтобы Sendmail аутентифицировала пользователя в соответствии с базой данных паролей FreeBSD. Аутентифицированный пользователь сможет передать почту, неаутентифицированный — нет. Чтобы демон saslauthd(8) смог обрабатывать запросы Sendmail на аутентификацию, его следует активировать в файле /etc/rc.conf:

saslauthd_enable="YES"

После этого нужно либо перезагрузить систему, либо запустить saslauthd(8) командой /usr/local/etc/rc.d/saslauthd start.

mailer.conf и обновленная программа Sendmail

С этого момента новая программа Sendmail становится одним из дополнительных пакетов. Ее нужно активизировать в файле mailer.conf, как это делается для Postfix или Qmail. Поскольку в ходе установки «порта» двоичный файл Sendmail был установлен как /usr/local/sbin/sendmail, новый файл mailer.conf должен выглядеть так:

sendmail /usr/local/sbin/sendmail
send-mail /usr/local/sbin/sendmail
mailq /usr/local/sbin/sendmail
newaliases /usr/local/sbin/sendmail
hoststat /usr/local/sbin/sendmail
purgestat /usr/local/sbin/Sendmail

Сборка sendmail.cf

Хотя новая версия программы Sendmail скомпилирована с поддержкой SASL, все же придется сконфигурировать sendmail(8), чтобы она могла принимать результаты аутентификации SASL. Кроме того, во избежание передачи имен пользователей и паролей в явном виде, следует использовать SSL. Добавьте в файл /etc/mail/<имя_хоста>.mc такие строки:

Эти настройки предписывают Sendmail аутентифицировать пользователей, прежде чем принимать от них почту.

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

Внеся необходимые изменения в конфигурационные файлы, выполните команду make all install в каталоге /etc/mail, чтобы собрать и установить новый файл sendmail.cf.

Проверка SASL

Перезапустите Sendmail командой /etc/rc.d/sendmail restart — и ваша инсталляция Sendmail должна быть готова к приему почты через аутентификацию SASL. Простейший способ проверить — настроить почтовый клиент на использование SASL и попытаться отправить почту на хост, расположенный за пределами вашей сети. Специально для таких проверок я держу почтовый ящик на Yahoo!; если мне удастся отправить почту на Yahoo!, почти наверняка я смогу отправить ее и в любое другое место.

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

Стоп, у вас ведь еще нет имени пользователя и пароля для получения входящей почты! Теперь, зная, как Sendmail отправляет и получает почту, перейдем к изучению принципа доставки почты от сервера к клиенту.

Комментарии запрещены.