Defer email via LMTP when there is 'no space left on device' instead of rejecting it

Christian Rohmann crohmann at netcologne.de
Tue Jul 22 15:11:05 UTC 2014


Hello dovecot-users,

(This problem was being discussed a little in this thread from 2011:
 http://www.dovecot.org/list/dovecot/2011-May/059009.html)

I noticed (using LMTP) that Dovecot handles 'no space left on device'
just like an 'over-quota', if I read this part of method "static int
client_deliver(struct client *client, const struct mail_recipient *rcpt,
struct mail *src_mail, struct mail_deliver_session *session)"
"lmtp/commands.c" correctly:

--- cut ---
[...]
else if (storage != NULL) {
                error = mail_storage_get_last_error(storage, &mail_error);
                if (mail_error == MAIL_ERROR_NOSPACE) {
                        client_send_line(client, "%s <%s> %s",
                                         dctx.set->quota_full_tempfail ?
                                         "452 4.2.2" : "552 5.2.2",
                                         rcpt->address, error);
                } else {
                        client_send_line(client, "451 4.2.0 <%s> %s",
                                         rcpt->address, error);
                }
                ret = -1;
[...]
--- /cut ---


In consequence this means the configuration option quota_full_tempfail
is applied in both cases. But to me there is a major difference between
a full disk (a.k.a "admin fucked up") and over-quota (a.k.a. "user has
simply too much stuff in his mailbox"). So I would like to be able tell
Dovecot to reject messages due to full mailboxes, but simply defer those
that cannot be stored due to a full disk (which I am to blame for).

To me this should result in two separate configuration options for the
two problem root-causes:

 quota_full_tempfail
 storage_full_tempfail



Or did I simply miss or completely misunderstood anything here?



Regards

Christian


More information about the dovecot mailing list