diff options
author | Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> | 2023-09-04 12:22:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-04 12:22:26 +0200 |
commit | b1a60bac4b5aa70f9c81212d8abac22086707e37 (patch) | |
tree | 215dc55006d28ed4a9b0cf1361560b9c3ec0eccb | |
parent | 621e2b7e8bca3936660213430b73bb9d7a68cbe3 (diff) | |
parent | 06ebad83995921b622aecbd2111f1f6e6c62efc4 (diff) | |
download | monitoring-plugins-b1a60ba.tar.gz |
Merge pull request #1908 from franzs/feature_check_smtp_ssl_test
Add tests for connecting with TLS in check_smtp.t
-rw-r--r-- | .github/NPTest.cache | 5 | ||||
-rwxr-xr-x | .github/prepare_debian.sh | 6 | ||||
-rw-r--r-- | plugins/t/check_smtp.t | 40 |
3 files changed, 37 insertions, 14 deletions
diff --git a/.github/NPTest.cache b/.github/NPTest.cache index 232305a7..d488d1b9 100644 --- a/.github/NPTest.cache +++ b/.github/NPTest.cache | |||
@@ -25,8 +25,9 @@ | |||
25 | 'NP_HOST_TCP_POP' => 'pop.web.de', | 25 | 'NP_HOST_TCP_POP' => 'pop.web.de', |
26 | 'NP_HOST_TCP_PROXY' => 'localhost', | 26 | 'NP_HOST_TCP_PROXY' => 'localhost', |
27 | 'NP_HOST_TCP_SMTP' => 'localhost', | 27 | 'NP_HOST_TCP_SMTP' => 'localhost', |
28 | 'NP_HOST_TCP_SMTP_NOTLS' => '', | 28 | 'NP_HOST_TCP_SMTP_NOSTARTTLS' => '', |
29 | 'NP_HOST_TCP_SMTP_TLS' => '', | 29 | 'NP_HOST_TCP_SMTP_STARTTLS' => 'localhost', |
30 | 'NP_HOST_TCP_SMTP_TLS' => 'localhost', | ||
30 | 'NP_HOST_TLS_CERT' => 'localhost', | 31 | 'NP_HOST_TLS_CERT' => 'localhost', |
31 | 'NP_HOST_TLS_HTTP' => 'localhost', | 32 | 'NP_HOST_TLS_HTTP' => 'localhost', |
32 | 'NP_HOST_UDP_TIME' => 'none', | 33 | 'NP_HOST_UDP_TIME' => 'none', |
diff --git a/.github/prepare_debian.sh b/.github/prepare_debian.sh index 9611670d..dcf778bc 100755 --- a/.github/prepare_debian.sh +++ b/.github/prepare_debian.sh | |||
@@ -116,7 +116,11 @@ service snmpd start | |||
116 | # start cron, will be used by check_nagios | 116 | # start cron, will be used by check_nagios |
117 | cron | 117 | cron |
118 | 118 | ||
119 | # start postfix | 119 | # postfix |
120 | cat <<EOD >> /etc/postfix/master.cf | ||
121 | smtps inet n - n - - smtpd | ||
122 | -o smtpd_tls_wrappermode=yes | ||
123 | EOD | ||
120 | service postfix start | 124 | service postfix start |
121 | 125 | ||
122 | # start ftpd | 126 | # start ftpd |
diff --git a/plugins/t/check_smtp.t b/plugins/t/check_smtp.t index aa6dae45..1a1ebe3e 100644 --- a/plugins/t/check_smtp.t +++ b/plugins/t/check_smtp.t | |||
@@ -8,12 +8,14 @@ use strict; | |||
8 | use Test::More; | 8 | use Test::More; |
9 | use NPTest; | 9 | use NPTest; |
10 | 10 | ||
11 | my $host_tcp_smtp = getTestParameter( "NP_HOST_TCP_SMTP", | 11 | my $host_tcp_smtp = getTestParameter( "NP_HOST_TCP_SMTP", |
12 | "A host providing an SMTP Service (a mail server)", "mailhost"); | 12 | "A host providing an SMTP Service (a mail server)", "mailhost"); |
13 | my $host_tcp_smtp_tls = getTestParameter( "NP_HOST_TCP_SMTP_TLS", | 13 | my $host_tcp_smtp_starttls = getTestParameter( "NP_HOST_TCP_SMTP_STARTTLS", |
14 | "A host providing SMTP with STARTTLS", $host_tcp_smtp); | ||
15 | my $host_tcp_smtp_nostarttls = getTestParameter( "NP_HOST_TCP_SMTP_NOSTARTTLS", | ||
16 | "A host providing SMTP without STARTTLS", ""); | ||
17 | my $host_tcp_smtp_tls = getTestParameter( "NP_HOST_TCP_SMTP_TLS", | ||
14 | "A host providing SMTP with TLS", $host_tcp_smtp); | 18 | "A host providing SMTP with TLS", $host_tcp_smtp); |
15 | my $host_tcp_smtp_notls = getTestParameter( "NP_HOST_TCP_SMTP_NOTLS", | ||
16 | "A host providing SMTP without TLS", ""); | ||
17 | 19 | ||
18 | my $host_nonresponsive = getTestParameter( "NP_HOST_NONRESPONSIVE", | 20 | my $host_nonresponsive = getTestParameter( "NP_HOST_NONRESPONSIVE", |
19 | "The hostname of system not responsive to network requests", "10.0.0.1" ); | 21 | "The hostname of system not responsive to network requests", "10.0.0.1" ); |
@@ -22,7 +24,7 @@ my $hostname_invalid = getTestParameter( "NP_HOSTNAME_INVALID", | |||
22 | "An invalid (not known to DNS) hostname", "nosuchhost" ); | 24 | "An invalid (not known to DNS) hostname", "nosuchhost" ); |
23 | my $res; | 25 | my $res; |
24 | 26 | ||
25 | plan tests => 10; | 27 | plan tests => 16; |
26 | 28 | ||
27 | SKIP: { | 29 | SKIP: { |
28 | skip "No SMTP server defined", 4 unless $host_tcp_smtp; | 30 | skip "No SMTP server defined", 4 unless $host_tcp_smtp; |
@@ -42,22 +44,38 @@ SKIP: { | |||
42 | local $TODO = "Output is over two lines"; | 44 | local $TODO = "Output is over two lines"; |
43 | like ( $res->output, qr/^SMTP WARNING/, "Correct error message" ); | 45 | like ( $res->output, qr/^SMTP WARNING/, "Correct error message" ); |
44 | } | 46 | } |
47 | |||
48 | $res = NPTest->testCmd( "./check_smtp -H $host_tcp_smtp --ssl -p 25" ); | ||
49 | is ($res->return_code, 2, "Check rc of connecting to $host_tcp_smtp with TLS on standard SMTP port" ); | ||
50 | like ($res->output, qr/^CRITICAL - Cannot make SSL connection\./, "Check output of connecting to $host_tcp_smtp with TLS on standard SMTP port"); | ||
45 | } | 51 | } |
46 | 52 | ||
47 | SKIP: { | 53 | SKIP: { |
48 | skip "No SMTP server with TLS defined", 1 unless $host_tcp_smtp_tls; | 54 | skip "No SMTP server with STARTTLS defined", 1 unless $host_tcp_smtp_starttls; |
49 | # SSL connection for TLS | 55 | # SSL connection for STARTTLS |
50 | $res = NPTest->testCmd( "./check_smtp -H $host_tcp_smtp_tls -p 25 -S" ); | 56 | $res = NPTest->testCmd( "./check_smtp -H $host_tcp_smtp_starttls -p 25 -S" ); |
51 | is ($res->return_code, 0, "OK, with STARTTLS" ); | 57 | is ($res->return_code, 0, "OK, with STARTTLS" ); |
52 | } | 58 | } |
53 | 59 | ||
54 | SKIP: { | 60 | SKIP: { |
55 | skip "No SMTP server without TLS defined", 2 unless $host_tcp_smtp_notls; | 61 | skip "No SMTP server without STARTTLS defined", 2 unless $host_tcp_smtp_nostarttls; |
56 | $res = NPTest->testCmd( "./check_smtp -H $host_tcp_smtp_notls -p 25 -S" ); | 62 | $res = NPTest->testCmd( "./check_smtp -H $host_tcp_smtp_nostarttls -p 25 -S" ); |
57 | is ($res->return_code, 1, "OK, got warning from server without TLS"); | 63 | is ($res->return_code, 1, "OK, got warning from server without STARTTLS"); |
58 | is ($res->output, "WARNING - TLS not supported by server", "Right error message" ); | 64 | is ($res->output, "WARNING - TLS not supported by server", "Right error message" ); |
59 | } | 65 | } |
60 | 66 | ||
67 | SKIP: { | ||
68 | skip "No SMTP server with TLS defined", 1 unless $host_tcp_smtp_tls; | ||
69 | $res = NPTest->testCmd( "./check_smtp -H $host_tcp_smtp_tls --ssl" ); | ||
70 | is ($res->return_code, 0, "Check rc of connecting to $host_tcp_smtp_tls with TLS" ); | ||
71 | like ($res->output, qr/^SMTP OK - /, "Check output of connecting to $host_tcp_smtp_tls with TLS" ); | ||
72 | |||
73 | my $unused_port = 4465; | ||
74 | $res = NPTest->testCmd( "./check_smtp -H $host_tcp_smtp_tls -p $unused_port --ssl" ); | ||
75 | is ($res->return_code, 2, "Check rc of connecting to $host_tcp_smtp_tls with TLS on unused port $unused_port" ); | ||
76 | like ($res->output, qr/^connect to address $host_tcp_smtp_tls and port $unused_port: Connection refused/, "Check output of connecting to $host_tcp_smtp_tls with TLS on unused port $unused_port"); | ||
77 | } | ||
78 | |||
61 | $res = NPTest->testCmd( "./check_smtp $host_nonresponsive" ); | 79 | $res = NPTest->testCmd( "./check_smtp $host_nonresponsive" ); |
62 | is ($res->return_code, 2, "CRITICAL - host non responding" ); | 80 | is ($res->return_code, 2, "CRITICAL - host non responding" ); |
63 | 81 | ||