Определение клиентов и поддерживаемых механизмов
Один из принципов обеспечения компьютерной безопасности говорит о том, что невозможно атаковать службу, которая не существует. Поэтому следует настроить в Postfix только те механизмы, которые необходимы вашим пользователям. В небольшой сети, где использование почтовых клиентов находится под вашим полным контролем, можно ограничить поддерживаемые механизмы. В табл. 15.1 представлена упрощенная версия справочника [...]
Архив за Февраль 2009
Будущее SMTP AUTH
Текущая реализация SMTP AUTH далека от окончательной. Ожидается, что в последующих версиях Postfix SASL претерпит значительные изменения. В настоящее время библиотеки SASL, которые обращаются к хранилищам аутентификации, встраиваются в демон smtpd и используются им же (это тот демон, который занимается взаимодействием с почтовыми клиентами).
Почтовый клиент — smtpd (библиотеки SASL) - - Хранилище аутентификационных данных
Доступ к [...]
Тестирование при помощи клиентской программы
Наконец, запускаем клиентскую программу и ждем, когда она подключится к серверу. Подключившись, клиентская программа просит вас ввести идентификатор аутентификации, идентификатор авторизации и пароль. Используйте параметр командной строки -m для выбора механизма SASL. Следующий пример использует test как идентификатор аутентификации и авторизации, а testpass – как пароль для localhost (127.0.0.1):
# client -s [...]
Запуск серверной программы
Запустите еще один командный процессор1 и в нем запустите серверную программу с параметрами -s и -p, указывающими службу и порт для сервера:
# server -s rcmd -p 8000
trying 10, 1, 6
socket: Address family not supported by protocol trying 2, 1, 6
Убедитесь в том, что данный порт еще не используется на вашей машине.
Примечание
Назначение rcmd недостаточно [...]
Создание файла конфигурации сервера
Теперь нам нужно создать файл конфигурации для серверной программы. Если помните, каждому приложению Создание файла конфигурации серверанужен собственный файл конфигурации, так что тестовой серверной программе потребуется файл sample.conf. Однако тестовая конфигурация должна совпадать с конфигурацией, используемой для Postfix. Проще всего добиться этого, создав символическую ссылку на файл smtpd.conf:
# cd /usr/lib/sasl2/
# ln -s smtpd.conf [...]
Запуск saslauthd
Если вы выбираете хранилище, которое использует службу проверки паролей saslauthd (т. е. не использует вспомогательный плагин, такой как sasldb, или базу данных SQL), то следует запустить saslauthd в режиме отладки из командной строки. Не используйте сценарий init; вам нужно будет использовать параметр d, который указывает основному экземпляру saslauthd на то, что следует не переходить [...]
Тестирование аутентификации
После того как вы настроили Cyrus SASL с saslauthd или вспомогательным плагином и одним хранилищем аутентификационных данных, необходимо протестировать то, что получилось, прежде чем настраивать SMTP AUTH в Postfix. Опыт показывает, что большая часть проблем SMTP AUTH бывает вызвана некорректной настройкой Cyrus SASL, а не Postfix.
Начинаем с поиска инструментов тестирования. Если вы устанавливали Cyrus [...]
Настройка PostgreSQL для SASL
Процесс настройки PostgreSQL для SASL очень похож на только что рассмотренный для MySQL. Создаем базу данных mail в PostgreSQL:
# createdb mail
CREATE DATABASE
Теперь подключаемся к базе данных и создаем таблицу для пользователей SASL следующим образом:
# psql -d mail
Welcome to psql 7.3.4, the PostgreSQL interactive terminal. Type: \copyright for distribution terms
\h for help with [...]
Настройка MySQL для SASL
Первое, что нужно сделать при настройке MySQL для SASL в Postfix, _ это создать базу данных и таблицу. Приведенная ниже команда SQL создает таблицу с полями по умолчанию, наличия которых ожидает Cyrus SASL, а также с дополнительным полем, которое позволяет запретить пересылку для определенного пользователя:
mysql> CREATE DATABASE mail;
mysql> CONNECT mail;
mysql> CREATE TABLE [...]
Использование плагина sql
Cyrus SASL 2 предоставляет доступ к двум широко известным реляционным базам данных: MySQL и PostgreSQL. Доступ к обеим базам данных обеспечивает плагин sql, при этом используются одни и те же параметры конфигурации:
sql_engine
Параметр sql_engine указывает тип базы данных. В версии Cyrus SASL 2.1.17 вы можете выбрать mysql или pgsql.
sql_hostnames
Параметр sql_hostnames определяет имя сервера базы [...]
Настройка SASL для чтения из базы данных sasldb2
Для того чтобы сообщить серверу Postfix о базе данных sasldb2, отредактируйте файл smtpd.conf, указав службу проверки паролей auxprop и плагин sasldb:
# Глобальные параметры log_level: 3 pwcheck_method: auxprop
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5
# параметры вспомогательных плагинов auxprop_plugin: sasldb
Создание базы данных sasldb2
Вы можете создать базу данных sasldb2, выполнив от имени root команду saslpasswd2. Параметр -c создает базу данных sasldb2 в файле /etc/sasldb2. В приведенном ниже примере создается база данных, добавляется пользователь и область для хоста Postfix myhostname (невозможно создать базу данных, не добавив пользователя):
# saslpasswd2 -c -u ‘postconf -h myhostname’ test
Password:
Again (for verification):
Предупреждение
В [...]
Использование плагина sasldb2
Библиотеки Cyrus SASL поставляются со стандартным плагином sasldb2, который применяется в основном в Cyrus IMAP, но может использоваться и отдельно. Плагин sasldb2 включает в себя две утилиты:
saslpasswd2 для управления пользователями и sasldblistusers2 для получения списка всех пользователей в sasldb2.
Предупреждение
Имена базы данных и утилит заканчиваются цифрой 2, т. к. они принадлежат Cyrus SASL 2.x. [...]
Настройка вспомогательных плагинов (auxprop)
В отличие от случая с хранилищами аутентификационных данных для saslauthd, приложения, использующие вспомогательные плагины auxprop, непосредственно запускают эти плагины, читая конфигурацию из собственного файла конфигурации SASL приложения. Как говорилось ранее, конфигурационный файл приложения для Postfix называется smtpd.conf. В последующих разделах мы покажем, как настроить вспомогательные плагины, которые поставляются с исходными текстами SASL.
Примечание
Здесь [...]
LDAP-аутентификация
Демон saslauthd может читать верительные данные с сервера Open-LDAP. Запросы LDAP и параметры подключения к серверу LDAP могут быть очень сложными, поэтому они не передаются в saslauthd в командной строке. Конфигурация считывается из отдельного файла, который по умолчанию имеет имя /usr/local/etc/saslauthd.conf, но вы можете указать и другое название в параметре -O file.
Рассмотрим пример файла saslauthd. [...]
Аутентификация на основе локальных учетных записей пользователей
Демон saslauthd может обращаться к локальному файлу паролей (в большинстве UNIX-систем), а может обращаться к локальному теневому файлу паролей в системах, поддерживающих такие пароли. Для чтения данных из обычного файла паролей (/etc/passwd) используйте параметр -a getpwent.
# saslauthd -a getpwent
В системах, использующих теневые пароли, можно запустить демон saslauthd с параметром -a [...]
Настройка хранилища аутентификационных данных для saslauthd
Демон saslauthd использует для выбора хранилища параметр -a имя_ хранилища. Имя должно принадлежать хранилищу из списка, полученного командой saslauthd -v (см. табл. 15.2). В следующем примере saslauthd выбирает хранилище shadow для чтения данных из теневого файла паролей:
# saslauthd -a shadow
Следующие разделы будут посвящены наиболее часто используемым с saslauthd хранилищам аутентификационных данных. [...]
Подготовка окружения saslauthd
Демону saslauthd необходим каталог состояний для хранения файла сокета и PID-файла. Сценарии установки Cyrus SASL не создают этот каталог, но если вы устанавливаете Cyrus SASL из бинарного пакета (такого, как RPM), инсталлятор пакета может создать каталог. Каталогом состояний по умолчанию является /var/state/saslauthd, также часто используется /var/run/saslauthd.
Вы можете определить местоположение каталога состояний в момент [...]
Определение поддерживаемых хранилищ
Ничего не получится, если saslauthd не поддерживает выбранное вами хранилище аутентификационных данных. Команда saslauthd -v позволяет получить список хранилищ, поддерживаемых вашей версией sa-slauthd, например:
# saslauthd -v
saslauthd 2.1.17
authentication mechanisms: getpwent pam rimap shadow ldap
Обратите внимание на то, что saslauthd называет свои хранилища «механизмами аутентификации» (authentication mechanisms). Не путайте их с механизмами SMTP AUTH, такими как [...]
Настройка saslauthd
saslauthd _ это автономный демон, который взаимодействует с хранилищами аутентификационных данных. Настройка saslauthd осуществляется с помощью параметров командной строки. Прежде чем запускать демон, выполните следующие действия:
1. Проверьте, какие хранилища аутентификационных данных поддерживает ваша версия saslauthd.
2. Подготовьте окружение saslauthd.
3. Настройте хранилище аутентификационных данных для saslauthd.
Выбор механизмов SMTP AUTH
Cyrus SASL позволяет клиенту выбрать механизмы, которые будут использоваться для аутентификации. В определенных обстоятельствах это может привести к ошибкам аутентификации:
• Если вы предлагаете механизмы, требующие настройки, которая у вас не выполнена. Например, если вы не используете Kerberos, но ваш сервер предлагает этот механизм и клиент выбирает его, то аутентификация не будет успешной.
• Если вы [...]
Определение службы проверки паролей
Теперь нужно сообщить серверу Postfix, какая служба проверки паролей будет использоваться для аутентификации пользователей. Вы должны точно определиться с тем, saslauthd или auxprop вы будете использовать, т. к. дальнейшие действия зависят от выбранной службы.
В Cyrus SASL служба проверки паролей определяется параметром pwcheck_method. Если вы планируете использовать saslauthd, добавьте в smtpd.conf такую строку:
# Глобальные [...]
Определение уровня журналирования
Первый параметр, который нужно указать в файле /usr/lib/sasl2/ smtpd.conf, _ это уровень журналирования (параметр loglevel). Возможные значения параметра приведены в табл. 15.4. Таблица 15.4. Уровни журналирования для Cyrus SASL Значение log_level Описание 0 Не вести журналирование 1 Записывать необычные ошибки, значение по умолчанию 2 Записывать все неудачные попытки аутентификации 3 Записывать предупреждения о нефатальных ошибках 4 Более подробно, [...]
Создание файла конфигурации приложения Postfix
Каждому приложению, предоставляющему услуги SASL, необходимо сообщить, как использовать библиотеки SASL. Cyrus SASL вместо одного большого общего файла конфигурации имеет по одному файлу для каждого приложения. Это позволяет определить различные конфигурации для разных приложений. Файл конфигурации приложения для Postfix называется smtpd.conf, т. к. по умолчанию приложением Postfix, предоставляющим услуги SASL, является [...]
Установка Cyrus SASL
Если библиотека Cyrus SASL не предустановлена в вашей системе и не включена в нее в виде пакета, то вам надо скачать Cyrus SASL с вебстраницы http://asg.web.cmu.edu/cyrus/download.
Предупреждение
В следующем разделе подразумевается, что вы используете Cyrus SASL версии не ниже 2.1.17, при этом вполне естественно, что, когда вы будете читать эти строки, появятся более свежие версии. [...]

