This patch contains everything in v0.04 plus the PIPELINING extension defined in RfC 2920. If the remote server announces PIPELINING the
MAIL FROM:, RCPT TO: and DATA commands are sent as a single batch and the return codes are checked after this. This reduced the penalty of a
high latency connection and avoids sending many small TCP packets for this commands. There are now also some extra checks for what the server
returns, v0.04 would use SIZE even if the server only announces SIZEFOO.
This patch does not apply cleanly if you have applied the STARTTLS patch (and vice versa). You have to kill the first patch to qmail-remote.c
from the TLS diff (this one adds another type of EHLO support). If you are using netqmail you can apply the rest of the TLS patch now. There will
be 3 rejects, the first one can be completely ignored, the second can be ignored if you don't plan to use SMTPS on port 465 (else you have to
apply the first half of the second reject by hand), the third one is a only three lines long and can easily be applied by hand. (tested with
netqmail-1.05 and netqmail-1.05-tls-20040419.patch).
Then you have to remove this part of the function tls_init():
if (!smtps) {
stralloc *sa = ehlokw.sa;
unsigned int len = ehlokw.len;
/* look for STARTTLS among EHLO keywords */
for ( ; len && case_diffs(sa->s, "STARTTLS"); ++sa, --len) ;
if (!len) {
if (!servercert) return 0;
out("ZNo TLS achieved while "); out(servercert);
out(" exists"); smtptext.len = 0; TLS_QUIT;
}
}