]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
submission: relay backend: Forward a (possibly multi-line) 421 reply from relay serve...
authorStephan Bosch <stephan.bosch@dovecot.fi>
Fri, 2 Nov 2018 09:39:17 +0000 (10:39 +0100)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 6 Nov 2018 22:42:30 +0000 (22:42 +0000)
Before, it substituted a generic 421 error reply, which is far less helpful.

src/submission/submission-backend-relay.c

index 505253a81635c58f65ce740a898ecdb621b25ccb..2e54d53d38f878da01f96f795cd7454eda259809 100644 (file)
@@ -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: