The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Настройка 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:
Обсуждается: https://www.opennet.ru/tips/info/1708.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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