[Dovecot] dict Panic after upgrade to 2.1.7
ckubu
ckubu at so36.net
Wed Jun 27 16:26:21 EEST 2012
hallo,
> after upgrade my mailsystem to dovecot version 2.1.7, dovecot doesn't work
> properly. something went wrong in dict service connecting the postgres
> backend. that happens not on every connection. the db connection data are
> correct, no difference connecting via tcp or linux socket.
>
> dovecot log entries:
> Jun 23 23:19:10 mx dovecot: dict: Panic: file driver-pgsql.c: line 84
> (driver_pgsql_set_state): assertion failed: (state == SQL_DB_STATE_BUSY ||
> db-
>
> >cur_result == NULL)
>
> Jun 23 23:19:10 mx dovecot: dict: Error: Raw backtrace:
> /usr/local/dovecot-2.1.7/lib/dovecot/libdovecot.so.0(+0x4478a)
> [0x7ffc7d8e578a] ->
> /usr/local/dovecot-2.1.7/lib/dovecot/libdovecot.so.0(+0x447d6)
> [0x7ffc7d8e57d6] ->
> /usr/local/dovecot-2.1.7/lib/dovecot/libdovecot.so.0(i_error+0)
> [0x7ffc7d8bc5ef] -> dovecot/dict() [0x40a9a6] -> dovecot/dict() [0x40aa01]
> -> dovecot/dict() [0x40be43] -> dovecot/dict() [0x409474] ->
> dovecot/dict(sql_db_cache_deinit+0x20) [0x4089d0] ->
> dovecot/dict(main+0x169) [0x4059f9] ->
> /lib/libc.so.6(__libc_start_main+0xfd) [0x7ffc7d335c8d] -> dovecot/dict()
> [0x404b59]
> Jun 23 23:19:10 mx dovecot: dict: Fatal: master: service(dict): child 13812
> killed with signal 6 (core dumps disabled)
>
> Jun 23 23:23:09 mx dovecot: dict: Error: dict sql iterate failed: Not
> connected to database
> Jun 23 23:23:09 mx dovecot: pop3(xxx at yyy.zz): Error: acl: dict iteration
> failed, can't update dict
> Jun 23 23:23:09 mx dovecot: dict: Error: dict sql iterate failed: Not
> connected to database
> Jun 23 23:23:09 mx dovecot: pop3(xxx at yyy.zz): Error: acl: dict iteration
> failed, can't update dict
> Jun 23 23:23:17 mx dovecot: dict: Error: dict sql lookup failed: Not
> connected to database
> Jun 23 23:23:17 mx dovecot: imap(xxx at yyy.zz): Error: Internal quota
> calculation error
> Jun 23 23:23:19 mx dovecot: dict: Error: dict sql lookup failed: Not
> connected to database
> Jun 23 23:23:40 mx dovecot: dict: Error: dict sql lookup failed: Not
> connected to database
>
> maybe i have missconfigured the dovecot system, but i don't find the
> mistake. can anybody give me a hint ?
It seem's, that these errors occcures, if acl support ist activated. i
deactivated acl support last night for a while, and no such errors occured. I
can't make long term test, because that is a produktion system and i switched
back to version 2.0.9, which runs with acl support but without that errors .
bw
Christoph
>
> ----- doveconf -n
> # 2.1.7: /usr/local/dovecot-2.1.7/etc/dovecot/dovecot.conf
> # OS: Linux 2.6.32-5-vserver-amd64 x86_64 Debian 6.0.5 ext3
> auth_mechanisms = plain login digest-md5 cram-md5 apop
> auth_socket_path = /var/run/dovecot/auth-userdb
> auth_username_translation = %@
> auth_verbose = yes
> auth_verbose_passwords = plain
> base_dir = /var/run/dovecot/
> dict {
> acl = pgsql:/usr/local/dovecot/etc/dovecot/sql-dict.conf.ext
> expire = pgsql:/usr/local/dovecot/etc/dovecot/sql-dict.conf.ext
> quota = pgsql:/usr/local/dovecot/etc/dovecot/sql-dict.conf.ext
> }
> disable_plaintext_auth = no
> first_valid_gid = 5000
> first_valid_uid = 5000
> hostname = mx.warenform.de
> last_valid_gid = 5000
> last_valid_uid = 5000
> listen = 178.63.63.151 2a01:4f8:121:c5::2
> mail_gid = vmail
> mail_location = maildir:/var/vmail/%d/%n/Maildir
> mail_plugins = autocreate quota expire acl
> mail_uid = vmail
> managesieve_notify_capability = mailto
> managesieve_sieve_capability = fileinto reject envelope encoded-character
> vacation subaddress comparator-i;ascii-numeric relational regex imap4flags
> copy include variables body enotify environment mailbox date ihave
> namespace {
> list = children
> location = maildir:/var/vmail/%%d/%%n/Maildir:INDEX=~/Maildir/shared/%%u
> prefix = shared/%%u/
> separator = /
> subscriptions = no
> type = shared
> }
> namespace inbox {
> inbox = yes
> location =
> mailbox Drafts {
> special_use = \Drafts
> }
> mailbox Junk {
> special_use = \Junk
> }
> mailbox Sent {
> special_use = \Sent
> }
> mailbox "Sent Messages" {
> special_use = \Sent
> }
> mailbox Spam {
> special_use = \Junk
> }
> mailbox Trash {
> special_use = \Trash
> }
> prefix =
> separator = /
> type = private
> }
> passdb {
> args = /usr/local/dovecot/etc/dovecot/sql-connect.conf.ext
> driver = sql
> }
> plugin {
> acl = vfile
> acl_shared_dict = proxy::acl
> autocreate = Spam
> autocreate2 = Sent
> autocreate3 = Trash
> autocreate4 = Drafts
> autosubscribe = Spam
> autosubscribe2 = Sent
> autosubscribe3 = Trash
> autosubscribe4 = Drafts
> expire = Trash
> expire2 = Trash.*
> expire3 = Spam
> expire_dict = proxy::expire
> quota = dict:User quota::proxy::quota
> quota_rule = *:storage=1G
> quota_rule2 = Trash:storage=+200M
> quota_warning = storage=95%% quota-warning 95 %u
> quota_warning2 = storage=80%% quota-warning 80 %u
> recipient_delimiter =
> sieve = ~/.dovecot.sieve
> sieve_before = /usr/local/dovecot/etc/dovecot/sieve/move-spam.sieve
> sieve_dir = ~/sieve
> sieve_global_dir = /usr/local/dovecot/etc/dovecot/sieve/global/
> }
> postmaster_address = admin at warenform.de
> protocols = imap pop3 sieve lmtp
> service auth {
> unix_listener /var/spool/postfix/private/dovecot-auth {
> group = postfix
> mode = 0666
> user = postfix
> }
> unix_listener auth-userdb {
> group = vmail
> mode = 0600
> user = vmail
> }
> }
> service dict {
> unix_listener dict {
> mode = 0600
> user = vmail
> }
> }
> service imap-login {
> inet_listener imap {
> address = 127.0.0.1 178.63.63.151 2a01:4f8:121:c5::2
> }
> inet_listener imaps {
> address = 178.63.63.151 2a01:4f8:121:c5::2
> }
> process_min_avail = 16
> }
> service lmtp {
> unix_listener /var/spool/postfix/private/dovecot-lmtp {
> group = postfix
> mode = 0660
> user = postfix
> }
> }
> service managesieve-login {
> inet_listener sieve {
> address = 127.0.0.1
> port = 4190
> }
> }
> service pop3-login {
> inet_listener pop3 {
> address = 178.63.63.151 2a01:4f8:121:c5::2
> }
> inet_listener pop3s {
> address = 178.63.63.151 2a01:4f8:121:c5::2
> }
> }
> service quota-warning {
> executable = script /usr/local/bin/quota-warning.sh
> unix_listener quota-warning {
> user = vmail
> }
> user = dovecot
> }
> shutdown_clients = no
> ssl_cert = </etc/postfix/ssl/servercert.pem
> ssl_key = </etc/postfix/ssl/servercert.pem
> syslog_facility = local1
> userdb {
> args = /usr/local/dovecot/etc/dovecot/sql-connect.conf.ext
> driver = sql
> }
> protocol lmtp {
> mail_plugins = autocreate quota expire acl sieve
> }
> protocol lda {
> mail_plugins = autocreate quota expire acl sieve
> }
> protocol imap {
> imap_client_workarounds = delay-newmail
> mail_max_userip_connections = 24
> mail_plugins = autocreate quota expire acl imap_quota imap_acl
> ssl_cert = </etc/postfix/ssl/imap_warenform_de.crt
> ssl_key = </etc/postfix/ssl/imap_warenform_de.key
> }
> protocol pop3 {
> mail_max_userip_connections = 10
> pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
> ssl_cert = </etc/postfix/ssl/pop_warenform_de.crt
> ssl_key = </etc/postfix/ssl/pop_warenform_de.key
> }
>
>
> ----- sql-dict.conf.ext:
>
> connect = host=/var/run/postgresql user=db_user password=db_passwd
> dbname=db_name
>
> # quota
> map {
> pattern = priv/quota/storage
> table = quota2
> username_field = username
> value_field = bytes
> }
> map {
> pattern = priv/quota/messages
> table = quota2
> username_field = username
> value_field = messages
> }
>
> # expires
> map {
> pattern = shared/expire/$user/$mailbox
> table = expires
> value_field = expire_stamp
>
> fields {
> username = $user
> mailbox = $mailbox
> }
> }
>
> # acl
> map {
> pattern = shared/shared-boxes/user/$to/$from
> table = user_shares
> value_field = dummy
>
> fields {
> from_user = $from
> to_user = $to
> }
> }
>
> map {
> pattern = shared/shared-boxes/anyone/$from
> table = anyone_shares
> value_field = dummy
>
> fields {
> from_user = $from
> }
> }
--
e: ckubu at so36.net
More information about the dovecot
mailing list