Request for assistance
John Chambers
jc at trillian.mit.edu
Tue Dec 17 17:29:09 EST 2002
Mark J. Dulcey
| Actually, none of the usual email clients normally make delivery directly to the recipient. They're all normally set up to send email to one specific SMTP server. You can, however, set that server to be whatever you want. To send directly to the recipient, you would have to reconfigure your mail client each time you sent a piece of mail, which would be a colossal pain.
This isn't consistent with the behavior that I've seen on ANY unix
system. The most common MTA, the /bin/mail program, always has a -v
option that shows you the transaction. In most cases, what it shows
you is an immediate connection to the remote system, followed by the
SMTP conversation. When this finishes, the email has been delivered,
and no local server was involved.
If this fails for some reason (e.g., you're offline), you get a line
saying that the message has been queued. This merely means that it is
sitting in a directory (usually /var/spool/mail) on your disk. It has
not been handed to a server of any sort. To handle queued mail, the
sendmail program is invoked occasionally (by crond or your connection
software), but this is not a server invocation. It's sendmail running
as a MTA ("sendmail -q"). It exits as soon as it finishes the queue.
The mail command also typically fires up a "sendmail -q" process if
it successfully sends a message, to attempt to send queued messages
while the window is open.
| And there is a good reason why it's done that way. Client software usually sends mail SYNCHRONOUSLY; that is, the software, or at least the mail client portion of it, is tied up until the mail is sent. (Outlook Express and Eurora are exceptions; they send in the background.) Furthermore, the recipient isn't always available right away; his email server might be down, or there might be a problem in the Internet somewhere between point A and point B.
True, but not even vaguely an answer to the question about sending
mail. A synchronous mail *send* doesn't require a server on the
sending end, only on the receiving end. Bouncing the mail of a local
server is simply a waste of cpu time (and bandwidth if it's on a
different machine). It slows down the transfer by adding an unneeded
hop.
(It also lets software on the server machine spy on your mail, but
that's a different issue. If an ISP insists on this, then you can
assume it's because they're examining your mail.)
| That's the reason we have SMTP servers in the first place. It's their job to do things in the background, to keep trying if they don't succeed immediately, and (typically) to log everything they do. Having a server to do that simplifies the job of the mail client; it means that you have to write all that bulletproof code only once, instead of once for each client.
No, an SMTP server's primary function is to listen for *incoming*
mail. They aren't needed on the sending end. You can use them, yes,
but when you do, you're wasting machine resources and time. If the
server is on a local machine, you've doubled your local email traffic
load. If it's on your ISP, you've doubled your ISP's email traffic
load. You've unnecessarily used disk space on a server machine, and
exposed your mail to examination by the ISP.
| If you have a full-time Internet connection with a static IP address, run your OWN server by all means. (Every Linux distribution these days comes with sendmail, postfix, or some other SMTP server software, and makes it easy to set up, at least in the simple cases.) That keeps the extra traffic off the Internet (your LAN presumably has plenty of capacity for it), and gives you the advantage of full control over your email. But, in a previous message, I pointed out the problems of running your own server if you don't have a full-time connection. That's exactly when an SMTP server at your ISP should be making life easier instead of harder.
If you don't have a full-time connection, you do need a server on
some fully-connected machine for incoming mail. (The UUCP folks had a
solution to this, but the SMTP gang never learned about it. ;-) You
still don't need a local server for outgoing mail. And in the usual
unix setup, you don't use one.
Note that, if you're not connected when you want to send email, a
server at your ISP doesn't help you. You're not connected. You can't
talk to it. When you do connect, you could send your outgoing mail to
the ISP's server, but this is still a waste of time and resources. If
you're going to make a TCP connection to your ISP's server, you might
as well make the connection to the recipient's server instead. Then
the mail gets there in one hop instead of two.
Summary: SMTP servers are needed only for recieving mail. They are
not needed for sending mail. Doing so waste's time and resources. If
your ISP requires using their server, you should be very suspicious,
and you should consider encrypting your mail. They wouldn't want to
use their hardware for this unless it was profitable. Ask yourself
how they could profit from having your email stored on their disks.
(A couple years back, users of msn.com learned this lesson when they
found that Microsoft was extracting things - mostly images - from
their users' email and using them in advertising. Their EULA stated
that all messages going through their machines became the property of
Microsoft. For some reason, a lot of their customers got quite upset
over this.)
More information about the Discuss
mailing list