Package: cyrus21-imapd Severity: wishlist Tags: patch
hi, cyrus does not support virtual domains, without adding every domain to "loginrealms" in imap.conf. Even if I do this, the username have to be unique over all domains. I have written a small patch to fix this problem. If applied this is needed in imapd.conf: virtdomains: yes robot101mode: yes I have now this setup running without problems so far. cu, Patrick -- System Information: Debian Release: 3.1 APT prefers unstable APT policy: (500, 'unstable'), (400, 'experimental') Architecture: i386 (i686) Kernel: Linux 2.6.8-1-686-smp Locale: LANG=C, LC_CTYPE=de_DE.ISO-8859-1 (charmap=ISO-8859-1)
--- cyrus21-imapd-2.1.18-orig/imap/imapd.c 2005-03-05 03:17:37.643470000 +0100 +++ cyrus21-imapd-2.1.18/imap/imapd.c 2005-03-05 03:39:39.440406509 +0100 @@ -316,6 +316,7 @@ struct propctx *propctx __attribute__((unused))) { const char *val; + const char *config_virtdomains; char *realm; /* check if remote realm */ @@ -331,11 +332,14 @@ while (*val && !isspace((int) *val)) val++; while (*val && isspace((int) *val)) val++; } - if (!*val) { + config_virtdomains = config_getstring("virtdomains",""); + if(strncasecmp(config_virtdomains,"yes",4)) { + if (!*val) { sasl_seterror(conn, 0, "cross-realm login %s denied", auth_identity); return SASL_BADAUTH; - } + } + } /* end virtdomains */ } imapd_authstate = auth_newstate(auth_identity, NULL); --- cyrus21-imapd-2.1.18-orig/imap/config.c 2005-03-05 03:17:37.000000000 +0100 +++ cyrus21-imapd-2.1.18/imap/config.c 2005-03-06 21:35:17.472774298 +0100 @@ -479,6 +479,7 @@ const char *val; struct auth_state *authstate; int userisadmin = 0; + const char *config_virtdomains; char *realm; if(!ctx) @@ -497,11 +498,14 @@ while (*val && !isspace((int) *val)) val++; while (*val && isspace((int) *val)) val++; } - if (!*val) { + config_virtdomains = config_getstring("virtdomains",""); + if(strncasecmp(config_virtdomains,"yes",4)) { + if (!*val) { sasl_seterror(conn, 0, "cross-realm login %s denied", auth_identity); return SASL_BADAUTH; - } + } + } /* end virtdomains */ } authstate = auth_newstate(auth_identity, NULL);