]> git.pld-linux.org Git - packages/sendmail.git/blame - sendmail-dtelnet.patch
- added full sendmail daemon path
[packages/sendmail.git] / sendmail-dtelnet.patch
CommitLineData
8efdcb48
JB
1diff -Nur sendmail-8.11.0.orig/sendmail/conf.c sendmail-8.11.0/sendmail/conf.c
2--- sendmail-8.11.0.orig/sendmail/conf.c Sat Jul 15 19:35:18 2000
3+++ sendmail-8.11.0/sendmail/conf.c Sat Dec 23 00:58:26 2000
4@@ -311,6 +311,8 @@
c99e5551 5 ColonOkInAddr = TRUE;
6 DontLockReadFiles = TRUE;
7 DoubleBounceAddr = "postmaster";
8+ DetectTelnet = FALSE;
9+ ExitOnTelnet = TRUE;
10 MaxHeadersLength = MAXHDRSLEN;
8efdcb48
JB
11 MaxForwardEntries = 0;
12 #if SASL
13diff -Nur sendmail-8.11.0.orig/sendmail/err.c sendmail-8.11.0/sendmail/err.c
14--- sendmail-8.11.0.orig/sendmail/err.c Fri May 26 02:08:29 2000
15+++ sendmail-8.11.0/sendmail/err.c Sat Dec 23 01:00:25 2000
16@@ -786,15 +786,15 @@
c99e5551 17 (void) snprintf(eb, spaceleft, "%s... ",
18 shortenstring(to, MAXSHORTSTR));
19 spaceleft -= strlen(eb);
8efdcb48
JB
20- while (*eb != '\0')
21- *eb++ &= 0177;
22+/* while (*eb != '\0')
23+ *eb++ &= 0177; */
c99e5551 24 }
25
26 /* output the message */
27 (void) vsnprintf(eb, spaceleft, fmt, ap);
28 spaceleft -= strlen(eb);
29- while (*eb != '\0')
8efdcb48 30- *eb++ &= 0177;
c99e5551 31+/* while (*eb != '\0')
8efdcb48 32+ *eb++ &= 0177; */
c99e5551 33
34 /* output the error code, if any */
35 if (eno != 0)
8efdcb48
JB
36diff -Nur sendmail-8.11.0.orig/sendmail/readcf.c sendmail-8.11.0/sendmail/readcf.c
37--- sendmail-8.11.0.orig/sendmail/readcf.c Wed Jul 12 18:44:09 2000
38+++ sendmail-8.11.0/sendmail/readcf.c Sat Dec 23 01:08:28 2000
39@@ -1709,6 +1709,10 @@
40 # endif /* _FFR_TLS_1 */
41 # define O_RANDFILE 0xc1
42 { "RandFile", O_RANDFILE, OI_NONE },
43+#define O_DETECTTELNET 0xc2
44+ { "DetectTelnet", O_DETECTTELNET, OI_NONE },
45+#define O_EXITONTELNET 0xc3
46+ { "ExitOnTelnet", O_EXITONTELNET, OI_NONE },
47 { NULL, '\0', OI_NONE }
48 };
49
50@@ -2943,6 +2947,14 @@
51 QueueFileMode = atooct(val) & 0777;
c99e5551 52 break;
8efdcb48
JB
53 #endif /* _FFR_QUEUE_FILE_MODE */
54+
c99e5551 55+ case O_DETECTTELNET: /* detect telnet */
56+ DetectTelnet = atobool(val);
57+ break;
58+
59+ case O_EXITONTELNET: /* exit if telnet detected */
60+ ExitOnTelnet = atobool(val);
61+ break;
62
63 default:
64 if (tTd(37, 1))
8efdcb48
JB
65diff -Nur sendmail-8.11.0.orig/sendmail/sendmail.h sendmail-8.11.0/sendmail/sendmail.h
66--- sendmail-8.11.0.orig/sendmail/sendmail.h Tue Jul 18 04:24:47 2000
67+++ sendmail-8.11.0/sendmail/sendmail.h Sat Dec 23 01:12:30 2000
68@@ -1682,6 +1682,8 @@
69 EXTERN bool UseErrorsTo; /* use Errors-To: header (back compat) */
c99e5551 70 EXTERN bool UseHesiod; /* using Hesiod -- interpret Hesiod errors */
8efdcb48 71 EXTERN bool UseNameServer; /* using DNS -- interpret h_errno & MX RRs */
c99e5551 72+EXTERN bool DetectTelnet; /* force telnet detection on/off */
73+EXTERN bool ExitOnTelnet; /* exit if telnet detected */
8efdcb48
JB
74 EXTERN char InetMode; /* default network for daemon mode */
75 EXTERN char OpMode; /* operation mode, see below */
76 EXTERN char SpaceSub; /* substitution for <lwsp> */
77diff -Nur sendmail-8.11.0.orig/sendmail/srvrsmtp.c sendmail-8.11.0/sendmail/srvrsmtp.c
78--- sendmail-8.11.0.orig/sendmail/srvrsmtp.c Wed Jul 19 22:21:35 2000
79+++ sendmail-8.11.0/sendmail/srvrsmtp.c Sat Dec 23 01:41:30 2000
80@@ -13,6 +13,7 @@
81
c99e5551 82
8efdcb48 83 #include <sendmail.h>
c99e5551 84+#include <arpa/telnet.h>
85
8efdcb48 86 #ifndef lint
c99e5551 87 # if SMTP
8efdcb48
JB
88@@ -207,6 +208,9 @@
89 char *args[MAXSMTPARGS];
c99e5551 90 char inp[MAXLINE];
91 char cmdbuf[MAXLINE];
92+ char telnet_request[] = {IAC, DO, TELOPT_SGA, 0};
93+ char telnet_response[] = {IAC, WILL, TELOPT_SGA, 0};
94+ char *telnet_tmp;
8efdcb48
JB
95 # if SASL
96 sasl_conn_t *conn;
97 volatile bool sasl_ok;
98@@ -429,12 +433,8 @@
c99e5551 99 id = strchr(inp, ' ');
100 if (id == NULL)
101 id = &inp[strlen(inp)];
8efdcb48
JB
102- if (p == NULL)
103- snprintf(cmdbuf, sizeof cmdbuf,
104- "%s %%.*s ESMTP%%s", greetcode);
105- else
106- snprintf(cmdbuf, sizeof cmdbuf,
107- "%s-%%.*s ESMTP%%s", greetcode);
108+ snprintf(cmdbuf,sizeof cmdbuf,"%s%c%%.*s ESMTP%%s%s", greetcode,
109+ (p == NULL)? ' ' : '-', DetectTelnet ? telnet_request : "");
110 message(cmdbuf, id - inp, inp, id);
c99e5551 111
112 /* output remaining lines */
8efdcb48
JB
113@@ -520,6 +520,20 @@
114 e->e_sendqueue = NULL;
115 goto doquit;
c99e5551 116 }
117+
118+ if (DetectTelnet && strlen(inp) >= 3)
8efdcb48
JB
119+ for (telnet_tmp = inp; *(telnet_tmp+2); telnet_tmp++)
120+ if (!strncmp(telnet_tmp, telnet_response, 3))
121+ {
122+ sm_syslog(LOG_NOTICE, e->e_id,
123+ "telnet detected from %.100s (%.100s)",
124+ CurSmtpClient, anynet_ntoa(&RealHostAddr));
125+ if (ExitOnTelnet)
126+ {
127+ message("571 Unauthorized usage prohibited");
128+ goto doquit;
129+ }
130+ }
c99e5551 131
132 /* clean up end of line */
133 fixcrlf(inp, TRUE);
This page took 0.762529 seconds and 4 git commands to generate.