Sounds like you have a problem in /etc/dovecot/dovecot-sql.conf
Did you ever post it? For virtual users, mine is:
driver = mysql
# Currently supported schemes include PLAIN, PLAIN-MD5, DIGEST-MD5, and CRYPT.
default_pass_scheme = PLAIN
# Database options
connect = host=/var/lib/mysql/mysql.sock dbname=sys_mail user=sys_mail
password=hunter2
password_query = SELECT LOWER(CONCAT_WS('@',`User`,`Domain`)) AS `user` \
, IF(`Password_Crypt` IS NOT NULL,
CONCAT('{crypt}',`Password_Crypt`),`Password_Cleartext`) AS `password` \
FROM `Virtual_User` \
WHERE LOWER(`User`) = LOWER('%n') \
AND LOWER(`Domain`) = LOWER('%d') \
AND `Retrieve_Mail` = 'Yes'
# vmail = 399
user_query = SELECT
CONCAT_WS('/','/home/vmail/domains',LOWER(`Domain`),LOWER(`User`)) AS `home` \
, 'maildir:~/Maildir' AS `mail` \
, 399 AS `uid` \
, 399 AS `gid` \
FROM `Virtual_User` \
WHERE LOWER(`User`) = LOWER('%n') \
AND LOWER(`Domain`) = LOWER('%d') \
AND `Retrieve_Mail` = 'Yes'
The table:
MySQL (root@localhost) [sys_mail]> show columns from Virtual_User;
+--------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra
|
+--------------------+------------------+------+-----+---------+----------------+
| vu_id | int(11) unsigned | NO | PRI | NULL | auto_increment
|
| Name | varchar(50) | NO | | NULL |
|
| Domain | varchar(128) | NO | MUL | NULL |
|
| User | varchar(32) | NO | MUL | NULL |
|
| Password_Cleartext | varchar(128) | NO | | NULL |
|
| Password_Crypt | varchar(128) | YES | | NULL |
|
| Retrieve_Mail | enum('No','Yes') | NO | | Yes |
|
| Receive_Mail | enum('No','Yes') | NO | | Yes |
|
| Accept_SMTP | enum('No','Yes') | NO | | Yes |
|
| uid | int(11) unsigned | NO | | 399 |
|
| gid | int(11) unsigned | NO | | 399 |
|
| homedir | varchar(75) | NO | | NULL |
|
| Maildir | varchar(32) | NO | | Maildir |
|
| quota | tinytext | NO | | NULL |
|
| imap | enum('Y','N') | NO | | N |
|
| virus_check | enum('Y','N') | NO | | Y |
|
| spam_check | enum('Y','N') | NO | | Y |
|
+--------------------+------------------+------+-----+---------+----------------+
Dovecot can be made to log the MySQL transaction. I did that a long long time
ago but don't remember how.
Virtual user db:
# ------------------------------------------------------------------------------
# ----------------------------------- MySQL ------------------------------------
# ------------------------------------------------------------------------------
first_valid_uid = 399
passdb {
driver = sql
args = /etc/dovecot/dovecot-mysql.conf
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-mysql.conf
}
Hope this helps,
Bill