Pipe to PHP script using Sieve Extprograms
Stephan Bosch
stephan at rename-it.nl
Fri Apr 21 19:43:38 EEST 2017
Op 4/21/2017 om 6:08 PM schreef Thomas:
> Hello,
>
> I seem to be having some issues trying to setup a pipe to PHP scripts
> using Sieve Extprograms. I am trying to allow each individual mailbox
> to setup its own PHP pipe rules (in other words, each user should be
> able to pipe incoming emails to a user defined PHP script).
>
> I have the following lines in my main Sieve configuration file
> (/etc/dovecot/conf.d/90-sieve.conf):
>
> sieve_extensions = +vnd.dovecot.pipe
> sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.execute
> sieve_plugins = sieve_extprograms
>
I don't see these settings in your dovecot -n output below.
>
> I have configured a Sieve service that looks like this
> (/etc/dovecot/conf.d/90-sieve-extprograms.conf):
>
> service php {
> # Define the executed script as parameter to the sieve service
> executable = /var/run/dovecot/sieve-pipe/php.sh
>
> # Use some unprivileged user for executing the program
> user = dovenull
>
> # The unix socket located in the sieve_pipe_socket_dir (as
> defined in the
> # plugin {} section above)
> unix_listener sieve-pipe/php {
> # LDA/LMTP must have access
> user = vmail
> mode = 0600
> }
> }
>
>
>
> Contents of /var/run/dovecot/sieve-pipe/php.sh:
>
> #!/usr/bin/php
>
>
>
> Sieve script for one of my mailboxes:
>
> require ["fileinto", "regex", "date", "relational", "vacation"];
> require ["mailbox", "imap4flags", "vnd.dovecot.pipe"];
>
> # Move spam to spam folder
> if header :contains "X-Spam-Flag" "YES" {
> fileinto "Junk";
> # Stop here so that we do not reply on spams
> stop;
> }
>
> pipe :try "php /var/www/web2/piping.php support at example.com"
>
> keep;
>
>
>
> This results however in the following error in my log file:
>
> main script: line 5: error: require command: unknown Sieve
> capability `vnd.dovecot.pipe'.
> main script: line 14: error: unknown command 'pipe' (only reported
> once at first occurence).
> main script: error: validation failed.
>
>
> I am also not quite confident I have set this up correctly. Am I
> heading in the right direction for what I am trying to achieve?
>
> Dovecot version: 2.2.10
>
> dovecot -n:
>
> # 2.2.10: /etc/dovecot/dovecot.conf
> # OS: Linux 3.10.0-514.16.1.el7.x86_64 x86_64 CentOS Linux release
> 7.3.1611 (Core)
> auth_mechanisms = plain login
> disable_plaintext_auth = no
> listen = *,[::]
> log_timestamp = "%Y-%m-%d %H:%M:%S "
> mail_plugins = " quota"
> mail_privileged_group = vmail
> 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 ihave
> passdb {
> args = /etc/dovecot-sql.conf
> driver = sql
> }
> plugin {
> quota = dict:user::file:/var/vmail/%d/%n/.quotausage
> sieve = /var/vmail/%d/%n/.sieve
> }
> protocols = imap pop3
> service auth {
> unix_listener /var/spool/postfix/private/auth {
> group = postfix
> mode = 0660
> user = postfix
> }
> unix_listener auth-userdb {
> group = vmail
> mode = 0600
> user = vmail
> }
> user = root
> }
> service imap-login {
> client_limit = 1000
> process_limit = 500
> }
> service lmtp {
> unix_listener /var/spool/postfix/private/dovecot-lmtp {
> group = postfix
> mode = 0600
> user = postfix
> }
> }
> ssl_cert = </etc/postfix/smtpd.cert
> ssl_key = </etc/postfix/smtpd.key
> ssl_protocols = !SSLv2 !SSLv3
> userdb {
> driver = prefetch
> }
> userdb {
> args = /etc/dovecot-sql.conf
> driver = sql
> }
> protocol imap {
> mail_plugins = quota imap_quota
> }
> protocol pop3 {
> mail_plugins = quota
> pop3_uidl_format = %08Xu%08Xv
> }
> protocol lda {
> mail_plugins = sieve quota
> postmaster_address = root at localhost
> }
> protocol lmtp {
> mail_plugins = quota sieve
> postmaster_address = webmaster at localhost
> }
More information about the dovecot
mailing list