Статья о том как сделать sasl на postfix'е и убедиться в его работоспособности.Задача:
Установить sasl и postfix и сделать авторизацию вида:
1) отправлять письма могут только пользователи системы (/etc/passwd).
2) все остальные не пропускать.Система: FreeBSD 7.0
Установка:1) /usr/ports/secutiry/cyrus-sasl2
[+] AUTHDAEMOND (не уверен что это нужно)
[+] LOGIN
[+] PLAINmake 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
[+]SASL2make 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
Если кто не знает как настраивать Аутлук под это дело свистните в камментах - напишу.
Dovecot - наше все. без дополнительного костыля поп имап и аутх - что логично и удобно.
авторизация из мускля и откуда удобно вообще.
здесь не в том дело. никто тут не сравнивает проги. просто мини хавту.
Респект
В этом хавту есть серьезные недоработки. скоро напишу статью в которой будет все исправлено + добавлено исследование тлс