From: Stephan Bosch Date: Fri, 2 Nov 2018 09:39:17 +0000 (+0100) Subject: submission: relay backend: Forward a (possibly multi-line) 421 reply from relay serve... X-Git-Tag: 2.3.5~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=88b909cbf7988cbe29bb2aced1503db6d54387b8;p=thirdparty%2Fdovecot%2Fcore.git submission: relay backend: Forward a (possibly multi-line) 421 reply from relay server to the client. Before, it substituted a generic 421 error reply, which is far less helpful. --- diff --git a/src/submission/submission-backend-relay.c b/src/submission/submission-backend-relay.c index 505253a816..2e54d53d38 100644 --- a/src/submission/submission-backend-relay.c +++ b/src/submission/submission-backend-relay.c @@ -49,6 +49,7 @@ backend_relay_handle_relay_reply(struct submission_backend_relay *backend, struct smtp_reply *reply_r) { const char *enh_code, *msg, *log_msg = NULL; + const char *const *reply_lines; bool result = TRUE; *reply_r = *reply; @@ -64,6 +65,13 @@ backend_relay_handle_relay_reply(struct submission_backend_relay *backend, result = FALSE; break; case SMTP_CLIENT_COMMAND_ERROR_CONNECTION_CLOSED: + enh_code = smtp_reply_get_enh_code(reply); + log_msg = "Lost connection to relay server"; + reply_lines = smtp_reply_get_text_lines_omit_prefix(reply); + msg = t_strconcat("Lost connection to relay server:\n", + t_strarray_join(reply_lines, "\n"), NULL); + result = FALSE; + break; case SMTP_CLIENT_COMMAND_ERROR_CONNECTION_LOST: case SMTP_CLIENT_COMMAND_ERROR_BAD_REPLY: case SMTP_CLIENT_COMMAND_ERROR_TIMED_OUT: