Установка Postfix+Sasl на FreeBSD 6x

Установка 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 так как я описал, значит наша связка успешно

Обновлено: 12.03.2015