[Dovecot] Filtering with Public Namespaces and Sieve Plugin

Thomas Leuxner tlx at leuxner.net
Thu Jul 30 12:04:06 EEST 2009


Hi,

after upgrading to Dovecot 1.2x including the rewritten Sieve plugin replacing 'cmusieve', messages which have formerly been filed to a "Public/Mailing-List" maildir are no longer filtered correctly. The sieve script itself is included in the user's personal-script. The messages are dropped to the INBOX rather than the "Public Namespace Maildir". Log's don't give a hint (at least to me). The documentation says the personal script should automatically fetch the include, and compile it in the users home...

Debug log excerpt:
-----------------
>2009-07-30 10:44:09 deliver(xxxx): Info: Namespace: type=public, prefix=Public/, sep=/, inbox=no, hidden=no, list=yes, subscriptions=no
>2009-07-30 10:44:09 deliver(xxxx): Info: maildir: data=/var/vmail/public:CONTROL=~/maildir/public:INDEX=~/maildir/public
>2009-07-30 10:44:09 deliver(xxxx): Info: maildir++: root=/var/vmail/public, index=/var/vmail/leuxner.net/tlx/maildir/public, control=/var/vmail/leuxner.net/tlx/maildir/public, inbox=
>2009-07-30 10:44:09 deliver(xxxx): Info: sieve: using sieve path for user's script: /var/vmail/leuxner.net/tlx/.dovecot.sieve
>2009-07-30 10:44:09 deliver(xxxx): Info: sieve: opening script /var/vmail/leuxner.net/tlx/.dovecot.sieve
>2009-07-30 10:44:09 deliver(xxxx): Info: sieve: executing compiled script /var/vmail/leuxner.net/tlx/.dovecot.sieve
>2009-07-30 10:44:09 deliver(xxxx): Info: Namespace : Using permissions from /var/vmail/leuxner.net/tlx/maildir: mode=0750 gid=-1
>2009-07-30 10:44:09 deliver(xxxx): Info: sieve: msgid=<20090730084326.GP1111 at jeeves.jpl.local>: stored mail into mailbox 'INBOX'

Personal ".dovecot.sieve" script:
------------------------------
require ["include","copy","fileinto","vacation"];
include :global "global.sieve";

-- snip ---

Global script "global.sieve" excerpt:
------------------------------------
require ["copy","fileinto"];
#Newsletters / Mailinglists

if allof (address :is ["To","CC"] "dovecot at dovecot.org",
        header :contains "List-Id" "dovecot.dovecot.org")
        {
        fileinto "Public/Mailing-Lists.Dovecot";
        }
        elsif allof (address :is "To" "dovecot-news at dovecot.org",
        header :contains "List-Id" "dovecot-news.dovecot.org")
        {
        fileinto :copy "Public/Newsletters.Dovecot";
        }

Thanks
Thomas

$ dovecot -n
# 1.2.1: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.26-2-amd64 x86_64 Debian 5.0.2
log_path: /var/log/dovecot.log
info_log_path: /var/log/dovecot-info.log
log_timestamp: %Y-%m-%d %H:%M:%S
protocols: imap
listen: 188.138.0.199:143
ssl_cert_file: /etc/ssl/certs/spectre_leuxner_net_2009.crt
ssl_key_file: /etc/ssl/private/spectre_leuxner_net_2009.key
login_dir: /var/run/dovecot/login
login_executable: /usr/lib/dovecot/imap-login
mail_privileged_group: mail
mail_location: maildir:~/maildir
mail_debug: yes
maildir_copy_preserve_filename: yes
mail_plugins: acl quota imap_quota fts fts_squat
namespace:
  type: private
  separator: /
  inbox: yes
  list: yes
  subscriptions: yes
namespace:
  type: public
  separator: /
  prefix: Public/
  location: maildir:/var/vmail/public:CONTROL=~/maildir/public:INDEX=~/maildir/public
  list: yes
auth default:
  passdb:
    driver: passwd-file
    args: username_format=%u /var/vmail/%d/etc/passwd
  userdb:
    driver: passwd-file
    args: username_format=%u /var/vmail/%d/etc/passwd
  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
      group: vmail
plugin:
  acl: vfile:/var/vmail/%d/etc/acls:cache_secs=300
  quota: maildir:User quota
  quota_rule: *:storage=1GB
  quota_rule2: Trash:storage=10%%
  fts: squat
  fts_squat: partial=4 full=10
  sieve_global_dir: /var/vmail/%d/etc/sieve-scripts






More information about the dovecot mailing list