Hi, I don't know if it's a bug or my configuration fault, but LDA does not work as i expect. Dovecot auth connects to a pgsql database that mirrors Nis users infos, but it has also quota settings because i'd like to use a per-user quota environment. Mailserver and Postfix authenticates users with Nis (through PAM), while imap and local delivery (with the postfix mailbox_command setting) are left to dovecot mechanism. Imap works perfectly, dovecot retrieves authentication and quota setting from database, but dovecot LDA seems to not query any database (and nothing is logged) , so that quota is not retrived and message is not bounced when user is overquota.
You can see it in the verbose log:
deliver(tognini): 2007-02-08 12:25:02 Info: Loading modules from directory: /usr/lib/dovecot/modules/lda deliver(tognini): 2007-02-08 12:25:02 Info: Module loaded: /usr/lib/dovecot/modules/lda/lib10_quota_plugin.so deliver(tognini): 2007-02-08 12:25:02 Info: Module loaded: /usr/lib/dovecot/modules/lda/lib90_cmusieve_plugin. so deliver(tognini): 2007-02-08 12:25:02 Info: mbox: data=/home/t/tognini:INBOX=/var/spool/mail/tognini deliver(tognini): 2007-02-08 12:25:02 Info: mbox: root=/home/t/tognini, index=/home/t/tognini, inbox=/var/spool/mail/tognini deliver(tognini): 2007-02-08 12:25:02 Info: cmusieve: Using sieve path: /home/t/tognini/.dovecot.sieve deliver(tognini): 2007-02-08 12:25:02 Info: msgid=20070208112502.7706B3273D6@arturo.cli.di.unipi.it: saved mail to INBOX
If i set quota variable in dovecot.conf, still no query but the global variable is used for all users:
... deliver(tognini): 2007-02-07 12:33:04 Info: dirsize quota limit = 1024kB ...
My Debian server packages are:
dovecot-common/unstable 1.0.rc22-1 postfix/testing 2.3.6-1 postgresql/testing 7.5.22
Dovecot.conf:
protocols = imap imaps log_path = /var/log/dovecot.log log_timestamp = "%Y-%m-%d %H:%M:%S " login_greeting = Server ready. mail_location = mbox:%h:INBOX=/var/spool/mail/%u mail_extra_groups = mail mail_debug = yes mbox_read_locks = dotlock fcntl mbox_write_locks = dotlock fcntl protocol imap { mail_plugins = quota imap_quota imap_client_workarounds = outlook-idle tb-extra-mailbox-sep }
auth_verbose = yes auth_debug = yes auth_debug_passwords = yes
auth default { user = root mechanisms = plain passdb sql { args = /etc/dovecot/dovecot-sql.conf }
userdb sql { args = /etc/dovecot/dovecot-sql.conf }
userdb prefetch { }
socket listen { master { path = /var/run/dovecot/auth-master mode = 0600 user = mail # User running Dovecot LDA group = mail # Or alternatively mode 0660 + LDA user in this group } }
}
protocol lda { postmaster_address = samuele@example.org mail_plugins = quota cmusieve log_path = /var/log/dovecot-deliver.log info_log_path = /var/log/dovecot-deliver.log }
plugin {
#quota = dirsize:storage=1024 # every user gets this quota, but it's not what i want.
}
Dovecot-sql.conf:
driver = pgsql connect = host=192.168.1.2 dbname=dovecot user=myuser password='mypasswd' default_pass_scheme = CRYPT password_query = SELECT password, home as userdb_home, uid as userdb_uid, gid as userdb_gid, 'dirsize:storage='||quota as userdb_quota FROM user_accounts WHERE username = '%u' AND active = '1' #user_query = SELECT home, uid, gid, quota FROM user_accounts WHERE username = '%u' user_query = SELECT home, uid, gid, 'dirsize:storage=' || quota AS quota FROM user_accounts WHERE username = '%u'
Postfix main.cf:
... mailbox_size_limit = 0 recipient_delimiter = + mailbox_command = /usr/lib/dovecot/deliver ....
Postgresql table:
Table "public.user_accounts"
Column | Type | Modifiers ----------+------------------------+------------------------------ username | character varying(12) | not null uid | integer | not null gid | integer | not null password | character varying(32) | home | character varying(255) | not null active | character(1) | not null default 'Y'::bpchar quota | integer | not null default 512
Thanks in advance for any help or suggestion, Samuele
On Thu, 8 Feb 2007, Tognini Samuele wrote:
Hi, I don't know if it's a bug or my configuration fault, but LDA does not work as i expect. Dovecot auth connects to a pgsql database that mirrors Nis users infos, but it has also quota settings because i'd like to use a per-user quota environment. Mailserver and Postfix authenticates users with Nis (through PAM), while imap and local delivery (with the postfix mailbox_command setting) are left to dovecot mechanism. Imap works perfectly, dovecot retrieves authentication and quota setting from database, but dovecot LDA seems to not query any database (and nothing is logged) , so that quota is not retrived and message is not bounced when user is overquota.
I think i' ve solved although i'm not sure it's the best solution.
With mailbox_command, executable needs an optional parameter not mentioned in the wiki: mailbox_command = /usr/lib/dovecot/deliver -d ${LOCAL}
I had to give full permission to everyone to spool mail, dovecot log files and lda socket too. The reason why is that postfix runs deliver with the same recipient user privileges:
socket listen { master { path = /var/run/dovecot/auth-master mode = 0666 #needed by postfix user = mail # User running Dovecot LDA group = mail # Or alternatively mode 0660 + LDA user in this group } }
Samuele
participants (1)
-
Tognini Samuele