#mail_gid =
# Group to enable temporarily for privileged operations. Currently this is
-# used only for creating mbox dotlock files when creation fails for INBOX.
+# used only with INBOX when either its initial creation or dotlocking fails.
# Typically this is set to "mail" to give access to /var/mail.
#mail_privileged_group =
#include "ioloop.h"
#include "array.h"
#include "istream.h"
+#include "restrict-access.h"
#include "mkdir-parents.h"
#include "unlink-directory.h"
#include "home-expand.h"
/* make sure inbox file itself exists */
fd = open(inbox_path, O_RDWR | O_CREAT | O_EXCL, 0660);
+ if (fd == -1 && errno == EACCES) {
+ /* try again with increased privileges */
+ (void)restrict_access_use_priv_gid();
+ fd = open(inbox_path, O_RDWR | O_CREAT | O_EXCL, 0660);
+ restrict_access_drop_priv_gid();
+ }
if (fd != -1)
(void)close(fd);
else if (errno == ENOTDIR &&