--- cyrus-imapd-2.3.16/imap/global.c.orig 2009-10-13 17:10:36.000000000 +0200 +++ cyrus-imapd-2.3.16/imap/global.c 2010-04-12 10:38:05.000000000 +0200 @@ -542,14 +542,22 @@ int access_ok(const char *user, const char *service, char *msgbuf, int size) { static char *fname = NULL; + static int nodb = 0; struct db *db = NULL; int r, ret = 1; /* access always granted by default */ + if (nodb) return ret; + if (!fname) { + struct stat s; /* create path to database */ fname = xmalloc(strlen(config_dir) + sizeof(FNAME_USERDENYDB) + 1); strcpy(fname, config_dir); strcat(fname, FNAME_USERDENYDB); + if (stat(fname, &s) == -1 && errno==ENOENT) { + nodb = 1; + return ret; + } } /* try to open database */ @@ -566,7 +574,7 @@ const char *data = NULL; int datalen; - syslog(LOG_DEBUG, "fetching user_deny.db entry for '%s'", user); + /* syslog(LOG_DEBUG, "fetching user_deny.db entry for '%s'", user); */ do { r = DENYDB->fetch(db, user, strlen(user), &data, &datalen, NULL); } while (r == CYRUSDB_AGAIN);