Thanks to Judd and Markus for your replies.

I just may add the snippet in there.  A daily report
of who is bogging down our servers would let me
get them out of there instead of waiting a few days
for the things to time out or go away for whatever
reason they do.

I was talking with an admin who was wondering if we
were blocking his servers.  I mentioned the problem
w/ the bare line feeds and he said he had installed a
patch to get rid of it.  So at least I have something to
tell these people.  "Patch your broken server...and
have you looked into qmail?"  8^)

Michael Boyiazis -----
[EMAIL PROTECTED]

NetZero
Mail/Sys/Network Admin

> -----Original Message-----
> From: Racer X [mailto:[EMAIL PROTECTED]]
> Sent: Friday, October 29, 1999 1:37 PM
> To: [EMAIL PROTECTED]
> Subject: Re: snoop and bare line feeds
>
>
> This is a known bug in the Microsoft SMTP server (the thing
> that comes with
> the NT Option Pack).  It correctly interprets temporary
> errors as temporary
> and retries the message, but unfortunately it tries again
> IMMEDIATELY, which
> causes a lot of useless traffic.
>
> I can't advise as to what the problem is with that particular
> message; I've
> seen the problem pop up with various temporary errors, but
> it's always MS
> SMTP on the other end.
>
> The solution is to tell the remote to get a real mail server - this is
> pretty broken behavior.  You can also, if you have the
> tarpitting patches
> installed, tarpit the remote server, which will at least slow
> it down until
> the remote administrator fixes it.

and:

> What I did was to patch qmail-smtpd.c to report stray newlines:

> There is a function called straynewline().

> To that function I've added:
>    logerr("protoerror: "); logerrpid(); logerrf("error: stray
newlines\n");
> (before the _exit(1);  :-)

> To make it work you also need the following code snippet:

> char strnum[FMT_ULONG];
> char sserrbuf[512];
> substdio sserr = SUBSTDIO_FDBUF(write,2,sserrbuf,sizeof(sserrbuf));
> void logerr(s) char *s; { if(substdio_puts(&sserr,s) == -1) _exit(1); }
> void logerrf(s) char *s; { if(substdio_puts(&sserr,s) == -1) _exit(1);
> if(substdio_flush(&sserr) == -1) _exit(1); }
> void logerrpid() { strnum[fmt_ulong(strnum,getpid())] = 0; logerr("pid ");
loger
> r(strnum); logerr(": ");}

> (this is only tested with qmail-1.01 but should also work finde with 1.03)


__________________________________________
NetZero - Defenders of the Free World
Get your FREE Internet Access and Email at
http://www.netzero.net/download/index.html

Reply via email to