URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 42757
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Настройка SASL аутентификации для Postfix "

Отправлено auto_tips , 08-Июл-08 12:04 
Статья о том как сделать sasl на postfix'е и убедиться в его работоспособности.

Задача:

Установить sasl и postfix и сделать авторизацию вида:
1) отправлять письма могут только пользователи системы (/etc/passwd).
2) все остальные не пропускать.

Система: FreeBSD 7.0


Установка:

1) /usr/ports/secutiry/cyrus-sasl2

   [+] AUTHDAEMOND (не уверен что это нужно)
   [+] LOGIN
   [+] PLAIN

   make install clean

(если программы уже были установлены то повторно вызвать меню опций при установке можно командой make config)

2) /usr/ports/security/cyrus-sasl2-saslauthd

    make install clean

3) создаем и редактируем /usr/local/lib/sasl2/smtpd.conf:

   pwcheck_method: saslauthd
   mech_list: plain login

далее добавляем в /etc/rc.conf:

   saslauthd_enable="YES"
   saslauthd_flags="-a pam"

4) Теперь постифкс
   /usr/ports/mail/postfix
   [+]SASL2

   make install clean

при установке на все вопросы ответить утвердительно "y"

5) теперь мини-рабочий конфиг постфикса (целиком):

/usr/local/etc/postfix/main.cf

   queue_directory = /var/spool/postfix
   command_directory = /usr/local/sbin
   daemon_directory = /usr/local/libexec/postfix
   mail_owner = postfix
   myhostname = host.domain.ru
   mydomain = domain.ru
   myorigin = $mydomain
   smtpd_sasl_auth_enable = yes
   smtpd_security_options = noanonymous
   smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    reject_unauth_destination

(!!! Внимание, господа, эта статья требует чтобы в конфиге postfix не было упоминаний mynetworks)

6) Теперь просто в консоли из под рута

   newaliases

эта команда создаст файл /etc/aliases.db необходимый для постфикса

7) Для тестирования желательно иметь php на машинке потому как sasl механизм login и plain используют
технологию шифрования base64 и для обработки "руками" логина и пароля нужно будет написать скриптик:

   <?php
   print base64_encode("логин");
   print "\n";
   print base64_encode("пароль");
   print "\n";
   ?>

P.S. (Кому интересно plain это base64_encode("логин\0логин\0пароль");)

тоже самое на Perl:

   perl -e 'use MIME::Base64; print encode_base64("логин") . "\n" .encode_base64("пароль"). "\n"'


8) Перезагружаем postfix


Тестирование SASL.

1) тестирование "руками":

   telnet айпиадрес 25

оно оветит:

   220 host.domain.ru ESMTP Postfix

говорим ему:

   ehlo host

(где host -имя машины)
оно ответит:

   220 host.domain.ru ESMTP Postfix
   250-host.domain.ru
   250-PIPELINING
   250-SIZE 10240000
   250-VRFY
   250-ETRN
   250-AUTH LOGIN PLAIN
   250-ENHANCEDSTATUSCODES
   250-8BITMIME
   250 DSN

если есть строка 250-AUTH LOGIN PLAIN - то значит есть вероятность успеха.
теперь заходим без авторизации и смотрим как наше сообщение не проходит:

   mail from: user@domain.ru

оно:

   250 2.1.0 Ok

мы:

   rcpt to: user2@domain.ru

оно:

   554 5.7.1 <user2@domain.ru>: Relay access denied

- значит все отлично нас не пустили просто так.
напечатайте

   quit

и теперь идем с регистрацией:

   telnet айпиадрес 25

   220 host.domain.ru ESMTP Postfix

   ehlo host

   250-host.domain.ru
   250-PIPELINING
   250-SIZE 10240000
   250-VRFY
   250-ETRN
   250-AUTH LOGIN PLAIN
   250-ENHANCEDSTATUSCODES
   250-8BITMIME
   250 DSN

теперь вводим:

   auth login

оно скажет нам сообщение вида:

   334 VXNlcm5hbWU6

теперь запускаем, предварительно заполнив, тот скриптик который был указан выше
и вводим наш логин зашифрованный base64 в ответ на последнее сообщение.
у меня это:

   cGVuc2U=

на что сервер ответил

   334 UGFzc3dvcmQ6

теперь пароль в том же виде:

   cnZpZGlh

на что оно нам ответит если все было правильно:

   235 2.0.0 Authentication successful

вот оно - авторизация пройдена.
теперь соответственно

   mail from:
   rcpt to:
   data
  hello world
  .
  quit

все. письмо отправлено.


URL:
Обсуждается: http://www.opennet.me/tips/info/1708.shtml


Содержание

Сообщения в этом обсуждении
"Настройка SASL аутентификации для Postfix "
Отправлено АвторСтатьи , 08-Июл-08 12:04 
Если кто не знает как настраивать Аутлук под это дело свистните в камментах - напишу.

"Настройка SASL аутентификации для Postfix "
Отправлено Igoria , 10-Июл-08 17:05 
Dovecot - наше все. без дополнительного костыля поп имап и аутх - что логично и удобно.
авторизация из мускля и откуда удобно вообще.

"Настройка SASL аутентификации для Postfix "
Отправлено АвторСтатьи , 14-Июл-08 14:19 
здесь не в том дело. никто тут не сравнивает проги. просто мини хавту.

"Настройка SASL аутентификации для Postfix "
Отправлено triam , 21-Авг-08 08:52 
Респект

"Настройка SASL аутентификации для Postfix "
Отправлено АвторСтатьи , 25-Авг-08 13:50 
В этом хавту есть серьезные недоработки. скоро напишу статью в которой будет все исправлено + добавлено исследование тлс