CHECK_SMTP_SEND(7)
okay so this is CHECK_SMTP_SEND(7) from the User Contributed Perl Documentation section, and bestie, it's a whole vibe. it's a Nagios plugin that connects to an SMTP server and sends a message, and i'm gonna walk you through literally every single flag so you don't have to squint at it yourself. no cap.
π¦ NAME π¦
check_smtp_send β connects to an SMTP server and sends a message π
like. it slides into your SMTP server's DMs and sends a whole email. that's the whole job.
β¨ SYNOPSIS β¨
check_smtp_send -vV
check_smtp_send -?
check_smtp_send --help
three little ways to poke at it: get the version, get the mystery question mark, or get the full manual. iconic behavior tbh.
π OPTIONS π
okay here's the full menu, no skips, no cuts. every single one.
--warningseconds β Warn if it takes longer than seconds to connect to the SMTP server. Default is 15 seconds. Also known as:-wseconds--criticalseconds β Return a critical status if it takes longer than seconds to connect to the SMTP server. Default is 30 seconds. Also known as:-cseconds--timeoutseconds β Abort with critical status if it takes longer than seconds to connect to the SMTP server. Default is 60 seconds. The difference between timeout and critical is that, with the default settings, if it takes 45 seconds to connect to the server then the connection will succeed but the plugin will return CRITICAL because it took longer than 30 seconds. Also known as:-tseconds
bestie, that timeout-vs-critical thing is lowkey the most important sentence on this page. timeout = "we're giving up", critical = "we got there but it was EMBARRASSING". π
--hostnameserver β Address or name of the SMTP server. Examples:mail.server.com,localhost,192.168.1.100
If not provided, and if there is only one --mailto address, the script will automatically look up the MX record for the --mailto address and use that as the hostname. You can use this to check that your MX records are correct. When omitting the --hostname option, it doesn't really make sense to specify --port, --username, or --password but you can still do so and they will have their normal effect. To look up the MX records you need to have the module Net::DNS and Email::Address installed.
Also known as: -H server
--portnumber β Service port on the SMTP server. Default is 25 for regular SMTP, 465 for SSL, and 587 for TLS. Also known as:-pnumber--tls--notlsβ Enable TLS/AUTH protocol. RequiresNet::SMTP::TLS, availble on CPAN.
When using this option, the default port is 587. You can specify a port from the command line using the --port option.
Use the notls option to turn off the tls option.
Also, you may need to fix your copy of Net::SMTP::TLS. Here is the diff against version 0.12:
254c254
< $me->_command(sprintf("AUTH PLAIN %S",
---
> $me->_command(sprintf("AUTH PLAIN %s",
not me having to tell you to hand-patch a CPAN module in current year. it's giving lowercase s energy. fix it or perish. π«
--ssl--nosslβ Enable SSL protocol. RequiresNet::SMTP::SSLandAuthen::SASL, availble on CPAN.
When using this option, the default port is 465. You can override with the --port option.
Use the nossl option to turn off the ssl option.
--authmethod β Enable authentication withNet::SMTP_auth(sold separately). For example, try using--auth PLAINor--auth CRAM-MD5.--usernameusername--passwordpassword β Username and password to use when connecting to SMTP server. Also known as:-Uusername-Ppassword--bodymessage β Use this option to specify the body of the email message. If you need newlines in your message, you might need to use the--stdinoption instead.--headerheader β Use this option to set an arbitrary header in the message. You can use it multiple times.--stdinβ Grab the body of the email message from stdin.--mailtorecipient@your.netβ You can send a message to multiple recipients by repeating this option or by separating the email addresses with commas (no whitespace allowed):
$ check_smtp_send -H mail.server.net --mailto recipient@your.net,recipient2@your.net --mailfrom sender@your.net
SMTP SEND OK - 1 seconds
no whitespace allowed!! commas only!! the shell will not save you here bestie π
--mailfromsender@your.netβ Use this option to set the "from" address in the email.--template--notemplateβ Enable (or disable) processing of message body and headers. RequiresText::Template.
Use this option to apply special processing to your message body and headers that allows you to use the results of arbitrary computations in the text. For example, you can use this feature to send a message containing the hostname of the machine that sent the message without customizing the plugin configuration on each machine.
When you enable the --template option, the message body and headers are parsed by Text::Template. Even a message body provided using the --stdin option will be parsed. See the Text::Template manual for more information, but in general any expression written in Perl will work.
There is one convenience function provided to you, trim, which will remove leading and trailing whitespace from its parameter. Here's an example:
check_smtp_send -H mail.server.net --mailto recipient@your.net --mailfrom sender@your.net
--template --body 'hello, this message is from {use Sys::Hostname; hostname}'
--header 'Subject: test message from {trim(`whoami`)}'
any expression written in Perl will work. that is a THREAT and a PROMISE at the same time. π
--expect-responsecode β Use this option to specify which SMTP response code should be expected from the server after the SMTP dialog is complete. The default is 250 (message accepted).
Also known as: -E code
--hiresβ Use theTime::HiResmodule to measure time, if available.--verboseβ Display additional information. Useful for troubleshooting.
One --verbose will show extra information for OK, WARNING, and CRITICAL status.
Use one --verbose together with --version to see the default warning and critical timeout values.
Three --verbose (or -vvv) will show debug information, unless you're using --tls because Net::SMTP::TLS does not have a Debug feature.
Also known as: -v
--versionβ Display plugin version and exit. Also known as:-V--helpβ Display this documentation and exit. Does not work in the ePN version. Also known as:-h--usageβ Display a short usage instruction and exit.
πΈ EXAMPLES πΈ
Send a message with custom headers
look at her go. headers stacked, body iconic:
$ check_smtp_send -H mail.server.net --mailto recipient@your.net --mailfrom sender@your.net --body 'Homeruns 5' --header 'Subject: Hello, world!' --header 'X-Your-Header: Yes'
SMTP SEND OK - 1 seconds
and that's it, that's the whole flex. SMTP SEND OK - 1 seconds and you move on with your day. β¨
π EXIT CODES π
Complies with the Nagios plug-in specification:
0β OK β The plugin was able to check the service and it appeared to be functioning properly1β Warning β The plugin was able to check the service, but it appeared to be above some "warning" threshold or did not appear to be working properly2β Critical β The plugin detected that either the service was not running or it was above some "critical" threshold3β Unknown β Invalid command line arguments were supplied to the plugin or the plugin was unable to check the status of the given hosts/service
3 is the "we literally don't know what's happening" code and honestly? relatable. π
π NAGIOS PLUGIN NOTES π
Nagios plugin reference: http://nagiosplug.sourceforge.net/developer-guidelines.html
This plugin does NOT use Nagios DEFAULT_SOCKET_TIMEOUT (provided by utils.pm as $TIMEOUT) because the path to utils.pm must be specified completely in this program and forces users to edit the source code if their install location is different (if they realize this is the problem). You can view the default timeout for this module by using the --verbose and --version options together. The short form is -vV.
Other than that, it attempts to follow published guidelines for Nagios plugins.
so yeah β -vV is your bestie if you ever need to know what the default timeout actually is. periodt. π
β¨ CHANGES β¨
okay so bestie, this is literally the receipts of every single glow-up this plugin ever had, from baby 0.1 to the final form 0.7.3 π no cap.
Wed Oct 29 14:05:00 PST 2005
- version 0.1 π (the debut, we love a fresh start)
Wed Nov 9 15:01:48 PST 2005
- now using an inline PluginReport package to generate the report π
- added stdin option π₯
- copyright notice and GNU GPL βοΈ
- version 0.2
Thu Apr 20 16:00:00 PST 2006 (by Geoff Crompton <geoff.crompton@strategicdata.com.au>)
- added bailing if the
$smtp->to()call fails π€ - added support for mailto recipients separated by commas π«Ά
- version 0.2.1
Tue Apr 24 21:17:53 PDT 2007
- moved POD text to separate file in order to accomodate the new embedded-perl Nagios feature π
- version 0.2.3
Fri Apr 27 20:26:42 PDT 2007
- documentation now mentions every command-line option accepted by the plugin, including abbreviations π
- version 0.3
Sun Oct 21 10:34:14 PDT 2007
- added support for TLS and authentication via the
Net::SMTP::TLSmodule. see--tlsoption. π - version 0.4
Sun Oct 21 13:54:26 PDT 2007
- added support for SSL via the
Net::SMTP::SSLmodule. see--ssloption. π - port is no longer a required option. defaults to 25 for regular smtp, 465 for ssl, and 587 for tls. π’
- added port info to the "could not connect" error message π‘
- version 0.4.1
Tue Dec 4 07:42:32 PST 2007
- added
--usageoption because the official nagios plugins have both--helpand--usageπ - added
--timeoutoption to match the official nagios plugins β±οΈ - fixed some minor pod formatting issues for perldoc π§Ή
- version 0.4.2
Mon Feb 11 19:09:37 PST 2008
- fixed a bug for embedded perl version, variable
%statuswill not stay shared inload_modulesπ - version 0.4.3
Mon May 26 09:12:14 PDT 2008
- fixed warning and critical messages to use "more than" or "less than" instead of the angle brackets, to make them more web friendly π
- version 0.4.4
Wed Jul 2 07:12:35 PDT 2008
- added
--expect-responseoption submitted by Christian Kauhaus <kc@gocept.com> π - added support for authentication via
Net::SMTP_auth. see--authoption. π - version 0.4.5
Sun Oct 5 15:18:23 PDT 2008
- added error handling for smtp server disconnects ungracefully during QUIT (gmail.com does) π
- version 0.4.6
Thu Oct 1 12:09:35 PDT 2009
- added
--templateoption to allow arbitrary substitutions for body and headers, and provided one convenience function for trimming strings βοΈ - added performance data for use with PNP4Nagios! π
- version 0.5.0
Thu Oct 8 11:17:04 PDT 2009
- added more detailed error messages when using
--verboseπ£οΈ - version 0.5.1
Tue Feb 9 12:14:49 PST 2010
- added support for combining
--authwith--tlsusing a subclass ofNet::SMTP::TLSsubmitted by Brad Guillory; please note that to use the "PLAIN" authentication type you need to patch yourNet::SMTP:TLSbecause it has a bug in subauth_PLAIN(sprintf%Sinstead of%s) π¨ - version 0.5.2
Mon Jan 3 10:39:42 PST 2011
- added default Date and Message-ID headers; Date header uses POSIX
strftimeand Message-ID header useshostnamecommand to get localhost name π·οΈ - version 0.7.0
Fri May 6 08:35:09 AST 2011
- added
--hiresoption to enable use ofTime::Hiresif available β³ - version 0.7.1
Wed Jul 6 19:18:26 AST 2011
- the
--hostnameis now optional; if not provided the plugin will lookup the MX record for the--mailtoaddress (requiresNet::DNS) π - version 0.7.2
Tue Dec 13 09:24:04 PST 2011
- separated authentication errors from connection errors πͺ
- version 0.7.3
π AUTHOR π
Jonathan Buhacoff <jonathan@buhacoff.net> β the mastermind, the icon, the legend π
π COPYRIGHT AND LICENSE π
Copyright (C) 2005-2011 Jonathan Buhacoff
okay so legal bit but it's giving freedom and open source realness β¨
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
http://www.gnu.org/licenses/gpl.txt
this page is from perl v5.40.1, dated 2026-02-11, and it's CHECK_SMTP_SEND(7) β periodt π
β¨
π¦ where this page comes from
- ubuntu resolute: monitoring-plugins-contrib 48.20250420ubuntu3
- ubuntu stonking: monitoring-plugins-contrib 48.20250420ubuntu3
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms