[Dovecot] mbox file too large error with deliver

Timo Sirainen tss at iki.fi
Mon Nov 24 19:21:36 EET 2008

On Mon, 2008-11-24 at 19:13 +0200, Gokdeniz Karadag wrote:
> >> > fatal: main.cf configuration error: mailbox_size_limit is smaller  
> >> > than message_size_limit
> >> >
> >> > A limit of 2147483648 - 1 worked fine.
> >> >
> >> > There are two distinct bugs probably, one in postfix and one in  
> >> > dovecot.
> > 
> > Postfix clearly is using signed 32bit integer here, which could be  
> > considered a bug. But why do you think there's a bug in Dovecot? Note  
> > that Dovecot never even sees this value. It's the kernel that enforces  
> > it, Dovecot simply reacts to a write() failure.
> The logs stating the "File too large" errors belong to dovecot's deliver
> process. While I was searching for a solution, I read that deliver honors
> mailbox_size_limit setting of postfix, I'm not sure if that is correct or not.

It's kind of correct, but not really. What happens is:

1. Postfix reads the mailbox_size_limit setting.

2. Based on the setting Postfix calls setrlimit(RLIMIT_FSIZE) function
to tell kernel the maximum file size for the process and child
processes. This is similar to running "ulimit -f mailbox_size_limit" on
shell before running deliver.

3. Postfix executes deliver. deliver is in no way aware of the
mailbox_size_limit setting or that there is any kind of a limit. It
simply tries to write to a file, which fails with EFBIG.

> If postfix sets file size limit with ulimit before execing deliver, OR uses a
> similar process which is out of deliver's control, then there is nothing
> concerning dovecot. If someone can clarify the issue I would be happy.

Yes, this is the case.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
Url : http://dovecot.org/pipermail/dovecot/attachments/20081124/499f7cde/attachment.bin 

More information about the dovecot mailing list