Компиляция библиотеки SASL.
Этот раздел посвящен сборке библиотеки Cyrus SASL 1.x, которая требуется
для аутентификации пользователей при отправке писем через Sendmail. Если этого
не требуется, данный раздел можно пропустить, а вместе с ним и все места в
дальнейшем тексте, где присутствует слово SASL.
Зайдя в директорию, куда был распакован архив с исходниками библиотеки
необходимо выполнить команду
./configure --enable-plain --enable-login [остальные опции]
которая подготавливает все необходимые для компиляции файлы. Ключи
--enable-plain и --enable-login включают поддержку механизмов
аутентификации PLAIN и LOGIN соответственно. (Вообще говоря, механизм LOGIN
является самым плохим с точки зрения безопасности, но IE понимает только его)
После этого надо сказать
make
и
make install
для компиляции и установки библиотеки, соответственно. Причем последнее надо
говорить будучи суперпользователем.
Если всё прошло успешно, то должна была появиться директория
/usr/local/lib/sasl и некоторые файлы в директории
/usr/local/lib. Осталось сделать два важных шага. Первый --
создать символическую ссылку /usr/lib/sasl на директорию
/usr/local/lib/sasl:
ln -s /usr/local/lib/sasl /usr/lib/sasl
Это необходимо, потому что программы, в частности Sendmail, будут искать
модули аутентификации в директории /usr/lib/sasl. В принципе,
можно было устанавливать библиотеку прямо туда (см. ./configure
--help).
Второй -- создать файл /usr/local/lib/sasl/Sendmail.conf со
следующим содержимым:
pwcheck_method: passwd
Это означает, что при проверке пароля SASL будет напрямую читать файл паролей
через семейство функций getpwent. Если такой вариант не устраивает,
то можно почитать README к SASL, где описаны другие способы проверки пароля.
На этом возня с SASL закончена.
Компиляция Sendmail.
После распаковки дистрибутива Sendmail мы идём в директорию
{sendmail_base}/devtools/Site и создаём там файл
site.config.m4(если его
там ещё нет, что обычно и бывает). Для включения механизма фильтров в этом
файле надо написать
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER')
APPENDDEF(`conf_sendmail_ENVDEF', `-D_FFR_MILTER=1')
APPENDDEF(`conf_libmilter_ENVDEF', `-D_FFR_MILTER=1')
а для использования библиотеки SASL при аутентификации (и включения самого
механизма аутентификации)
APPENDDEF(`conf_sendmail_ENVDEF', `-DSASL')
APPENDDEF(`conf_sendmail_LIBS', `-lsasl')
APPENDDEF(`confINCDIRS', `-I/usr/local/include')
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib')
После этого мы компилируем Sendmail командой
./Build
запуская её из директории {sendmail_base}. Если всё успешно, то можно
устанавливать Sendmail командой
./Build install
но до этого надо убедиться, что в вашей системе наличествуют пользователь
smmsp и группа smmsp(обычно им дают UID=25 и GID=25, хотя это
дело вкуса). Если таких не наблюдается, то надо их создать. После инсталляции
надо взглянуть на длинный листинг директории /var/spool. Там должны
быть директории mqueue и clientmqueue со следующими
правами доступа и владельцами:
drwxrwx--- 2 smmsp smmsp 512 1 Jan 00:00 clientmqueue
drwx------ 2 root wheel 512 1 Jan 00:00 mqueue
Если что-то не так, то приводим в соответствие.
Sendmail скомпилирован и установлен. Осталось создать файл конфигурации:
идём в директорию {sendmail_base}/cf/cf и копируем файл
generic-xxxx.mc, где xxxx -- что-то похожее на
имя вашей операционной системы, в файл sendmail.mc. Лезем в этот
файл и добавляем в конец следующие строчки:
для использования SASL
TRUST_AUTH_MECH(`DIGEST-MD5 PLAIN LOGIN')
define(`confAUTH_MECHANISMS', `DIGEST-MD5 PLAIN LOGIN')
Это позволяет нам использовать механизмы аутентификации DIGEST-MD5, LOGIN и
PLAIN.
Для использования фильтров (в конкретном примере фильтра 'MailFilter',
который использует локальный socket /var/run/.mail_filter):
INPUT_MAIL_FILTER(`MailFilter', `S=local:/var/run/.mail_filter, F=R')
Если вы хотите использовать несколько фильтров сразу, то порядок прохождения
по ним письма совпадает с порядком строчек INPUT_MAIL_FILTER. Причём, если
один из фильтров отсек письмо, то к следующим оно уже не поступит.
Теперь говорим
./Build sendmail.cf
и копируем получившийся файл sendmail.cf в директорию
/etc/mail. В этой же директории надо создать файл
local-host-names в котором надо перечислить все доменные имена данной
машины для которых Sendmail будет принимать почту.
Ну вот, теперь можно запускать Sendmail:
sendmail -bd -q30m
-bd означает, что sendmail будет работать в режиме демона, а
-q30m -- что он будет разбирать почтовую очередь каждые 30
минут.
Если вы компилировали поддержку аутентификации, то простейшая проверка
её работоспособности такова:
telnet localhost 25
это мы решили поговорить с Sendmail'ом напрямую. И далее надо сказать
EHLO test
За этим последует несколько строчек, начинающихся на 250-. Если
среди них есть строчка
250-AUTH PLAIN LOGIN
то всё хорошо. Если нету, то хорошо не всё.
$Id: install.html 1 2007-10-04 08:21:50Z rea $