Path: utzoo!attcan!uunet!lll-winken!ames!mailrus!tut.cis.ohio-state.edu!ucbvax!SUMEX-AIM.STANFORD.EDU!mrc From: mrc@SUMEX-AIM.STANFORD.EDU (Mark Crispin) Newsgroups: comp.protocols.tcp-ip Subject: Re: Broken SMTP daemon @ WPAFB-FDL.ARPA Message-ID: Date: 15 Mar 89 22:09:18 GMT References: <8903141711.AA03221@cgsc-fs1> Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 40 I wrote the TOPS-20 SMTP server. I think that ISI and GUNTER-ADAM run their own homebrew server, but all other 20's run mine. Some, such as the NIC, have hacked their servers; the "Don't Worry." was originally "Please report any problems to Bug-MAISER@WSMR-SIMTEL20.ARMY.MIL." ... At the time I wrote it (1982) I endeavored to make it conform to the standards as published in RFC-821. I also believed in thorough syntax checking. I was already warned that some Unix systems used a bogus form of A-D-L: <@foo:@bar:rag@zap> instead of the correct <@foo,@bar:rag@zap> and that many omitted the "@zap" part as well if "zap" .eq. server-host. I made allowances for these external bugs. However, I believed that this did not imply license for new SMTP clients to violate SMTP in other ways. So, I require a HELO before a MAIL, a MAIL before a RCPT, and a RCPT before a DATA. I also check the argument for the HELO, but no HELO is ever rejected unless the argument is missing (a client bug), syntactically bad (a client bug), or it the argument equals the local name and the connection isn't coming from the local host (a client and/or network "mirroring" bug, the latter being quite common in NCP days). My worst "crime" in all of this was my firm insistance that a NEWLINE that ended an SMTP command was a CR followed immediately by a LF. No bare CR's, bare LF's, LFCR's, CR NUL's, etc. etc. need apply. About once a month, I get a message from some guy *insisting* that my server is broken, and it turns out he's sending bare LF's for newlines because his sendmail.cf is broken. How do I feel today? I don't care. Nobody seems to care whether or not the protocols conform to specifications as long as they interoperate (which, I guess, is the bottom line) so everybody just makes allowances for the zillions of new bugs except for stubborn twerps like me who don't want to be bothered to remove all my own syntax checking code and just tell the guys "it's your bug, fix your client!!" Then, when things like an Internet Worm hit, we're unaffected and happily networking until they take down the net on us...... :-) -- Mark -- -------