Левая панель

Главное окно

Корзина
Admin-World - администраторы всех стран обьеденяйтесь Тема Home News Downloads Tutorials WebLinks Login to JoomlaCurve

  Панель
 
Главное меню
Главная
Новости
Поиск
Библиотека
Форум
Авторизация





Забыли пароль?
Ещё не зарегистрированы? Регистрация
Статистика
 
     
 
Реклама

 

Postfix+Cyrus-SASL

Печать E-mail
Проблема

Для чего это вообще нужно? Представим ситуацию, что сотрудник вашей организации поехал в командировку, но при этом он хочет просматривать и отправлять почту через почтовый сервер вашей организации в каком-нибудь тамошнем интернет-кафе. Если в качестве почтового сервера вы используете Postfix, то со отправкой почты у вашего сотрудника возникнут проблемы (нужно очень постараться, чтобы заставить постфикс релеить почту). Править main.cf, добавляя эти самые интернет-кафе в relay_domains, не самый лучший выход — проще позволить сотруднику пройти авторизацию на сервере со своим логином и паролем. К сожалению, в стандартной поставке постфикса авторизации через SMTP не предусмотрено. Но вы можете воспользоваться для этой цели пакетом cyrus-sasl (simple authentication security level).

Софт

Вначале вам нужно проверить, что ваш постфикс поддерживает sasl (если это так — можете переходить сразу к следующему пункту). Вставляете в main.cf строку

smtpd_sasl_auth_enable = yes

делаете

service postfix reload

и если в maillog не появляется сообщений SASL support does not compiled in — значит все в порядке. Иначе придется приступить к компиляции postfix и cyrus-ssl.
Берем последнии версии того и другого (c http://www.postfix.org/download.html и ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/) — у меня это postfix-2.0.16 и cyrus-sasl-2.1.15. Имейте ввиду, что как для postfix так и для cyrus-sasl многие конфигурационный параметры в версиях 1.x называются по другому и я не берусь обсуждать настройку более ранних версий.
Начинаем с sasl (в системе у вас должны быть установлены пакеты БерклиДБ — они идут вместе с glibc, но могут быть упакованы в отдельные пакеты — в слакваре это db1* db2* db3* — я на всякий случай установил все).

./configure --disable-krb4 --disable-gssapi --with-pwcheck --enable-login
make
make install

(или пользуйтесь скриптом createpkg)
Можно еще поиграть с ключом --prefix=/usr. По умолчанию cyrus-sasl устанавливается в /usr/local/lib/sasl2, но конфиг файлы ищет в /usr/lib/sasl2 — так что не забудьте после установки по умолчанию сделать линк
ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
Теперь беремся за постфикс. Скрипта./configure там нет — поэтому правим Makefile таким вот образом:

make tidy
make makefiles -i Makefile.in 'CCARGS=-DUSE_SASL_AUTH -I/usr/local/include/sasl'\
'AUXLIBS=-L/usr/local/lib -R/usr/local/lib -lsasl2'

После чего устанавливаем и приступаем к конфигурации.

Выбираем механизм аутентификации

SASL позволяет проверять аутентичность пользователя несколькими способами, причем для каждого приложения этот способ может быть задан отдельно с помощью конфиг файла /usr/lib/sasl2/appname.conf Нас интересует smtpd, так что создайте файл /usr/lib/sasl2/smtpd.conf и добавляйте туда 2 строки

pwcheck_method: auxprop
mech_list: login plain

(!!!В SASL версий 1.х этот метод называется не auxprop, а sasldb!!!)
В данном случае используется метод чтения из базы данных виртуальных пользователей /etc/sasldb2 и мэйл-клиенту на выбор предлагается два механизма аутентифицировать пользователя — login и plаin password (для начала хватит — Аутглюк использует login, Mozilla, Bat! — plain). После чего создаем эту базу данных -

saslpasswd2 -c -u mail.rogaikopyta.ru -a smtpauth test

, те в данном случае вы позволяете аутентифицироваться пользователю с адресом Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script Потом вас попросят ввести пароль (ваше дело какой, но лучше выберете testpass).
Поскольку постфикс будет напрямую читать файл /etc/sasldb2, то поправтьте права на этот файл:

chown postfix /etc/sasldb2

Просмотреть всех sasl пользователей можно командой sasldblistusers2 (в нашем случае вывод будет такой:

# sasldblistusers2
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script : userPassword
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script : cmusaslsecretOTP

), удалить — saslpasswd2 -d Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script

В принципе на этом все — можно конфигурировать постфикс. Добавлю только, что из других способов аутентификации можно использовать чтение напрямую логинов системных пользователей из /etc/shadow (pwcheck_method: shadow — но как вы понимаете в этом случае postfix должен обладать групповыми правами root), или посредством демонов pwcheck (pwcheck_method: pwcheck) и saslauthd (pwcheck_method: saslauthd) запущенных из-под рута (в первом случае командой — pwcheck, но предварительно создайте директорию /var/pwcheck). Если кто знает как скрестить saslauthd и постфикс пишите сюда.

Конфигурируем postfix

Во первых редактируете файл /etc/postfix/master.cf (для чего не знаю, но знающие люди рекомендуют)

smtp inet n n n — - smtpd

После чего правите main.cf добавляя параметры:

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options =
smtpd_sasl_local_domain =
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sender_restrictions = permit_sasl_authenticated
broken_sasl_auth_clients = yes

и добавляете опцию permit_sasl_authenticated в список smtpd_recipient_restrictions. Привожу отрывок из своего файла:

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options =
smtpd_sasl_local_domain =
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sender_restrictions = permit_sasl_authenticated
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
check_helo_access hash:/etc/postfix/helo_checks,
check_client_access hash:/etc/postfix/client_checks,
reject_rbl_client list.dsbl.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client relays.ordb.org,
reject_rbl_client opm.blitzed.org,
reject_rbl_client sbl.spamhaus.org,
permit

По поводу smtpd_sasl_local_domain =. Этот параметр (по идее) позволяет регистрироваться пользователям с именем без доменной части (например просто test, а не Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script ). Насколько я понял, в таком случае postfix будет в качестве доменной части цеплять $myhostname (те при добавлении пользователя мы предполагали, что myhostname = mail.rogaikopyta.ru). В принципе это не важно, если вам удасться обучить пользователей регистрироваться своим полным именем (Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script ) и вы добавите пользователя командой saslpasswd2 -c -u rogaikopyta.ru -a smtpauth user.
Теперь делаем postfix reload и с любой машины в вашей сетке попробуйте протестировать его (жирным отмечены команды, которые вводите вы, остальное — ответ сервера)
Quote:


$telnet mail.rogaikopyta.ru 25
Trying 192.168.1.254…
Connected to mail.rogaikopyta.ru.
Escape character is '^]'.
220 mail.rogaikopyta.ru ESMPT Postfix (2.0.16)
ehlo rogaikopyta.ru
250-mail.rogaikopyta.ru
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
auth plain
334
dGVzdAB0ZXN0AHRlc3RwYXNz
235 Authentication successful


Ругательства после ответа сервера 334 — это test и testpass base 64encoded (printf 'test\0test\0testpass' | mmencode). Если у вас пароль testpass, можете просто скопировать эту строчку, если нет — то ваш пароль вам придется перкодировать с помощью mmencode.
На этом я и закончу. Вам остается только выкинуть из sasldb2 пользователя test и накидать туда реальных пользователей.

Благодарности
Andrew E Kuznetsoff ака Разгильдяю на обкуренной кошке за помощь в тестировании моей установки postfix и cyrus-sasl.

Ссылки
Рекомендую также посмотреть ресурс Мультика http://www.multik.ru/linux/ispmailv2/ — там настройка гораздо более серьезная.
 
« НАСТРОЙКА СЕРВЕРА XDMCP ДЛЯ WINDOWS-КЛИЕНТОВ   Маскарадинг (masquerading) и трансляции ip-адресов (NAT) »

 
  Админ World  
обмен квартир база, центральное агентство недвижимости; договор франчайзинг, франчайзи; АСБл 10 3240 мн 10037м.