sieve plugin editheader not found

Eugene Paskevich eugene at raptor.kiev.ua
Wed Apr 8 15:26:53 UTC 2015


On 04/08/2015 05:53 PM, Patrick Lion wrote:
> Hey folks,
>
> ive already made a bug report in the gentoo bugtracker last year. In the
> meantime after some releases the error persists with the current dovecot
> and pigeonhole versions.
>
> Please see my bug report at gentoo mailinglist:
>
> https://bugs.gentoo.org/show_bug.cgi?id=522148
>
> Okay, here are some informations:
>
> Steps to Reproduce:
>
> add "editheader" to sieve options or "sievec" a file that need the extension
>
> if header :matches "Something" "*" {
> addheader "Anything" "${1}";
> deleteheader "Something";
> }
>
> sievec mod_header.sieve
> sievec(root): Fatal: Plugin 'editheader' not found from directory
> /usr/lib64/dovecot/sieve
>
>
>
> dovecot --version
> 2.2.16
>
> pigeonhole-0.4.7 sources got downloaded and used in the build process
>
> dovecot -n
>
> # 2.2.16: /etc/dovecot/dovecot.conf
> # Pigeonhole version 0.4.7
> # OS: Linux 2.6.32-openvz-042stab102.9-amd64 x86_64 Gentoo Base System
> release 2.2
> auth_mechanisms = plain login
> auth_socket_path = /var/run/dovecot/auth-userdb
> auth_verbose = yes
> dict {
>    quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
> }
> disable_plaintext_auth = no
> imap_capability = CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE IDLE SORT
> SORT=DISPLAY THREAD=REFERENCES THREAD=ORDEREDSUBJECT CHILDREN NAMESPACE
> UIDPLUS LIST-EXTENDED CONTEXT=SEARCH LIST-STATUS SPECIAL-USE XLIST QUOTA
> info_log_path = syslog
> login_log_format_elements = user=<%u> method=%m ip=%r mpid=%e
> mail_location = maildir:%h/.maildir
> mail_plugins = quota
> managesieve_notify_capability = mailto
> managesieve_sieve_capability = fileinto reject envelope encoded-character
> vacation subaddress comparator-i;ascii-numeric relational regex imap4flags
> copy include body enotify environment mailbox date index ihave duplicate
> imapflags notify
> namespace compat {
>    alias_for =
>    hidden = yes
>    inbox = no
>    list = no
>    location =
>    prefix = INBOX.
>    separator = .
> }
> 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 Trash {
>      special_use = \Trash
>    }
>    prefix =
>    separator = /
> }
> passdb {
>    args = /etc/dovecot/dovecot-sql.conf.ext
>    driver = sql
> }
> plugin {
>    args = /etc/dovecot/dovecot-sql.conf.ext
>    quota = maildir
>    quota_rule2 = trash:storage=+150M
>    quota_warning = storage=95%% quota-warning 95 %u
>    quota_warning2 = storage=80%% quota-warning 80 %u
>    sieve = ~/.dovecot.sieve
>    sieve_dir = ~/sieve
>    sieve_extensions = +notify +imapflags
>    sieve_global_extensions = variables
> }
> postmaster_address = mailer-daemon at dev.someserver
> service auth {
>    unix_listener /var/spool/postfix/private/auth {
>      group = mail
>      mode = 0660
>      user = postfix
>    }
>    unix_listener auth-userdb {
>      group = mail
>      mode = 0660
>      user = postfix
>    }
> }
> service lmtp {
>    unix_listener /var/spool/postfix/private/dovecot-lmtp {
>      group = postfix
>      mode = 0660
>      user = postfix
>    }
> }
> service quota-warning {
>    executable = script /etc/postfix/quota-warning.sh
>    unix_listener quota-warning {
>      group = hosting
>      mode = 0660
>      user = postfix
>    }
>    user = postfix
> }
> ssl_cert = </etc/ssl/dovecot/server.pem
> ssl_key = </etc/ssl/dovecot/server.key
> userdb {
>    args = /etc/dovecot/dovecot-sql.conf.ext
>    driver = sql
> }
> protocol lda {
>    mail_plugins = quota sieve
>    postmaster_address = mailer-daemon at dev.someserver
> }
> protocol imap {
>    mail_plugins = quota imap_quota
> }
> protocol pop3 {
>    mail_plugins = quota
> }
> protocol lmtp {
>    hostname = dev.someserver
>    mail_plugins = quota sieve
>    postmaster_address = postmaster at dev.someserver
> }
>
>
> Please let me know if you need any additional informations, build logs (
> log from 2.213 attached at bugs.gentoo.org ) or whatever may be helpful to
> track this down.

I'm not using gentoo, but here on Debian everything works as expected.

eugene at hopper[pts/4]:~> locate editheader
/usr/share/doc/dovecot-core/sieve/extensions/editheader.txt

That is a txt version of
http://wiki2.dovecot.org/Pigeonhole/Sieve/Extensions/Editheader

eugene at hopper[pts/4]:~> doveconf -a | grep sieve
   sieve = ~/.sieve/.current
   sieve_dir = ~/.sieve
   sieve_global_dir = /etc/dovecot/sieve
   mail_plugins = " sieve

eugene at hopper[pts/4]:~> cat test.sieve
require ["editheader"];

if header :matches "Something" "*" {
addheader "Anything" "${1}";
deleteheader "Something";
}


Notice that require line.

eugene at hopper[pts/4]:~> sievec -d -x +editheader test.sieve -

* Script metadata (block: 0):

class = file
class.version = 0
location = /home/eugene/test.sieve

* Required extensions (block: 1):

   0: editheader (id: 30)

* Main program (block: 2):

Address   Line  Code
00000000:       DEBUG BLOCK: 3
00000001:       EXTENSIONS [1]:
00000002:         editheader
00000003:    3: HEADER
00000006:         match type: matches
00000009:         header names: STR[9] "Something"
00000015:         key list: STR[1] "*"
00000019:    3: JMPFALSE 39 [00000041]
0000001e:    4: addheader
00000020:         field-name: STR[8] "Anything"
0000002b:         value: STR[4] "${1}"
00000032:    5: DELETEHEADER
00000034:         field name: STR[9] "Something"
00000041:    5: [End of code]

-- 
Eugene Paskevich             |   *==)-----------   |     Plug me into
eugene at raptor.kiev.ua        |   -----------(==*   |      The Matrix


More information about the dovecot mailing list