]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
submission: relay backend: Log an error when relayed commands fail with connection...
authorStephan Bosch <stephan.bosch@dovecot.fi>
Wed, 17 Oct 2018 23:39:05 +0000 (01:39 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 18 Oct 2018 10:12:35 +0000 (10:12 +0000)
Errors sent by the remote server are handled by the command reply handler and
are logged using i_info() where relevant.

src/submission/submission-backend-relay.c

index aa033e58246f7874d633b48e55ee3921f5e1b5ab..de0c5a9f85824438a057a97794e415ea35ac46b7 100644 (file)
@@ -48,7 +48,7 @@ backend_relay_handle_relay_reply(struct submission_backend_relay *backend,
                                 const struct smtp_reply *reply,
                                 struct smtp_reply *reply_r)
 {
-       const char *enh_code, *msg, *detail = "";
+       const char *enh_code, *msg, *log_msg = NULL, *detail = "";
        bool result = TRUE;
 
        *reply_r = *reply;
@@ -68,7 +68,7 @@ backend_relay_handle_relay_reply(struct submission_backend_relay *backend,
        case SMTP_CLIENT_COMMAND_ERROR_BAD_REPLY:
        case SMTP_CLIENT_COMMAND_ERROR_TIMED_OUT:
                enh_code = "4.4.0";
-               msg = "Lost connection to relay server";
+               log_msg = msg = "Lost connection to relay server";
                result = FALSE;
                break;
        /* RFC 4954, Section 6: 530 5.7.0 Authentication required
@@ -78,8 +78,7 @@ backend_relay_handle_relay_reply(struct submission_backend_relay *backend,
           authentication in order to perform the requested action and
           authentication is not currently in force. */
        case 530:
-               i_error("Relay server requires authentication: %s",
-                       smtp_reply_log(reply));
+               log_msg = "Relay server requires authentication";
                enh_code = "4.3.5",
                msg = "Internal error occurred. "
                      "Refer to server log for more information.";
@@ -116,6 +115,8 @@ backend_relay_handle_relay_reply(struct submission_backend_relay *backend,
        if (!result) {
                const char *reason = t_strdup_printf("%s%s", msg, detail);
                smtp_client_transaction_destroy(&backend->trans);
+               if (log_msg != NULL)
+                       i_error("%s: %s", log_msg, smtp_reply_log(reply));
                submission_backend_fail(&backend->backend, cmd,
                                        enh_code, reason);
                return FALSE;