[PATCHv3 4/4] Make min/max VACACTION response configurable

Philipp Hahn hahn at univention.de
Tue May 8 02:52:18 EDT 2012


Add imapoptions to change the minimum and maximum allowed time interval
between consecutive vacation responses.
The defaults are still 3 and 90 days, which are too high for the
vacation-seconds extension. Blindly lowering the limit might be
problematic for high traffic sites.

Signed-off-by: Philipp Hahn <hahn at univention.de>
---
 lib/imapoptions |    8 ++++++++
 sieve/interp.c  |    6 ++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/lib/imapoptions b/lib/imapoptions
index f97be2d..a822819 100644
--- a/lib/imapoptions
+++ b/lib/imapoptions
@@ -1238,6 +1238,14 @@ product version in the capabilities */
 /* If enabled, timsieved will emit a capability response after a successful
    SASL authentication, per draft-martin-managesieve-12.txt . */
 
+{ "sieve_vacation_min_response", 259200 /* 3 days */, INT }
+/* Minimum time interval (in seconds) between consecutive vacation responses,
+   per draft-ietf-vacation-seconds.txt . */
+
+{ "sieve_vacation_max_response", 7776000 /* 90 days */, INT }
+/* Maximum time interval (in seconds) between consecutive vacation responses,
+   per draft-ietf-vacation-seconds.txt . */
+
 { "sievedir", "/usr/sieve", STRING }
 /* If sieveusehomedir is false, this directory is searched for Sieve
    scripts. */
diff --git a/sieve/interp.c b/sieve/interp.c
index bf1d067..31df7a7 100644
--- a/sieve/interp.c
+++ b/sieve/interp.c
@@ -259,8 +259,10 @@ int sieve_register_vacation(sieve_interp_t *interp, sieve_vacation_t *v)
 	return SIEVE_NOT_FINALIZED; /* we need envelope for vacation! */
     }
 
-    if (v->min_response == 0) v->min_response = 3 * DAY2SEC;
-    if (v->max_response == 0) v->max_response = 90 * DAY2SEC;
+    if (v->min_response == 0)
+	v->min_response = config_getint(IMAPOPT_SIEVE_VACATION_MIN_RESPONSE);
+    if (v->max_response == 0)
+	v->max_response = config_getint(IMAPOPT_SIEVE_VACATION_MAX_RESPONSE);
     if (v->min_response < 0 || v->max_response < 7 * DAY2SEC || !v->autorespond
 	|| !v->send_response) {
 	return SIEVE_FAIL;
-- 
1.7.1



More information about the Cyrus-devel mailing list