I've solved my broken pipe problem, but since it seemed a little out of the
ordinary, I'm including some history and the solution.
When first installing exim, I found a set of instructions on how to set
things up for a dial-up system where the internal addresses were different
from the address used to send/receive from the ISP. Those instructions said
to use a transport filter on the external SMTP transport. The script
referred to in the transport_filter line is below, modified for my purposes.
==========
#!/usr/bin/perl
while (<STDIN>) {
if (/^From: /) {
s/'don@???'/'editor.ac@???'/;
s/'root@???'/'npegram@???'/;
s/'nigel@???'/'npegram@???'/;
print "$_"; last;
}
print "$_"
}
while (<STDIN>) { print "$_"; }
==========
At this point, I hadn't heard of address rewriting, but when it came up on
the list recently, and as I could successfully conduct an SMTP session using
the same addresses that were failing with the broken pipe, I guessed that
this filter might be a source of the problem. Replacing the transport filter
with a rewriting rule that looked up an email address substitution file
worked perfectly, and now I can send with no hiccoughs.
I do not know why the filter caused the broken pipe, whether it highlights a
bug or simply shows a way NOT to do something.