Добрый день. Может кто-то знает. Буду рад любой помощи а то уже пол дня парюсь с SMTP ауторизацией. Ситуация такая: система Debian, установлен почтовый клиент POSTFIX а также MYSQL и SASL2. Настроены виртуальные пользователи. Письма без авторизации ходят нормально. А вот при попытке авторизации выдается ошибка. Вот код:cat /etc/postfix/main.cf
append_dot_mydomain = nosmtpd_sasl_auth_enable = yes
smptd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,reject_unauth_destinationmyhostname = client
mydestination = localhost.localdomain, localhost
mynetworks = 127.0.0.0/8, 192.168.7.109
inet_interfaces = allvirtual_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. Думал может это с телнетом запара. Выставил в настройках проходить аутентификацию. Не проходит. Без аутентификации почта ходит.
Пожалуйста помогите. ПЛИЗ!!!!!!
конфиги даже не смотрел>Пытаюсь перевести пароль и логин в base64:
>
># perl -MMIME::Base64 -e 'print encode_base64("kate");'
>a2F0ZQ==кодировать надо "логин\0логин\0пароль". вот тебе скрипт:
---
#!/bin/bashselfname=`/bin/basename ${0}`
if [ ${#} -ne 2 ]
then
echo "Usage: ${selfname} user password"
exit 1
ficmd="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
>кодировать надо "логин\0логин\0пароль".а разве не "\0логин\0пароль"?
>
>>кодировать надо "логин\0логин\0пароль".
>
>а разве не "\0логин\0пароль"?ну попробуйте )
>ну попробуйте )попробовал
235 2.7.0 Authentication successful
>
>>ну попробуйте )
>
>попробовал
>
>235 2.7.0 Authentication successfulsasl2? telnet-сессию можно в студию? а также Ваши варианты кодирования "\0логин\0пароль" и "логин\0логин\0пароль"
на самом деле интересно просто
>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 successfultelnet 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пароль"
>хм.. работает и "\0логин\0пароль", и "логин\0логин\0пароль"имя постфикс в твоих настройках без доменной части принимает7
>хм.. работает и "\0логин\0пароль", и "логин\0логин\0пароль"конфиг sasl для постфикса тоже в студию плз...
>Поставил себе icedove. Думал может это с телнетом запара. Выставил в настройках
>проходить аутентификацию. Не проходит. Без аутентификации почта ходит.
>Пожалуйста помогите. ПЛИЗ!!!!!!кстати не забывать - если postfix настроен на логин с доменным именем, то его при кодировке логина не пропускаем
мой 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
Ребята, СПАСИБО вам огромное. А особенно тебе LS за твой конфиг, он то мне и помог. Все оказалось, как я и думал в конфиге а не в кодировании в base64.Вот ошибка:
было: sql_hostnames: localhost
надо: sql_hostnames: 127.0.0.1:3306т.е. надо так:
cat /etc/postfix/sasl/smtpd.conflog_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
Подскажите, пожалуйста. Вот с перекодировкой слова в base64 разобрался. А если использовать в логине формат имя@хостт.е. если надо перекодировать слово test то:
# perl -MMIME::Base64 -e 'print encode_base64("test");'А как перекодировать test@host?
>Подскажите, пожалуйста. Вот с перекодировкой слова в base64 разобрался. А если использовать
>в логине формат имя@хост
>
>т.е. если надо перекодировать слово test то:
># perl -MMIME::Base64 -e 'print encode_base64("test");'
>
>А как перекодировать test@host?ну наверно
perl -MMIME::Base64 -e 'print encode_base64("test@host");'
)))
>[оверквотинг удален]
>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 если честно. то вряд ли мой конфиг помог - в нем нет никаких отличий от твоего первоначального, за исключением указания стандартного порта мускула. а вот все другое помочь могло. ну - все равно рад что срослось )