ietf-smtp
[Top] [All Lists]

Re: MS vs. pop and imap

2004-06-10 11:07:27

On Sun, 30 May 2004, Eric A. Hall wrote:

(*) I note that the Cyrus IMAP server acts like it's part of the actual
SMTP network; it will write its own Recieved and Return-Path headers even
though it is not part of the SMTP network (it doesn't have an SMTP
listener on port 25, and LMTP on port 24 is definitely not SMTP, so...).
Sieve redirects in Cyrus redirect incoming mail without rewriting the
sender envelope, instead of generating new messages like one would expect
from a post-delivery expansion. So even where there is a pretty clear
architecture once it is divided into functional groups, exceptions exist.

I don't think this is an example of a violation of the architecture :-)
Some MDA functions (e.g. redirecting email) occur before final delivery.
I'll illustrate this using a compare-and-contrast between our old email
system and our new one, and a hypothetical third system.

(1) The old system used Exim to deliver directly into a fairly traditional
Unix message store, and as such it was acting as the final recipient MTA
and the MDA. Filtering was done with Exim's built-in filtering language
which provides similar functionality to Sieve. Exim handles forwarded
email as part of general address routing, i.e. before final delivery, so
it left the SMTP reverse path unchanged and didn't fiddle with
Return-Path: headers etc.

(2) The new system has Exim delivering to Cyrus on a different machine
over LMTP, as you describe above. The redirect semantics are the same as
the old forwarding semantics.

There's an intermediate step between these two implementations which
illustrates a clearer MTA/MDA split (as in 2) but with traditional local
delivery (as in 1). The Postfix local delivery agent is one example --
http://www.postfix.org/OVERVIEW.html, http://www.postfix.org/local.8.html
and Sendmail using procmail as the local delivery agent is another. In
both cases a private protocol is used instead of LMTP.

-- 
Tony Finch  <dot(_at_)dotat(_dot_)at>  http://dotat.at/


<Prev in Thread] Current Thread [Next in Thread>