Hello,

there seems to be an error writing into the expire database defined by dict.

dict {
  expire = sqlite:/usr/dovecot/etc/dovecotbeta-dict-expire.conf
}
...
plugin {
  ...
  expire = AutoCleanSpam 1d
  expire_dict = proxy::expire
}

with dovecotbeta-dict-expire.conf:
connect = /test/addons/expire/expiresbeta.db

map {
  pattern = shared/expire/$user/$mailbox
  table = expires
  value_field = expire_stamp

  fields {
    username = $user
    mailbox = $mailbox
  }
}

sqlite shows schema:
CREATE TABLE expires (
  username varchar(100) not null,
  mailbox varchar(255) not null,
  expire_stamp integer not null,
  primary key (username, mailbox)
);
CREATE TRIGGER mergeexpires BEFORE INSERT ON expires FOR EACH ROW
BEGIN
        UPDATE expires SET expire_stamp=NEW.expire_stamp
                WHERE username = NEW.username AND mailbox = NEW.mailbox;
        SELECT raise(ignore)
WHERE (SELECT 1 FROM expires WHERE username = NEW.username AND mailbox = NEW.mailbox) IS NOT NULL;
END;

Delivering of an email into folder AutoCleanSpam via sieve script works fine.

error-log:

Apr 08 12:57:05 lda(account1): Debug: sieve: executing compiled script /addons/sieve/account1.sieve Apr 08 12:57:05 lda(account1): Debug: expire: Mails expire in 86400 secs in mailbox: AutoCleanSpam

Apr 08 12:57:05 dict: Error: sqlite: exec(INSERT INTO expires (expire_stamp,username,mailbox) VALUES ('1270810625','account1','AutoCleanSpam')) failed: unable to open database file (14)

Apr 08 12:57:05 master: Error: service(dict): child 10936 killed with signal 11 (core not dumped - set drop_priv_before_exec=yes) Apr 08 12:57:05 master: Error: service(dict): command startup failed, throttling

deliver-log:

Apr 08 12:57:05 lda(account1): Error: read(/var/run/dovecot//dict) failed: Remote disconnected Apr 08 12:57:05 lda(account1): Info: sieve: msgid=<[email protected]>: stored mail into mailbox 'AutoCleanSpam'

If I use a non existing database filename in dovecotbeta-dict-expire.conf like

connect = /test/addons/expire/expiresbeta.dbbbbb

I see in the log
dict: Error: sqlite: open(/test/addons/expire/expiresbeta.dbbbbb) failed: unable to open database file
So I'm sure, having the rigth config file.

Moreover how to start expire-tool now?
dovecot --exec-mail ... is no more valid.



Additional:
/usr/dovecotbeta/sbin/dovecot --build-options
Build options: ioloop=poll ipv6 openssl
Mail storages: cydir dbox maildir mbox mdbox raw shared
SQL drivers: sqlite
Passdb: checkpassword ldap pam passwd passwd-file shadow sql
Userdb: checkpassword ldap passwd prefetch passwd-file sql static


/usr/dovecotbeta/sbin/dovecot -n

# 2.0.beta4: /usr/dovecotbeta/etc/dovecot/dovecot.conf
# OS: SunOS 5.9 sun4u
auth_debug = yes
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345
67890
auth_verbose = yes
base_dir = /var/run/dovecot/
debug_log_path = /var/log/dovecot-error
default_client_limit = 6144
dict {
  expire = sqlite:/usr/dovecot/etc/dovecotbeta-dict-expire.conf
}
first_valid_gid = 20
first_valid_uid = 20
info_log_path = /var/log/dovecot-error
listen = 172.19.5.17
log_path = /var/log/dovecot-error
mail_access_groups = sysdov
mail_debug = yes
mail_gid = sysdov
mail_location = dbox:%h:INDEX=/addons/index/%u:CONTROL=~/Control:LAYOUT=fs
mail_privileged_group = sysdov
mail_uid = sysdov
mbox_write_locks = fcntl
passdb {
  args = dovecot
  driver = pam
}
plugin {
  autocreate = AutoCleanSpam
  autocreate1 = Junk
  autocreate2 = Trash
  autocreate3 = Sent
  autocreate4 = Drafts
  autosubscribe = AutoCleanSpam
  autosubscribe1 = Junk
  autosubscribe2 = Trash
  autosubscribe3 = Sent
  autosubscribe4 = Drafts
  expire = AutoCleanSpam 1d
  expire_dict = proxy::expire
  sieve = /addons/sieve/%u.sieve
}
service pop3 {
  process_limit = 0
}
ssl_cert = </opt/csw/etc/ssl/certs/mail.pem
ssl_key = </opt/csw/ssl/priv/mail.key
syslog_facility = local2
userdb {
  args = /usr/dovecot/etc/sybldap.conf
  driver = ldap
}
verbose_proctitle = yes
protocol imap {
  log_path = /var/log/imap.log
  mail_plugin_dir = /usr/dovecotbeta/lib/dovecot
  mail_plugins = autocreate expire
}
protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  info_log_path = /var/log/deliver.log
  log_path = /var/log/deliver.log
  mail_plugin_dir = /usr/dovecotbeta/lib/dovecot
  mail_plugins = sieve autocreate expire
  postmaster_address = [email protected]
  sendmail_path = /opt/csw/sbin/sendmail
}

--
Burckhard Schmidt


Reply via email to