client->remote_ip = data->source_ip;
client->remote_port = data->source_port;
+ if (data->client_transport != NULL) {
+ client->end_client_tls_secured = TRUE;
+ client->end_client_tls_secured =
+ str_begins_with(data->client_transport,
+ CLIENT_TRANSPORT_TLS);
+ }
if (clients_count == 1)
refresh_proctitle();
bool disconnected:1;
bool destroyed:1;
+ bool end_client_tls_secured:1;
+ bool end_client_tls_secured_set:1;
};
struct lmtp_module_register {
input.remote_port = client->remote_port;
input.session_id = lrcpt->session_id;
input.conn_ssl_secured =
+ client->end_client_tls_secured_set ?
+ client->end_client_tls_secured :
smtp_server_connection_is_ssl_secured(client->conn);
input.forward_fields = lrcpt->forward_fields;
input.event_parent = rcpt->event;
&lmtp_set.proxy_data);
lmtp_set.proxy_data.source_ip = client->remote_ip;
lmtp_set.proxy_data.source_port = client->remote_port;
+ bool end_client_tls_secured =
+ client->end_client_tls_secured_set ?
+ client->end_client_tls_secured :
+ smtp_server_connection_is_ssl_secured(client->conn);
+ lmtp_set.proxy_data.client_transport = end_client_tls_secured ?
+ CLIENT_TRANSPORT_TLS : CLIENT_TRANSPORT_INSECURE;
/* This initial session_id is used only locally by lib-smtp. Each LMTP
proxy connection gets a more specific updated session_id. */
lmtp_set.proxy_data.session = trans->id;
#define LMTP_PROXY_DEFAULT_TTL 5
#define LMTP_PROXY_DEFAULT_PORT 24
+#define CLIENT_TRANSPORT_TLS "TLS"
+#define CLIENT_TRANSPORT_INSECURE "insecure"
+
struct smtp_server_cmd_ctx;
struct smtp_server_cmd_rcpt;
struct lmtp_proxy;