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" >> } >>