Merge from vendor branch GDB:
[dragonfly.git] / contrib / sendmail-8.13.4 / contrib / mh.patch
1 Message-Id: <199309031900.OAA19417@ignatz.acs.depaul.edu>
2 To: bug-mh@ics.uci.edu
3 cc: mh-users@ics.uci.edu, eric@cs.berkeley.edu
4 Subject: MH-6.8.1/Sendmail 8.X (MH patch) updated
5 Date: Fri, 03 Sep 1993 14:00:46 -0500
6 From: Dave Nelson <dcn@ignatz.acs.depaul.edu>
7
8
9         This patch will fix the "X-auth..." warnings from the newer
10 Sendmails (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
41 over and that you agree with what it is doing.  It works for me, but I
42 can't test it on every possible combination.  Make sure that it works
43 before 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.
46 Feed 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
48 new sendmails.  Using "mts sendmail"  will cause the new sendmails to
49 print an "X-auth..." warning about who owns the process piping the mail 
50 message.  I don't know of anyway of getting rid of these.
51
52         mh-config (if necessary), make, make inst-all.
53
54
55 I hope this helps people.
56         
57 /dcn
58
59 Dave Nelson
60 Academic Computer Services
61 DePaul 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");