Date: Tue, 27 May 2003 15:25:38 -0400 From: Chuck Swiger <cswiger@mac.com> To: freebsd-isp@freebsd.org Subject: Re: Expiring old mail in Maildir/ Message-ID: <3ED3BBB2.5040506@mac.com> In-Reply-To: <004f01c32441$bbee0bc0$aa8ffea9@abyss> References: <004f01c32441$bbee0bc0$aa8ffea9@abyss>
next in thread | previous in thread | raw e-mail | index | archive | help
Troy Settle wrote: [ ... ] > Local delivery, remote delivery, who cares? People who administer mail servers care, or ought to. The single most common misconfiguration problem novice mail admins make when attempting to perform "virtual domains" is not identifying which addresses the server considers "local". > If you want to use sendmail as a point of reference, Sometimes I'm not sure that "what I want" has any relevance whatsoever, but on a good day I don't feel that way. > then yes, sendmail does handle local delivery. It does so with > exactly one delivery mechinism: the pipe. Either you're ignorant as to how sendmail actually works, or you are being intentionally deceptive. 12-sec% cd /usr/src/contrib/sendmail/src 13-sec% grep m_mailer deliver.c strcmp(m->m_mailer, "[IPC]") == 0 && if (strcmp(m->m_mailer, "[FILE]") == 0) if (strcmp(m->m_mailer, "[LPC]") == 0) else if (strcmp(m->m_mailer, "[IPC]") == 0) syserr("null destination for %s mailer", m->m_mailer); ret = safefile(m->m_mailer, getuid(), getgid(), m->m_mailer, sm_errstring(ret)); (void) execve(m->m_mailer, (ARGV_T) pv, syserr("Cannot exec %s", m->m_mailer); m->m_name, m->m_mailer); strcmp(m->m_mailer, "[IPC]") != 0 && if (strcmp(m->m_mailer, "[IPC]") != 0 || Sendmail does not use a pipe for the default [IPC] mailer; this either uses Unix domain sockets [makeconnection_ds()] or by opening a socket to the appropriate port on the remote mail server in daemon.c and speaking SMTP over a SOCK_STREAM. Sendmail does not use a pipe for the [FILE] mailer; the docs for mailfile() even indicate why: /* ** MAILFILE -- Send a message to a file. ** ** If the file has the set-user-ID/set-group-ID bits set, but NO ** execute bits, sendmail will try to become the owner of that file ** rather than the real user. Obviously, this only works if ** sendmail runs as root. ** ** This could be done as a subordinate mailer, except that it ** is used implicitly to save messages in ~/dead.letter. We ** view this as being sufficiently important as to include it ** here. For example, if the system is dying, we shouldn't have ** to create another process plus some pipes to save the message. For other mailers (except maybe [LPC]), sendmail does use a pipe to a child process. > I would argue that the MTA (mail transfer agent) has nothing at all to > do with SMTP (simple mail transfer protocol), I suppose that a network-capable mailer which did not do SMTP, perhaps a really old version of the DECnet mail software, is still an MTA, so I won't disagree. > [SMTP] which is simply a mechanism for clients to talk to servers and > for servers to talk to other servers. SMTP wasn't really intended as a mechanism for clients (*) to talk to servers; it's a mechanism for one mail server to exchange messages with another mail server over IPC. (*): The term "client" is overloaded here; if by client you meant "MUA", then clients talk IMAP or POP to mail servers to read mail, and often use SMTP to send mail, but MUAs can also send outgoing mail via MSP (587/tcp) or by calling the MTA directly via fork() as well. > What if I run sendmail in such a way that it's not listening for network > connections? Is it still an MTA? Yes. -- -Chuck
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3ED3BBB2.5040506>