[Dovecot] 2.0.7 (0757f4f5b882): LMTP Server refuses queued mail
Stan Hoeppner
stan at hardwarefreak.com
Sun Nov 28 10:01:34 EET 2010
Thomas Leuxner put forth on 11/27/2010 11:56 PM:
> Am 27.11.2010 um 20:44 schrieb Timo Sirainen:
>
>> Nothing in Dovecot's log? Typically this should log an error.
>
> Nov 28 06:49:23 spectre postfix/qmgr[6175]: 4608E408C: from=<vzmaild at ft-ms-l1.serverloft.de>, size=307431, nrcpt=1 (queue active)
> Nov 28 06:49:23 spectre postfix/lmtp[18445]: 4608E408C: to=<tlx at leuxner.net>, relay=spectre.leuxner.net[private/dovecot-lmtp], delay=2360, delays=2360/0.01/0/0.01, dsn=4.3.0, status=deferred (host spectre.leuxner.net[private/dovecot-lmtp] said: 451 4.3.0 Temporary internal failure (in reply to end of DATA command))
>
> Another mail stuck. Just a hunch: Mails over 128k cause trouble…
http://www.dovecot.org/list/dovecot-cvs/2009-April/013190.html
Below, I believe, is the code generating the error. And it seems you're
absolutely right about the 128KB issue. It seems the lmtpd is trying to
append the mail to "/tmp/dovecot.lmtp." if the email is greater than
128KB. Is it possible the permissions you have on /tmp aren't
compatible with lmtpd?
static void client_input_data_handle(struct client *client)
@@ -353,7 +407,11 @@ static void client_input_data_handle(str
}
} else if (client->state.data_end_idx == DATA_DOT_NEXT_POS) {
/* saw a dot at the beginning of line. drop it. */
- client_input_add(client, data, i-1);
+ if (client_input_add(client, data, i-1) < 0) {
+ client_destroy(client, "451 4.3.0",
+ "Temporary internal failure");
+ return;
+ }
start = i;
client->state.data_end_idx = 0;
} else {
@@ -366,7 +424,11 @@ static void client_input_data_handle(str
rewind = client->state.data_end_idx - DATA_DOT_NEXT_POS + 1;
i -= rewind; size -= rewind;
}
- client_input_add(client, data + start, i-start);
+ if (client_input_add(client, data + start, i-start) < 0) {
+ client_destroy(client, "451 4.3.0",
+ "Temporary internal failure");
+ return;
+ }
i_stream_skip(client->input, skip == 0 ? i : skip);
if (i < size) {
--
Stan
More information about the dovecot
mailing list