Hi,
I get a crash in dict if I use multiple map sections. Each one of them works fine by their own. I managed to convince dovecot to create dump files to debug this, but I can't figure out how to do the same for dict. How can I do this? Anyway, perhaps someone already know's what's wrong by looking at what I do in the sql dict configuration.

Mar  9 02:27:52 xxx dovecot: dict: pgsql: Connected to dovecot
Mar 9 02:27:52 xxx dovecot: dict: Panic: file driver-pgsql.c: line 529 (do_query): assertion failed: (db->sync_result == NULL) Mar 9 02:27:52 xxx dovecot: dict: Raw backtrace: dict() [0x418a9a] -> dict() [0x418b03] -> dict() [0x418206] -> dict() [0x414124] -> dict() [0x414b07] -> dict() [0x40e0dc] -> dict() [0x40e20a] -> dict() [0x40b77f] -> dict() [0x40b8b9] -> dict() [0x40ba57] -> dict(io_loop_handler_run+0xbd) [0x41d87d] -> dict(io_loop_run+0x18) [0x41ccf8] -> dict(main+0x114) [0x40bda4] -> /lib/libc.so.6(__libc_start_main+0xfd) [0x7f9a10cdbc4d] -> dict() [0x40ad69] Mar 9 02:27:52 xxx dovecot: IMAP(xxx): read(/var/run/dovecot/dict-server) failed: Remote disconnected Mar 9 02:27:52 xxx dovecot: IMAP(xxx): acl: dict iteration failed, can't update dict Mar 9 02:27:52 xxx dovecot: dovecot: child 11180 (dict) killed with signal 6 (core not dumped)

# dovecot --version
1.2.15

# dovecot -n
# 1.2.15: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-5-amd64 x86_64 Debian 6.0 ext3
log_timestamp: %Y-%m-%d %H:%M:%S
protocols: imap imaps managesieve
listen: [::]
ssl_cert_file: /etc/ssl/certs/foo.bar.pem
ssl_key_file: /etc/ssl/private/foo.bar.key.pem
login_dir: /var/run/dovecot/login
login_executable(default): /usr/lib/dovecot/imap-login
login_executable(imap): /usr/lib/dovecot/imap-login
login_executable(managesieve): /usr/lib/dovecot/managesieve-login
mail_privileged_group: mail
mail_location: maildir:/var/mail/%u/mailbox
mbox_write_locks: fcntl dotlock
mail_executable(default): /usr/lib/dovecot/imap
mail_executable(imap): /usr/lib/dovecot/imap
mail_executable(managesieve): /usr/lib/dovecot/managesieve
mail_plugins(default): acl imap_acl
mail_plugins(imap): acl imap_acl
mail_plugins(managesieve):
mail_plugin_dir(default): /usr/lib/dovecot/modules/imap
mail_plugin_dir(imap): /usr/lib/dovecot/modules/imap
mail_plugin_dir(managesieve): /usr/lib/dovecot/modules/managesieve
namespace:
  type: private
  separator: /
  inbox: yes
  list: yes
  subscriptions: yes
namespace:
  type: shared
  separator: /
  prefix: shared/%%n/
location: maildir:/var/mail/%%u/mailbox:INDEX=/var/mail/%u/mailbox/shared/%%u
  list: children
lda:
  postmaster_address: postmas...@foo.bar
  mail_plugins: sieve acl
auth default:
  mechanisms: plain gssapi
  passdb:
    driver: pam
    args: blocking=yes dovecot
  userdb:
    driver: static
    args: uid=vmail gid=vmail home=/var/mail/%u allow_all_users=yes
  socket:
    type: listen
    client:
      path: /var/spool/postfix/private/auth
      mode: 432
      user: postfix
      group: postfix
    master:
      path: /var/run/dovecot/auth-master
      mode: 384
      user: vmail
plugin:
  acl: vfile
  acl_shared_dict: proxy::acl
  sieve: ~/.dovecot.sieve
  sieve_dir: ~/sieve
dict:
  acl: pgsql:/etc/dovecot/dovecot-dict-sql.conf

# cat /etc/dovecot/dovecot-dict-sql.conf
connect = host=foo.bar dbname=dovecot user=dovecot password=xxx
map {
  pattern = shared/shared-boxes/user/$owner/$user
  table = user_shares
  value_field = dummy
  fields {
    owner = $owner
    usr = $user
  }
}
map {
  pattern = shared/shared-boxes/anyone/$owner
  table = global_shares
  value_field = dummy
  fields {
    owner = $owner
  }
}
map {
  pattern = shared/shared-boxes/group/$group/$owner
  table = group_shares
  value_field = dummy
  fields {
    grp = $group
    owner = $owner
  }
}

Reply via email to