URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 47584
[ Назад ]

Исходное сообщение
"Postfix и SASL - я фигею"

Отправлено nece , 26-Авг-04 00:54 
Во время отправки почты The BAT когда запрашивается пароль,
если пароль не указать то появляется сообщение:

"Сервер сообщает об ошибке 8BITMIME"

И письмо естественно не отправляется.
Но если указать не доставерные данные, вместо пароля 123 указать 1234
или не правильный логин (которого просто нет) - письмо отправляется
а в логах

Aug 26 00:07:59 gw postfix/smtpd[21537]: warning: SASL authentication failure: Password verification failed
Aug 26 00:07:59 gw postfix/smtpd[21537]: warning: lx.domain.ru[192.168.100.4]: SASL PLAIN authentication failed

При этом в логах mysql ни чего нет, да и в логах postfix-a
кроме выше описанного тоже ни чего нету.

     I. Как собирал

_____________________________________________________________________

CyrusSASL

1) Собирался

./configure --prefix=/usr/local/sasl2 --with-openssl=/usr/local/ssl --with-mysql=/usr/include/mysql --with-bdb-libdir=/usr/local/BerkeleyDB.4.1/lib --with-bdb-incdir=/usr/local/BerkeleyDB.4.1/include --with-plugindir=/usr/local/sasl2/lib/sasl2 --with-gnu-ld --with-pwcheck --enable-sql --enable-login --enable-plain --enable-cram --disable-otp


2) Ссылки

а) /usr/lib/sasl2 -> /usr/local/sasl2/lib/sasl2
b) /usr/local/lib/sasl2 -> /usr/lib/sasl2


3) Связи

echo /usr/lib/sasl2 > /etc/ld.so.conf
#ldconfig

________________________________________________________________________


POSTFIX

1) Собирался

make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql/ -DUSE_SASL_AUTH -I/usr/local/sasl2/include/sasl' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/local/sasl2/lib -lsasl2'

________________________________________________________________________

MySQL

1) Ставилась
rpm с www.mysql.com

2) Логирование
Запускается: safe_mysqld --user=mysql --log=/var/log/mysql.log
________________________________________________________________________

      II. КОНФИГИ


1) SASL (/usr/lib/sasl2)

pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
mech_list: plain login

sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: postfix
sql_passwd: ...
sql_database: mail
sql_verbose: yes
sql_select: SELECT password FROM aliases WHERE alias = '%u@%r' and enabled = '1'

2) Postfix (/etc/postfix/main.cf)

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
html_directory = /etc/postfix/html_dir
manpage_directory = /usr/local/man
sample_directory = /etc/postfix
readme_directory = /etc/postfix/readme_dir
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
smtpd_banner = hi
mailq_path = /usr/bin/mailq
setgid_group = postdrop
mail_owner = postfix
default_privs = nobody
myhostname = xxx.ru
mydomain = xxx.ru
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
mynetworks_style = host
mynetworks = 127.0.0.0/8, 192.168.100.0/24

transport_maps = mysql:/etc/postfix/transport.cf
alias_maps = mysql:/etc/postfix/aliases.cf
#alias_database = mysql:/etc/postfix/aliases.cf

relay_domains = $transport_maps

broken_sasl_auth_clients = yes
enable_sasl_authentication = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtpd_sasl_application_name = smtpd
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_relay_domains
smtpd_etrn_restrictions = permit_mynetworks, reject
smtpd_recipient_limit = 128
smtpd_timeout = 180
message_size_limit = 5242880
bounce_size_limit = 65536
header_size_limit = 32768

virtual_maps = mysql:/etc/postfix/remote_aliases.cf
virtual_mailbox_base = /
virtual_mailbox_maps = mysql:/etc/postfix/aliases.cf
virtual_mailbox_limit = 5242880
virtual_uid_maps = mysql:/etc/postfix/ids.cf
virtual_gid_maps = mysql:/etc/postfix/gids.cf
disable_vrfy_command = yes
______________________________________________________________________

3) MySQL
Создание базы mail и таблиц

4) telnet 192.168.100.1
....
....
ehlo ....ru
250-.....ru
250-PIPELINING
250-SIZE 5242880
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME

______________________________________________________________________

    III. ЗАПУСК

1) 1-ым MySQL
/usr/sbin/safe_mysqld --user=mysql --log=/var/log/mysql.log


2) 2-ым Postfix
#postfix start
_______________________________________________________________________


После проделанного всего выше, почта отправляется и приходит.
Но автаризация не проходит полностью (как описывалось выше),
хотя если делать выборку пароля ручками из базы
SELECT password FROM aliases WHERE alias = 'p@dm.ru' and enabled = '1'
то пароль выбирается.
И это событие заносится в лог но не /var/log/mysql.log а в
/root/.mysql_history


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


Содержание

Сообщения в этом обсуждении
"Postfix и SASL - я фигею"
Отправлено nece , 26-Авг-04 00:56 
ЗАБЫЛ ВОТ ЕЩЁ ЧТО УКАЗАТЬ

# postconf -m
static
sdbm
cidr
pcre
nis
regexp
environ
mysql
proxy
btree
unix
hash


"Postfix и SASL - я фигею"
Отправлено nece , 27-Авг-04 01:28 
Я разабрался почему не писало в mysql.log - был не правильный владелец. Теперь всё пишет.

I. __Вот ПРИ ПРАВИЛЬНОЙ авторизации:___

1)LOG Postfix-a
warning и error - пустые

2)LOG MySQL
#cat mysql.log

040827 0:31:59 34 Connect postfix@localhost on mail
34 Quit
35 Connect postfix@localhost on mail
35 Query BEGIN
35 Query SELECT password FROM users WHERE email = 'kr@lx.ru' and enabled = '1'
35 Query SELECT password FROM users WHERE email = 'kr@lx.ru' and enabled = '1'
35 Query COMMIT
36 Connect postfix@localhost on mail
36 Quit
35 Quit
37 Connect postfix@localhost on mail
37 Quit
38 Connect postfix@localhost on mail
38 Query select transport from transport where domain = '*'
38 Query select transport from transport where domain = '*'
39 Connect postfix@localhost on mail
39 Query select rcpt from remote_aliases where alias = 'lx.ru'
40 Connect postfix@localhost on mail
40 Query select maildir from users where email = 'lx.ru'
38 Query select transport from transport where domain = 'kr@lx.ru'
38 Query select transport from transport where domain = 'lx.ru'
39 Query select rcpt from remote_aliases where alias = 'inbox.ru'
40 Query select maildir from users where email = 'inbox.ru'
38 Query select transport from transport where domain = 'inbox.ru'
38 Query select transport from transport where domain = 'ru'
38 Query select transport from transport where domain = 'gladko@inbox.ru'
38 Query select transport from transport where domain = 'inbox.ru'
38 Query select transport from transport where domain = '.ru'
41 Connect postfix@localhost on mail
41 Query select rcpt from remote_aliases where alias = 'gladko@inbox.ru'
41 Query select rcpt from remote_aliases where alias = '@inbox.ru'
42 Connect postfix@localhost on mail
42 Query select rcpt from remote_aliases where alias = 'gladko@inbox.ru'
42 Query select rcpt from remote_aliases where alias = '@inbox.ru'
040827 0:32:00 41 Query select rcpt from remote_aliases where alias = 'gladko@inbox.ru'
41 Query select rcpt from remote_aliases where alias = '@inbox.ru'
42 Query select rcpt from remote_aliases where alias = 'gladko@inbox.ru'
42 Query select rcpt from remote_aliases where alias = '@inbox.ru'


II. __При НЕ ПРАВИЛЬНОЙ  авторизации (не существующий логин и пароль)___

Что заметил странного.
Есть в The BAT акаунт скажем kr@lx.ru

Обратный емаил такойже.

Логин: kr@lx.ru

Пароль: пароль

Но когда я в настройках ящика изменил логин на pupkin и поставил галочку в SMTP авторизация как на pop/imap, то при авторизации вначале идёт попытка авторизоваться как pupkin а потом от кудато происходит авторизация как kr. Это видно в логах.


1)LOG Postfix

A)errors - пусто

B)info :

Aug 27 00:47:01 gw postfix/smtpd[5056]: connect from stl.lx.ru[192.168.100.4]

Aug 27 00:47:04 gw postfix/smtpd[5056]: 1A951BF471: client=stl.lx.ru[192.168.100.4]

Aug 27 00:47:04 gw postfix/smtpd[5056]: 86879BF471: client=stl.lx.ru[192.168.100.4]

Aug 27 00:47:04 gw postfix/cleanup[5064]: 86879BF471: message-id=<561802436.20040827004806@lx.ru>

Aug 27 00:47:04 gw postfix/qmgr[4753]: 86879BF471: from=<kr@lx.ru>, size=624, nrcpt=1 (queue active)

Aug 27 00:47:05 gw postfix/smtp[5066]: 86879BF471: to=<gladko@inbox.ru>, relay=mxs.mail.ru[194.67.23.20], delay=1, status=sent (250 OK id=1C0RAF-000AJq-00)

Aug 27 00:47:05 gw postfix/qmgr[4753]: 86879BF471: removed

Aug 27 00:47:06 gw postfix/smtpd[5056]: disconnect from stl.lx.ru[192.168.100.4]


C) warnings

Aug 27 00:47:04 gw postfix/smtpd[5056]: warning: SASL authentication failure: Password verification failed

Aug 27 00:47:04 gw postfix/smtpd[5056]: warning: stl.lx.ru[192.168.100.4]: SASL PLAIN authentication failed


2) mysql.log

040827 0:45:02 87 Connect postfix@localhost on mail
87 Quit
88 Connect postfix@localhost on mail
88 Query BEGIN
88 Query SELECT password FROM users WHERE email = 'pupkin@gw.lx.ru' and enabled = '1'
88 Query SELECT password FROM users WHERE email = 'pupkin@gw.lx.ru' and enabled = '1'
88 Query COMMIT
89 Connect postfix@localhost on mail
89 Quit
88 Quit
90 Connect postfix@localhost on mail
90 Query select rcpt from remote_aliases where alias = 'lx.ru'
91 Connect postfix@localhost on mail
91 Query select maildir from users where email = 'lx.ru'
92 Connect postfix@localhost on mail
92 Query select transport from transport where domain = 'kr@lx.ru'
92 Query select transport from transport where domain = 'lx.ru'
90 Query select rcpt from remote_aliases where alias = 'inbox.ru'
91 Query select maildir from users where email = 'inbox.ru'
92 Query select transport from transport where domain = 'inbox.ru'
92 Query select transport from transport where domain = 'ru'
92 Query select transport from transport where domain = 'gladko@inbox.ru'
92 Query select transport from transport where domain = 'inbox.ru'
92 Query select transport from transport where domain = '.ru'
93 Connect postfix@localhost on mail
93 Query select rcpt from remote_aliases where alias = 'gladko@inbox.ru'
93 Query select rcpt from remote_aliases where alias = '@inbox.ru'
94 Connect postfix@localhost on mail
94 Query select rcpt from remote_aliases where alias = 'gladko@inbox.ru'
94 Query select rcpt from remote_aliases where alias = '@inbox.ru'
93 Query select rcpt from remote_aliases where alias = 'gladko@inbox.ru'
93 Query select rcpt from remote_aliases where alias = '@inbox.ru'
94 Query select rcpt from remote_aliases where alias = 'gladko@inbox.ru'
94 Query select rcpt from remote_aliases where alias = '@inbox.ru'


III.  /etc/lib/sasl2/smtpd.conf

pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
mech_list: plain login

sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: postfix
sql_passwd: xxxxx
sql_database: mail
sql_verbose: yes
sql_select: SELECT password FROM users WHERE email = '%u@%r' and enabled = '1'

IV. /etc/postfix/main.cf

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
html_directory = /etc/postfix/html_dir
manpage_directory = /usr/local/man
sample_directory = /etc/postfix
readme_directory = /etc/postfix/readme_dir
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
smtpd_banner = hi
mailq_path = /usr/bin/mailq
setgid_group = postdrop
mail_owner = postfix
default_privs = nobody
myhostname = name.domain.ru
mydomain = domain.ru
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
mynetworks_style = host
mynetworks = xx.xx.x.xxx, 127.0.0.0/8, 192.168.100.0/24

relay_domains = $transport_maps

broken_sasl_auth_clients = yes
enable_sasl_authentication = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
#smtpd_sasl_local_domain =
smtpd_sasl_application_name = smtpd
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_relay_domains
smtpd_etrn_restrictions = permit_mynetworks, reject
smtpd_recipient_limit = 128
smtpd_timeout = 180
message_size_limit = 5242880
bounce_size_limit = 65536
header_size_limit = 32768

transport_maps = mysql:/etc/postfix/transport.cf
alias_maps = mysql:/etc/postfix/users.cf
#alias_database = mysql:/etc/postfix/users.cf

virtual_maps = mysql:/etc/postfix/remote_aliases.cf
virtual_mailbox_base = /
virtual_mailbox_maps = mysql:/etc/postfix/users.cf
virtual_mailbox_limit = 5242880
virtual_uid_maps = mysql:/etc/postfix/uids.cf
virtual_gid_maps = mysql:/etc/postfix/gids.cf
disable_vrfy_command = yes


"Postfix и SASL - я фигею"
Отправлено nece , 27-Авг-04 01:42 
Ещё вот:

telnet 192.168.100.1
ehlo ....ru
250-.....ru
250-PIPELINING
250-SIZE 5242880
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME


"Postfix и SASL - я фигею"
Отправлено kirsa , 27-Авг-04 17:51 
>mynetworks = 127.0.0.0/8, 192.168.100.0/24
Вроде как <192.168.100.0/24> убрать надо.