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_limitA 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:
Postfix reads the mailbox_size_limit setting.
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.
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.