/dev/rob0 wrote:
[...]
Or am I misunderstanding, and does Postfix (or procmail, which is typically used as Postfix' local delivery agent) have explicit quota handling that I've been overlooking?
First, one thing you are wrong about is that Postfix typically does not use procmail. Postfix includes its own LDA, local(8). Distributors can do what they will, and they might set it up to use procmail, but if you install Postfix from source, the default LDA is local(8).
I did not claim procmail to be the default delivery agent for Postfix; I called it the typical delivery agent, since most Postfix installations I've seen (and I've seen quite a few) use procmail as the LDA.
Either way, it doesn't matter. Both don't bother with any quota support; they just write stuff and handle write failures soundly, in a generic way.
Perhaps you mean to say that a write error occurs upon hitting hard quota, or upon exceeding the grace period after a soft quotum has been surpassed, and that the local delivery agent seems to handle this gracefully.
I don't use quota, but here's my understanding of the sequence:
- Mail arrives for valid user "packrat", who happens to be over quota.
- Postfix accepts and queues the mail (as user "postfix".)
- Postfix passes to MDA/LDA. That write would be as user "packrat", who, per above, is over quota. FS write fails.
- Postfix generates a bounce for the envelope sender.
If "packrat" is not quite to the quota, say, 1MB below it, and gets a 2MB mail, that would bounce. But a later 2KB mail would be delivered, and so on, until the quota is reached.
That is exactly what happens. Recipients get bounces. The reason of delivery failure that is reported, though, may not necessarily make much sense.
What does *not* happen, is that Postfix checks for sufficient storage quota before delivery before the delivery attempt. The author I responded to, though, wrote "When people have hit their quota [..] Postfix simply refuses the message." Now what I tried to write, and what you seem to be confirming, is that this is not what happens. Postfix doesn't refuse the message, it accepts it, passes it on to local delivery -- and then hits quota-induced I/O errors.