Назад | Перейти на главную страницу

courier-authlib: неправильное имя пользователя вводит поисковый запрос

Я пытаюсь настроить аутентификацию smtp с помощью курьера, mysql на postfix.

Мои пароли в моей базе данных зашифрованы.

Когда я пытаюсь подключиться, я получаю ошибку аутентификации

r2d2 ~ # telnet mail.server.com 25
Trying 45.33.27.121...
Connected to mail.server.com.
Escape character is '^]'.
220 r2d2.server.com ESMTP Postfix
HELO server.com
250 r2d2.server.com
AUTH LOGIN
334 VXNrcm5hbWU6
dXNlci5jb20=
334 UGFyc3dvcmQ6
Qg=!
535 5.7.8 Error: authentication failed: authentication failure

когда я смотрю свои журналы, я вижу неправильное имя пользователя, пытающееся аутентифицироваться

r2d2 postfix/smtpd[25275]: sql plugin Parse the username user.com

имя пользователя, входящее в базу данных, должно быть

user@server.com

Это не проблема кодировки:

# perl -MMIME::Base64 -e 'print encode_base64("user@server.com");'
dXNlci5jb20=

по какой-то причине он удаляет виртуальный домен

файл конфигурации / etc / courier / authlib / authmysqlrc:

MYSQL_SERVER            localhost
MYSQL_USERNAME          myuser
MYSQL_PASSWORD          mypass
MYSQL_PORT              3306
MYSQL_OPT               0
MYSQL_DATABASE          mail
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
MYSQL_UID_FIELD         5000
MYSQL_GID_FIELD         5000
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        '/var/vmail/'
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     maildir
MYSQL_WHERE_CLAUSE active='1'

Я тестировал SQL, оператор работает, если его применить к mysql cli вручную. Журнал запросов mysql показывает, что используется неверное имя пользователя. Ошибка в логах точная.

Почему-то% u получает неверные данные.

smtp.conf

pwcheck_method: authdaemond
mech_list: LOGIN PLAIN CRAM-MD5 DIGEST-MD5
sql_select: dummy
authdaemond_path: /var/lib/courier/authdaemon/socket
log_level: 2
sasl_pwcheck_method: saslauthd
sasl_auxprop_plugin: mysql
password_format: plain
sql_engine: mysql
sql_hostnames: localhost
sql_database: db
sql_user: use
sql_passwd: pass
sql_select: SELECT password FROM mailbox WHERE username='%u' AND active='1'

Как мне заставить курьера не отбрасывать входящий виртуальный домен от имени пользователя для запроса в mysql?

ОБНОВЛЕНИЕ от IRC:

<SkunkyFone> tunage: i can't find it.  i know, long long ago, there were separate options for "username" and "domain" in either postfix or courier authlib, and there was an option to make it smoosh things together or drop the domain entirely, and getting them out of sync would do Bad Things.. but i can't find where in my config that is right now.
[07:30:38] <tunage> SkunkyFone: I have seen the exact setting you are talking about, probably about the same time you last looked at it...   o.0

Я думаю, вы можете изменить свой оператор выбора sql, чтобы он был

sql_select: SELECT password FROM mailbox WHERE username='%u@%r' AND active ='1'

так как это следует выбрать и пользователя, и домен ..