Главная > Программы Sendmail с SMTP авторизациейСтатья о том как настроить sendmail в роли клента на релей с SMTP авторизацией. Необходима связка sendmail+cyrus-sasl, в моем случая sendmail 8.12.9 и cyrus-sasl 1.5.28. Можно проверить: # sendmail -d0.1 -bv root | grep SASL если видим SASL то все нормально, преходим самому sendmail, если нет, то: В связи с распространением мобильных устройств у сотрудников больших и малых офисов становится актуальной
отправка почты из любой точки, где есть подключение к Интернет. Кроме того, корпоративные стандарты и здравый
смысл подсказывают, что лучше всего это делать через служебный/корпоративный SMTP-сервер. Установка и настройка OpenSSLПосле установки (я использовал системый OpenSSL) необходимо отредактировать файл конфигурации (openssl.cnf), чтобы при необходимости изменить каталоги, в которых будут располагаться ключи, сертификаты и прочее во время настройки, а также имена ответственных лиц, наименование организации и пр. Как правило конфиг располагается в каталоге /etc/ssl/.Установка и настройка cyrus-sasl2Используем последние доступные в портах на данный момент версии, в моем случае это cyrus-sasl-2.1.22 и cyrus-sasl-saslauthd-2.1.22. После установки необходимо создать файл конфигурации SASL для Sendmail (/usr/local/lib/sasl2/Sendmail.conf), содержащий следующие строки:pwcheck_method: saslauthd
srvtab: /etc/srvtab
Не забываем добавить разрешение запуска SASL в /etc/rc.conf: saslauthd_enable="YES"
sasl_saslauthd_flags="-a sasldb"
cyrus_pwcheck_enable="YES"
Запускаем cyrus-sasl2:# sh /usr/local/etc/rc.d/saslauthd.sh startПроверяем, запустился ли он: # ps ax | grep sasl 67358 ?? Is 0:00.01 /usr/local/sbin/saslauthd -a sasldb 67359 ?? I 0:00.01 /usr/local/sbin/saslauthd -a sasldb 67360 ?? I 0:00.01 /usr/local/sbin/saslauthd -a sasldb 67361 ?? I 0:00.01 /usr/local/sbin/saslauthd -a sasldb 67362 ?? I 0:00.01 /usr/local/sbin/saslauthd -a sasldb Создание сертификатов для TLSСоздаем каталог для хранения ключей/сертификатов:# mkdir -p /etc/mail/certsДалее переходим в него и создаем ключи и сертификат: # cd /etc/mail/certs # openssl req -new -x509 -keyout cakey.pem -out cacert.pem -days 365 # openssl req -nodes -new -x509 -keyout sendmail.pem -out sendmail.pem -days 365Проверяем результат: # openssl x509 -noout -text -in sendmail.pemНазначаем права на файл с сертификатом и ключом: # chmod 600 ./sendmail.pem Настройка SendmailРедактируем файл /etc/make.conf для включения поддержки SASL в Sendmail, для этого добавляем в него строки:SENDMAIL_CFLAGS= -I/usr/local/include -DSASL=2
SENDMAIL_LDFLAGS= -L/usr/local/lib
SENDMAIL_LDADD= -lsasl2 -lcrypto
После этого пересобираем 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Далее редактируем файл freebsd.mc, обычно находящийся в директории /etc/mail/, добавляя туда define(`confCACERT_PATH', `/etc/mail/certs')dnl
define(`confCACERT', `/etc/mail/certs/cacert.pem')dnl
define(`confSERVER_CERT', `/etc/mail/certs/sendmail.pem')dnl
define(`confSERVER_KEY', `/etc/mail/certs/sendmail.pem')dnl
define(`confCLIENT_CERT', `/etc/mail/certs/sendmail.pem')dnl
define(`confCLIENT_KEY', `/etc/mail/certs/sendmail.pem')dnl
DAEMON_OPTIONS(`Family=inet, Port=465, Name=MTA-SSL, M=s')dnl
TRUST_AUTH_MECH(`LOGIN')dnl
define(`confAUTH_MECHANISMS', `LOGIN')dnl
и генерим конфигурационный файл Sendmail:# cd /etc/mail # make installПосле этого необходимо перестартовать Sendmail. проверка конфигурации Sendmail и его работоспособности Никогда не лишним будет проверить результаты настроек, дабы исключить ошибки. Проверяем, с какими опциями был скомпилирован Sendmail: # /usr/sbin/sendmail -d0.1 -bv rootЕсли видим что-то похожее на Version 8.13.6
Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SASLv2
SCANF STARTTLS TCPWRAPPERS USERDB XDEBUG
значит поддержка SASL и TLS включена в наш Sendmail.Далее при помощи telnet зайдем на сервер и проверим, какие механизмы аутентификации он поддерживает и стартовала ли поддержка TLS (правильно ли мы сгенерили и подключили сертификаты). # telnet localhost 25 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 office.host.com.ua ESMTP Sendmail 8.13.6/8.13.6; Tue, 1 Aug 2006 10:52:09 +0300 (EEST) ehlo localhost 250-office.host.com.ua Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH LOGIN 250-STARTTLS 250-DELIVERBY 250 HELP quit 221 2.0.0 office.host.com.ua closing connection Connection closed by foreign host.Если вы увидели строки, содержащие AUTH LOGIN и STARTTLS, то ваш сервер настроен верно. Добавление пользователей в базу SASL# saslpasswd2 -c newuserПроверить, какие пользователи добавлены, можно командой: # sasldblistusers2 Настройка клиентовКлиентские почтовые программы настраиваются в соответствии с инструкцией к конкретному почтовому клиенту. Для настройки необходимо знать логин/пароль, которые описывались предыдущем разделе.ЗаключениеВся информация собранная в этом руководстве найдена в Интернет, на сайтах производителей ПО, персональных страничках и получена в качестве консультаций в специализированных рассылках (в частности, благодарю коллег из рассылки UAFUG (uafug.org.ua).В ваш senmail.mc фаил добавляем: FEATURE(`mailertable', `hash -o /etc/mail/mailertable')
FEATURE(`authinfo', `DATABASE_MAP_TYPE /etc/mail/authinfo')
создаем sendmail.cf
в mailertable пишем где some.domain.com адрес на который будет sendmail отсылать все исходящие сообщения, пересобираем maillertable
в /etc/mail/ создаем фаил authinfo, в него добавляем AuthInfo:some.domain.com "U:username" "P:password" собираем authinfo,
перезапускаем sendmail и в качестве проверки отправляем куданить письмо, затем смотрим maillog и если видим запись о том что письмо было успешно доставлено на some.domain.com, то ура все работаеn, если нет то не повезло, все проверяем занова. Главная > Программы |