Ключевые слова:postfix, mail, crypt, auth, sasl, (найти похожие документы)
From: zingel <666.root@gmail.com.>
Newsgroups: email
Date: Mon, 15 Nov 2007 14:31:37 +0000 (UTC)
Subject: Установка Postfix+Sasl на FreeBSD 6
Установка Postfix+Sasl v2 (метод авторизации - pwcheck) на FreeBSD
Как-то решил поставить postfix вместо sendmail и сделать авторизацию по smtp
через обычный /etc/passwd (что вполне подходит для обслуживания одного домена на почтовом сервере).
Для этих целей выбрал /usr/ports/security/cyrus-sasl2.
Но после его установки наткнулся на любопытный момент, sasl2 собрался без модуля pwcheck
(как раз необходимого для авторизации через /etc/passwd) и предлагалось в качестве замены
использовать saslauthd, что я в принципе не хотел. Поэтому сделал через pwcheck :)
Сценарий:
1. установка cyrus-sasl2 из портов:
# cd /usr/ports/security/cyrus-sasl2
далее правим Makefile на предмет добавления опции касательно
pwcheck (--with-pwcheck=/var/pwcheck ).
Я сделал так (но в принципе от перемены мест слагаемых сумма не меняется) :
/usr/ports/security/cyrus-sasl2/Makefile :
....
CONFIGURE_ARGS= --sysconfdir=${PREFIX}/etc \
--with-plugindir=${PREFIX}/lib/sasl2 \
--with-dbpath=${PREFIX}/etc/sasldb2 \
--includedir=${PREFIX}/include \
--mandir=${MANPREFIX}/man \
--enable-static \
--enable-auth-sasldb \
--with-pwcheck=/var/pwcheck \
--with-rc4=openssl \
--with-saslauthd=${SASLAUTHD_RUNPATH}
....
Далее идёт сам процесс сборки и установки:
# make; make install
Затем необходимо создать папку /var/pwcheck где будех хранится нужный
нам сокет, задать нужные нам права и овнера (иначе postfix будет
ругаться).
# mkdir /var/pwcheck
# chown cyrus:postfix /var/pwcheck
# chmod u=rwx,g=rx,o= /var/pwcheck
или для любителей цифр:
# chmod 750 /var/pwcheck
Далее создаём файлик: /usr/local/lib/sasl2/smtpd.conf , в котором пишем следущее
pwcheck_method: pwcheck
mech_list: plain login
Первая строчка - указание нашего метода, соотвественно pwcheck.
Вторая строчка - список механизмов авторизации (я выбрал только plain и login)
2. Далее ставим сам postfix:
# cd /usr/ports/mail/postfix
# make; make install
Затем нас спросят с какими опциями собирать postfix, отмечаем соответственно:
[X] SASL2
а другие опции на Ваше усмотрение :)
В процессе установки нас спросят следущее:
Would you like to activate Postfix in /etc/mail/mailer.conf [n]?
Если хотим полностью заменть текующий MTA (например Sendmail) Postfix'ом
то отвечаем: "y".
Далее (в случае если ответили "y") в /etc/rc.conf надо внести следующие изменения
(для нормального запуска postfix'a во время загрузки системы):
/etc/rc.conf :
...
sendmail_enable="YES"
sendmail_flags="-bd"
sendmail_pidfile="/var/spool/postfix/pid/master.pid"
sendmail_procname="/usr/local/libexec/postfix/master"
sendmail_outbound_enable="NO"
sendmail_submit_enable="NO"
sendmail_msp_queue_enable="NO"
...
Затем идём в /usr/local/etc/postfix
# cd /usr/local/etc/postfix
И правим main.cf (я поясню какие строки добавлять для авторизации через
sasl, о базовом конфигурировании можно почитать
здесь: http://www.postfix.org.ru/BASIC_CONFIGURATION_README.html ).
Добавляем следующие строки (запрет для неавторизированных пользователей,
включение авторизации и тп.):
/usr/local/etc/postfix/main.cf :
...
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_application_name = smtpd
smtp_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
...
3. Затем запускаем pwcheck:
# /usr/local/sbin/pwcheck
Не забудем добавить pwcheck в автозапуск.
(Например добавить строку "/usr/local/sbin/pwcheck" в /etc/rc.local)
И postfix (перед этим не забудьте убить sendmail или другой mta, если Вы
заменяли его postfix'ом):
# postfix start
postfix/postfix-script: starting the Postfix mail system
Проверим правильно ли мы подключили sasl
(для этого после соединения с сервером вводим - ehlo localhost):
# telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 test.ru ESMTP Postfix
ehlo localhost
250-test.ru
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.
#
Строка 250-AUTH LOGIN PLAIN говорит нам об успехе.
4. Далее надо проверить работу нашей связки (необходимо создать
пользователя в системе, настроить почтовую программу и попробовать
отправить письмо). Если пароль и логин верен то в /var/log/maillog
будет запись вида (случай для The Bat, механизм авторизации - plain):
Jan 3 15:17:49 postfix/smtpd[645]: connect from station.box[192.168.0.2]
Jan 3 15:17:50 postfix/smtpd[645]: B198917034: client=station.box[192.168.0.2], sasl_method=PLAIN,
sasl_username=ibox
и далее информация об отправке письма и тп.
Если неверен то:
Jan 3 16:02:11 postfix/smtpd[6818]: connect from station.box[192.168.0.2]
Jan 3 16:02:11 postfix/smtpd[6818]: warning: SASL authentication failure: Incorrect password
Jan 3 16:02:11 postfix/smtpd[6818]: warning: SASL authentication failure: Password verification failed
Jan 3 16:02:11 postfix/smtpd[6818]: warning: station.box[192.168.0.2]: SASL PLAIN authentication failed
Jan 3 16:02:11 postfix/smtpd[6818]: NOQUEUE: reject: RCPT from station.box[192.168.0.2]:
554 <kudato@mail.ru.>: Relay access denied;
Jan 3 16:02:11 postfix/smtpd[6818]: disconnect from station.box[192.168.0.2]
и письмо соотвественно не отправится :)
Если всё в /var/log/maillog так как я описал, значит наша связка успешно
работает.
Об авторизации через SASL в Postfix можно почитать здесь: http://www.postfix.org.ru/SASL_README.html