diff --git a/sieve/errors/address-errors.sieve b/sieve/errors/address-errors.sieve deleted file mode 100644 index fb4726f1d3e5634d81f0921a4e6af023b64a6315..0000000000000000000000000000000000000000 --- a/sieve/errors/address-errors.sieve +++ /dev/null @@ -1,58 +0,0 @@ -require "comparator-i;ascii-numeric"; - -if address :isnot :comparator "i;ascii-casemap" :localpart "From" "nico" { - discard; -} - -if address :is :comparator 45 :localpart "From" "nico" { - discard; -} - -if true :comparator "i;ascii-numeric" { - keep; -} - -if address :is :comparator "i;ascii-numeric" :localpart "From" 45 { - discard; -} - -if address :is :comparator "i;ascii-numeric" :localpart 45 "nico" { - discard; -} - -if address :is :comparator "i;ascii-numeric" :localpart "From" :tag { - discard; -} - -if address :is :comparator "i;ascii-numeric" :localpart "From" { - discard; -} - -if address :is :comparator "i;ascii-numeric" :localpart { - discard; -} - -if address :localpart :is :comparator "i;ascii-casemap" "from" ["frop", "frop"] { - discard; -} - -if address :localpart :hufter :is :comparator "i;ascii-casemap" "frop" ["frop", "frop"] { - discard; -} - -if address :is "frop" "frml" { - keep; -} - -if address :is "reply-to" "frml" { - keep; -} - -if address :is ["to", "frop"] "frml" { - keep; -} - -if address :is ["to", "reply-to"] "frml" { - keep; -} - diff --git a/sieve/errors/address-part-errors.sieve b/sieve/errors/address-part-errors.sieve deleted file mode 100644 index 9a49af08a122b2b6963c32d8af02dfc76f400135..0000000000000000000000000000000000000000 --- a/sieve/errors/address-part-errors.sieve +++ /dev/null @@ -1,10 +0,0 @@ -if address :all :comparator "i;octet" :domain "from" "STEPHAN" { - discard; - - if address :localpart :domain :comparator "i;octet" "from" "drunksnipers.com" { - keep; - } - stop; -} - -keep; diff --git a/sieve/errors/encoded-character.sieve b/sieve/errors/encoded-character.sieve deleted file mode 100644 index f8a7686df62a370a52e268a006c8b800a4f00f88..0000000000000000000000000000000000000000 --- a/sieve/errors/encoded-character.sieve +++ /dev/null @@ -1,5 +0,0 @@ -require "encoded-character"; -require "fileinto"; - -fileinto "INBOX.${unicode:200000}"; -fileinto "INBOX.${Unicode:DF01}"; diff --git a/sieve/errors/envelope-errors.sieve b/sieve/errors/envelope-errors.sieve deleted file mode 100644 index e5b7b1020657981bd25da9f3479befe39a715b3b..0000000000000000000000000000000000000000 --- a/sieve/errors/envelope-errors.sieve +++ /dev/null @@ -1,13 +0,0 @@ -require "envelope"; - -if envelope :is "to" "frop@rename-it.nl" { -} - -if envelope :is "frop" "frop@rename-it.nl" { -} - -if envelope :is ["to","from"] "frop@rename-it.nl" { -} - -if envelope :is ["to","frop"] "frop@rename-it.nl" { -} diff --git a/sieve/errors/header-errors.sieve b/sieve/errors/header-errors.sieve deleted file mode 100644 index ac6108ba131741a96fe3432239da621b7e5975bf..0000000000000000000000000000000000000000 --- a/sieve/errors/header-errors.sieve +++ /dev/null @@ -1,44 +0,0 @@ -require "comparator-i;ascii-numeric"; - -if header :isnot :comparator "i;ascii-casemap" "From" "nico" { - discard; -} - -if header :is :comparator 45 "From" "nico" { - discard; -} - -if header :all :comparator "i;ascii-numeric" { - keep; -} - -if header :is :comparator "i;ascii-numeric" "From" 45 { - discard; -} - -if header :is :comparator "i;ascii-numeric" 45 "nico" { - discard; -} - -if header :is :comparator "i;ascii-numeric" "From" :tag { - discard; -} - -if header :is :comparator "i;ascii-numeric" "From" { - discard; -} - -if header :is :comparator "i;ascii-numeric" { - discard; -} - -if header :is :comparator "i;ascii-casemap" "frop" ["frop", "frop"] { - discard; -} - -if header :hufter :is :comparator "i;ascii-casemap" "frop" ["frop", "frop"] { - discard; -} - -if header "frop" "frop" true { -} diff --git a/sieve/errors/if-errors.sieve b/sieve/errors/if-errors.sieve deleted file mode 100644 index 5aed28b65cce7f8fbd6a7b574d7d1232b43a225b..0000000000000000000000000000000000000000 --- a/sieve/errors/if-errors.sieve +++ /dev/null @@ -1,29 +0,0 @@ -if "frop" true; -if true; -if { - keep; -} -if ( false, false, true ) { - keep; -} -if [ "false", "false", "false" ] { - stop; -} -elsi; -elsif true { - keep; -} -elsif true { - keep; -} -if true { - keep; -} else { - stop; -} elsif { - stop; -} -stop; -else { - keep; -} diff --git a/sieve/errors/interesting.sieve b/sieve/errors/interesting.sieve deleted file mode 100644 index 2dd1f35f335eb1cda68ac0199666b9a030fd876d..0000000000000000000000000000000000000000 --- a/sieve/errors/interesting.sieve +++ /dev/null @@ -1,24 +0,0 @@ -require ["fileinto"]; -require ["copy", "relational"]; -require "envelope"; -require "regex"; - -va - -if header :is "To" "Stephan \"Nico\" Bosch <nico@voorbeeld.nl>" { - fileinto "INBOX.stephan"; -} elsif header :matches "To" "*@voorbeeld.nl" { - fileinto "INBOX.vestingbar"; -} - -if envelope :isnot :comperator "i;ascii-casemap" :localpart "From" "nico" { - discard; -} - -if :disabled true { - break; -} - -if header :comparator "i;octet" :is :comparator "i;ascii-casemap" { - frop; -} diff --git a/sieve/errors/keep-errors.sieve b/sieve/errors/keep-errors.sieve deleted file mode 100644 index 8353f14b6b40b9f8416c2fc2151f31be34f240ff..0000000000000000000000000000000000000000 --- a/sieve/errors/keep-errors.sieve +++ /dev/null @@ -1,16 +0,0 @@ -keep "frop"; -keep 13; -keep [ "frop", "frop" ]; -keep true; -keep true { - keep; -} -keep "frop" true { - keep; -} -keep "frop" :frop true { - keep; -} -keep { - keep; -} diff --git a/sieve/errors/parse-errors.sieve b/sieve/errors/parse-errors.sieve deleted file mode 100644 index 45af2c60e6c3de7b542b9202c71981424513619f..0000000000000000000000000000000000000000 --- a/sieve/errors/parse-errors.sieve +++ /dev/null @@ -1,65 +0,0 @@ -# -# Example Sieve Filter -# Declare any optional features or extension used by the script -# -require ["fileinto", "reject"]; - -# -# Reject any large messages (note that the four leading dots get -# "stuffed" to three) -# -if size :over 1M ^^ - { - reject text: -Please do not send me large attachments. -Put your file on a server and send me the URL. -Thank you. -.... Fred -. -; - stop; - } -# - -# Handle messages from known mailing lists -# Move messages from IETF filter discussion list to filter folder -# -if header :is "Sender" "owner-ietf-mta-filters@imc.org" - { - fileinto "filter"; # move to "filter" folder - } -# -# Keep all messages to or from people in my company -# -elsif address :domain :is ["From", "To" "example.com" - { - keep; # keep in "In" folder - } - -# -# Try and catch unsolicited email. If a message is not to me, -# or it contains a subject known to be spam, file it away. -# -elsif anyof (not address :all :contains - ["To", "Cc", "Bcc" "me@example.com", - header :matches "subject" - ["*make*money*fast*", "*university*dipl*mas*"]) - { - # If message header does not contain my address, - # it's from a list. - fileinto "spam"; # move to "spam" folder - } - else - { - # Move all other (non-company) mail to "personal" - # folder. - fileinto "personal"; - } - - -if { - -# 11111 -# dddd - -$$%% diff --git a/sieve/errors/require-errors.sieve b/sieve/errors/require-errors.sieve deleted file mode 100644 index 0fa4631862eca876dab5725a5788eb7a1c456704..0000000000000000000000000000000000000000 --- a/sieve/errors/require-errors.sieve +++ /dev/null @@ -1,20 +0,0 @@ -require "fileinto"; -require; -require "fileinto" "vacation"; -require 45; -require ["frop", "friep", "frml"]; - -require "dovecot.test" true; - -requir; -require "frop"; - -require "dovecot.test" { - keep; -} - -if true { - require "relional"; -} - -require "copy"; diff --git a/sieve/errors/size-errors.sieve b/sieve/errors/size-errors.sieve deleted file mode 100644 index 678dda18a2eec6e7ef9da9d0957ebc850c68136e..0000000000000000000000000000000000000000 --- a/sieve/errors/size-errors.sieve +++ /dev/null @@ -1,26 +0,0 @@ -size; - -if size { -} - -if size 45 { - discard; -} - -if size :over 34K { - stop; -} - -if size :under 34M { - stop; -} - -if size :under :over 34 { - keep; -} - -if size :over :over 45M { - if size 34M :over { - stop; - } -} diff --git a/sieve/errors/stop-errors.sieve b/sieve/errors/stop-errors.sieve deleted file mode 100644 index a2b43d76ddef18db75b8f4dd4fdb6184cdd0f1f0..0000000000000000000000000000000000000000 --- a/sieve/errors/stop-errors.sieve +++ /dev/null @@ -1,16 +0,0 @@ -stop "frop"; -stop 13; -stop [ "frop", "frop" ]; -stop true; -stop true { - stop; -} -stop "frop" true { - stop; -} -stop "frop" :frop true { - stop; -} -stop { - stop; -} diff --git a/sieve/errors/tag-errors.sieve b/sieve/errors/tag-errors.sieve deleted file mode 100644 index 34b2267e706f5ecaa3e95c9640060fa8aedad0c5..0000000000000000000000000000000000000000 --- a/sieve/errors/tag-errors.sieve +++ /dev/null @@ -1,41 +0,0 @@ -require "envelope"; - -if envelope :isnot :comparator "i;ascii-casemap" :localpart "From" "nico" { - discard; -} - -if envelope :is :comparator 45 :localpart "From" "nico" { - discard; -} - -if true :comparator "i;ascii-numeric" { - keep; -} - -if envelope :is :comparator "i;ascii-numeric" :localpart "From" 45 { - discard; -} - -if envelope :is :comparator "i;ascii-numeric" :localpart 45 "nico" { - discard; -} - -if envelope :is :comparator "i;ascii-numeric" :localpart "From" :tag { - discard; -} - -if envelope :is :comparator "i;ascii-numeric" :localpart "From" { - discard; -} - -if envelope :is :comparator "i;ascii-numeric" :localpart { - discard; -} - -if envelope :localpart :is :comparator "i;ascii-casemap" "frop" ["frop", "frop"] { - discard; -} - -if envelope :localpart :hufter :is :comparator "i;ascii-casemap" "frop" ["frop", "frop"] { - discard; -} diff --git a/tests/compile/errors.svtest b/tests/compile/errors.svtest index af68e17e808cd82f494a0d345720c0a5ce2ead29..024b41f20b99c99b154549d1bca2b3980c10a41a 100644 --- a/tests/compile/errors.svtest +++ b/tests/compile/errors.svtest @@ -284,3 +284,32 @@ test "Encoded-character errors (FIXME: count only)" { } } +/* + * Outgoing address errors + */ + +test "Outgoing address errors (FIXME: count only)" { + if test_compile "errors/out-address.sieve" { + test_fail "compile should have failed."; + } + + if not test_error :count "eq" :comparator "i;ascii-numeric" "13" { + test_fail "wrong number of errors reported"; + } +} + + +/* + * Tagged argument errors + */ + +test "Tagged argument errors (FIXME: count only)" { + if test_compile "errors/tag.sieve" { + test_fail "compile should have failed."; + } + + if not test_error :count "eq" :comparator "i;ascii-numeric" "3" { + test_fail "wrong number of errors reported"; + } +} + diff --git a/sieve/errors/out-address-errors.sieve b/tests/compile/errors/out-address.sieve similarity index 100% rename from sieve/errors/out-address-errors.sieve rename to tests/compile/errors/out-address.sieve diff --git a/tests/compile/errors/tag.sieve b/tests/compile/errors/tag.sieve new file mode 100644 index 0000000000000000000000000000000000000000..d285cf9c7dbfd25b614867c50f8c4b94cf5e0c6f --- /dev/null +++ b/tests/compile/errors/tag.sieve @@ -0,0 +1,16 @@ +/* + * Tag errors + * + * Total errors: 2 (+1 = 3) + */ + +# Unknown tag (1) +if envelope :isnot :comparator "i;ascii-casemap" :localpart "From" "nico" { + discard; +} + +# Spurious tag (1) +if true :comparator "i;ascii-numeric" { + keep; +} +