Спецификация системы: Ubuntu 18.04, Postfix 3.3.0, dovecot 2.2.33.2
Я последовал за это руководство по vimbadmin. Но безуспешно. Dovecot не обнаруживает почтовый ящик.
Я запустил этот код:
postmap -q fandi@mysite.com mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf
я получил:
maildir:/srv/vmail/icodeformoney.com/fandi/mail:LAYOUT=fs
Но когда я бегу:
dovecot user fandi@icodeformoney.com
Я получил:
field value
userdb lookup: user fandi@icodeformoney.com doesn't exist
Я уже получил virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf
в /etc/postfix/main.cf
Содержание /etc/postfix/mysql/virtual_mailbox_maps.cf
:
user = vimbadmin
password = mypass
hosts = 127.0.0.1
dbname = vimbadmin
table = mailbox
select_field = maildir
where_field = username
Пожалуйста, помогите мне отладить / решить эту проблему.
Редактировать 1
Мой dovecot-sql.conf.ext
driver = mysql
connect = host=localhost user=vimbadmin password=mypass dbname=vimbadmin
default_pass_scheme = SHA512-CRYPT
password_query = SELECT username as user, password as password, \
homedir AS userdb_home, maildir AS userdb_mail, \
concat('*:bytes=', quota) as userdb_quota_rule, uid AS userdb_uid, gid AS userdb_gid \
FROM mailbox \
WHERE username = '%Lu' AND active = '1' \
AND ( access_restriction = 'ALL' OR LOCATE( '%Us', access_restriction ) > 0 )
user_query = SELECT homedir AS home, maildir AS mail, \
concat('*:bytes=', quota) as quota_rule, uid, gid \
FROM mailbox WHERE username = '%u'
Для включения переименуйте dovecot-sql.conf.ext в dovecot-sql.conf.
А как насчет dovecot.conf? Будет ли он там включен?
какую версию postfix и dovecot вы используете? Как выглядит конфигурация dovecot sql? -> Конфигурация Postfix не отвечает за dovecot.
Допустимая конфигурация dovecot (конфигурация внимания, sql-запрос, используемый для postfixadmin, а не для vbadmin) должна выглядеть так:
/etc/dovecot/dovecot-sql.conf
driver = mysql
connect = host=<dbhost> dbname=<maildb> user=<maildb> password=<password>
default_pass_scheme = MD5-CRYPT
user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n' as mail, 303 AS uid, 303 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
# Get the password
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 303 as userdb_uid, 303 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
И должны быть реализованы:
passdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
userdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
По включенному файлу: /etc/dovecot/conf.d/auth-sql.conf или в /etc/dovecot/dovecot.conf
На основе системы Opensuse 15.1 и dovecot 2.3.3
Я отладил проблему с dovecot -n
Как-то не смог найти в конфиге:
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
userdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
Вместо этого я нашел:
passdb {
driver=pam
}
Затем вместо того, чтобы заходить в каждый файл туда и обратно, я сделал это (я был в моем домашнем каталоге):
sudo cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.old
doveconf -n > dovecot.conf
sudo cp doveconf.conf /etc/dovecot/dovecot.conf
И исправили passdb и userdb.
@Fandi Susanto,
это допустимый способ включения conf.d / *.
Но, как правило, нужные файлы следует переименовать из * .conf.ext в * .conf. Они представлены в качестве примера, но должны быть изменены в соответствии с вашими требованиями. Думаю, чтобы избежать злоумышленников или проблем с безопасностью, файлы по умолчанию не включаются.