Op 7-6-2016 om 12:16 schreef Zeeshan Muhammad:
It looks like pipe addon specification at
http://hg.rename-it.nl/pigeonhole-0.2-sieve-pipe/raw-file/tip/doc/rfc/spec-bosch-sieve-pipe.txt
notes ":args" usage is possible but the implementation source at
https://github.com/dovecot/pigeonhole/blob/master/src/plugins/sieve-extprograms/cmd-pipe.c
shows it was implemented as follows:

pipe "sieve-pipe-example" [ "first-arg", "second-arg" ];

My test sieve is now working, but I don't understand why I wasn't able to
use ":args" format noted in the specification document.

The wiki page states that the old pipe plugin is superseded by the extprograms plugin. So, this is the correct specification:

https://github.com/dovecot/pigeonhole/blob/master/doc/rfc/spec-bosch-sieve-extprograms.txt#L233

Regards,

Stephan.

On 7 June 2016 at 10:52, Zeeshan Muhammad <zeeshan.muham...@gmail.com>
wrote:

Hi all,

Following the instructions noted at
http://wiki2.dovecot.org/Pigeonhole/Sieve/Plugins/Pipe , I am trying to
make use of the Pigeonhole sieve pipe plugin to execute an application with
custom arguments via my test sieve script:

require ["vnd.dovecot.pipe"];
if address :is "to" "t...@example.com" {
   pipe :args [ "first-arg", "second-arg" ] "sieve-pipe-example";
}

I am editing my test sieve script via Mozilla Thunderbird v45.1.1 using
the Sieve email-client addon (v0.2.3h, see
https://github.com/thsmi/sieve#releases and
https://addons.mozilla.org/en-US/thunderbird/addon/sieve/ )

When I attempt to save the example sieve script above, I get the following
error returned by ManageSieve via Mozilla Thunderbird's Sieve addon:

"The script could not be saved:
Sieve mail filter: line 3: error: unknown tagged argument ':args' for the
pipe command (reported only once at first occurrence).
Sieve mail filter: error: validation failed."

I have setup sieve-pipe-example as follows in my 90-sieve.conf
configuration:

service sieve-pipe-script {
   executable = script /usr/bin/echo
   user = dovenull

   # socket name is program-name in Sieve
   unix_listener sieve-pipe-example {
   }
}

I cannot see where I am going wrong. I have combed through the
specification at
http://hg.rename-it.nl/dovecot-2.2-pigeonhole/raw-file/tip/doc/rfc/spec-bosch-sieve-extprograms.txt
as well as the official Dovecot/Pigeonhole wiki-pages and cannot find a
solution.

If I omit the :args option (and the arguments array), the sieve script
successfully gets accepted by ManageSieve.

Am I encountering a potential bug or am I doing something silly in my test
setup?

# Dovecot version: v2.2.24
# Pigeonhole version: v0.4.14
# Operating system: CentOS Linux release 7.2.1511 (Core)
# CPU architecture: x86_64

# Dovecot -n output (I have filtered my IP addresses and mail server's
FQDN):

# 2.2.24 (a82c823): /usr/local/etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.14 (099a97c)
# OS: Linux 3.10.0-327.18.2.el7.x86_64 x86_64 CentOS Linux release
7.2.1511 (Core)
auth_default_realm = example.com
base_dir = /var/run/dovecot/
default_login_user = vpopmail
first_valid_uid = 500
info_log_path = /dev/stderr
last_valid_uid = 500
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
log_path = /dev/stderr
mail_debug = yes
mail_location = maildir:~/Maildir
mail_max_userip_connections = 20
mail_plugins = " fts fts_lucene"
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character
vacation subaddress comparator-i;ascii-numeric relational regex imap4flags
copy include variables body enotify environment mailbox date index ihave
duplicate mime foreverypart extracttext editheader vnd.dovecot.pipe
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 =
}
passdb {
   driver = vpopmail
}
plugin {
   fts = lucene
   fts_autoindex = yes
   fts_lucene = whitespace_chars=@.
   sieve = file:~/sieve;active=~/.dovecot.sieve
   sieve_execute_socket_dir = sieve-execute
   sieve_extensions = +editheader +vnd.dovecot.pipe
   sieve_pipe_socket_dir = sieve-pipe
   sieve_plugins = sieve_extprograms
}
protocols = imap pop3 sieve
service auth {
   unix_listener auth-userdb {
     group = vchkpw
     mode = 0666
     user = vpopmail
   }
}
service imap-login {
   inet_listener imap {
     address = 127.0.0.1
     port = 143
     ssl = no
   }
   inet_listener imaps {
     address = 192.168.1.1
     port = 993
     ssl = yes
   }
}
service managesieve-login {
   inet_listener sieve {
     port = 4190
   }
}
service pop3-login {
   inet_listener pop3 {
     address = 127.0.0.1
     port = 110
     ssl = no
   }
   inet_listener pop3s {
     address = 192.168.1.1
     port = 995
     ssl = yes
   }
}
service sieve-pipe-script {
   executable = script /usr/bin/echo
   group = dovenull
   user = dovenull
}
ssl_cert = </etc/ssl/certs/example.com.crt
ssl_key = </etc/ssl/certs/example.com.key
ssl_protocols = !SSLv2 !SSLv3
userdb {
   driver = vpopmail
}
verbose_proctitle = yes
protocol lda {
   hostname = mail.example.com
   info_log_path = /var/log/dovecot/dovecot-lda.log
   log_path = /var/log/dovecot/dovecot-lda-errors.log
   mail_plugins = " fts fts_lucene sieve"
   postmaster_address = postmas...@example.com
}
protocol imap {
   mail_plugins = " fts fts_lucene imap_zlib"
}

Reply via email to