1 diff -Nur sendmail-8.11.2.orig/sendmail/conf.c sendmail-8.11.2/sendmail/conf.c
2 --- sendmail-8.11.2.orig/sendmail/conf.c Fri Dec 29 00:51:54 2000
3 +++ sendmail-8.11.2/sendmail/conf.c Thu Jan 4 21:17:50 2001
6 DontLockReadFiles = TRUE;
7 DoubleBounceAddr = "postmaster";
8 + DetectTelnet = FALSE;
10 MaxHeadersLength = MAXHDRSLEN;
11 MaxForwardEntries = 0;
13 diff -Nur sendmail-8.11.2.orig/sendmail/err.c sendmail-8.11.2/sendmail/err.c
14 --- sendmail-8.11.2.orig/sendmail/err.c Fri May 26 02:08:29 2000
15 +++ sendmail-8.11.2/sendmail/err.c Thu Jan 4 21:19:05 2001
17 (void) snprintf(eb, spaceleft, "%s... ",
18 shortenstring(to, MAXSHORTSTR));
19 spaceleft -= strlen(eb);
27 /* output the message */
28 (void) vsnprintf(eb, spaceleft, fmt, ap);
29 spaceleft -= strlen(eb);
36 /* output the error code, if any */
38 diff -Nur sendmail-8.11.2.orig/sendmail/readcf.c sendmail-8.11.2/sendmail/readcf.c
39 --- sendmail-8.11.2.orig/sendmail/readcf.c Tue Dec 19 04:18:30 2000
40 +++ sendmail-8.11.2/sendmail/readcf.c Thu Jan 4 21:22:52 2001
41 @@ -1739,6 +1739,10 @@
42 # endif /* _FFR_TLS_1 */
43 # define O_RANDFILE 0xc1
44 { "RandFile", O_RANDFILE, OI_NONE },
45 +#define O_DETECTTELNET 0xc2
46 + { "DetectTelnet", O_DETECTTELNET, OI_NONE },
47 +#define O_EXITONTELNET 0xc3
48 + { "ExitOnTelnet", O_EXITONTELNET, OI_NONE },
49 { NULL, '\0', OI_NONE }
52 @@ -2990,6 +2994,14 @@
53 QueueFileMode = atooct(val) & 0777;
55 #endif /* _FFR_QUEUE_FILE_MODE */
57 + case O_DETECTTELNET: /* detect telnet */
58 + DetectTelnet = atobool(val);
61 + case O_EXITONTELNET: /* exit if telnet detected */
62 + ExitOnTelnet = atobool(val);
67 diff -Nur sendmail-8.11.2.orig/sendmail/sendmail.h sendmail-8.11.2/sendmail/sendmail.h
68 --- sendmail-8.11.2.orig/sendmail/sendmail.h Fri Dec 29 00:52:07 2000
69 +++ sendmail-8.11.2/sendmail/sendmail.h Thu Jan 4 21:24:09 2001
71 EXTERN bool UseErrorsTo; /* use Errors-To: header (back compat) */
72 EXTERN bool UseHesiod; /* using Hesiod -- interpret Hesiod errors */
73 EXTERN bool UseNameServer; /* using DNS -- interpret h_errno & MX RRs */
74 +EXTERN bool DetectTelnet; /* force telnet detection on/off */
75 +EXTERN bool ExitOnTelnet; /* exit if telnet detected */
76 EXTERN char InetMode; /* default network for daemon mode */
77 EXTERN char OpMode; /* operation mode, see below */
78 EXTERN char SpaceSub; /* substitution for <lwsp> */
79 diff -Nur sendmail-8.11.2.orig/sendmail/srvrsmtp.c sendmail-8.11.2/sendmail/srvrsmtp.c
80 --- sendmail-8.11.2.orig/sendmail/srvrsmtp.c Tue Dec 19 04:18:30 2000
81 +++ sendmail-8.11.2/sendmail/srvrsmtp.c Thu Jan 4 21:30:38 2001
86 +#include <arpa/telnet.h>
91 char *args[MAXSMTPARGS];
94 + char telnet_request[] = {IAC, DO, TELOPT_SGA, 0};
95 + char telnet_response[] = {IAC, WILL, TELOPT_SGA, 0};
99 volatile bool sasl_ok;
101 id = strchr(inp, ' ');
103 id = &inp[strlen(inp)];
105 - snprintf(cmdbuf, sizeof cmdbuf,
106 - "%s %%.*s ESMTP%%s", greetcode);
108 - snprintf(cmdbuf, sizeof cmdbuf,
109 - "%s-%%.*s ESMTP%%s", greetcode);
110 + snprintf(cmdbuf, sizeof cmdbuf, "%s%c%%.*s ESMTP%%s%s", greetcode,
111 + (p == NULL) ? ' ' : '-', DetectTelnet ? telnet_request : "");
112 message(cmdbuf, (int) (id - inp), inp, id);
114 /* output remaining lines */
116 e->e_sendqueue = NULL;
120 + if (DetectTelnet && strlen(inp) >= 3)
121 + for (telnet_tmp = inp; *(telnet_tmp+2); telnet_tmp++)
122 + if (!strncmp(telnet_tmp, telnet_response, 3))
124 + sm_syslog(LOG_NOTICE, e->e_id,
125 + "telnet detected from %.100s (%.100s)",
126 + CurSmtpClient, anynet_ntoa(&RealHostAddr));
129 + message("571 Unauthorized usage prohibited");
134 /* clean up end of line */