From: Stephan Bosch Date: Tue, 7 Dec 2021 00:58:32 +0000 (+0100) Subject: lib-smtp: smtp-client - Add verbose_user_errors setting. X-Git-Tag: 2.3.18~35 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=11b6ccdfcef65adb6852438c314be6c9b567587b;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: smtp-client - Add verbose_user_errors setting. It returns the detailed administrator errors as user error in the reply returned to the calling application. --- diff --git a/src/lib-smtp/smtp-client-connection.c b/src/lib-smtp/smtp-client-connection.c index 6d938f4159..132914a588 100644 --- a/src/lib-smtp/smtp-client-connection.c +++ b/src/lib-smtp/smtp-client-connection.c @@ -381,7 +381,10 @@ void smtp_client_connection_fail(struct smtp_client_connection *conn, i_zero(&text_lines); i_assert(user_error != NULL); - text_lines[0] = user_error; + if (conn->set.verbose_user_errors && error != NULL) + text_lines[0] = error; + else + text_lines[0] = user_error; timeout_remove(&conn->to_connect); @@ -2125,6 +2128,10 @@ smtp_client_connection_do_create(struct smtp_client *client, const char *name, conn->set.peer_trusted = set->peer_trusted; conn->set.mail_send_broken_path = set->mail_send_broken_path; + + conn->set.verbose_user_errors = + conn->set.verbose_user_errors || + set->verbose_user_errors; } if (set != NULL && set->extra_capabilities != NULL) { diff --git a/src/lib-smtp/smtp-client.c b/src/lib-smtp/smtp-client.c index be62cbd09d..653dd0ef18 100644 --- a/src/lib-smtp/smtp-client.c +++ b/src/lib-smtp/smtp-client.c @@ -78,6 +78,7 @@ struct smtp_client *smtp_client_init(const struct smtp_client_settings *set) client->set.socket_send_buffer_size = set->socket_send_buffer_size; client->set.socket_recv_buffer_size = set->socket_recv_buffer_size; client->set.debug = set->debug; + client->set.verbose_user_errors = set->verbose_user_errors; smtp_proxy_data_merge(pool, &client->set.proxy_data, &set->proxy_data); diff --git a/src/lib-smtp/smtp-client.h b/src/lib-smtp/smtp-client.h index 3fdc5c63fd..75608e9955 100644 --- a/src/lib-smtp/smtp-client.h +++ b/src/lib-smtp/smtp-client.h @@ -115,6 +115,9 @@ struct smtp_client_settings { /* sending even broken MAIL command path (otherwise a broken address is sent as <>) */ bool mail_send_broken_path; + /* Yield verbose user-visible errors for commands and connections that + failed locally. */ + bool verbose_user_errors; }; struct smtp_client *smtp_client_init(const struct smtp_client_settings *set);