LINUX.ORG.RU
ФорумAdmin

Не коннектится dovecot к базе данных

 , , ,


0

1

Настраиваю почтовик в связке postfix+dovecot+mysql, много проблем, с некоторыми разобрались в этом треде (большое спасибо gh0stwizard.

Теперь же у меня возникла беда с dovecot.

После попытки отправки тестового письма mailx admin@amet13.name, смотрю логи /var/log/mail.log:

Oct  3 18:25:20 debian postfix/pickup[25958]: 475C33E09E6: uid=0 from=<root>
Oct  3 18:25:20 debian postfix/cleanup[26248]: 475C33E09E6: message-id=<20131003152520.475C33E09E6@amet13.name>
Oct  3 18:25:20 debian postfix/qmgr[24951]: 475C33E09E6: from=<root@name>, size=406, nrcpt=1 (queue active)
Oct  3 18:25:20 debian dovecot: auth: passwd(admin@amet13.name): unknown user
Oct  3 18:25:20 debian dovecot: auth-worker(26255): mysql(127.0.0.1): Connected to database mail
Oct  3 18:25:20 debian dovecot: auth-worker(26255): Warning: mysql: Query failed, retrying: Unknown column 'home' in 'field list'
Oct  3 18:25:20 debian dovecot: auth-worker(26255): Error: sql(admin@amet13.name): User query failed: Unknown column 'home' in 'field list' (using built-in default user_query: SELECT home, uid, gid FROM users WHERE username = '%n' AND domain = '%d')
Oct  3 18:25:20 debian dovecot: lda: Error: user admin@amet13.name: Auth USER lookup failed
Oct  3 18:25:20 debian dovecot: lda: Fatal: Internal error occurred. Refer to server log for more information.
Oct  3 18:25:20 debian postfix/pipe[26253]: 475C33E09E6: to=<admin@amet13.name>, relay=dovecot, delay=0.39, delays=0.19/0.01/0/0.19, dsn=4.3.0, status=deferred (temporary failure)

Не понимаю что значит это (я так понимаю ошибка именно в этом):

Oct  3 18:25:20 debian dovecot: auth-worker(26255): Error: sql(admin@amet13.name): User query failed: Unknown column 'home' in 'field list' (using built-in default user_query: SELECT home, uid, gid FROM users WHERE username = '%n' AND domain = '%d')

Создавал базы так:

mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'ваш_пароль';

mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost,localdomain' IDENTIFIED BY 'ваш_пароль';

mysql> FLUSH PRIVILEGES;

Создадим таблицу, в которой будут храниться все почтовые домены:
mysql> CREATE TABLE domains ( domain varchar(50) NOT NULL, PRIMARY KEY (domain) );

Таблица пересылки почты:
mysql> CREATE TABLE forwardings ( source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );

Таблица хранения почтовых аккаунтов:
mysql> CREATE TABLE users ( email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );

Таблица транспортировки:
mysql> CREATE TABLE transport ( domain varchar(128) NOT NULL default ", transport varchar(128) NOT NULL default ", UNIQUE KEY domain (domain) );

Запрос в /etc/dovecot/dovecot-sql.conf.ext:

password_query = SELECT email AS user, password FROM users WHERE email = '%u';

Куда копать, может еще какие логи смотреть? Может что-то переделать?

★★★★★

не используй реляционные бд в почте

uspen ★★★★★ ()

Очевидно же что у тебя где-то есть такое:

user_query = SELECT home, uid, gid FROM users WHERE username = '%n' AND domain = '%d';
Есть 2 варианта решения этой проблемы:
1.) Поправить запрос
2.) Переделать таблицу в бд

menzoberronzan ()
Ответ на: комментарий от menzoberronzan

оу, судя по

using built-in default user_query: SELECT home, uid, gid FROM users WHERE username = '%n' AND domain = '%d'

user_query вообще нету, поэтому используется по умолчанию

SELECT home, uid, gid FROM users WHERE username = '%n' AND domain = '%d'

menzoberronzan ()

Сделал все заново, уже по другому мануалу.

После настройки проверяю: mailx admin@amet13.name

tail /var/log/mail.log
Oct  4 01:07:55 debian postfix/pickup[17068]: C3F133E097B: uid=0 from=<root>
Oct  4 01:07:55 debian postfix/cleanup[17085]: C3F133E097B: message-id=<20131003220755.C3F133E097B@amet13.name>
Oct  4 01:07:55 debian postfix/qmgr[17069]: C3F133E097B: from=<root@amet13.name>, size=412, nrcpt=1 (queue active)
Oct  4 01:07:55 debian dovecot: lmtp(17090): Fatal: Error reading configuration: Invalid settings: postmaster_address setting not given
Oct  4 01:07:56 debian postfix/lmtp[17089]: C3F133E097B: to=<admin@amet13.name>, relay=amet13.name[private/dovecot-lmtp], delay=0.22, delays=0.18/0.02/0.01/0, dsn=4.4.2, status=deferred (lost connection with amet13.name[private/dovecot-lmtp] while receiving the initial server greeting)
Amet13 ★★★★★ ()
Ответ на: комментарий от blackst0ne
# vim /etc/dovecot/conf.d/15-lda.conf
protocol lda {
	postmaster_address = admin@amet13.name
}

Рестартанул довекот и опять отправляю сообщение.

Oct  4 01:18:57 debian postfix/pickup[17280]: 7A6C23E0992: uid=0 from=<root>
Oct  4 01:18:57 debian postfix/cleanup[17992]: 7A6C23E0992: message-id=<20131003221857.7A6C23E0992@amet13.name>
Oct  4 01:18:57 debian postfix/qmgr[17281]: 7A6C23E0992: from=<root@amet13.name>, size=422, nrcpt=1 (queue active)
Oct  4 01:18:57 debian postfix/error[17996]: 7A6C23E0992: to=<admin@amet13.name>, relay=none, delay=0.33, delays=0.23/0.02/0/0.08, dsn=4.4.2, status=deferred (delivery temporarily suspended: lost connection with amet13.name[private/dovecot-lmtp] while receiving the initial server greeting)

Amet13 ★★★★★ ()
Ответ на: комментарий от blackst0ne

И кстати:

Error reading configuration: Invalid settings: postmaster_address setting not given
Не пропала, снова появилась.

Amet13 ★★★★★ ()

ТС если не осилишь в течении двух суток. стучись по мылу в профиле. помогу почтовку осилить =)

MikeDM ★★★★★ ()

Я честно говоря запарился с эти довекотом. Может кто подскажешь самую удобную связку и поделится ссылками на годные мануалы.

Буду очень благодарен.

Amet13 ★★★★★ ()
Ответ на: комментарий от Amet13

у меня отлично работает несколько почтовых серверов в связке dovecot + postfix + mysql

MikeDM ★★★★★ ()
23 марта 2015 г.

Куда копать, может еще какие логи смотреть? Может что-то переделать?

1) в файл /etc/dovecot/dovecot-sql.conf.ext нужно добавить: user_query = SELECT email as user, SUBSTRING_INDEX(email, '@', 1) FROM users WHERE email='%u'; 2) создать директорию /home/vmail/example.com/info/ Примечание: info@example.com и password нужно сделать INSERT в базу данных в таблицу users

Хотя директория должна создаваться автоматом. Не создается. Почему нет пока не знаю. 3) сделать доступ к /var - chmod 0777 /var

проверяем: mailx info@example.com enter cntr^d enter

в /var/log/dovecot.log - ошибки должны исчезнуть

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.