Настройка SASL и TLS в Sendmail

SASL — это фреймворк для предоставления аутентификации и защиты данных в протоколах на основе соединений. Он разделяет механизмы аутентификации от прикладных протоколов, в теории позволяя любому механизму аутентификации, поддерживающему SASL, быть использованным в любых прикладных протоколах, которые используют SASL. Фреймворк также предоставляет слой защиты данных. Для использования SASL протокол включает команду для идентификации и аутентификации пользователя на сервере и для опциональной защиты переговоров последующей интерактивности протокола. Если это используется в переговорах, то слой безопасности вставляется между протоколом и соединением.

TLS, как и его предшественник SSL, — криптографические протоколы, обеспечивающие защищённую передачу данных между узлами в сети Интернет. TLS и SSL используют асимметричную криптографию для аутентификации, симметричное шифрование для конфиденциальности и коды аутентичности сообщений для сохранения целостности сообщений.

TLS  широко используется в приложениях, работающих с сетью Интернет, таких как веб-браузеры, работа с электронной почтой, обмен мгновенными сообщениями и IP-телефония (VoIP).

Цели

  • Отправка писем пользователями через корпоративный SMTP-сервер с любого IP-адреса;
  • Аутентификация пользователей по технологии SASL(SimpleAuthenticationandSecurityLayer);
  • Шифрование процесса передачи пользовательского логина/пароля при помощи технологии TLS.
  • Для выполнения данной задачи будет использоваться связка Sendmail и Cyrus-SASL для аутентификации пользователей.

Установка

Установите следующие пакеты:

  • sendmail
  • sendmail-cf
  • cyrus-sasl`
  • openssl
  • m4

Подготовка

Создание резервной копии конфигурационных файлов

1. Для получения списка конфигурационных файлов выполните команду:

# sendmail -d0.20 -bv | grep sendmail.cf
Conf file: /etc/mail/sendmail.cf (default for MTA)
Conf file: /etc/mail/sendmail.cf (selected)

2. Скопируйте следующие файлы в безопасное место:

  • /etc/mail/sendmail.cf
  • /etc/mail/sendmail.mc
  • /etc/mail/access
  • /etc/mail/virtusertable
  • /etc/aliases

Проверка возможностей Sendmail

# sendmail -d0.1 -bv
Version 8.13.1
Compiled with: DNSMAP HESIOD HES_GETMAILHOST LDAPMAP LOG MAP_REGEX
               MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6
               NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF STARTTLS TCPWRAPPERS
               USERDB USE_LDAP_INIT
============ SYSTEM IDENTITY (after readcf) ============
      (short domain name) $w = localhost
  (canonical domain name) $j = localhost.localdomain
         (subdomain name) $m = localdomain
              (node name) $k = localhost
========================================================

В выводе должны быть SASLv2 и STARTTLS.

Создание сертификата

# cd /etc/pki/tls/certs
# make sendmail.pem

Настройка Sendmail

Отредактируйте /etc/mail/sendmail.mc.

В нем должны быть строки со следующими параметрами. Данные строки необходимо не просто вставить, а убедиться в том, чтобы в конфигурационном файле не было строк с одинаковыми параметрами.

define(`confAUTH_OPTIONS', `A p y')dnl
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl
define(`confCACERT_PATH',`/etc/pki/tls/certs')
define(`confCACERT',`/etc/pki/tls/certs/ca-bundle.crt')
define(`confSERVER_CERT',`/etc/pki/tls/certs/sendmail.pem')
define(`confSERVER_KEY',`/etc/pki/tls/certs/sendmail.pem')

По умолчанию sendmail разрешает подключения только с интерфейса loopback (127.0.0.1). Снимаем это ограничение:

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

Генерируем sendmail.cf и перезапускаем sendmail:

# cd /etc/mail
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
# service sendmail restart

Настройка saslauthd

Добавьте службу saslauthd в автозагрузку и перезапустите ее.

Управление пользователями

Доступ на отправку почты получают все пользователи, существующие в системе. Управление ими происходит при помощи стандартных утилит Linux (useradd, userdel, passwd и др.).

Настройка hosts.allow

Добавьте в файл /etc/hosts.allow строку:

sendmail: ALL

Настройка access

В файле /etc/mail/access удостоверьтесь, что нет доменов или IP-адресов, для которых указан RELAY, иначе клиенты с данных хостов будут отправлять почту без авторизации.

Проверка

Подключаемся к серверу sendmail:

# telnet IP_ADDRESS 25

где вместо IP_ADDRESS укажите IP-адрес Sendmail-сервера

Результат:

...
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-STARTTLS
250-DELIVERBY
250 HELP
...

Статьи по Теме

Категории
Поиск