LINUX.ORG.RU

Sendmail + авторизация


0

0

Всем привет. Вообще-то, суть вопроса один в один изложен в http://www.linux.org.ru/view-message.jsp?msgid=3337433 только вот апнуть сей сабж не удалось (закрыт?), посему приходится создавать новый. В общем, камрады, помогите. Потратил кучу времени, перебробовал разные варианты конфигураций, авторизаций и т.д. - не работает так как надо. До этого Sendmail не настраивал. Да, и подчеркну, что на данный момент нужет именно Sendmail.

Я понимаю, что с чего-то надо начать, посему предлагаю начать с самого простого. Итак, имею сервер с именем mydomain.ru (шлюз и DNS в одном лице). BIND настроен и работает:

  • А-записи: ns.mydomain.ru, mail.mydomain.ru
  • MX-запись: mail.mydomain.ru

На сервере крутится sendmail-8.12.9, который должен обслуживать клиентов локалки и, на данный момент, НЕ должен позволять релеить себя извне не под каким видом (то есть, включая ту ситуацию, когда кто-то извне подписывается локальным доменом и шлет почту на локальные ящики @mydomain.ru). При этом сервер должен принимать почту извне и, соответственно отправлять ее с почтовых ящиков пользователей. Ни pop, ни imap ни извне, ни с локалки на данный момент не нужны. Локальные пользователи будут смотреть почту прямо с сервера по ssh. Вот какой на данный момент sendmail.mc:

divert(-1)dnl
Dnl #
dnl # This is the sendmail macro config file for m4. If you make changes to
dnl # /etc/mail/sendmail.mc, you will need to regenerate the
dnl # /etc/mail/sendmail.cf file by confirming that the sendmail-cf package is
dnl # installed and then performing a
dnl #
dnl #     make -C /etc/mail
dnl #
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for Red Hat Linux')dnl
OSTYPE(`linux')dnl
define(`confDEF_USER_ID',``8:12'')dnl
define(`confTRUSTED_USER', `smmsp')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
dnl #
dnl define(`confAUTH_OPTIONS', `A p')dnl
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl #
dnl define(`confTO_QUEUEWARN', `4h')dnl
dnl define(`confTO_QUEUERETURN', `5d')dnl
dnl define(`confQUEUE_LA', `12')dnl
dnl define(`confREFUSE_LA', `18')dnl
define(`confTO_IDENT', `0')dnl
FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl
dnl FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
dnl EXPOSED_USER(`root')dnl
dnl #
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
dnl #
dnl FEATURE(`accept_unresolvable_domains')dnl
dnl FEATURE(`relay_based_on_MX')dnl
dnl LOCAL_DOMAIN(`localhost.localdomain')dnl
dnl #
dnl MASQUERADE_AS(`mydomain.ru)dnl
dnl FEATURE(masquerade_envelope)dnl
dnl FEATURE(masquerade_entire_domain)dnl
dnl #
dnl MASQUERADE_DOMAIN(localhost)dnl
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
вот access:
localhost.localdomain           RELAY
localhost                       RELAY
127.0.0.1                       RELAY
это local-host-names:
mydomain.ru
ns.mydomain.ru
mail.mydomain.ru
а вот, вывод по Sendmail:
[root@maydomain mail]# sendmail -d0.1 -bv root
Version 8.12.9
 Compiled with: DNSMAP HESIOD HES_GETMAILHOST LDAPMAP LOG MAP_REGEX
                MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6
                NETUNIX NEWDB NIS PIPELINING SASL SCANF STARTTLS TCPWRAPPERS
                USERDB USE_LDAP_INIT

============ SYSTEM IDENTITY (after readcf) ============
      (short domain name) $w = mydomain
  (canonical domain name) $j = mydomain.ru
         (subdomain name) $m = ru
              (node name) $k = mydomain.ru
========================================================

root... deliverable: mailer local, user root

Хотя авторизация сейчас отключена, saslauthd запущен и посредством

saslpasswd -a sendmail -u mydomain.ru someuser
создан /etc/sasldb (кстати, а зачем еще нужен там sasl2, saslpasswd2 и т. д.?). При telnet localhost 25 виндо, что AUTH отключен.

В такой конфигурации я могу получать почту извне и отвечать на нее/посылать сообщения в глобальную сеть. При этом нельзя пользоваться сервером извне как релеем, посылая письма на внешние адреса, а на локальные адреса можно. Именно это сейчас основная проблема, которую надо решить (авторизация локальных пользователей при отсылке почты пока не так важна). С чего, все таки, начинать?

Спасибо за внимание.


Re: Sendmail + авторизация

И еще - dnl в начале строки означает что строка закомментирована.

> Спасибо за внимание.

Пожалуйста

no-dashi ★★★★★ ()
Ответ на: Re: Sendmail + авторизация от no-dashi

Re: Sendmail + авторизация

>И еще - dnl в начале строки означает что строка закомментирована.
Шутку оценил, еще раз спасибо ;)

Теперь по существу.
>1. Прочесть вот тут: http://dalth.livejournal.com/58804.html
>
>2. Не забыть запустить saslauthd
>
>3. profit!!!
Конечно же, я пробовал включать авторизацию, даже включать TLS и создвать сертификаты. Я ведь специально выше привел закоментированные строки по механизму авторизации - ровно те, которые вы мне советуете по этому линку. Хорошо: я раскомментировал их и теперь в sendmail.mc у меня есть заветные строчки:

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

saslauthd, кстати, у меня и был запущен, файл /etc/sasldb уже был создан и теперь, после включения механизма авторизации при подключении someuser по telnet localhost 25 вижу:

EHLO someuser
250-mydomain.ru Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP

то есть, авторизация включена. В /usr/lib/sasl/Sendmail.conf стоит строка:
pwcheck_method:saslauthd
#pwcheck_method:sasldb
#pwcheck_method:pam

Отправляю почту на someuser@mydomain.ru с другого прова (извне, допустим extdomain.ru) посредством Thunderbird, предварительно подписавшись доменом mydomain.ru и отключив на этом почтовом клиенте все авторизацию - почта распрекрасно приходит (?!). Вот вывод из maillog:

May 23 12:43:44 mydomain sendmail[1969]: n4N7hhei001969: from=<external@extdomain.ru>, size=310, class=0, nrcpts=1, msgid=<4A17A836.8080902@extdomain.ru>, proto=ESMTP, daemon=MTA, relay=mx.extdomain.ru [aaa.bbb.ccc.ddd]
May 23 12:43:44 mydomain sendmail[1970]: n4N7hhei001969: to=<someuser@mydomain.ru>, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30490, dsn=2.0.0, stat=Sent


Если же пытаться отправить на любого другого пользователя (не @mydomain.ru), тогда, да - говорит релей запрещен. В общем все именно так, как я описал в самом начале. Какие еще могут быть предложения? Спасибо за внимание.

mrx ()
Ответ на: Re: Sendmail + авторизация от mrx

Re: Sendmail + авторизация

> Отправляю почту на someuser@mydomain.ru с другого прова (извне, допустим extdomain.ru) посредством Thunderbird, предварительно подписавшись доменом mydomain.ru и отключив на этом почтовом клиенте все авторизацию - почта распрекрасно приходит (?!)

Ну это как бы правильно. Почитайте документацию, в такой кофигурации авторизация используется только для ограничения relay'инга. А вам наверное тогда еще надо задействовать access_db по примеру как в ссылке: http://www.sendmail.org/m4/starttls.html#allow_con

no-dashi ★★★★★ ()
Ответ на: Re: Sendmail + авторизация от no-dashi

Re: Sendmail + авторизация

>Ну это как бы правильно. Почитайте документацию, в такой кофигурации авторизация используется только для ограничения relay'инга. А вам наверное тогда еще надо задействовать access_db по примеру как в ссылке: http://www.sendmail.org/m4/starttls.html#allow_con

То есть, надо включать TLS? И что прописывать тогда в access?

mrx ()
Ответ на: Re: Sendmail + авторизация от no-dashi

Re: Sendmail + авторизация

Запустил STARTTLS. Теперь при telnet localhost 25 кроме 250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN вижу 250-STARTTLS. Пробовал в access прописывать самые разные комбинации TLS_Srv/TLS_Clt - все равно почта на mydomain.ru с внешнего узла, подписавшегося доменом mydomain.ru, приходит. При этом релей на внешние адреса без авторизации не проходит, то есть авторизация работает, но только при посылке сообщений на внешние адреса. Стоит только слать почту на адреса mydomain.ru - все проходит безо всякой авторизации. Что еще нужно сделать? Спасибо.

mrx ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.