From a20810f737452de5ab85cc58ea1e7ee0cf0cb35d Mon Sep 17 00:00:00 2001 From: Jan Wagner Date: Mon, 19 Jun 2023 09:06:09 +0200 Subject: [PATCH] Adding d/p/36_check_smtp_adding_proxy_header from upstream --- .../patches/36_check_smtp_adding_proxy_header | 129 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 130 insertions(+) create mode 100644 debian/patches/36_check_smtp_adding_proxy_header diff --git a/debian/patches/36_check_smtp_adding_proxy_header b/debian/patches/36_check_smtp_adding_proxy_header new file mode 100644 index 0000000..aeb6b86 --- /dev/null +++ b/debian/patches/36_check_smtp_adding_proxy_header @@ -0,0 +1,129 @@ +From ce85affd208cd8c873dd88c17b8d3d0540c8872e Mon Sep 17 00:00:00 2001 +From: Patrick Uiterwijk +Date: Thu, 13 Dec 2018 18:24:53 +0100 +Subject: [PATCH 1/5] check_smtp: Add option to prefix PROXY header + +This enables checks of SMTP servers that expect the haproxy +PROXY protocol: -o smtpd_upstream_proxy_protocol=haproxy. + +Backported from nagios-plugins: +https://github.com/nagios-plugins/nagios-plugins/commit/3246efe923b5482c5024c40e593ce942e628a3cb +--- + plugins/check_smtp.c | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) + +diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c +index eaa7eebab..addabfc66 100644 +--- a/plugins/check_smtp.c ++++ b/plugins/check_smtp.c +@@ -52,6 +52,7 @@ int days_till_exp_warn, days_till_exp_crit; + enum { + SMTP_PORT = 25 + }; ++#define PROXY_PREFIX "PROXY TCP4 0.0.0.0 0.0.0.0 25 25\r\n" + #define SMTP_EXPECT "220" + #define SMTP_HELO "HELO " + #define SMTP_EHLO "EHLO " +@@ -102,6 +103,7 @@ double critical_time = 0; + int check_critical_time = FALSE; + int verbose = 0; + int use_ssl = FALSE; ++short use_proxy_prefix = FALSE; + short use_ehlo = FALSE; + short use_lhlo = FALSE; + short ssl_established = 0; +@@ -184,6 +186,13 @@ main (int argc, char **argv) + + if (result == STATE_OK) { /* we connected */ + ++ /* If requested, send PROXY header */ ++ if (use_proxy_prefix) { ++ if (verbose) ++ printf ("Sending header %s\n", PROXY_PREFIX); ++ send(sd, PROXY_PREFIX, strlen(PROXY_PREFIX), 0); ++ } ++ + /* watch for the SMTP connection string and */ + /* return a WARNING status if we couldn't read any data */ + if (recvlines(buffer, MAX_INPUT_BUFFER) <= 0) { +@@ -478,6 +487,7 @@ process_arguments (int argc, char **argv) + {"starttls",no_argument,0,'S'}, + {"certificate",required_argument,0,'D'}, + {"ignore-quit-failure",no_argument,0,'q'}, ++ {"proxy",no_argument,0,'r'}, + {0, 0, 0, 0} + }; + +@@ -494,7 +504,7 @@ process_arguments (int argc, char **argv) + } + + while (1) { +- c = getopt_long (argc, argv, "+hVv46Lt:p:f:e:c:w:H:C:R:SD:F:A:U:P:q", ++ c = getopt_long (argc, argv, "+hVv46Lrt:p:f:e:c:w:H:C:R:SD:F:A:U:P:q", + longopts, &option); + + if (c == -1 || c == EOF) +@@ -621,6 +631,9 @@ process_arguments (int argc, char **argv) + use_ssl = TRUE; + use_ehlo = TRUE; + break; ++ case 'r': ++ use_proxy_prefix = TRUE; ++ break; + case 'L': + use_lhlo = TRUE; + break; +@@ -819,6 +832,8 @@ print_help (void) + printf (" %s\n", _("FROM-address to include in MAIL command, required by Exchange 2000")), + printf (" %s\n", "-F, --fqdn=STRING"); + printf (" %s\n", _("FQDN used for HELO")); ++ printf (" %s\n", "-r, --proxy"); ++ printf (" %s\n", _("Use PROXY protocol prefix for the connection.")); + #ifdef HAVE_SSL + printf (" %s\n", "-D, --certificate=INTEGER[,INTEGER]"); + printf (" %s\n", _("Minimum number of days a certificate has to be valid.")); + +From 6d5e81fcbadbef557cf3f61ce7fd6ef73e25683e Mon Sep 17 00:00:00 2001 +From: Franz Schwartau +Date: Mon, 12 Jun 2023 15:55:32 +0200 +Subject: [PATCH 2/5] check_smtp: add missing -r option in usage + +--- + plugins/check_smtp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c +index addabfc66..a1debd25f 100644 +--- a/plugins/check_smtp.c ++++ b/plugins/check_smtp.c +@@ -875,6 +875,6 @@ print_usage (void) + printf ("%s\n", _("Usage:")); + printf ("%s -H host [-p port] [-4|-6] [-e expect] [-C command] [-R response] [-f from addr]\n", progname); + printf ("[-A authtype -U authuser -P authpass] [-w warn] [-c crit] [-t timeout] [-q]\n"); +- printf ("[-F fqdn] [-S] [-L] [-D warn days cert expire[,crit days cert expire]] [-v] \n"); ++ printf ("[-F fqdn] [-S] [-L] [-D warn days cert expire[,crit days cert expire]] [-r] [-v] \n"); + } + + +From d762fb137401491270c898febe07e34ba200e388 Mon Sep 17 00:00:00 2001 +From: Franz Schwartau +Date: Mon, 12 Jun 2023 22:09:54 +0200 +Subject: [PATCH 5/5] check_smtp: update year in copyright header + +--- + plugins/check_smtp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c +index a1debd25f..70191ad92 100644 +--- a/plugins/check_smtp.c ++++ b/plugins/check_smtp.c +@@ -3,7 +3,7 @@ + * Monitoring check_smtp plugin + * + * License: GPL +-* Copyright (c) 2000-2007 Monitoring Plugins Development Team ++* Copyright (c) 2000-2023 Monitoring Plugins Development Team + * + * Description: + * diff --git a/debian/patches/series b/debian/patches/series index a9c0d8b..e0639fc 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -22,3 +22,4 @@ 32_check_disk_add_ignore_missing 33_check_procs_exclude-process 34_check_curl_fix_compare_warning +36_check_smtp_adding_proxy_header