summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a3e09d0)
raw | patch | inline | side by side (parent: a3e09d0)
author | Subhendu Ghosh <sghosh@users.sourceforge.net> | |
Mon, 2 Sep 2002 18:47:07 +0000 (18:47 +0000) | ||
committer | Subhendu Ghosh <sghosh@users.sourceforge.net> | |
Mon, 2 Sep 2002 18:47:07 +0000 (18:47 +0000) |
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@87 f882894a-f735-0410-b71e-b25c423dba1c
plugins/check_smtp.c | patch | blob | history |
diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c
index f96db49bbc7f66e16b03d8b06edd578a54371295..4e5d3c81c80ce9ad501403d3bdc4ee151d9dc157 100644 (file)
--- a/plugins/check_smtp.c
+++ b/plugins/check_smtp.c
*
* According to rfc821 you can include a null reversepath in the from command
* - but a log message is generated on the smtp server.
+ *
+ * Use the -f option to provide a FROM address
*/
-#define SMTP_DUMMYCMD "MAIL FROM:<>\r\n"
+
+#define SMTP_DUMMYCMD "MAIL "
#define SMTP_USE_DUMMYCMD 1
#define SMTP_QUIT "QUIT\r\n"
int server_port = SMTP_PORT;
char *server_address = NULL;
char *server_expect = NULL;
+char *from_arg = " ";
int warning_time = 0;
int check_warning_time = FALSE;
int critical_time = 0;
int result;
char buffer[MAX_INPUT_BUFFER] = "";
char helocmd[255] = SMTP_HELO ;
+ char from_str[255] = SMTP_DUMMYCMD ;
char myhostname[248];
if (process_arguments (argc, argv) != OK)
usage ("Invalid command arguments supplied\n");
- /* initalize the HELO command with the localhostname */
+ /* initialize the HELO command with the localhostname */
gethostname(myhostname, sizeof(myhostname));
strcat(helocmd, myhostname);
strcat(helocmd, "\r\n");
+
+ /* initialize the MAIL command with optional FROM command */
+ if (from_arg) {
+ strcat(from_str, "FROM: ");
+ strcat(from_str, from_arg);
+ }
+ /* terminate line with a CRLF */
+ strcat(from_str, "\r\n");
+
+ if (verbose == TRUE){
+ printf ("FROMCMD: %s\n", from_str);
+ }
+
+
/* initialize alarm signal handling */
signal (SIGALRM, socket_timeout_alarm_handler);
recv(sd,buffer,MAX_INPUT_BUFFER-1,0);
#ifdef SMTP_USE_DUMMYCMD
- send(sd,SMTP_DUMMYCMD,strlen(SMTP_DUMMYCMD),0);
- /* allow for response to DUMMYCMD to reach us */
- recv(sd,buffer,MAX_INPUT_BUFFER-1,0);
+ send(sd,from_str,strlen(from_str),0);
+ /* allow for response to DUMMYCMD to reach us */
+ recv(sd,buffer,MAX_INPUT_BUFFER-1,0);
+ if (verbose == TRUE)
+ printf("DUMMYCMD: %s\n%s\n",from_str,buffer);
#endif /* SMTP_USE_DUMMYCMD */
/* finally close the connection */
{"expect", required_argument, 0, 'e'},
{"critical", required_argument, 0, 'c'},
{"warning", required_argument, 0, 'w'},
- {"port", required_argument, 0, 'P'},
+ {"port", required_argument, 0, 'p'},
+ {"from", required_argument, 0, 'f'},
{"verbose", no_argument, 0, 'v'},
{"version", no_argument, 0, 'V'},
{"help", no_argument, 0, 'h'},
while (1) {
#ifdef HAVE_GETOPT_H
c =
- getopt_long (argc, argv, "+hVvt:p:e:c:w:H:", long_options,
+ getopt_long (argc, argv, "+hVvt:p:f:e:c:w:H:", long_options,
&option_index);
#else
- c = getopt (argc, argv, "+?hVvt:p:e:c:w:H:");
+ c = getopt (argc, argv, "+?hVvt:p:f:e:c:w:H:");
#endif
i++;
case 't':
case 'p':
case 'e':
+ case 'f':
case 'c':
case 'w':
case 'H':
usage ("Server port must be a positive integer\n");
}
break;
- case 'e': /* username */
+ case 'f': /* from argument */
+ from_arg = optarg;
+ break;
+ case 'e': /* server expect string on 220 */
server_expect = optarg;
break;
case 'c': /* critical time threshold */
" Make connection on the indicated port (default: %d)\n"
" -e, --expect=STRING\n"
" String to expect in first line of server response (default: %s)\n"
+ " -f, --from=STRING\n"
+ " from address to include in MAIL command (default NULL, Exchange2000 requires one)\n"
" -w, --warning=INTEGER\n"
" Seconds necessary to result in a warning status\n"
" -c, --critical=INTEGER\n"
print_usage (void)
{
printf
- ("Usage: %s -H host [-e expect] [-p port] [-w warn] [-c crit] [-t timeout] [-v]\n"
+ ("Usage: %s -H host [-e expect] [-p port] [-f from addr] [-w warn] [-c crit] [-t timeout] [-v]\n"
" %s --help\n"
" %s --version\n", PROGNAME, PROGNAME, PROGNAME);
}