require "vnd.stalwart.testsuite"; require "envelope"; require "vacation"; test_set "message" text: From: sirius@example.com To: sirius@example.com Cc: stephan@example.com Subject: Frop! Frop! . ; /* * No reply to own address */ test_set "envelope.from" "stephan@example.com"; test_set "envelope.to" "stephan@example.com"; test "No reply to own address" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if test_message :smtp 0 { test_fail "vacation not supposed to send message"; } } /* * No reply to alternative address */ test_result_reset; test_set "envelope.from" "sirius@example.com"; test_set "envelope.to" "stephan@example.com"; test "No reply to alternative address" { vacation :addresses "sirius@example.com" "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if test_message :smtp 0 { test_fail "vacation not supposed to send message"; } } /* * No reply to mailing list */ test_result_reset; test_set "message" text: From: timo@example.com To: dovecot@lists.example.com List-ID: Subject: Frop! Frop! . ; test_set "envelope.from" ""; test_set "envelope.to" "dovecot@lists.example.com"; test "No reply to mailing list" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if test_message :smtp 0 { test_fail "vacation not supposed to send message"; } } /* * No reply to bulk mail */ test_result_reset; test_set "message" text: From: spam@example.com To: stephan@example.com Precedence: bulk Subject: Frop! Frop! . ; test_set "envelope.from" "spam@example.com"; test_set "envelope.to" "stephan@example.com"; test "No reply to bulk mail" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if test_message :smtp 0 { test_fail "vacation not supposed to send message"; } } /* * No reply to auto-submitted mail */ test_result_reset; test_set "message" text: From: spam@example.com To: stephan@example.com Auto-submitted: yes Subject: Frop! Frop! . ; test_set "envelope.from" "spam@example.com"; test_set "envelope.to" "stephan@example.com"; test "No reply to auto-submitted mail" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if test_message :smtp 0 { test_fail "vacation not supposed to send message"; } } /* * No reply to Microsoft X-Auto-Response-Suppress - All */ test_result_reset; test_set "message" text: From: spam@example.com To: stephan@example.com X-Auto-Response-Suppress: All Subject: Frop! Frop! . ; test_set "envelope.from" "spam@example.com"; test_set "envelope.to" "stephan@example.com"; test "No reply to Microsoft X-Auto-Response-Suppress - All" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if test_message :smtp 0 { test_fail "vacation not supposed to send message"; } } /* * No reply to Microsoft X-Auto-Response-Suppress - OOF */ test_result_reset; test_set "message" text: From: spam@example.com To: stephan@example.com X-Auto-Response-Suppress: OOF Subject: Frop! Frop! . ; test_set "envelope.from" "spam@example.com"; test_set "envelope.to" "stephan@example.com"; test "No reply to Microsoft X-Auto-Response-Suppress - OOF" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if test_message :smtp 0 { test_fail "vacation not supposed to send message"; } } /* * No reply to Microsoft X-Auto-Response-Suppress - DR,OOF,RN */ test_result_reset; test_set "message" text: From: spam@example.com To: stephan@example.com X-Auto-Response-Suppress: DR, OOF, RN Subject: Frop! Frop! . ; test_set "envelope.from" "spam@example.com"; test_set "envelope.to" "stephan@example.com"; test "No reply to Microsoft X-Auto-Response-Suppress - DR,OOF,RN" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if test_message :smtp 0 { test_fail "vacation not supposed to send message"; } } /* * No reply to system address */ test_result_reset; test_set "message" text: From: dovecot@lists.example.com To: stephan@example.com Subject: Frop! Frop! . ; test_set "envelope.from" "dovecot-request@lists.example.com"; test_set "envelope.to" "stephan@example.com"; test "No reply to system address" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if test_message :smtp 0 { test_fail "vacation not supposed to send message"; } } /* * No reply to implicitly delivered message */ test_result_reset; test_set "message" text: From: timo@example.com To: all@example.com Subject: Frop! Frop! . ; test_set "envelope.from" "timo@example.com"; test_set "envelope.to" "stephan@example.com"; test_config_set "sieve_user_email" "jason@example.com"; test_config_reload; test "No reply for implicitly delivered message" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if test_message :smtp 0 { test_fail "vacation not supposed to send message"; } } /* * No reply to original recipient */ test_result_reset; test_set "message" text: From: timo@example.com To: all@example.com Subject: Frop! Frop! . ; test_set "envelope.from" "timo@example.com"; test_set "envelope.to" "stephan@example.com"; test_set "envelope.orcpt" "all@example.com"; test "No reply for original recipient" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if test_message :smtp 0 { test_fail "vacation not supposed to send message"; } } /* * Reply for normal mail */ test_result_reset; test_set "message" text: From: timo@example.com To: stephan@example.com Subject: Frop! Auto-submitted: no Precedence: normal X-Auto-Response-Suppress: None Frop! . ; test_set "envelope.from" "timo@example.com"; test_set "envelope.to" "stephan@example.com"; test "Reply for normal mail" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if not test_message :smtp 0 { test_fail "vacation did not reply"; } } /* * Reply for :addresses */ test_result_reset; test_set "message" text: From: timo@example.com To: all@example.com Subject: Frop! Frop! . ; test_set "envelope.from" "timo@example.com"; test_set "envelope.to" "stephan@example.com"; test "Reply for :addresses" { vacation :addresses "all@example.com" "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if not test_message :smtp 0 { test_fail "vacation did not reply"; } } /* * Reply for :addresses (case sensitivity) */ test_result_reset; test_set "message" text: From: timo@example.com To: Stephan.Bosch@example.com Subject: Frop! Frop! . ; test_set "envelope.from" "timo@example.com"; test_set "envelope.to" "stephan@example.com"; test "Reply for :addresses (case sensitivity)" { vacation :addresses "stephan.bosch@example.com" "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if not test_message :smtp 0 { test_fail "vacation did not reply"; } } /* * Reply for original recipient */ test_result_reset; test_set "message" text: From: timo@example.com To: all@example.com Subject: Frop! Frop! . ; test_set "envelope.from" "timo@example.com"; test_set "envelope.to" "stephan@example.com"; test_set "envelope.orcpt" "all@example.com"; test_config_set "sieve_vacation_use_original_recipient" "yes"; test_config_reload :extension "vacation"; test "Reply for original recipient" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if not test_message :smtp 0 { test_fail "vacation did not reply"; } } /* * Reply for user's explicitly configured email address */ test_result_reset; test_set "message" text: From: timo@example.com To: user@example.com Subject: Frop! Frop! . ; test_set "envelope.from" "timo@example.com"; test_set "envelope.to" "jibberish@example.com"; test_set "envelope.orcpt" "even-more-jibberish@example.com"; test_config_set "sieve_user_email" "user@example.com"; test_config_reload; test "Reply for user's explicitly configured email address" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if not test_message :smtp 0 { test_fail "vacation did not reply"; } test_set "message" :smtp 0; if not address "from" "user@example.com" { test_fail "mail not sent from user's email address"; } } /* * Reply for any recipient */ test_result_reset; test_set "message" text: From: timo@example.com To: stephan@example.com Subject: Frop! Frop! . ; test_set "envelope.from" "timo@example.com"; test_set "envelope.to" "stephan@example.com"; test "Reply if not duplicated" { vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if not test_message :smtp 0 { test_fail "vacation did not reply"; } test_result_reset; if test_message :smtp 0 { test_fail "check failed"; } test_config_set "sieve_duplicated_id" "_vtimo@example.comI am gone"; vacation "I am gone"; if not test_result_execute { test_fail "failed to execute vacation"; } if test_message :smtp 0 { test_fail "vacation not supposed to send message"; } }