1Message-Id: <199309031900.OAA19417@ignatz.acs.depaul.edu>
2To: bug-mh@ics.uci.edu
3cc: mh-users@ics.uci.edu, eric@cs.berkeley.edu
4Subject: MH-6.8.1/Sendmail 8.X (MH patch) updated
5Date: Fri, 03 Sep 1993 14:00:46 -0500
6From: Dave Nelson <dcn@ignatz.acs.depaul.edu>
7
8
9	This patch will fix the "X-auth..." warnings from the newer
10Sendmails (8.X) while continuing to work with the old sendmails.
11
12	I think the following patch will make everyone happy.
13
14	1)  Anybody with MH-6.8.1 can install this.  It doesn't matter
15	    what version of sendmail you're running.  It doesn't matter
16	    if you're not running sendmail (but it won't fix anything
17	    for you).
18
19	2)  No configuration file hacks. If the -client switch is
20	    absent (the default), the new sendmails will get an EHLO 
21	    using what LocalName() returns as the hostname.  On my systems, 
22	    this returns the FQDN.  If the EHLO fails with a result between 
23	    500 and 599  and the -client switch is not set, we give up on 
24	    sending EHLO/HELO and just go deliver the mail.
25
26	3)  No new configuration options.
27
28	4)  Retains the undocumented -client switch.  One warning:  it
29	    is possible using the -client switch to cause the old sendmails
30	    to return "I refuse to talk to myself".  You could do this under
31	    the old code as well.  This will happen if you claim to be the
32	    same system as the sendmail you're sending to is running on.  
33	    That's pointless, but possible.  If you do this, just like under
34	    the old code, you will get an error.
35
36	5)  If you're running a site with both old and new sendmails, you only
37	    have to build MH once.  The code's the same; works with them
38	    both.
39
40	If you decide to install this, make sure that you look the patch
41over and that you agree with what it is doing.  It works for me, but I
42can't test it on every possible combination.  Make sure that it works
43before you really install it for your users, if any.  No promises.
44
45	To install this, save this to a file in the mts/sendmail directory.
46Feed it to patch.  Patch will ignore the non-patch stuff.  You should have
47"mts sendmail/smtp" in your configuration file.  This works with old and
48new sendmails.  Using "mts sendmail"  will cause the new sendmails to
49print an "X-auth..." warning about who owns the process piping the mail 
50message.  I don't know of anyway of getting rid of these.
51
52	mh-config (if necessary), make, make inst-all.
53
54
55I hope this helps people.
56	
57/dcn
58
59Dave Nelson
60Academic Computer Services
61DePaul University, Chicago
62
63*** smail.c	Fri Sep  3 11:58:05 1993
64--- smail.c	Fri Sep  3 11:57:27 1993
65***************
66*** 239,261 ****
67  		    return RP_RPLY;
68  	    }
69  
70! 	    if (client && *client) {
71! 		doingEHLO = 1;
72! 		result = smtalk (SM_HELO, "EHLO %s", client);
73! 		doingEHLO = 0;
74  
75! 		if (500 <= result && result <= 599)
76  		    result = smtalk (SM_HELO, "HELO %s", client);
77! 
78! 		switch (result) {
79  		    case 250:
80! 		        break;
81  
82  		    default:
83  			(void) sm_end (NOTOK);
84  			return RP_RPLY;
85  		}
86  	    }
87  
88  #ifndef	ZMAILER
89  	    if (onex)
90--- 239,276 ----
91  		    return RP_RPLY;
92  	    }
93  
94! 	    doingEHLO = 1;
95! 	    result = smtalk (SM_HELO, "EHLO %s", 
96! 			     (client && *client) ? client : LocalName());
97! 	    doingEHLO = 0;
98! 
99! 	    switch (result)
100! 	    {
101! 	    case 250:
102! 		break;
103  
104! 	    default:
105! 		if (!(500 <= result && result <= 599))
106! 		{
107! 		    (void) sm_end (NOTOK);
108! 		    return RP_RPLY;
109! 		}
110! 		
111! 		if (client && *client)
112! 		{
113  		    result = smtalk (SM_HELO, "HELO %s", client);
114! 		    switch (result)
115! 		    {
116  		    case 250:
117! 			break;
118  
119  		    default:
120  			(void) sm_end (NOTOK);
121  			return RP_RPLY;
122+ 		    }
123  		}
124  	    }
125+ 	    
126  
127  #ifndef	ZMAILER
128  	    if (onex)
129***************
130*** 357,380 ****
131  	    return RP_RPLY;
132      }
133  
134!     if (client && *client) {
135! 	doingEHLO = 1;
136! 	result = smtalk (SM_HELO, "EHLO %s", client);
137! 	doingEHLO = 0;
138  
139! 	if (500 <= result && result <= 599)
140  	    result = smtalk (SM_HELO, "HELO %s", client);
141! 
142! 	switch (result) {
143! 	    case 250: 
144  		break;
145  
146! 	    default: 
147  		(void) sm_end (NOTOK);
148  		return RP_RPLY;
149  	}
150      }
151! 
152  send_options: ;
153      if (watch && EHLOset ("XVRB"))
154  	(void) smtalk (SM_HELO, "VERB on");
155--- 372,409 ----
156  	    return RP_RPLY;
157      }
158  
159!     doingEHLO = 1;
160!     result = smtalk (SM_HELO, "EHLO %s", 
161! 		     (client && *client) ? client : LocalName());
162!     doingEHLO = 0;
163! 
164!     switch (result)
165!     {
166!     case 250:
167! 	break;
168! 
169!     default:
170! 	if (!(500 <= result && result <= 599))
171! 	{
172! 	    (void) sm_end (NOTOK);
173! 	    return RP_RPLY;
174! 	}
175  
176! 	if (client && *client)
177! 	{
178  	    result = smtalk (SM_HELO, "HELO %s", client);
179! 	    switch (result)
180! 	    {
181! 	    case 250:
182  		break;
183  
184! 	    default:
185  		(void) sm_end (NOTOK);
186  		return RP_RPLY;
187+ 	    }
188  	}
189      }
190!     
191  send_options: ;
192      if (watch && EHLOset ("XVRB"))
193  	(void) smtalk (SM_HELO, "VERB on");
194