From 2e3ba497e4772444fb2ac8bc7d6cd63e28ba6332 Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Mon, 27 Aug 2018 20:15:40 +0200 Subject: [PATCH] submission: Move submission_helo_reply_submit() from cmd-helo.c to submission-commands.c. --- src/submission/cmd-helo.c | 56 ------------------------- src/submission/submission-commands.c | 63 ++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 56 deletions(-) diff --git a/src/submission/cmd-helo.c b/src/submission/cmd-helo.c index eed4a48b3c..2e4673d1a5 100644 --- a/src/submission/cmd-helo.c +++ b/src/submission/cmd-helo.c @@ -38,62 +38,6 @@ static void cmd_helo_update_xclient(struct client *client, client->xclient_sent = TRUE; } -void submission_helo_reply_submit(struct smtp_server_cmd_ctx *cmd, - struct smtp_server_cmd_helo *data) -{ - struct client *client = smtp_server_connection_get_context(cmd->conn); - enum smtp_capability proxy_caps = - smtp_client_connection_get_capabilities(client->proxy_conn); - struct smtp_server_reply *reply; - uoff_t cap_size; - - reply = smtp_server_reply_create_ehlo(cmd->cmd); - if (!data->helo.old_smtp) { - string_t *burl_params = t_str_new(256); - - str_append(burl_params, "imap"); - if (*client->set->imap_urlauth_host == '\0' || - strcmp(client->set->imap_urlauth_host, - URL_HOST_ALLOW_ANY) == 0) { - str_printfa(burl_params, " imap://%s", - client->set->hostname); - } else { - str_printfa(burl_params, " imap://%s", - client->set->imap_urlauth_host); - } - if (client->set->imap_urlauth_port != 143) { - str_printfa(burl_params, ":%u", - client->set->imap_urlauth_port); - } - - if ((proxy_caps & SMTP_CAPABILITY_8BITMIME) != 0) - smtp_server_reply_ehlo_add(reply, "8BITMIME"); - smtp_server_reply_ehlo_add(reply, "AUTH"); - if ((proxy_caps & SMTP_CAPABILITY_BINARYMIME) != 0 && - (proxy_caps & SMTP_CAPABILITY_CHUNKING) != 0) - smtp_server_reply_ehlo_add(reply, "BINARYMIME"); - smtp_server_reply_ehlo_add_param(reply, - "BURL", "%s", str_c(burl_params)); - smtp_server_reply_ehlo_add(reply, "CHUNKING"); - if ((proxy_caps & SMTP_CAPABILITY_DSN) != 0) - smtp_server_reply_ehlo_add(reply, "DSN"); - smtp_server_reply_ehlo_add(reply, - "ENHANCEDSTATUSCODES"); - smtp_server_reply_ehlo_add(reply, - "PIPELINING"); - - cap_size = client_get_max_mail_size(client); - if (cap_size > 0) { - smtp_server_reply_ehlo_add_param(reply, - "SIZE", "%"PRIuUOFF_T, cap_size); - } else { - smtp_server_reply_ehlo_add(reply, "SIZE"); - } - smtp_server_reply_ehlo_add(reply, "VRFY"); - } - smtp_server_reply_submit(reply); -} - static void cmd_helo_reply(struct smtp_server_cmd_ctx *cmd, struct cmd_helo_context *helo) { diff --git a/src/submission/submission-commands.c b/src/submission/submission-commands.c index 62015e6643..7a3531cb19 100644 --- a/src/submission/submission-commands.c +++ b/src/submission/submission-commands.c @@ -1,6 +1,69 @@ /* Copyright (c) 2013-2018 Dovecot authors, see the included COPYING file */ #include "submission-common.h" +#include "str.h" +#include "smtp-client.h" +#include "smtp-client-connection.h" #include "submission-commands.h" +/* + * EHLO, HELO commands + */ + +void submission_helo_reply_submit(struct smtp_server_cmd_ctx *cmd, + struct smtp_server_cmd_helo *data) +{ + struct client *client = smtp_server_connection_get_context(cmd->conn); + enum smtp_capability proxy_caps = + smtp_client_connection_get_capabilities(client->proxy_conn); + struct smtp_server_reply *reply; + uoff_t cap_size; + + reply = smtp_server_reply_create_ehlo(cmd->cmd); + if (!data->helo.old_smtp) { + string_t *burl_params = t_str_new(256); + + str_append(burl_params, "imap"); + if (*client->set->imap_urlauth_host == '\0' || + strcmp(client->set->imap_urlauth_host, + URL_HOST_ALLOW_ANY) == 0) { + str_printfa(burl_params, " imap://%s", + client->set->hostname); + } else { + str_printfa(burl_params, " imap://%s", + client->set->imap_urlauth_host); + } + if (client->set->imap_urlauth_port != 143) { + str_printfa(burl_params, ":%u", + client->set->imap_urlauth_port); + } + + if ((proxy_caps & SMTP_CAPABILITY_8BITMIME) != 0) + smtp_server_reply_ehlo_add(reply, "8BITMIME"); + smtp_server_reply_ehlo_add(reply, "AUTH"); + if ((proxy_caps & SMTP_CAPABILITY_BINARYMIME) != 0 && + (proxy_caps & SMTP_CAPABILITY_CHUNKING) != 0) + smtp_server_reply_ehlo_add(reply, "BINARYMIME"); + smtp_server_reply_ehlo_add_param(reply, + "BURL", "%s", str_c(burl_params)); + smtp_server_reply_ehlo_add(reply, "CHUNKING"); + if ((proxy_caps & SMTP_CAPABILITY_DSN) != 0) + smtp_server_reply_ehlo_add(reply, "DSN"); + smtp_server_reply_ehlo_add(reply, + "ENHANCEDSTATUSCODES"); + smtp_server_reply_ehlo_add(reply, + "PIPELINING"); + + cap_size = client_get_max_mail_size(client); + if (cap_size > 0) { + smtp_server_reply_ehlo_add_param(reply, + "SIZE", "%"PRIuUOFF_T, cap_size); + } else { + smtp_server_reply_ehlo_add(reply, "SIZE"); + } + smtp_server_reply_ehlo_add(reply, "VRFY"); + } + smtp_server_reply_submit(reply); +} + -- 2.47.3