]>
Commit | Line | Data |
---|---|---|
ff507bc0 JB |
1 | diff -Nur sendmail-8.12.0.orig/sendmail/conf.c sendmail-8.12.0/sendmail/conf.c |
2 | --- sendmail-8.12.0.orig/sendmail/conf.c Wed Sep 5 00:43:02 2001 | |
3 | +++ sendmail-8.12.0/sendmail/conf.c Mon Sep 24 10:01:52 2001 | |
4 | @@ -326,6 +326,8 @@ | |
5 | DontLockReadFiles = true; | |
6 | DontProbeInterfaces = DPI_PROBEALL; | |
c99e5551 | 7 | DoubleBounceAddr = "postmaster"; |
a20d5b0b JB |
8 | + DetectTelnet = 0; |
9 | + ExitOnTelnet = 1; | |
c99e5551 | 10 | MaxHeadersLength = MAXHDRSLEN; |
8efdcb48 | 11 | MaxForwardEntries = 0; |
ff507bc0 JB |
12 | FastSplit = 1; |
13 | diff -Nur sendmail-8.12.0.orig/sendmail/err.c sendmail-8.12.0/sendmail/err.c | |
14 | --- sendmail-8.12.0.orig/sendmail/err.c Wed Sep 5 00:43:03 2001 | |
15 | +++ sendmail-8.12.0/sendmail/err.c Mon Sep 24 10:02:57 2001 | |
16 | @@ -909,15 +909,17 @@ | |
17 | (void) sm_strlcpyn(eb, spaceleft, 2, | |
18 | shortenstring(to, MAXSHORTSTR), "... "); | |
c99e5551 | 19 | spaceleft -= strlen(eb); |
8efdcb48 JB |
20 | - while (*eb != '\0') |
21 | - *eb++ &= 0177; | |
dbea50b4 JB |
22 | + if(!DetectTelnet) |
23 | + while (*eb != '\0') | |
24 | + *eb++ &= 0177; | |
c99e5551 | 25 | } |
26 | ||
27 | /* output the message */ | |
ff507bc0 | 28 | (void) sm_vsnprintf(eb, spaceleft, fmt, ap); |
c99e5551 | 29 | spaceleft -= strlen(eb); |
30 | - while (*eb != '\0') | |
8efdcb48 | 31 | - *eb++ &= 0177; |
dbea50b4 JB |
32 | + if(!DetectTelnet) |
33 | + while (*eb != '\0') | |
34 | + *eb++ &= 0177; | |
c99e5551 | 35 | |
36 | /* output the error code, if any */ | |
37 | if (eno != 0) | |
ff507bc0 JB |
38 | diff -Nur sendmail-8.12.0.orig/sendmail/readcf.c sendmail-8.12.0/sendmail/readcf.c |
39 | --- sendmail-8.12.0.orig/sendmail/readcf.c Wed Sep 5 00:43:05 2001 | |
40 | +++ sendmail-8.12.0/sendmail/readcf.c Mon Sep 24 10:06:43 2001 | |
41 | @@ -2039,6 +2039,10 @@ | |
42 | # define O_SOFTBOUNCE 0xcf | |
43 | { "SoftBounce", O_SOFTBOUNCE, OI_NONE }, | |
44 | #endif /* _FFR_SOFT_BOUNCE */ | |
45 | +#define O_DETECTTELNET 0xd0 | |
17de0f02 | 46 | + { "DetectTelnet", O_DETECTTELNET, OI_NONE }, |
ff507bc0 JB |
47 | +#define O_EXITONTELNET 0xd1 |
48 | + { "ExitOnTelnet", O_EXITONTELNET, OI_NONE }, | |
8efdcb48 JB |
49 | { NULL, '\0', OI_NONE } |
50 | }; | |
51 | ||
ff507bc0 | 52 | @@ -3462,6 +3466,14 @@ |
c99e5551 | 53 | break; |
ff507bc0 JB |
54 | #endif /* _FFR_SOFT_BOUNCE */ |
55 | ||
dbea50b4 | 56 | + case O_DETECTTELNET: /* detect telnet */ |
c99e5551 | 57 | + DetectTelnet = atobool(val); |
58 | + break; | |
59 | + | |
dbea50b4 | 60 | + case O_EXITONTELNET: /* exit if telnet detected */ |
c99e5551 | 61 | + ExitOnTelnet = atobool(val); |
62 | + break; | |
ff507bc0 | 63 | + |
c99e5551 | 64 | default: |
65 | if (tTd(37, 1)) | |
ff507bc0 JB |
66 | { |
67 | diff -Nur sendmail-8.12.0.orig/sendmail/sendmail.h sendmail-8.12.0/sendmail/sendmail.h | |
68 | --- sendmail-8.12.0.orig/sendmail/sendmail.h Wed Sep 5 00:43:05 2001 | |
69 | +++ sendmail-8.12.0/sendmail/sendmail.h Mon Sep 24 10:01:52 2001 | |
70 | @@ -2074,6 +2074,8 @@ | |
71 | EXTERN bool WorkAroundBrokenAAAA; /* some nameservers return SERVFAIL on AAAA queries */ | |
8efdcb48 | 72 | EXTERN bool UseErrorsTo; /* use Errors-To: header (back compat) */ |
8efdcb48 | 73 | EXTERN bool UseNameServer; /* using DNS -- interpret h_errno & MX RRs */ |
c99e5551 | 74 | +EXTERN bool DetectTelnet; /* force telnet detection on/off */ |
75 | +EXTERN bool ExitOnTelnet; /* exit if telnet detected */ | |
8efdcb48 JB |
76 | EXTERN char InetMode; /* default network for daemon mode */ |
77 | EXTERN char OpMode; /* operation mode, see below */ | |
78 | EXTERN char SpaceSub; /* substitution for <lwsp> */ | |
ff507bc0 JB |
79 | diff -Nur sendmail-8.12.0.orig/sendmail/srvrsmtp.c sendmail-8.12.0/sendmail/srvrsmtp.c |
80 | --- sendmail-8.12.0.orig/sendmail/srvrsmtp.c Wed Sep 5 00:43:06 2001 | |
81 | +++ sendmail-8.12.0/sendmail/srvrsmtp.c Mon Sep 24 10:09:38 2001 | |
82 | @@ -12,6 +12,7 @@ | |
83 | */ | |
c99e5551 | 84 | |
8efdcb48 | 85 | #include <sendmail.h> |
c99e5551 | 86 | +#include <arpa/telnet.h> |
ff507bc0 JB |
87 | #if MILTER |
88 | # include <libmilter/mfdef.h> | |
89 | #endif /* MILTER */ | |
17de0f02 | 90 | @@ -369,6 +370,9 @@ |
8efdcb48 | 91 | char *args[MAXSMTPARGS]; |
c99e5551 | 92 | char inp[MAXLINE]; |
93 | char cmdbuf[MAXLINE]; | |
94 | + char telnet_request[] = {IAC, DO, TELOPT_SGA, 0}; | |
95 | + char telnet_response[] = {IAC, WILL, TELOPT_SGA, 0}; | |
17de0f02 | 96 | + char *telnet_tmp; |
ff507bc0 | 97 | #if SASL |
8efdcb48 JB |
98 | sasl_conn_t *conn; |
99 | volatile bool sasl_ok; | |
ff507bc0 | 100 | @@ -666,12 +669,8 @@ |
c99e5551 | 101 | id = strchr(inp, ' '); |
102 | if (id == NULL) | |
103 | id = &inp[strlen(inp)]; | |
8efdcb48 | 104 | - if (p == NULL) |
ff507bc0 | 105 | - (void) sm_snprintf(cmdbuf, sizeof cmdbuf, |
8efdcb48 JB |
106 | - "%s %%.*s ESMTP%%s", greetcode); |
107 | - else | |
ff507bc0 | 108 | - (void) sm_snprintf(cmdbuf, sizeof cmdbuf, |
8efdcb48 | 109 | - "%s-%%.*s ESMTP%%s", greetcode); |
aef0455c | 110 | + sm_snprintf(cmdbuf, sizeof cmdbuf, "%s%c%%.*s ESMTP%%s%s", greetcode, |
dbea50b4 JB |
111 | + (p == NULL) ? ' ' : '-', DetectTelnet ? telnet_request : ""); |
112 | message(cmdbuf, (int) (id - inp), inp, id); | |
c99e5551 | 113 | |
114 | /* output remaining lines */ | |
ff507bc0 | 115 | @@ -764,6 +763,20 @@ |
8efdcb48 | 116 | goto doquit; |
c99e5551 | 117 | } |
ff507bc0 | 118 | |
c99e5551 | 119 | + if (DetectTelnet && strlen(inp) >= 3) |
8efdcb48 JB |
120 | + for (telnet_tmp = inp; *(telnet_tmp+2); telnet_tmp++) |
121 | + if (!strncmp(telnet_tmp, telnet_response, 3)) | |
122 | + { | |
123 | + sm_syslog(LOG_NOTICE, e->e_id, | |
124 | + "telnet detected from %.100s (%.100s)", | |
125 | + CurSmtpClient, anynet_ntoa(&RealHostAddr)); | |
126 | + if (ExitOnTelnet) | |
127 | + { | |
128 | + message("571 Unauthorized usage prohibited"); | |
129 | + goto doquit; | |
130 | + } | |
131 | + } | |
ff507bc0 JB |
132 | + |
133 | #if _FFR_ADAPTIVE_EOL | |
134 | if (first) | |
135 | { |