Sendmail 8.10/8.11 поддерживают SMTP AUTH как это описано в RFC 2554,
которая базируется на SASL. Постараюсь выложить тут всё необходимое
для реализации этой функции в Sendmail.
Для начала стоит задуматься для чего вам это нужно. Потому как не все
е-майловые клиенты в полной мере поддерживают SMTP AUTH. Вот по этому
адресу можно посмотреть табличку совместимости для разных клиентов :
http://www.sendmail.org/~ca/email/mel/SASL_ClientRef.html
Сначала нам потребуются библиотеки Cyrus SASL.
Берем последние сорц-коды : ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/
На сегодняшний день это версия 1.5.24
tar -xzf cyrus-sasl-1.5.24.tar.gz
cd cyrus-sasl-1.5.24/
./configure --prefix=/usr
make
make install #под правами рута конечно
Теперь гляньте есть ли библиотеки в каталогах /usr/lib и инклуды в
/usr/include.
Посмотрите, чтоб файлы принадлежали руту...
Теперь надо сделать конфигурационный файл для Сенмайла, который будет
использовать SASL каждый раз когда пойдет проводить аутентификацию для
Sendmail.
Делаем файл /usr/lib/sasl/Sendmail.conf и пишем во внутрь:
pwcheck_method: sasldb
Об этом больше описано в cyrus-sasl-1.5.24/doc/sysadmin.html , а нам
пока хватит этого.
Теперь нужно организовать базу данных для всех ваших юзеров, которые
могут отсылать почту. Для этого есть две программы, которые должны
были встать в /usr/sbin :
saslpasswd -a sendmail newuser
password:<passwdorf for newuser>
Эту процедуру проводим для всех юзеров которые у вас есть.
Теперь есть вторая программа :
sasldblistusers
которая вам покажет все введённые записи в базу.
В результате вы увидите, что-то в этом духе :
user: newuser realm: yourhost mech: CRAM-MD5
user: newuser realm: yourhost mech: DIGEST-MD5
user: newuser realm: yourhost mech: PLAIN
Что значит что вы можете делать аутентификацию под юзером newuser
трёмя методами : CRAM-MD5, DIGEST-MD5, PLAIN.
Последний метод очень не надёжен и советую от него воздержаться. Но
вот Нетскейп 4.76 другого способа не знает.
Теперь перейдем к самому Sendmail. Сначала посмотрим возможно в вашем
дистрибутиве уже скомпилировали поддержку SASL ?
sendmail -d0.1 -bv root | grep SASL
Если в результате такой команды вы увидите знакомое слово SASL то
можете смело переходить к следующему пункту, а если нет - вам придется
заново собрать Sendmail.
Собираем Sendmail:
скачиваем нужную, или последнюю версию сендмайл(www.sendmail.org)
tar -xzf senmail-x.xx.xx.tar.gz
cd sendmail-x.xx.xx/
Теперь очень важно:
заходим в sendmail-x.xx.x/devtools/Site и делаем там файл
site.config.m4 в котором пишем :
APPENDDEF(`confENVDEF', `-DSASL')
APPENDDEF(`conf_sendmail_LIBS', `-lsasl')
APPENDDEF(`confLIBDIRS', `-L/usr/lib/')
APPENDDEF(`confINCDIRS', `-I/usr/include/')
возвращаемся в каталог sendmail-x.xx.xx/
и запускаем скрипт
./Build
./Build install
Теперь проверим что у нас получилось:
sendmail -d0.1 -bv root | grep SASL
Если всё работает идем дальше. Сконфигурируем Sendmail.
впишем в свой файл sendmail.mc :
TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 PLAIN')dnl
define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 PLAIN')dnl
define(`confDEF_AUTH_INFO', `/etc/mail/auth/auth-info')dnl
FEATURE(`no_default_msa')dnl turn off default entry for MSA
DAEMON_OPTIONS(`Port=25, Name=MSA, M=E')dnl
Советую выключить из списка PLAIN метод авторизации !
Теперь :
m4 senmail.mc>sendmail.cf
Копируем файл туда где Sendmail берёт конфиг файл :
cp sendmail.cf /etc/mail/sendmail.cf
Проверяем насколько готов sendmail:
telnet localhost 25
Trying 127.0.0.1...
Connected to localhost
Escape character is '^]'.
220 local.sendmail.ORG ESMTP Sendmail 8.10.0/8.10.0; Thu, 9 Sep 1999
10:48:44 -0700 (PDT)
ehlo localhost
250-local.sendmail.ORG Hello localhost [127.0.0.1], pleased to meet
you
250-ENHANCEDSTATUSCODES
250-DSN
250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN
250 HELP
quit
Теперь можете поиграть с вписаниями в хидеры е-майла информации о
аутентификации. В /etc/sendmail.cf поищите:
#########################
# Format of headers #
#########################
Впишите к примеру такое :
$.$?{auth_type}(authenticated with ${auth_type} from ${auth_author}$.)
Тогда в письмах, в хидерах появится такое :
(authenticated with CRAM-MD5 from newuser)
В емайл - клиентах не забудьте указать:
login : newuser@yourhost
password: passwowdfornewuser
338 Прочтений • [SMTP AUTH (SASL) в sendmail 8.10/8.11 (auth smtp mail sasl sendmail)] [08.05.2012] [Комментариев: 0]