<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<font size="2">Hi,<br>
</font><br>
<font size="2"><font size="2"><font size="2">Environment: Dovecot
2.3.18 running on CentOS 7, mdbox, LDAP users<br>
<br>
</font></font>I'm in the process of moving my mailboxes to NFS
and moving with lock and index files in temp storage following
instructions from
<a class="moz-txt-link-freetext" href="https://doc.dovecot.org/configuration_manual/nfs">https://doc.dovecot.org/configuration_manual/nfs</a>. <br>
<br>
I set mail_location as:<br>
</font>
<blockquote><font face="monospace">mail_location =
mdbox:/mailstore/%u/mail:VOLATILEDIR=/dev/shm/dovecot/%u:LISTINDEX=/dev/shm/dovecot/%u/dovecot.list.index</font><br>
</blockquote>
<font size="2"><font size="2">
</font>What I discovered is /dev/shm/dovecot is created by the
initial user who accesses their mail from a client, and with
permissions 700. This prevents subsequent users from creating
their own index and lock files.<br>
</font>
<blockquote>
<pre class="moz-quote-pre" wrap=""># ls -l /dev/shm/dovecot
total 0
drwx------ 2 mary users 60 Mar 25 10:00 mary
</pre>
</blockquote>
<font size="2"> Sample error message from maillog during mail
delivery and from a dsync script.</font>
<blockquote>
<pre class="moz-quote-pre" wrap="">
Mar 25 10:37:15 mailsrv1 dovecot: imap(doug)<19284><WKcX5gvbRe7AqFhA>: Error: mkdir(/dev/shm/dovecot/doug) failed: Permission denied (euid=1002(doug) egid=100(users) missing +x perm: /dev/shm/dovecot, dir owned by 97:100 mode=0700)
dsync(test): Error: mkdir(/dev/shm/dovecot/test) failed: Permission denied (euid=2003(test) egid=100(users) missing +x perm: /dev/shm/dovecot, dir owned by 97:100 mode=0700)
</pre>
</blockquote>
<font size="2">I couldn't locate documentation or discussions on how
to set the ownership or permissions for /dev/shm/dovecot in the
Dovecot configuration files. <br>
<br>
As a hack, I added this to /usr/libexec/dovecot/prestartscript. </font><font
size="4"><br>
</font>
<blockquote><font face="monospace">! [[ -d /dev/shm/dovecot ]]
&& mkdir /dev/shm/dovecot</font><br>
<font face="monospace">chown dovecot:users /dev/shm/dovecot</font><br>
<font face="monospace">chmod 770 /dev/shm/dovecot</font></blockquote>
<font size="2">This solved the problem, but left me wondering if I
missed something obvious or if I am setting myself up for a
problem later on, like with a Dovecot version upgrade. </font><font
size="2"><font size="2">I could run these commands at bootup out
of rc.local or a systemd script rather than customizing a
Dovecot provided script. <br>
<br>
Is there a appropriate way of doing this that I missed?</font><font
size="4"><br>
</font></font><font size="2"><br>
TIA,<br>
Doug<br>
</font>
</body>
</html>