I run a homegrown SMTP daemon written in Perl, on Redhat 7.3.

Lately, emails sent from some clients are received in duplicates. The
clients either run Communigate Pro, or IPlanet, MDaemon, all running
some versions of Windows.

The emails duplicate because the client sends it multiple times. The
cause is when it finishes sending DATA (with "."), my program replies
with the "250" response but the client didn't receive it. After long
waiting, it would disconnect and later try sending again, several
times.

Emails from other senders, like yahoogroups, hotmail, etc. do not
experience this problem.

After some more testing, a filtering seems to be the cause of the
problem.

If I print

"250 QUEUED - 123"

or (somewhat mimicking qmail)

"250 QUEUED(250) - 1084263071 qp 4221"

then everything works, but if I send:

"250 QUEUED(250) - 8c3d931926ca4e8a9dfea84f06dbdc1a"

then the client won't receive the above 250 response line. The 32
hexacharacter part is a GUID which I produce randomly using 16 bytes
retrieved every time from /dev/urandom. Now why would a proxy or a
firewall regard a random 32 hexadecimal character as suspicious and
block/filter it? Is this a known problem?

I couldn't find any other cause (like line-ending differences,
buffering issues) aside from this particular thing that seems to cause
the problem.

Any insight would be appreciated.

--
dave

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




Reply via email to