diff --git a/src/lib-sieve/ext-reject.c b/src/lib-sieve/ext-reject.c index 22dd0c410dfb141fd49a2ec6c0c646182fdb60bc..9519f4118dae397ff4d442695e0adeed02dcfdae 100644 --- a/src/lib-sieve/ext-reject.c +++ b/src/lib-sieve/ext-reject.c @@ -488,6 +488,12 @@ static int act_reject_commit sender = sieve_message_get_sender(aenv->msgctx); recipient = sieve_message_get_orig_recipient(aenv->msgctx); + if ((aenv->flags & SIEVE_EXECUTE_FLAG_SKIP_RESPONSES) != 0) { + sieve_result_global_log(aenv, + "not sending reject message (skipped)"); + return SIEVE_EXEC_OK; + } + if ( smtp_address_isnull(recipient) ) { sieve_result_global_warning(aenv, "reject action aborted: envelope recipient is <>"); diff --git a/src/lib-sieve/plugins/vacation/cmd-vacation.c b/src/lib-sieve/plugins/vacation/cmd-vacation.c index 501296ce8ea615fa1be6d6d74c03c1ea00783d05..048bc61b3df8f0b8c3289c77abe00fa5881a0cd0 100644 --- a/src/lib-sieve/plugins/vacation/cmd-vacation.c +++ b/src/lib-sieve/plugins/vacation/cmd-vacation.c @@ -1127,6 +1127,12 @@ static int act_vacation_commit const char *const *hdsp, *const *headers; int ret; + if ((aenv->flags & SIEVE_EXECUTE_FLAG_SKIP_RESPONSES) != 0) { + sieve_result_global_log(aenv, + "not sending vacation reply (skipped)"); + return SIEVE_EXEC_OK; + } + sender = sieve_message_get_sender(aenv->msgctx); recipient = sieve_message_get_final_recipient(aenv->msgctx); diff --git a/src/lib-sieve/sieve-types.h b/src/lib-sieve/sieve-types.h index b5cbbf4d1041fee991706e277b4d117b549d7c2f..05514b9472d2aa853d7815502426e38ee8adbd6c 100644 --- a/src/lib-sieve/sieve-types.h +++ b/src/lib-sieve/sieve-types.h @@ -155,7 +155,9 @@ enum sieve_execute_flags { /* Do not execute (implicit keep) at the end */ SIEVE_EXECUTE_FLAG_DEFER_KEEP = (1<<1), /* There is no envelope */ - SIEVE_EXECUTE_FLAG_NO_ENVELOPE = (1<<2) + SIEVE_EXECUTE_FLAG_NO_ENVELOPE = (1<<2), + /* Skip sending responses */ + SIEVE_EXECUTE_FLAG_SKIP_RESPONSES = (1<<3), }; /*