diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/check_smtp.c | 16 | 
1 files changed, 16 insertions, 0 deletions
| diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c index 2000c620..2d2e2891 100644 --- a/plugins/check_smtp.c +++ b/plugins/check_smtp.c | |||
| @@ -43,6 +43,8 @@ | |||
| 43 | 43 | ||
| 44 | #define SMTP_PORT 25 | 44 | #define SMTP_PORT 25 | 
| 45 | #define SMTP_EXPECT "220" | 45 | #define SMTP_EXPECT "220" | 
| 46 | #define SMTP_HELO "HELO " | ||
| 47 | |||
| 46 | /* sendmail will syslog a "NOQUEUE" error if session does not attempt | 48 | /* sendmail will syslog a "NOQUEUE" error if session does not attempt | 
| 47 | * to do something useful. This can be prevented by giving a command | 49 | * to do something useful. This can be prevented by giving a command | 
| 48 | * even if syntax is illegal (MAIL requires a FROM:<...> argument) | 50 | * even if syntax is illegal (MAIL requires a FROM:<...> argument) | 
| @@ -74,10 +76,18 @@ main (int argc, char **argv) | |||
| 74 | int sd; | 76 | int sd; | 
| 75 | int result; | 77 | int result; | 
| 76 | char buffer[MAX_INPUT_BUFFER] = ""; | 78 | char buffer[MAX_INPUT_BUFFER] = ""; | 
| 79 | char helocmd[255] = SMTP_HELO ; | ||
| 80 | char myhostname[248]; | ||
| 81 | |||
| 77 | 82 | ||
| 78 | if (process_arguments (argc, argv) != OK) | 83 | if (process_arguments (argc, argv) != OK) | 
| 79 | usage ("Invalid command arguments supplied\n"); | 84 | usage ("Invalid command arguments supplied\n"); | 
| 80 | 85 | ||
| 86 | /* initalize the HELO command with the localhostname */ | ||
| 87 | gethostname(myhostname, sizeof(myhostname)); | ||
| 88 | strcat(helocmd, myhostname); | ||
| 89 | strcat(helocmd, "\r\n"); | ||
| 90 | |||
| 81 | /* initialize alarm signal handling */ | 91 | /* initialize alarm signal handling */ | 
| 82 | signal (SIGALRM, socket_timeout_alarm_handler); | 92 | signal (SIGALRM, socket_timeout_alarm_handler); | 
| 83 | 93 | ||
| @@ -138,12 +148,18 @@ main (int argc, char **argv) | |||
| 138 | } | 148 | } | 
| 139 | 149 | ||
| 140 | /* close the connection */ | 150 | /* close the connection */ | 
| 151 | /* first send the HELO command */ | ||
| 152 | send(sd,helocmd,strlen(helocmd),0); | ||
| 153 | /* allow for response to helo command to reach us */ | ||
| 154 | recv(sd,buffer,MAX_INPUT_BUFFER-1,0); | ||
| 155 | |||
| 141 | #ifdef SMTP_USE_DUMMYCMD | 156 | #ifdef SMTP_USE_DUMMYCMD | 
| 142 | send(sd,SMTP_DUMMYCMD,strlen(SMTP_DUMMYCMD),0); | 157 | send(sd,SMTP_DUMMYCMD,strlen(SMTP_DUMMYCMD),0); | 
| 143 | /* allow for response to DUMMYCMD to reach us */ | 158 | /* allow for response to DUMMYCMD to reach us */ | 
| 144 | recv(sd,buffer,MAX_INPUT_BUFFER-1,0); | 159 | recv(sd,buffer,MAX_INPUT_BUFFER-1,0); | 
| 145 | #endif /* SMTP_USE_DUMMYCMD */ | 160 | #endif /* SMTP_USE_DUMMYCMD */ | 
| 146 | 161 | ||
| 162 | /* finally close the connection */ | ||
| 147 | send (sd, SMTP_QUIT, strlen (SMTP_QUIT), 0); | 163 | send (sd, SMTP_QUIT, strlen (SMTP_QUIT), 0); | 
| 148 | close (sd); | 164 | close (sd); | 
| 149 | } | 165 | } | 
