new file mode 100644
@@ -0,0 +1,93 @@
+From 7e705808a8568a091a8ecf418ed9f77914304fcc Mon Sep 17 00:00:00 2001
+From: Roman Arutyunyan <arut@nginx.com>
+Date: Thu, 26 Feb 2026 11:52:53 +0400
+Subject: [PATCH] Mail: host validation.
+
+Now host name resolved from client address is validated to only contain
+the characters specified in RFC 1034, Section 3.5. The validation allows
+to avoid injections when using the resolved host name in auth_http and
+smtp proxy.
+
+Reported by Asim Viladi Oglu Manizada, Colin Warren,
+Xiao Liu (Yunnan University), Yuan Tan (UC Riverside), and
+Bird Liu (Lanzhou University).
+
+(cherry picked from commit 6a8513761fb327f67fcc6cfcf1ad216887e2589f)
+
+CVE: CVE-2026-28753
+Upstream-Status: Backport [https://github.com/nginx/nginx/commit/6a8513761fb327f67fcc6cfcf1ad216887e2589f]
+Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
+---
+ src/mail/ngx_mail_smtp_handler.c | 45 ++++++++++++++++++++++++++++++++
+ 1 file changed, 45 insertions(+)
+
+diff --git a/src/mail/ngx_mail_smtp_handler.c b/src/mail/ngx_mail_smtp_handler.c
+index e68ceedfd..e477741c8 100644
+--- a/src/mail/ngx_mail_smtp_handler.c
++++ b/src/mail/ngx_mail_smtp_handler.c
+@@ -13,6 +13,7 @@
+
+
+ static void ngx_mail_smtp_resolve_addr_handler(ngx_resolver_ctx_t *ctx);
++static ngx_int_t ngx_mail_smtp_validate_host(ngx_str_t *name);
+ static void ngx_mail_smtp_resolve_name(ngx_event_t *rev);
+ static void ngx_mail_smtp_resolve_name_handler(ngx_resolver_ctx_t *ctx);
+ static void ngx_mail_smtp_block_reading(ngx_event_t *rev);
+@@ -127,6 +128,20 @@ ngx_mail_smtp_resolve_addr_handler(ngx_resolver_ctx_t *ctx)
+ return;
+ }
+
++ if (ngx_mail_smtp_validate_host(&ctx->name) != NGX_OK) {
++ ngx_log_error(NGX_LOG_ERR, c->log, 0,
++ "%V resolved to invalid host name \"%V\"",
++ &c->addr_text, &ctx->name);
++
++ s->host = smtp_tempunavail;
++
++ ngx_resolve_addr_done(ctx);
++
++ ngx_mail_smtp_greeting(s, s->connection);
++
++ return;
++ }
++
+ c->log->action = "in resolving client hostname";
+
+ s->host.data = ngx_pstrdup(c->pool, &ctx->name);
+@@ -149,6 +164,36 @@ ngx_mail_smtp_resolve_addr_handler(ngx_resolver_ctx_t *ctx)
+ }
+
+
++static ngx_int_t
++ngx_mail_smtp_validate_host(ngx_str_t *name)
++{
++ u_char ch;
++ ngx_uint_t i;
++
++ if (name->len == 0) {
++ return NGX_DECLINED;
++ }
++
++ for (i = 0; i < name->len; i++) {
++ ch = name->data[i];
++
++ /* allow only characters from RFC 1034, Section 3.5 */
++
++ if ((ch >= 'a' && ch <= 'z')
++ || (ch >= 'A' && ch <= 'Z')
++ || (ch >= '0' && ch <= '9')
++ || ch == '-' || ch == '.')
++ {
++ continue;
++ }
++
++ return NGX_DECLINED;
++ }
++
++ return NGX_OK;
++}
++
++
+ static void
+ ngx_mail_smtp_resolve_name(ngx_event_t *rev)
+ {
@@ -5,6 +5,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=175abb631c799f54573dc481454c8632"
SRC_URI:append = " file://CVE-2023-44487.patch \
file://CVE-2026-27651.patch \
file://CVE-2026-27654.patch \
+ file://CVE-2026-28753.patch \
"
SRC_URI[sha256sum] = "77a2541637b92a621e3ee76776c8b7b40cf6d707e69ba53a940283e30ff2f55d"