On Sun, 04 May 2008 17:50:45 +0300 Timo Sirainen <tss@iki.fi> wrote:
A bit late reply, but you should be able to use a table exactly like with quota (http://wiki.dovecot.org/Quota/Dict):
Just got around to trying this out, and I get a segfault when attempting to move a message into the trash.
Dovecot Version: 1.1rc6 - complied with SunStudio 12 OS: Solaris 10 CPU Arch: x86_64 Filesystem: ZFS Description: Move message into the trash
dovecot -n: # 1.1.rc6: /opt/dovecot/etc/dovecot.conf log_path: /var/log/dovecot.log protocols: imap imaps pop3 pop3s listen(default): *:143 listen(imap): *:143 listen(pop3): *:110 ssl_listen(default): *:993 ssl_listen(imap): *:993 ssl_listen(pop3): *:995 ssl_cert_file: /opt/dovecot/etc/ssl/certs/dovecot.pem ssl_key_file: /opt/dovecot/etc/ssl/private/dovecot.pem ssl_cipher_list: ALL:!LOW:!SSLv2 disable_plaintext_auth: no login_dir: /opt/dovecot/var/run/dovecot/login login_executable(default): /opt/dovecot/libexec/dovecot/imap-login login_executable(imap): /opt/dovecot/libexec/dovecot/imap-login login_executable(pop3): /opt/dovecot/libexec/dovecot/pop3-login login_user: dovecota login_process_per_connection: no login_max_processes_count: 10 max_mail_processes: 25 first_valid_uid: 2000 last_valid_uid: 2000 first_valid_gid: 2000 last_valid_gid: 2000 mail_uid: 2000 mail_gid: 2000 mail_drop_priv_before_exec: yes mail_executable(default): /opt/dovecot/libexec/dovecot/imap mail_executable(imap): /opt/dovecot/libexec/dovecot/imap mail_executable(pop3): /opt/dovecot/libexec/dovecot/pop3 mail_plugins(default): fts fts_squat quota imap_quota expire mail_plugins(imap): fts fts_squat quota imap_quota expire mail_plugins(pop3): expire quota mail_plugin_dir(default): /opt/dovecot/lib/dovecot/imap mail_plugin_dir(imap): /opt/dovecot/lib/dovecot/imap mail_plugin_dir(pop3): /opt/dovecot/lib/dovecot/pop3 auth default: default_realm: flerd.com cache_size: 1024 user: dovecotl verbose: yes debug: yes passdb: driver: ldap args: /opt/dovecot/etc/dovecot-ldap.conf userdb: driver: prefetch userdb: driver: ldap args: /opt/dovecot/etc/dovecot-ldap.conf socket: type: listen client: path: /opt/dovecot/var/run/dovecot/auth-client mode: 438 master: path: /opt/dovecot/var/run/dovecot/auth-master mode: 438 user: dovecota plugin: fts: squat quota: dict:user::proxy::quotadict quota_rule: *:storage=1G quota_rule2: Trash:storage=100M expire: Trash 7 Trash/* 7 Spam 3 expire_dict: proxy::expiredict dict: quotadict: mysql:/opt/dovecot/etc/dovecot-dict-quota.conf expiredict: mysql:/opt/dovecot/etc/dovecot-dict-expire.conf
Coredump: Core was generated by `imap'. Program terminated with signal 11, Segmentation fault. #0 0xfed0578c in strlen () from /lib/libc.so.1 (gdb) bt full #0 0xfed0578c in strlen () from /lib/libc.so.1 No symbol table info available. #1 0xfed5d976 in _ndoprnt () from /lib/libc.so.1 No symbol table info available. #2 0xfed60aab in vsnprintf () from /lib/libc.so.1 No symbol table info available. #3 0x0814a214 in t_noalloc_strdup_vprintf ( format=0x8163a34 "%c%u\t%u\t%d\t%s\t%s\n", args=0x804765c, size_r=0x8047620) at /var/tmp/dovecot-1.1.rc6/src/lib/strfuncs.c:120 args2 = (va_list) 0x804765c tmp = 0x818fb08 "H2\t0\t1\t" init_size = 273 ret = -21546712 #4 0x0814a2e7 in p_strdup_vprintf (pool=0x8178664, format=0x8163a34 "%c%u\t%u\t%d\t%s\t%s\n", args=0x804765c) at /var/tmp/dovecot-1.1.rc6/src/lib/strfuncs.c:139 tmp = 0xfed00460 "Z\211\020�����\213��" buf = 0x8047660 "\002" size = 0 #5 0x0814a66f in t_strdup_printf (format=0x8163a34 "%c%u\t%u\t%d\t%s\t%s\n", ...=0x48) at /var/tmp/dovecot-1.1.rc6/src/lib/strfuncs.c:246 args = (va_list) 0x804765c ret = 0x0 ---Type <return> to continue, or q <return> to quit--- #6 0x0812e512 in client_dict_connect (dict=0x819abc8) at /var/tmp/dovecot-1.1.rc6/src/lib-dict/dict-client.c:268 query = 0x8178664 "D\206\027\b\003" #7 0x0812dfec in client_dict_send_query (dict=0x819abc8, query=0x818fae8 "Lshared/eric@flerd.com/Trash\n") at /var/tmp/dovecot-1.1.rc6/src/lib-dict/dict-client.c:137 No locals. #8 0x0812e7f2 in client_dict_lookup (_dict=0x819abc8, pool=0x818fad8, key=0x818fab8 "shared/eric@flerd.com/Trash", value_r=0x8047710) at /var/tmp/dovecot-1.1.rc6/src/lib-dict/dict-client.c:349 query = 0x818fae8 "Lshared/eric@flerd.com/Trash\n" _data_stack_cur_id = 5 dict = (struct client_dict *) 0x819abc8 line = 0x80476c8 "��\030\b��\030\b\020w\004\b" ret = 135854776 #9 0x0812da62 in dict_lookup (dict=0x819abc8, pool=0x818fad8, key=0x818fab8 "shared/eric@flerd.com/Trash", value_r=0x8047710) at /var/tmp/dovecot-1.1.rc6/src/lib-dict/dict.c:88 No locals. #10 0xfeb62d8e in expire_mailbox_transaction_commit (t=0x81ac2d8, uid_validity_r=0x8047800, first_saved_uid_r=0x80477fc, last_saved_uid_r=0x80477f8) at /var/tmp/dovecot-1.1.rc6/src/plugins/expire/expire-plugin.c:131 ---Type <return> to continue, or q <return> to quit--- key = 0x818fab8 "shared/eric@flerd.com/Trash" value = 0x0 _data_stack_cur_id = 4 xpr_box = (struct expire_mailbox *) 0x81a8a80 xt = (struct expire_transaction_context *) 0x81a7680 mailbox_name = 0x81a8a40 "Trash" new_stamp = 135999896 update_dict = 0 '\0' ret = 134510388 #11 0xfec7e70d in quota_mailbox_transaction_commit (ctx=0x81ac2d8, uid_validity_r=0x8047800, first_saved_uid_r=0x80477fc, last_saved_uid_r=0x80477f8) at /var/tmp/dovecot-1.1.rc6/src/plugins/quota/quota-storage.c:98 qbox = (struct quota_mailbox *) 0x81a8b00 qt = (struct quota_transaction_context *) 0x81ac798 #12 0xfeb467fc in fts_transaction_commit (t=0x81ac2d8, uid_validity_r=0x8047800, first_saved_uid_r=0x80477fc, last_saved_uid_r=0x80477f8) at /var/tmp/dovecot-1.1.rc6/src/plugins/fts/fts-storage.c:657 box = (struct mailbox *) 0x81a88b0 fbox = (struct fts_mailbox *) 0x81a9f20 ft = (struct fts_transaction_context *) 0x8197b58 ret = 135853832