diff -r 88a05f387743 doc/man/dovecot-lda.1.in --- a/doc/man/dovecot-lda.1.in Thu Sep 27 02:55:14 2012 +0300 +++ b/doc/man/dovecot-lda.1.in Thu Sep 27 11:04:56 2012 +0200 @@ -5,7 +5,7 @@ .\"------------------------------------------------------------------------ .SH SYNOPSIS .B dovecot\-lda -.RB [ \-ek ] +.RB [ \-eEk ] [\fB\-a\fP \fIaddress\fP] [\fB\-c\fP \fIconfig_file\fP] [\fB\-d\fP \fIusername\fP] @@ -61,6 +61,10 @@ The default is to send a rejection mail ourself. .\"------------------------------------- .TP +.B \-E +If mail delivery fails, don't try to do an emergency delivery attempt to INBOX. +.\"------------------------------------- +.TP .BI \-f\ envelope_sender Envelope sender address. .\"------------------------------------- diff -r 88a05f387743 src/lda/main.c --- a/src/lda/main.c Thu Sep 27 02:55:14 2012 +0300 +++ b/src/lda/main.c Thu Sep 27 11:04:56 2012 +0200 @@ -310,7 +310,7 @@ master_service = master_service_init("lda", MASTER_SERVICE_FLAG_STANDALONE | MASTER_SERVICE_FLAG_DONT_LOG_TO_STDERR, - &argc, &argv, "a:d:ef:km:p:r:"); + &argc, &argv, "a:d:eEf:km:p:r:"); memset(&ctx, 0, sizeof(ctx)); ctx.session = mail_deliver_session_init(); @@ -334,6 +334,9 @@ case 'e': stderr_rejection = TRUE; break; + case 'E': + ctx.suppress_emergency_delivery = TRUE; + break; case 'f': /* envelope sender address */ ctx.src_envelope_sender = diff -r 88a05f387743 src/lib-lda/mail-deliver.c --- a/src/lib-lda/mail-deliver.c Thu Sep 27 02:55:14 2012 +0300 +++ b/src/lib-lda/mail-deliver.c Thu Sep 27 11:04:56 2012 +0200 @@ -402,7 +402,7 @@ ret = mail_deliver_save(ctx, ctx->dest_mailbox_name, 0, NULL, storage_r); } - if (ret < 0 && strcasecmp(ctx->dest_mailbox_name, "INBOX") != 0) { + if (ret < 0 && !ctx->suppress_emergency_delivery && strcasecmp(ctx->dest_mailbox_name, "INBOX") != 0) { /* still didn't work. try once more to save it to INBOX. */ ret = mail_deliver_save(ctx, "INBOX", 0, NULL, storage_r); diff -r 88a05f387743 src/lib-lda/mail-deliver.h --- a/src/lib-lda/mail-deliver.h Thu Sep 27 02:55:14 2012 +0300 +++ b/src/lib-lda/mail-deliver.h Thu Sep 27 11:04:56 2012 +0200 @@ -49,6 +49,7 @@ struct var_expand_table *var_expand_table; bool tried_default_save; + bool suppress_emergency_delivery; bool saved_mail; bool save_dest_mail; /* Delivery failed because user is out of quota / disk space */