Почтовый сервер Ubuntu SQL Ошибка

346
Cyberpunk7711

Я пытался настроить сервер, но он не работает. Я получил эту ошибку:

23:59:43 mail dovecot: auth-worker (14604): Ошибка: sql (test@mydomain.eu, ip): запрос пароля не выполнен; У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с '\ ROM users WHERE userid =' test@mydomain.eu 'и mysql_pass = password (' psw 'в строке 1.

Вот мой конфиг:

driver = mysql connect = "host = 127.0.0.1 dbname = dbname user = userdb password = psw" default_pass_scheme = SHA512-CRYPT
password_query = SELECT NULL AS пароль, 'Y' в качестве nopassword, идентификатор пользователя AS \ FROM users $
user_query = SELECT username КАК пользователь, домен, пароль ОТ учетных записей, ГДЕ имя пользователя = '% n $
iterate_query = ВЫБРАТЬ имя пользователя, домен ОТ учетных записей, где sendonly = false;

Мои настройки: я установил mariadb, dovecot, postfix, postfixadmin.

Когда я создаю учетную запись электронной почты с postfixadmin и использую ту же базу данных с dovecot, я получаю сообщение об ошибке. Что я делаю неправильно?

Я не очень опытный. Если вам нужна дополнительная информация, пожалуйста, спросите.

0

1 ответ на вопрос

0
JakeGould

Ошибка у вас заключается в следующем; смелый акцент мой

23:59:43 mail dovecot: auth-worker (14604): Ошибка: sql (test@mydomain.eu, ip): запрос пароля не выполнен; У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с '\ ROM users WHERE userid =' test@mydomain.eu ' и mysql_pass = password (' psw 'в строке 1.

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

Выберите NULL AS пароль, 'Y' как nopassword, ИД пользователя AS user \ FROM users $

Похоже, \это проблема. Но также некоторые из запросов, как ни странно, имеют $в конце такие, как эти:

SELECT NULL AS password, 'Y' as nopassword, userid AS user \ FROM users $ SELECT username AS user, domain, password FROM accounts WHERE username = '%n$  

Похоже, вы скопировали и вставили эти запросы из некоторого вывода командной строки, который урезал запросы. Решение? Получите актуальные полные запросы и разместите их в конфиге.

Кроме того, о чем это?

driver = mysql connect = "host=127.0.0.1 dbname=dbname user=userdb password=psw" 

Почему те два driverи connectзначение в той же строке?

В общем, общие странные особенности формата, которые вы видите, делают конфигурацию похожей на беспорядок. Это не простой способ решить эту проблему, но в целом я бы рекомендовал правильно переписать конфигурацию с полными запросами, кавычками вокруг значений (если конфигурация работает таким образом) и правильно установить каждое значение в каждой строке.

Похожие вопросы