[Dovecot] delivery agent in 1.0?

Geo Carncross geocar-dovecot at internetconnection.net
Thu Dec 23 18:44:15 EET 2004


On Thu, 2004-12-23 at 17:52 +0200, Timo Sirainen wrote:
> On 23.12.2004, at 16:06, Branko F. Gračnar wrote:
> 
> > Is there any plan to include delivery agent in 1.x?
> 
> I'll need to implement one in next few months, so yes.
> 
> Hmm. This brings to my mind again that it would need Sieve, and mvmf 
> might be a good base for it, but it's still not open source (Mark? :)

It may be difficult to please everyone. I could have use for [some
elements of] a dovecot-lda but zero use for sieve...


> > I would be very happy, if there would be lmtp delivery agent included
> > with dovecot 1.x... This would make creating large mailsystem cluster
> > creation very simple + indexes would be always up2date.
> 
> I'm not sure when I'll get around to implementing LMTP server. It's 
> actually a bit annoying to implement because it needs to be able to 
> deliver mail into multiple accounts, and if each one stores mails with 
> different UID, it needs to either run as root (bad) or launch multiple 
> processes and do IPC with them.

How about a dovecot-inject tool that writes a message to whatever is
considered the $LOCAL user? It wouldn't have to do much but write the
message (safely) and update indexes -- something dovecot already has to
do.

That way:

* People who do delivery without LMTP baggage aren't treated as second-
class citizens.

* Sieve implementations merely have to treat "keep" and "fileinto" as
subprocesses.

* LMTP implementations can do the work they've already have to do
(regarding mapping email addresses to local users) and simply hook into
the sieve processor or the dovecot-inject, or anything else the
administrator/user likes.

Formally, dovecot-inject would need the following information:

1. the envelope recipient ($RECIPIENT)
2. the envelope sender/return-path/errors-to-address ($SENDER)
3. the IMAP folder to write the message to (argv[1])

On systems with shared-uids, dovecot-inject would also need the concept
of the "localpart" of the address thats applicable. dovecot already
needs to know this in order to ACCESS the maildrop. ($LOCAL)

This would keep things very easy to integrate without resorting to
shared libraries, "plugin system" nonsense, or forcing people to make
extra levels of indirection (lmtpclient) in order to benefit from pre-
login indexing...


> I suppose I'd implement it so that the actual LMTP talking would be 
> done in a process very similar to imap/pop3-login processes, ie. 
> completely unprivileged. Then it would tell master process to launch 
> delivery agent processes to specific users, and those delivery agents 
> then would get the mail from lmtp process via .. um. read-only shared 
> memory + semaphores might be better than just copying the data over 
> pipes/sockets?

blah blah blah...

-- 
Internet Connection High Quality Web Hosting
http://www.internetconnection.net/




More information about the dovecot mailing list