| | |
| | | include '../lib/rcube_sieve_script.php'; |
| | | |
| | | $txt = ' |
| | | require ["fileinto","vacation","reject","relational","comparator-i;ascii-numeric","imapflags"]; |
| | | require ["fileinto","reject","envelope"]; |
| | | # rule:[spam] |
| | | if anyof (header :contains "X-DSPAM-Result" "Spam") |
| | | { |
| | |
| | | stop; |
| | | } |
| | | # rule:[test1] |
| | | if anyof (header :contains ["From","To"] "test@domain.tld") |
| | | if anyof (header :comparator "i;ascii-casemap" :contains ["From","To"] "test@domain.tld") |
| | | { |
| | | discard; |
| | | stop; |
| | | } |
| | | # rule:[test2] |
| | | if anyof (not header :contains ["Subject"] "[test]", header :contains "Subject" "[test2]") |
| | | if anyof (not header :comparator "i;octet" :contains ["Subject"] "[test]", header :contains "Subject" "[test2]") |
| | | { |
| | | fileinto "test"; |
| | | stop; |
| | | } |
| | | # rule:[test-vacation] |
| | | if anyof (header :contains "Subject" "vacation") |
| | | { |
| | | vacation :days 1 text: |
| | | # test |
| | | test test /* test */ |
| | | test |
| | | . |
| | | ; |
| | | stop; |
| | | } |
| | | # rule:[comments] |
| | |
| | | if size :over 5000K { |
| | | reject "Message over 5MB size limit. Please contact me before sending this."; |
| | | } |
| | | # rule:[redirect] |
| | | if header :value "ge" :comparator "i;ascii-numeric" |
| | | ["X-Spam-score"] ["14"] {redirect "test@test.tld";} |
| | | # rule:[imapflags] |
| | | if header :matches "Subject" "^Test$" { |
| | | setflag "\\\\Seen"; |
| | | addflag ["\\\\Answered","\\\\Deleted"]; |
| | | # rule:[false] |
| | | if false # size :over 5000K |
| | | { |
| | | stop; /* rule disabled */ |
| | | } |
| | | # rule:[true] |
| | | if true |
| | | { |
| | | stop; |
| | | } |
| | | fileinto "Test"; |
| | | # rule:[address test] |
| | | if address :all :is "From" "nagios@domain.tld" |
| | | { |
| | | fileinto "domain.tld"; |
| | | stop; |
| | | } |
| | | # rule:[envelope test] |
| | | if envelope :domain :is "From" "domain.tld" |
| | | { |
| | | fileinto "domain.tld"; |
| | | stop; |
| | | } |
| | | '; |
| | | |
| | | $s = new rcube_sieve_script($txt); |
| | | echo $s->as_text(); |
| | | |
| | | // ------------------------------------------------------------------------------- |
| | | ?> |
| | | --EXPECT-- |
| | | require ["fileinto","vacation","reject","relational","comparator-i;ascii-numeric","imapflags"]; |
| | | require ["fileinto","reject","envelope"]; |
| | | # rule:[spam] |
| | | if header :contains "X-DSPAM-Result" "Spam" |
| | | { |
| | |
| | | stop; |
| | | } |
| | | # rule:[test2] |
| | | if anyof (not header :contains "Subject" "[test]", header :contains "Subject" "[test2]") |
| | | if anyof (not header :comparator "i;octet" :contains "Subject" "[test]", header :contains "Subject" "[test2]") |
| | | { |
| | | fileinto "test"; |
| | | stop; |
| | | } |
| | | # rule:[test-vacation] |
| | | if header :contains "Subject" "vacation" |
| | | { |
| | | vacation :days 1 text: |
| | | # test |
| | | test test /* test */ |
| | | test |
| | | . |
| | | ; |
| | | stop; |
| | | } |
| | | # rule:[comments] |
| | |
| | | { |
| | | reject "Message over 5MB size limit. Please contact me before sending this."; |
| | | } |
| | | # rule:[redirect] |
| | | if header :value "ge" :comparator "i;ascii-numeric" "X-Spam-score" "14" |
| | | # rule:[false] |
| | | if false # size :over 5000K |
| | | { |
| | | redirect "test@test.tld"; |
| | | stop; |
| | | } |
| | | # rule:[imapflags] |
| | | if header :matches "Subject" "^Test$" |
| | | # rule:[true] |
| | | if true |
| | | { |
| | | setflag "\\Seen"; |
| | | addflag ["\\Answered","\\Deleted"]; |
| | | stop; |
| | | } |
| | | fileinto "Test"; |
| | | # rule:[address test] |
| | | if address :all :is "From" "nagios@domain.tld" |
| | | { |
| | | fileinto "domain.tld"; |
| | | stop; |
| | | } |
| | | # rule:[envelope test] |
| | | if envelope :domain :is "From" "domain.tld" |
| | | { |
| | | fileinto "domain.tld"; |
| | | stop; |
| | | } |