The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от Денис email(??) on 25-Фев-09, 00:23 
Добрый день. Может кто-то знает. Буду рад любой помощи а то уже пол дня парюсь с SMTP ауторизацией. Ситуация такая: система Debian, установлен почтовый клиент POSTFIX а также MYSQL и SASL2. Настроены виртуальные пользователи. Письма без авторизации ходят нормально. А вот при попытке авторизации выдается ошибка. Вот код:

cat /etc/postfix/main.cf
append_dot_mydomain = no

smtpd_sasl_auth_enable = yes
smptd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,reject_unauth_destination

myhostname = client
mydestination = localhost.localdomain, localhost
mynetworks = 127.0.0.0/8, 192.168.7.109
inet_interfaces = all

virtual_mailbox_domains = client
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = mysql:/etc/postfix/sql/users_map.cf
local_recipient_maps = $virtual_mailbox_maps

----------------------------------------------------------------------------------
cat /etc/postfix/master.cf

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
#submission inet n       -       -       -       -       smtpd
#  -o smtpd_enforce_tls=yes
#   -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#628      inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       -       300     1       oqmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       -       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       -       -       -       smtp
        -o fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# See the Postfix UUCP_README file for configuration details.
#
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix  -       n       n       -       2       pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}

---------------------------------------------------------------------

cat /etc/postfix/sasl/smtpd.conf
log_level: 3
pwcheck_method: auxprop
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5
auxprop_plugin: sql
sql_engine: mysql
sql_hostname: 127.0.0.1
sql_database: mail
sql_user: postfix
sql_passwd: postfix
sql_select: SELECT password FROM users WHERE email = '%u'
#sql_select: SELECT password FROM users WHERE email = '%u@%r'
sql_usessl: no
----------------------------------------------------------------------------------

          MySQL: mail.users

    email | password   |maildir
    ---------------------------------
    kate  | kate       | dir/
-------------------------------------------------------------------------------------
Пытаюсь перевести пароль и логин в base64:

# perl -MMIME::Base64 -e 'print encode_base64("kate");'
a2F0ZQ==
------------------------------------------------------------------------------------
Делаю проверку:

client:/# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 client ESMTP Postfix
ehlo client
250-client
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
a2F0ZQ==
334 UGFzc3dvcmQ6
a2F0ZQ==
535 5.7.0 Error: authentication failed: authentication failure

----------------------------------------------------------------------------------------
mail.log:
Feb 24 23:14:58 client postfix/master[4524]: terminating on signal 15
Feb 24 23:14:58 client postfix/master[4857]: daemon started -- version 2.3.8, configuration /etc/postfix
Feb 24 23:15:04 client postfix/smtpd[4867]: connect from localhost[127.0.0.1]
Feb 24 23:15:30 client postfix/smtpd[4867]: warning: localhost[127.0.0.1]: SASL login authentication failed: authentication failure

---------------------------------------------------------------------------------------------

Поставил себе icedove. Думал может это с телнетом запара. Выставил в настройках проходить аутентификацию. Не проходит. Без аутентификации почта ходит.
Пожалуйста помогите. ПЛИЗ!!!!!!

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от LS (ok) on 25-Фев-09, 02:52 
конфиги даже не смотрел

>Пытаюсь перевести пароль и логин в base64:
>
># perl -MMIME::Base64 -e 'print encode_base64("kate");'
>a2F0ZQ==

кодировать надо "логин\0логин\0пароль". вот тебе скрипт:

---
#!/bin/bash

selfname=`/bin/basename ${0}`

if [ ${#} -ne 2 ]
then
echo "Usage: ${selfname} user password"
exit 1
fi

cmd="print encode_base64(\"${1}\0${1}\0${2}\");"
cmd="${cmd//@/\@}"

perl -MMIME::Base64 -e "${cmd}"
---

>[оверквотинг удален]
>250-ENHANCEDSTATUSCODES
>250-8BITMIME
>250 DSN
>auth login
>334 VXNlcm5hbWU6
>a2F0ZQ==
>334 UGFzc3dvcmQ6
>a2F0ZQ==
>535 5.7.0 Error: authentication failed: authentication failure
>

auth login - старое и древнее, осталось только для совместимости с некоторыми клиентами. надо делать auth plain

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от Michael (??) on 25-Фев-09, 09:20 

>кодировать надо "логин\0логин\0пароль".

а разве не "\0логин\0пароль"?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от LS (ok) on 25-Фев-09, 10:22 
>
>>кодировать надо "логин\0логин\0пароль".
>
>а разве не "\0логин\0пароль"?

ну попробуйте )

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от Michael (??) on 25-Фев-09, 10:45 

>ну попробуйте )

попробовал

235 2.7.0 Authentication successful

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от LS (ok) on 25-Фев-09, 11:24 
>
>>ну попробуйте )
>
>попробовал
>
>235 2.7.0 Authentication successful

sasl2? telnet-сессию можно в студию? а также Ваши варианты кодирования "\0логин\0пароль" и "логин\0логин\0пароль"

на самом деле интересно просто

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от Michael (??) on 25-Фев-09, 12:26 
>sasl2? telnet-сессию можно в студию? а также Ваши варианты кодирования "\0логин\0пароль" и
>"логин\0логин\0пароль"
>
>на самом деле интересно просто

perl -MMIME::Base64 -e 'print encode_base64("\0michael\0KemdydEeb");'
AG1pY2hhZWwAS2VtZHlkRWVi
perl -MMIME::Base64 -e 'print encode_base64("michael\0michael\0KemdydEeb");'
bWljaGFlbABtaWNoYWVsAEtlbWR5ZEVlYg==

telnet mx4.domain.ru 25
Trying ***.***.***.**...
Connected to mx4.domain.ru.
Escape character is '^]'.
220 mx4.domain.ru ESMTP Postfix
ehlo mx1.domain.ru
250-mx4.domain.ru
250-PIPELINING
250-SIZE 26214400
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN DIGEST-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth plain AG1pY2hhZWwAS2VtZHlkRWVi
235 2.7.0 Authentication successful

telnet mx4.domain.ru 25
Trying ***.***.***.***...
Connected to mx4.***.ru.
Escape character is '^]'.
220 mx4.domain.ru ESMTP Postfix
ehlo mx1.domain.ru
250-mx4.domain.ru
250-PIPELINING
250-SIZE 26214400
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN DIGEST-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth plain  bWljaGFlbABtaWNoYWVsAEtlbWR5ZEVlYg==
235 2.7.0 Authentication successful

хм.. работает и "\0логин\0пароль", и "логин\0логин\0пароль"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от LS (ok) on 25-Фев-09, 13:16 
>хм.. работает и "\0логин\0пароль", и "логин\0логин\0пароль"

имя постфикс в твоих настройках без доменной части принимает7

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от LS (ok) on 25-Фев-09, 13:19 

>хм.. работает и "\0логин\0пароль", и "логин\0логин\0пароль"

конфиг sasl для постфикса тоже в студию плз...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от LS (ok) on 25-Фев-09, 10:34 
>Поставил себе icedove. Думал может это с телнетом запара. Выставил в настройках
>проходить аутентификацию. Не проходит. Без аутентификации почта ходит.
>Пожалуйста помогите. ПЛИЗ!!!!!!

кстати не забывать - если postfix настроен на логин с доменным именем, то его при кодировке логина не пропускаем

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от LS (ok) on 25-Фев-09, 10:44 
мой smtpd.conf для сасла

----------
###
### Authentication Methods
###

#mech_list: plain login digest-md5 cram-md5
mech_list: plain login
#mech_list: plain

###
### Password Check Method
###

#pwcheck_method: saslauthd
pwcheck_method: auxprop
auxprop_plugin: sql

###
### Password Format
###
### plaintext   - passwords are stored in plaintext format - this is
###               default
### crypt       - passwords are stored as modular crypt hashes (md5 or
###               blowfish crypt)
### crypt_trad  - passwords are stored as des crypt hashes (2
###               character salt crypt)
###

password_format: crypt

###
### MySQL
###

sql_engine: mysql
sql_user: XXX
sql_passwd: XXX
sql_hostnames: 127.0.0.1:3000
sql_database: service
sql_select: select AccountPassword from SrvSmtpAccount where AccountName='%u@%r'
#sql_verbose: yes

###
### Logging Level
###
### 0 - don't log anything
### 1 - log unusual errors (default)
### 2 - log all authentication failures
### 3 - log non-fatal warnings
### 4 - more verbose than 3
### 5 - more verbose than 4
### 6 - traces of internal protocols
### 7 - traces of internal protocols, including passwords
###

log_level: 3


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от Денис email(??) on 25-Фев-09, 13:57 
Ребята, СПАСИБО вам огромное. А особенно тебе LS за твой конфиг, он то мне и помог. Все оказалось, как я и думал в конфиге а не в кодировании в base64.

Вот ошибка:
было: sql_hostnames: localhost
надо: sql_hostnames: 127.0.0.1:3306

т.е. надо так:
cat /etc/postfix/sasl/smtpd.conf

log_level: 3
pwcheck_method: auxprop
mech_list: PLAIN LOGIN
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1:3306
sql_database: mail
sql_user: postfix
sql_passwd: postfix
sql_select: SELECT password FROM users WHERE email = '%u'
sql_usessl: no

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от Денис email(??) on 25-Фев-09, 14:20 
Подскажите, пожалуйста. Вот с перекодировкой слова в base64 разобрался. А если использовать в логине формат имя@хост

т.е. если надо перекодировать слово test то:
# perl -MMIME::Base64 -e 'print encode_base64("test");'

А как перекодировать test@host?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от LS (ok) on 25-Фев-09, 14:23 
>Подскажите, пожалуйста. Вот с перекодировкой слова в base64 разобрался. А если использовать
>в логине формат имя@хост
>
>т.е. если надо перекодировать слово test то:
># perl -MMIME::Base64 -e 'print encode_base64("test");'
>
>А как перекодировать test@host?

ну наверно
perl -MMIME::Base64 -e 'print encode_base64("test@host");'
)))

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Postfix+MySQL+SASL2. Пожалуйста, подскажите )))"  
Сообщение от LS (ok) on 25-Фев-09, 14:21 
>[оверквотинг удален]
>pwcheck_method: auxprop
>mech_list: PLAIN LOGIN
>auxprop_plugin: sql
>sql_engine: mysql
>sql_hostnames: 127.0.0.1:3306
>sql_database: mail
>sql_user: postfix
>sql_passwd: postfix
>sql_select: SELECT password FROM users WHERE email = '%u'
>sql_usessl: no

ну рад что срослось. хотя тема почему пускают по "\0логин\0пароль" мне все равно интересна. я туту явно что-то не догоняю и мне хотелось бы разобраться.

удачи.

PS если честно. то вряд ли мой конфиг помог - в нем нет никаких отличий от твоего первоначального, за исключением указания стандартного порта мускула. а вот все другое помочь могло. ну - все равно рад что срослось )

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру