Zeeshan Muhammad
2016-Jun-07 09:52 UTC
Potential bug report: Cannot use ":args" option via Pigeonhole Sieve pipe plugin
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" "test at 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 = postmaster at example.com
}
protocol imap {
mail_plugins = " fts fts_lucene imap_zlib"
}
Zeeshan Muhammad
2016-Jun-07 10:16 UTC
Potential bug report: Cannot use ":args" option via Pigeonhole Sieve pipe plugin
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. On 7 June 2016 at 10:52, Zeeshan Muhammad <zeeshan.muhammad at 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" "test at 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 = postmaster at example.com > } > protocol imap { > mail_plugins = " fts fts_lucene imap_zlib" > } >
Stephan Bosch
2016-Jun-13 16:54 UTC
Potential bug report: Cannot use ":args" option via Pigeonhole Sieve pipe plugin
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.muhammad at 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" "test at 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 = postmaster at example.com >> } >> protocol imap { >> mail_plugins = " fts fts_lucene imap_zlib" >> } >>