Code: Select all
userdb sql {
auth_username_format = %{user | username}
iterate_query = SELECT userid AS username, domain FROM users
query = SELECT home, uid, gid FROM users WHERE userid = '%{user | username}' AND domain = '%{user | domain}'
}
passdb sql {
auth_username_format = %{user | username}
query = SELECT userid AS username, domain, password FROM user WHERE userid = '%{user | username}' AND domain = '%{user | domain}'
}Code: Select all
userdb sql {
auth_username_format = %{user | username}
iterate_query = SELECT username, domain FROM mailbox
query = local_part AS user, CONCAT('/var/vmail/',maildir) AS home FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain}'
}
passdb sql {
auth_username_format = %{user | username}
query = SELECT local_part AS username, domain, password FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain}'
}Maybe it is me not have enough understanding of English or western couturejankom wrote:The relevant part of my dovecot configuration now is:and various outputs of commands as root:Code: Select all
service auth { # Postfix (SMTP Auth) unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } # Doveadm & Internal Lookups (Crucial for Virtual Users) unix_listener auth-userdb { mode = 0600 user = vmail } }and mail.error log file snippet:Code: Select all
andraslinux /home/janos # doveconf -n service auth service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } unix_listener auth-userdb { mode = 0600 user = vmail } } andraslinux /home/janos # doveconf -n userdb passdb userdb sql { auth_username_format = %{user | username} iterate_query = SELECT userid AS username, domain FROM users query = SELECT home, uid, gid FROM users WHERE userid = '%{user | username}' AND domain = '%{user | domain}' } userdb static { fields { gid = vmail home = /var/vmail/%{user | domain}/%{user | username} uid = vmail } } passdb sql { auth_username_format = %{user | username} query = SELECT userid AS username, domain, password FROM user WHERE userid = '%{user | username}' AND domain = '%{user | domain}' } passdb pam { } andraslinux /home/janos # dovecot auth login janos@andraslinux.jgklinux.jangkom.com Password: Error: cmd auth login: user janos@andraslinux.jgklinux.jangkom.com: internal auth failure extra fields: user=janos@andraslinux.jgklinux.jangkom.com code=temp_fail andraslinux /home/janos #I have been playing with this, rebooted, cleared cashe, etc. - still no sugar.Code: Select all
Mar 28 07:37:32 localhost dovecot: auth: Error: sqlpool(pgsql): Query failed, aborting: SELECT userid AS username, domain, password FROM user WHERE userid = 'janos' AND domain = 'andraslinux.jgklinux.jangkom.com' Mar 28 07:37:32 localhost dovecot: auth(janos@andraslinux.jgklinux.jangkom.com,sasl:plain): Error: sql: Password query failed: ERROR: column "userid" does not exist Mar 28 07:37:32 localhost dovecot: auth(janos@andraslinux.jgklinux.jangkom.com,sasl:plain): Error: sql: LINE 1: SELECT userid AS username, domain, password FROM user WHERE ...
How come sqlpool had a query with "userid"? There is no such word in dovecot.conf or 50-misc.conf files. Not even in postfix main.cf or master.cf files.
jankom
Code: Select all
passdb sql {
auth_username_format = %{user | username}
query = SELECT userid AS username, domain, password FROM user WHERE userid = '%{user | username}' AND domain = '%{user | domain}'
}Code: Select all
andraslinux /etc/dovecot/conf.d # doveconf -n passdb
doveconf: Panic: SELECT local_part AS = username, domain, password FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain)': syntax error, unexpected CBRACE, expecting CCBRACE or PIPE
doveconf: Error: Raw backtrace: libdovecot.so.0(backtrace_append+0x3d) [0x7f1cb6...see the query statement, at the end domain = '%{user | domain)' You have unmatched ')' at the end, it should be '}'.jankom wrote:My debugging method is to save files of various configuration attempts by disfiguring them (prepending filename with x or suffixing filename with .date or something). I did not realize that the "!include..." statement included them all regardless.
Now I moved them to ~/tmp/ directory, and the situation is different:jankomCode: Select all
andraslinux /etc/dovecot/conf.d # doveconf -n passdb doveconf: Panic: SELECT local_part AS = username, domain, password FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain)': syntax error, unexpected CBRACE, expecting CCBRACE or PIPE doveconf: Error: Raw backtrace: libdovecot.so.0(backtrace_append+0x3d) [0x7f1cb6...
Code: Select all
Mar 28 18:19:08 localhost dovecot: auth: Fatal: passdb sql: sql pgsql: pgsql { .. } named list filter is missingCode: Select all
Mar 28 18:19:08 localhost dovecot: auth: Fatal: passdb sql: sql pgsql: pgsql { .. } named list filter is missing
Mar 28 18:19:08 localhost dovecot: master: Error: service(auth): command startup failed, throttling for 60.000 secsCode: Select all
andraslinux /home/janos # doveconf -n service auth
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
}
}
andraslinux /home/janos # doveconf -n userdb
userdb sql {
auth_username_format = %{user | username}
query = SELECT CONCAT = ('/var/vmail/', 'maildir') AS home, 5000 AS uid, 5000 AS gid FROM = mailbox WHERE = local_part = '%{user | username}' AND domain = '%{user | domain}'
}
andraslinux /home/janos # doveconf -n passdb
passdb sql {
auth_username_format = %{user | username}
query = SELECT local_part AS = username, domain, password FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain}'
}
passdb pam {
}
andraslinux /home/janos # Code: Select all
doveconf -nCode: Select all
andraslinux /home/janos # doveconf -n
# 2.4.2 (0962ed2104): /etc/dovecot/dovecot.conf
# OS: Linux 6.12.58-gentoo x86_64 Gentoo Base System release 2.18
# Hostname: localhost
dovecot_config_version = 2.4.2
auth_mechanisms = plain login
dovecot_storage_version = 2.4.2
mail_driver = maildir
mail_gid = vmail
mail_home = /var/vmail/%{user | domain}/%{user | username}
mail_path = ~/mail
mail_uid = vmail
pgsql_parameters {
dbname = postfix
host = localhost
password = xxx
user = postfix
}
protocols {
imap = yes
lmtp = yes
}
sql_driver = pgsql
passdb sql {
auth_username_format = %{user | username}
query = SELECT local_part AS = username, domain, password FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain}'
}
userdb sql {
auth_username_format = %{user | username}
query = SELECT CONCAT = ('/var/vmail/', 'maildir') AS home, 5000 AS uid, 5000 AS gid FROM = mailbox WHERE = local_part = '%{user | username}' AND domain = '%{user | domain}'
}
namespace inbox {
inbox = yes
mailbox Drafts {
auto = subscribe
special_use = "\\Drafts"
}
mailbox Sent {
auto = subscribe
special_use = "\\Sent"
}
mailbox "Sent Messages" {
auto = no
special_use = "\\Sent"
}
mailbox Spam {
auto = create
special_use = "\\Junk"
}
mailbox Trash {
auto = subscribe
special_use = "\\Trash"
}
}
passdb pam {
}
ssl_server {
cert_file = /etc/dovecot/server.pem
key_file = /etc/dovecot/server.key
}
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
}
}
andraslinux /home/janos #Code: Select all
passdb sql {
auth_username_format = %{user | username}
query = SELECT local_part AS = username, domain, password FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain}'
}
userdb sql {
auth_username_format = %{user | username}
query = SELECT CONCAT = ('/var/vmail/', 'maildir') AS home, 5000 AS uid, 5000 AS gid FROM = mailbox WHERE = local_part = '%{user | username}' AND domain = '%{user | domain}'
}Code: Select all
passdb sql {
auth_username_format = %{user | username}
query = SELECT local_part AS username, domain, password FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain}'
}
userdb sql {
auth_username_format = %{user | username}
query = SELECT CONCAT ('/var/vmail/', 'maildir') AS home, 5000 AS uid, 5000 AS gid FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain}'
}Code: Select all
pgsql_parameters {
dbname = postfix
host = localhost
password = xxx
user = postfix
}Code: Select all
pgsql localhost {
dbname = postfix
host = localhost
password = xxx
user = postfix
}Code: Select all
andraslinux /home/janos # doveadm user janos@andraslinux.jgklinux.jangkom.com
doveadm(janos@andraslinux.jgklinux.jangkom.com)<7381><>: Error: auth-master: conn unix:/run/dovecot/auth-userdb (pid=7369,uid=0): Disconnected unexpectedly
userdb lookup: Unexpectedly disconnected from auth service
field value
andraslinux /home/janos #Code: Select all
pgsql localhost {
dbname = postfix
host = localhost
password = xxx
user = postfix
}Code: Select all
pgsql localhost {
parameters {
user = postfix
password = xxx
dbname = postfix
}
}Code: Select all
andraslinux /etc/dovecot # doveconf -n
# 2.4.2 (0962ed2104): /etc/dovecot/dovecot.conf
# OS: Linux 6.12.58-gentoo x86_64 Gentoo Base System release 2.18 ext4
# Hostname: localhost
dovecot_config_version = 2.4.2
auth_mechanisms = plain login
dovecot_storage_version = 2.4.2
mail_driver = maildir
mail_gid = vmail
mail_home = /var/vmail/%{user | domain}/%{user | username}
mail_path = /var/vmail/%{user | domain}/%{user | username}/.maildir
mail_uid = vmail
pgsql_host = localhost
protocols {
imap = yes
lmtp = yes
}
sql_driver = pgsql
passdb sql {
auth_username_format = %{user | username}
query = SELECT local_part AS username, domain, password FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain}'
}
userdb sql {
auth_username_format = %{user | username}
query = SELECT CONCAT ('/var/vmail/', 'maildir') AS home, 5000 AS uid, 5000 AS gid FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain}'
}
passdb pam {
}
ssl_server {
cert_file = /etc/ssl/dovecot/server.pem
key_file = /etc/ssl/dovecot/server.key
}
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
}
}
andraslinux /etc/dovecot #Code: Select all
andraslinux /etc/dovecot # doveadm user janos@andraslinux.jgklinux.jangkom.com
doveadm(janos@andraslinux.jgklinux.jangkom.com)<10948><>: Error: auth-master: conn unix:/run/dovecot/auth-userdb (pid=10932,uid=0): Disconnected unexpectedly
userdb lookup: Unexpectedly disconnected from auth service
field value
andraslinux /etc/dovecot #Code: Select all
doveadm service statusCode: Select all
doveadm process statusfrom https://www.postgresql.org/docs/current ... AMKEYWORDS - but it did not help. So now I want back toHow did you arrive
with "=" corrections.my last posted configuration.
Code: Select all
andraslinux /home/janos # doveadm process status
name pid available_count total_count idle_start last_status_update last_kill_sent
anvil 19087 1000 1 1774878527 1774878527 0
config 19090 999 3 0 1774880285 0
log 19088 979 21 0 1774878331 0
stats 19130 999 2 0 1774880285 0
Code: Select all
pgsql localhost {
host = localhost
parameters {
...
}
}Code: Select all
andraslinux /var # doveadm user janos@andraslinux.jgklinux.jangkom.com
field value
uid 5000
gid 5000
home /var/vmail/maildir
mail_path /var/vmail/maildir/mail
andraslinux /var #Code: Select all
janos@andraslinux ~ $ doveconf -n
# 2.4.2 (0962ed2104): /etc/dovecot/dovecot.conf
# OS: Linux 6.12.58-gentoo x86_64 Gentoo Base System release 2.18
# Hostname: localhost
dovecot_config_version = 2.4.2
dovecot_storage_version = 2.4.2
mail_driver = maildir
mail_gid = vmail
mail_home = /var/vmail/%{user | domain}/%{user | username}
mail_path = ~/mail
mail_uid = vmail
protocols {
imap = yes
lmtp = yes
}
sql_driver = pgsql
namespace inbox {
inbox = yes
separator = /
}
passdb pam {
}
ssl_server {
cert_file = /etc/ssl/dovecot/server.pem
key_file = /etc/ssl/dovecot/server.key
}
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
}
}
pgsql pgsql {
parameters {
dbname = postfix
host = localhost
user = postfix
}
}
passdb sql {
auth_username_format = %{user | username}
query = SELECT local_part AS username, domain, password FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain}'
}
userdb sql {
auth_username_format = %{user | username}
query = SELECT CONCAT ('/var/vmail/', 'maildir') AS home, 5000 AS uid, 5000 AS gid FROM mailbox WHERE local_part = '%{user | username}' AND domain = '%{user | domain}'
}
userdb static {
fields {
gid = vmail
home = /var/vmail/%{user | domain}/%{user | username}
uid = vmail
}
}
janos@andraslinux ~ $
Code: Select all
Mar 28 18:19:08 localhost dovecot: auth: Fatal: passdb sql: sql pgsql: pgsql { .. } named list filter is missing