The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка связки Sendmail+SASL с использованием TLS/SSL (sendmail auth sasl ssl tls)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: sendmail, auth, sasl, ssl, tls,  (найти похожие документы)
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: # echo "pwcheck_method: saslauthd" > /usr/local/lib/sasl2/Sendmail.conf # echo srvtab: /etc/srvtab >> /usr/local/lib/sasl2/Sendmail.conf Не забываем добавить разрешение запуска SASL в /etc/rc.conf saslauthd_enable="YES" sasl_saslauthd_flags="-a sasldb" cyrus_pwcheck_enable="YES" Запускаем cyrus-sasl2: # sh /usr/local/etc/rc.d/saslauthd.sh start Проверяем запустился ли он: # 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 /etc/mail/certs # openssl req -new -x509 -keyout cakey.pem -out cacert.pem -days 365 # openssl req -nodes -new -x509 -keyout sendmail.pem -out sendmail.pem -days 365 Проверяем результат # openssl x509 -noout -text -in sendmail.pem Назначаем права на файл с сертификатом и ключем # chmod 600 ./sendmail.pem 4. Настройка Sendmail Редактируем файл /etc/make.conf для включения поддержки SASL в Sendmail, для этого добавляем в него строки: SENDMAIL_CFLAGS= -I/usr/local/include -DSASL=2 SENDMAIL_LDFLAGS= -L/usr/local/lib SENDMAIL_LDADD= -lsasl2 -lcrypto После этого пересобираем Sendmail: # 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/ добавляя туда: define(`confCACERT_PATH', `/etc/mail/certs')dnl define(`confCACERT', `/etc/mail/certs/cacert.pem')dnl define(`confSERVER_CERT', `/etc/mail/certs/sendmail.pem')dnl define(`confSERVER_KEY', `/etc/mail/certs/sendmail.pem')dnl define(`confCLIENT_CERT', `/etc/mail/certs/sendmail.pem')dnl define(`confCLIENT_KEY', `/etc/mail/certs/sendmail.pem')dnl DAEMON_OPTIONS(`Family=inet, Port=465, Name=MTA-SSL, M=s')dnl TRUST_AUTH_MECH(`LOGIN')dnl define(`confAUTH_MECHANISMS', `LOGIN')dnl и генерим конфигурационный файл Sendmail: # cd /etc/mail # make install после этого необходимо перестартовать Sendmail 7. Проверка конфигурации Sendmail и его работоспособности Ни когда не лишним будет проверить результаты настроек дабы исключить ошибки. Проверяем с какими опциями был скомпилирован Sendmail: # /usr/sbin/sendmail -d0.1 -bv root Если видим что-то похожее на: Version 8.13.6 Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF STARTTLS TCPWRAPPERS USERDB XDEBUG значит поддержка 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). Очень рекомендую обратиться к первоисточникам для прояснения ньюансов и деталей: http://www.sendmail.org/~ca/email/cyrus2/index.html http://cyrusimap.web.cmu.edu/ http://www.openssl.org/ Ну и конечно же, во многом помог Google :)

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ RSS ]
  • 2, universite (ok), 18:06, 12/08/2006 [ответить]  
  • +/
    Осталось увязать sasldb и LDAP.
    Если у меня юзеры и пароли хранятся в LDAP, как тудф положить пароли из sasldb?
     
  • 3, zzz (??), 10:20, 05/09/2006 [ответить]  
  • +/
    Сделал как сказано, и man'ы читал и хелпы, вроде все верно, но!
    # ps ax | grep sasl
    а в результате фигвам, подонок не запускается, что делать? Дня 3 бьюсь
     
  • 4, ailman (??), 19:05, 14/05/2009 [ответить]  
  • +/
    А можно ли настроить такую же связку, только для механизма аутентификации PLAIN, чтобы не пришлось заново вбивать пользователей с паролями в базу SASLDB, а использовались системные учетные записи?
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру