The OpenNET Project / Index page

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

Настройка SASL аутентификации для Postfix
Статья о том как сделать 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
   mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
   smtpd_sasl_auth_enable = yes
   smtpd_security_options = noanonymous
   smtpd_client_restrictions =
    permit_sasl_authenticated,
    reject_plaintext_session
   smtpd_sender_restrictions =
    permit_sasl_authenticated,
    reject_plaintext_session


(!!! Внимание, господа, эта статья требует чтобы в конфиге 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

все. письмо отправлено.
 
03.07.2008 , Автор: Астафьев Григорий
Ключи: sasl, crypt, auth, postfix, mail / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевые сервисы / Mail, почта / Безопасность и установка ограничений

Обсуждение [ RSS ]
  • 1, АвторСтатьи (?), 12:04, 08/07/2008 [ответить]  
  • +/
    Если кто не знает как настраивать Аутлук под это дело свистните в камментах - напишу.
     
  • 2, Igoria (?), 17:05, 10/07/2008 [ответить]  
  • +/
    Dovecot - наше все. без дополнительного костыля поп имап и аутх - что логично и удобно.
    авторизация из мускля и откуда удобно вообще.
     
     
  • 3, АвторСтатьи (?), 14:19, 14/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    здесь не в том дело. никто тут не сравнивает проги. просто мини хавту.
     
     
  • 4, triam (??), 08:52, 21/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Респект
     

  • 5, АвторСтатьи (?), 13:50, 25/08/2008 [ответить]  
  • +/
    В этом хавту есть серьезные недоработки. скоро напишу статью в которой будет все исправлено + добавлено исследование тлс
     

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




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

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