From: Mstyslav Dubchak <mstyslav@ukr.net.>
Date: Mon, 11 Aug 2006 14:31:37 +0000 (UTC)
Subject: Настройка связки Sendmail+SASL с использованием TLS/SSL
В связи с распространением мобильных устройств у сотрудников больших и
малых офисов, становится актуальной отправка почты из любой точки, где
есть подключение к Интернет. Кроме того, корпоративные стандарты и
здравый смысл подсказывают, что лучше всего это делать через
служебный/корпоративный SMTP сервер.
По-понятным причинам для реализации этого необходимо аутентифицировать
пользователя. Помогает в этом технология SASL (Simple Authentication and
Security Layer).
Самый простой способ аутентификации пользователя - по логину и паролю,
однако он же и самый небезопасный. Вполне логичным будет шифрование
процесса передачи через Интернет пользовательского логина/пароля. Для
этого ваш sendmail Должен быть собран с поддержкой TLS (команда
STARTTLS). Данная опция включена с Sendmail начиная с версии 8.11.
Я постараюсь детально и пошагово описать процесс настройки связки
Sendmail+Cyrus-SASL для аутентификации удаленных пользователей с
использованием сертификатов X.509.
В статье описывается процесс настройки Sendmail 8.13.6. В качестве SASL
модуля используется cyrus-sasl-2.1.22 + cyrus-sasl-saslauthd-2.1.22.
Кроме того используется OpenSSL 0.9.7e-p1. Все это работает под
управлением FreeBSD 6.1-RELEASE-p2.
Оговорюсь, что вся информация приведенная в этой статье общедоступна в
Интернет, найти ее не представляет особого труда. Моя задача стояла в
систематизации и группировке найденных советов и мануалов по отдельным
пунктам задачи.
Все ПО не входящее в стандартный комплект системы устанавливалось из
коллекции портов.
1. Установка и настройка OpenSSL
После установки (я использовал системый OpenSSL), необходимо
отредактировать файл конфигурации (openssl.cnf), чтобы при
необходимости изменить каталоги в которых будут располагаться ключи,
сертификаты и прочее во время настройки, а также имена ответственных
лиц, наименование организации и пр. Как правило, конфиг располагается в
каталоге /etc/ssl/.
2. Установка и настройка cyrus-sasl2
Используем последние доступные в портах на данный момент версии
cyrus-sasl-2.1.22 и cyrus-sasl-saslauthd-2.1.22. После установки
необходимо создать файл конфигурации SASL для Sendmail:
# ps ax | grep sasl
67358 ?? Is 0:00.01 /usr/local/sbin/saslauthd -a sasldb
67359 ?? I 0:00.01 /usr/local/sbin/saslauthd -a sasldb
67360 ?? I 0:00.01 /usr/local/sbin/saslauthd -a sasldb
67361 ?? I 0:00.01 /usr/local/sbin/saslauthd -a sasldb
67362 ?? I 0:00.01 /usr/local/sbin/saslauthd -a sasldb
3. Создание сертификатов для TLS (Transport Layer Security).
Создаем каталог для хранения ключей/сетификатов
# mkdir -p /etc/mail/certs
Далее переходим в него и создаем ключи и сетификат
# cd /usr/src/lib/libsm
# make clean && make obj && make depend && make
# cd /usr/src/lib/libsmutil
# make clean && make obj && make depend && make
# cd /usr/src/usr.sbin/sendmail
# make clean && make obj && make depend && make && make install
Далее редактируем файл freebsd.mc обычно находящийся в директории
/etc/mail/ добавляя туда:
значит поддержка SASL и TLS включена в наш Sendmail.
Далее, при помощи telnet зайдем на сервер и проверим какие механизмы
аутентификации он поддерживает и стартовала ли поддержка TLS (правильно
ли мы сгенерили и подключили сертификаты).
# telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 office.host.com.ua ESMTP Sendmail 8.13.6/8.13.6; Tue, 1 Aug 2006 10:52:09 +0300 (EEST)
ehlo localhost
250-office.host.com.ua Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN
250-STARTTLS
250-DELIVERBY
250 HELP
quit
221 2.0.0 office.host.com.ua closing connection
Connection closed by foreign host.
Если вы увидели строки содержащие AUTH LOGIN и STARTTLS, то ваш сервер
настроен верно.
9. Добавдение пользователей в базу SASL
# saslpasswd2 -c newuser
Проверить какие пользователи добавлены можно командой:
# sasldblistusers2
10. Настройка клиентов
Клиентские почтовые программы настраиваются в соответствии с инструкцией
на конкретный почтовый клиент. Для этого необходимо знать логин/пароль (см. п. 9)
Заключение.
Вся информация собранная в этом руководстве найдена в Интернет, на
сайтах производителей ПО, персональных страничках и получена в качестве
консультаций в специализированных рассылках (в частности благодарю колег
из рассылки UAFUG (http://uafug.org.ua).
Очень рекомендую обратиться к первоисточникам для прояснения ньюансов и
деталей: