User Tools

Site Tools


Sidebar


Tags Cloud
sendmail_smtp_auth

Аутентификация SMTP: штатный sendmail + SASL

Часто возникает ситуация, когда для пользователей, разъезжающих по командировкам, нужно организовать почтовый релэй.

Проблема в том, что штатный для FreeBSD sendmail настраивается на прием почты только от доверенных IP-адресов (или IP-сетей), и заранее неизвестно, с какого IP-адреса пользователь будет отправлять почту.

Как одно из решений - выдать такому пользователю логин/пароль и настроить sendmail на прием почты, основываясь на этих данных, независимо от IP-адреса, с которого пришел пользователь. Собственно рецепт настройки sendmail'a я и привожу здесь.

Благодарность за рецепт уходит Victor Prylipko <Victor.Prylipko АТ f4.n4635.z2.fidonet.org> из фидо-конференции ru.unix.bsd

Дано:
FreeBSD 4.8 STABLE; sendmail - штатный.

Требуется:
настроить авторизацию клиента использующего Outlook Express при приеме почты от него, нужно для возможности принимать почту от клиента, если он отправляет почту с "чужих" IP-адресов.

1. Ставим из портов cyrus-sasl2 и cyrus-sasl2-saslauthd

# portinstall cyrus-sasl2
# portinstall cyrus-sasl2-saslauthd

2. Из /etc/defaults/make.conf копируем строки в /etc/make.conf

SENDMAIL_CFLAGS=-I/usr/local/include -DSASL=2
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsasl2

3. Пересобираем sendmail

# cd /usr/src/lib/libsm
# make clean && make obj && make depend && make
# cd /usr/src/lib/libsmutil
# make clean && make obj && make depend && make
# cd /usr/src/usr.sbin/sendmail
# make clean && make obj && make depend && make && make install

4. Добавляем строку в /etc/rc.conf

sasl_saslauthd_flags="-a sasldb"

5. Запускаем демон SASL-а

# /usr/local/etc/rc.d/saslauthd.sh start

Этот пункт рецепта спонсирован Slava Vovk aka vovk АТ km.ua

6. Создаем Sendmail.conf

# echo pwcheck_method: saslauthd > /usr/local/lib/sasl2/Sendmail.conf

Там же можно указать, где лежит srvtab:

# echo srvtab: /etc/srvtab >> /usr/local/lib/sasl2/Sendmail.conf

7. Добавляем сроки в ваш .mc файл

TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 PLAIN LOGIN')dnl
define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 PLAIN LOGIN')dnl

В принципе можно ограничится только одним методом LOGIN, если нужно только для Outlook Express (других клиентов я не пробовал).

TRUST_AUTH_MECH(`LOGIN')dnl
define(`confAUTH_MECHANISMS', `LOGIN')dnl

8. Генерим sendmail.cf и устанавливаем его

# cd /etc/mail
# make install restart

9. Заводим пользователя в базу SASL

# saslpasswd2 -a sendmail newuser

проверка, что пользователь добавлен:

# sasldblistusers2

выдаст список пользователей в базе.

10. Создаем пустой файл /etc/srvtab чтобы sendmail в логах не ругался, хотя можно этого и не делать. :-)

11. В настройках Outlook Express - Tools | Accounts… | нужный аккаунт | Properties | Servers | ставим "галочку" My server requires authentication и жмем кнопку Settings… вводим Account name и Password которые занесли в базу в 8-м пункте.

Все, почта от пользователя принимается невзирая на /etc/mail/access.db

sendmail_smtp_auth.txt · Last modified: 2013/12/15 19:49 by kyxap