ASPLinux 11.2 и авторизация почты

Автор: bsm Дата: 12.05.2008 10:57 Имеются: ASPLinux 11.2,

[root@maestro ~]# uname -a
Linux maestro 2.6.20-1.2320.1.112aspsmp #1 SMP Fri Oct 12 21:39:43 EEST 2007 i686 athlon i386 GNU/Linux
[root@maestro ~]#

[root@maestro ~]# rpm -qa cyrus-sasl*
cyrus-sasl-ntlm-2.1.20-6
cyrus-sasl-md5-2.1.20-6
cyrus-sasl-devel-2.1.20-6
cyrus-sasl-plain-2.1.20-6
cyrus-sasl-sql-2.1.20-6
cyrus-sasl-gssapi-2.1.20-6
cyrus-sasl-2.1.20-6
[root@maestro ~]#

[root@maestro ~]# rpm -qa sendmail*
sendmail-devel-8.13.8-1.112asp
sendmail-doc-8.13.8-1.112asp
sendmail-8.13.8-1.112asp
sendmail-cf-8.13.8-1.112asp
[root@maestro ~]#

На сколько я понял, по умолчанию почтовый сервис организован с авторизацией
пользователей. Т.к. sendmail собран с поддержкой SASL2 для SMPT-авторизации:

[root@maestro ~]# sendmail -d0.1 -bv root
Version 8.13.8
Compiled with: DNSMAP HESIOD HES_GETMAILHOST LDAPMAP LOG MAP_REGEX
MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6
NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF SOCKETMAP STARTTLS
TCPWRAPPERS USERDB USE_LDAP_INIT

============ SYSTEM IDENTITY (after readcf) ============
(short domain name) $w = maestro
(canonical domain name) $j = my.domain.com
(subdomain name) $m = <null>
(node name) $k = maestro
========================================================

bsm... deliverable: mailer local, user bsm
[root@maestro ~]#

Что я изменил/добавил:

Изменения для SASL2:
- в /etc/init.d/saslauthd, по умолчанию, имеем-

..
# Source our configuration file for these variables.
SOCKETDIR=/var/run/saslauthd
MECH=shadow
FLAGS=
..
- в /etc/default создан файл saslauthd в котором указано-
#
# This needs to be uncommented before saslauthd will be run automatically
START=yes

# You must specify the authentication mechanisms you wish to use.
# This defaults to @pam@ for PAM support, but may also include
# "shadow" or "sasldb"
MECHANISMS=shadow

- в /usr/lib/sasl2/Sendmail.conf имеем-
#pwcheck_method: saslauthd
#
pwcheck_method: shadow
mech_list: LOGIN PLAIN DIGEST-MD5 CRAM-MD5

Следовательно для авторизации почтовых пользователей используется информация
файла /etc/shadow.

Запущен скрипт /etc/init.d/saslauthd

Изменения для sendmail:
- в /etc/mail/access-
#Connect:192.168.0 RELAY
#Connect:10.10.1.247 RELAY
#Connect:192.168.3.120 RELAY

после чего access.db пересобран

- создан файл /etc/mail/default-auth-info, в нём пусто.

- в /etc/mail/sendmail.mc-
dnl define(`confAUTH_OPTIONS', `A p')dnl
TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confDEF_AUTH_INFO', `/etc/mail/default-auth-info')dnl
define(`confSMTP_LOGIN_MSG', `bsm-AUTH-AntiSPAM-MTA; "Non-authorized relaying DENIED!"')dnl
dnl #
dnl # Для увеличения объёма отладочной информации в /var/log/maillog
define(`confLOG_LEVEL', `15')dnl

после чего sendmail.cf пересобран и перезапущен sendmail

- в sendmail.cf имеется-
..
# dequoting map
Kdequote dequote

# class E: names that should be exposed as from this host, even if we masquerade
# class L: names that should be delivered locally, even if we have a relay
# class M: domains that should be converted to $M
# class N: domains that should not be converted to $M
#CL root
C{TrustAuthMech}GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
C{E}root
C{w}localhost.localdomain
..
# list of authentication mechanisms
O AuthMechanisms=GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN

# Authentication realm
#O AuthRealm

# default authentication information for outgoing connections
O DefaultAuthInfo=/etc/mail/default-auth-info

# SMTP AUTH flags
O AuthOptions=A
..
R$* $| $={TrustAuthMech} $# RELAY
..

Проверяем работу почтовика-

*** Состояние dovecot, saslauthd, sendmail ***
dovecot (pid 10410) выполняется...
saslauthd (pid 10466 10465 10464 10463 10461) выполняется...
sendmail (pid 5744) выполняется...

[root@maestro ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
220 Lavr-AUTH-Antispam-MTA; ESMTP Non-authorized relaying DENIED!
ehlo localhost
250-orizon-navigation.com Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 48000000
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP
quit
221 2.0.0 orizon-navigation.com closing connection
Connection closed by foreign host.
[root@maestro ~]#

Следовательно авторизация выполняется.
Лог почтовика показывает, что почта на сервер приходит из вне и раскладывается в
почтовые ящики пользователей.

Идём на машину локального пользователя.
Запускаем Outlook Express. Проверяем наличие входящей почты,- почта принимается.
Создаём письмо.

При отправке почты происходит нижеприведенное:

- при отсутствии авторизации в учётной записи почтового клиента (Outlook Express):
..
May 8 18:29:02 maestro sendmail[13705]: NOQUEUE: connect from Vodzinskij_Nikolaj [192.168.0.106]
May 8 18:29:02 maestro sendmail[13705]: m48FT2pS013705: tcpwrappers (Vodzinskij_Nikolaj, 192.168.0.106) rejection
May 8 18:29:02 maestro sendmail[13705]: AUTH: available mech=PLAIN LOGIN, allowed mech=GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
May 8 18:29:02 maestro sendmail[13705]: m48FT2pS013705: --- 220 bsm-AUTH-AntiSPAM-MTA; ESMTP Non-authorized relaying DENIED!
May 8 18:29:02 maestro sendmail[13705]: m48FT2pS013705: <-- HELO vodzinskij
May 8 18:29:02 maestro sendmail[13705]: m48FT2pS013705: --- 250 orizon-navigation.com Hello Vodzinskij_Nikolaj [192.168.0.106], pleased to meet you
May 8 18:29:02 maestro sendmail[13705]: m48FT2pS013705: <-- MAIL FROM: <vodzi@orizon-navigation.com>
May 8 18:29:02 maestro sendmail[13705]: m48FT2pS013705: --- 550 5.0.0 Access denied
May 8 18:29:02 maestro sendmail[13705]: m48FT2pS013705: <-- QUIT
May 8 18:29:02 maestro sendmail[13705]: m48FT2pS013705: --- 221 2.0.0 orizon-navigation.com closing connection
May 8 18:29:02 maestro dovecot: pop3-login: Login: user=<vodzi>, method=PLAIN, rip=::ffff:192.168.0.106, lip=::ffff:192.168.0.1
May 8 18:29:02 maestro dovecot: POP3(vodzi): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
..

- при указании о авторизации в учётной записи почтового клиента (Outlook Express)- в почтовой учётной записи пользователя указываем, что "Проверка подлинности пользователя" должна выполняться. Сохраняем изменение.:
..
May 8 18:37:31 maestro sendmail[16637]: NOQUEUE: connect from Vodzinskij_Nikolaj [192.168.0.106]
May 8 18:37:31 maestro sendmail[16637]: m48FbVwn016637: tcpwrappers (Vodzinskij_Nikolaj, 192.168.0.106) rejection
May 8 18:37:31 maestro sendmail[16637]: AUTH: available mech=PLAIN LOGIN DIGEST-MD5 CRAM-MD5, allowed mech=GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
May 8 18:37:31 maestro sendmail[16637]: m48FbVwn016637: --- 220 bsm-AUTH-AntiSPAM-MTA; ESMTP Non-authorized relaying DENIED!
May 8 18:37:31 maestro sendmail[16637]: m48FbVwn016637: <-- EHLO vodzinskij
May 8 18:37:31 maestro sendmail[16637]: m48FbVwn016637: --- 250-orizon-navigation.com Hello Vodzinskij_Nikolaj [192.168.0.106], pleased to meet you
May 8 18:37:31 maestro sendmail[16637]: m48FbVwn016637: --- 250 ENHANCEDSTATUSCODES
May 8 18:37:31 maestro sendmail[16637]: m48FbVwn016637: <-- MAIL FROM: <vodzi@orizon-navigation.com>
May 8 18:37:31 maestro sendmail[16637]: m48FbVwn016637: --- 550 5.0.0 Access denied
May 8 18:37:31 maestro sendmail[16637]: m48FbVwn016637: <-- QUIT
May 8 18:37:31 maestro sendmail[16637]: m48FbVwn016637: --- 221 2.0.0 orizon-navigation.com closing connection
May 8 18:37:31 maestro dovecot: pop3-login: Login: user=<vodzi>, method=PLAIN, rip=::ffff:192.168.0.106, lip=::ffff:192.168.0.1
May 8 18:37:31 maestro dovecot: POP3(vodzi): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
..

Сообщение Outlook Express: "Не удаётся отправить сообщение, поскольку сервер
отказался принять адрес получателя. В письме был указан адрес
`vodzi@my.domain.com`. Тема.., Учётная запись.., Сервер `192.168.0.1`,
Протокол : SMTP, Ответ сервера: `550 5.0.0 Access denied`, Порт: 25, Защита
(SSL): Нет, Ошибка сервера: 550, Код ошибки: 0x800CCC78"

Повторюсь- локальный клиент почту может получить, но отправить почту не имеет
возможности, т.к. SMTP-сервер отказывает в авторизации.

Как добиться правильной авторизации при отправке почты?
Спасибо.


Попробовал не использовать дистрибутивную поставку dovecot (POP3), sendmail, SASL2

Имею- ASPLinux 11.

Собрал SASL2 из исходников:

# cyrus-sasl-2.1.22.tar.gz
./configure --enable-login
make install

Файл /usr/local/lib/sasl2/Sendmail.conf имеет вид-

#pwcheck_method: saslauthd
#
pwcheck_method: shadow
mech_list: LOGIN PLAIN DIGEST-MD5 CRAM-MD5

Запускаю скрипт /usr/local/bin/saslauthd в котором указано, что проверка
паролей пользователей будет выполняться на основе файла /etc/shadow=

..
# Source our configuration file for these variables.
SOCKETDIR=/var/run/saslauthd
MECH=shadow
FLAGS=
..

Собираю sendmail-8.14.2 из исходников:

1. В файл /usr/src/sendmail-8.14.2/devtools/Site/site.config.m4 вставлены строки

dnl *** Milter *************************************************
APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER')
APPENDDEF(`conf_libmilter_ENVDEF', `-D_FFR_MILTER_ROOT_UNSAFE ')
dnl *** Regex SPAM *********************************************
APPENDDEF(`conf_sendmail_ENVDEF', `-DMAP_REGEX')
dnl *** SASL2 (SMTP Authentication) ****************************
APPENDDEF(`confENVDEF', `-DSASL=2')
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')
APPENDDEF(`confLIBDIRS', `-L/usr/local/lib/sasl2')
APPENDDEF(`confINCDIRS', `-I/usr/local/include/sasl')

2. Файл /usr/src/sendmail-8.14.2/cf/cf/sendmail.mc как в предыдущем примере.
3. Собираю и инсталлирую sendmail.
4. Проверка поддержки SASL2 почтовиком-

[root@maestro mail]# sendmail -d0.1 -bv root
Version 8.14.2
Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
NAMED_BIND NETINET NETUNIX NEWDB PIPELINING SASLv2 SCANF USERDB
XDEBUG

============ SYSTEM IDENTITY (after readcf) ============
(short domain name) $w = maestro
(canonical domain name) $j = my.domain.com
(subdomain name) $m = <null>
(node name) $k = maestro
========================================================

bsm... deliverable: mailer local, user bsm
[root@maestro mail]#

5. Перезапускаю sendmail

В файле /etc/mail/sendmail.cf имеем активированную SMTP авторизацию-
..
#CL root
C{TrustAuthMech}DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
C{E}root
..
# list of authentication mechanisms
O AuthMechanisms=DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
..
# default authentication information for outgoing connections
O DefaultAuthInfo=/etc/mail/default-auth-info

# SMTP AUTH flags
O AuthOptions=A
..
R$* $| $: $1
R$* $| $={TrustAuthMech} $# RELAY
R$* $| $* $: $1
..

В логе почтовика-

Если в Outlook Express клиента указано в учётной записи отправлять почту с
авторизацией, то появляется окно ввода пароля и попадаем в бесконечный цикл
ввода пароля пользователя.
..
Apr 24 13:20:17 maestro sendmail[23511]: NOQUEUE: connect from Vodzinskij_Nikolaj [192.168.0.106]
Apr 24 13:20:17 maestro sendmail[23511]: AUTH: available mech=PLAIN LOGIN DIGEST-MD5 CRAM-MD5, allowed mech=DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 220 Thu, ESMTP 24 Apr 2008 13:20:17 +0300
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: <-- EHLO vodzinskij
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 250-my.domain.com Hello Vodzinskij_Nikolaj [192.168.0.106], pleased to meet you
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 250-ENHANCEDSTATUSCODES
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 250-PIPELINING
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 250-8BITMIME
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 250-SIZE 48000000
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 250-DSN
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 250-ETRN
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 250-DELIVERBY
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 250 HELP
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: <-- AUTH LOGIN
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 334 VXNlcm5hbWU6
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 334 UGFzc3dvcmQ6
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 535 5.7.0 authentication failed
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: AUTH failure (LOGIN): no mechanism available (-4) SASL(-4): no mechanism available: checkpass failed
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: <-- QUIT
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: --- 221 2.0.0 my.domain.com closing connection
Apr 24 13:20:17 maestro sendmail[23511]: m3OAKHMX023511: Vodzinskij_Nikolaj [192.168.0.106] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
..

Если же в учётной записи отказаться от отравки почты с авторизацией, то почта уходит,-

..
Apr 24 13:21:22 maestro sendmail[23887]: NOQUEUE: connect from Vodzinskij_Nikolaj [192.168.0.106]
Apr 24 13:21:23 maestro sendmail[23887]: AUTH: available mech=PLAIN LOGIN DIGEST-MD5 CRAM-MD5, allowed mech=DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6A023887: --- 220 Thu, ESMTP 24 Apr 2008 13:21:23 +0300
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6A023887: <-- HELO vodzinskij
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6A023887: --- 250 my.domain.com Hello Vodzinskij_Nikolaj [192.168.0.106], pleased to meet you
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6A023887: <-- MAIL FROM: <vodzi@my.domain.com>
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6A023887: --- 250 2.1.0 <vodzi@my.domain.com>... Sender ok
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6A023887: <-- RCPT TO: <vodzi@my.domain.com>
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6A023887: --- 250 2.1.5 <vodzi@my.domain.com>... Recipient ok
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6A023887: <-- RSET
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6A023887: --- 250 2.0.0 Reset state
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6A023887: to=<vodzi@my.domain.com>, delay=00:00:00, pri=0, stat=RSET
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6A023887: from=<vodzi@my.domain.com>, size=0, class=0, nrcpts=1, proto=SMTP, daemon=MTA, relay=Vodzinskij_Nikolaj [192.168.0.106]
Apr 24 13:21:23 maestro drweb-smf[3625]: [m3OALM6A023887]: message from vodzi@my.domain.com is aborted
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6B023887: <-- RSET
Apr 24 13:21:23 maestro sendmail[23887]: m3OALM6B023887: --- 250 2.0.0 Reset state
Apr 24 13:21:26 maestro sendmail[23887]: m3OALM6C023887: <-- MAIL FROM: <vodzi@my.domain.com>
Apr 24 13:21:26 maestro sendmail[23887]: m3OALM6C023887: --- 250 2.1.0 <vodzi@my.domain.com>... Sender ok
Apr 24 13:21:26 maestro sendmail[23887]: m3OALM6C023887: <-- RCPT TO: <vodzi@my.domain.com>
Apr 24 13:21:26 maestro sendmail[23887]: m3OALM6C023887: --- 250 2.1.5 <vodzi@my.domain.com>... Recipient ok
Apr 24 13:21:26 maestro sendmail[23887]: m3OALM6C023887: <-- DATA
Apr 24 13:21:26 maestro sendmail[23887]: m3OALM6C023887: --- 354 Enter mail, end with "." on a line by itself
Apr 24 13:21:26 maestro sendmail[23887]: m3OALM6C023887: from=<vodzi@my.domain.com>, size=1237, class=0, nrcpts=1, msgid=<001f01c8a5f5$2cdcfd70$6a00a8c0@vodzinskij>, proto=SMTP, daemon=MTA, relay=Vodzinskij_Nikolaj [192.168.0.106]
Apr 24 13:21:27 maestro drweb-smf[3625]: [m3OALM6C023887]: scan: the message(drweb.tmp.qEvTdk) sent by vodzi@my.domain.com to vodzi@my.domain.com is passed
Apr 24 13:21:27 maestro drweb-smf[3625]: [m3OALM6C023887]: processing message from vodzi@my.domain.com is over
Apr 24 13:21:27 maestro sendmail[23887]: m3OALM6C023887: --- 250 2.0.0 m3OALM6C023887 Message accepted for delivery
Apr 24 13:21:27 maestro sendmail[23887]: m3OALM6D023887: <-- QUIT
Apr 24 13:21:27 maestro sendmail[23887]: m3OALM6D023887: --- 221 2.0.0 my.domain.com closing connection
Apr 24 13:21:27 maestro sendmail[23939]: m3OALM6C023887: to=<vodzi@my.domain.com>, ctladdr=<vodzi@my.domain.com> (1103/100), delay=00:00:01, xdelay=00:00:00, mailer=local, pri=31906, dsn=2.0.0, stat=Sent
Apr 24 13:21:27 maestro sendmail[23939]: m3OALM6C023887: done; delay=00:00:01, ntries=1

Как добиться отправки почты с авторизацией пользователя на основе файла паролей /etc/shadow?
Или придётся использовать авторизацию через базу sasldb?

Спасибо.
RSS-материал