[Dovecot] LMTP revisited

Glenn Leavell glenn at usg.edu
Mon Jun 19 22:51:39 EEST 2006


On Sun, Jun 18, 2006 at 01:28:51PM +0200, Jakob Hirsch wrote:

> Quoting Glenn Leavell:
> 
> > I think I'm probably showing my ignorance here:  My understanding is that
> > Dovecot's LDA gets called once per recipient, so that it wouldn't know
> > whether any given message is a duplicate.  Or is the idea that Dovecot's
> 
> That's the common way to use LDAs.
> On many systems, mailboxes belong to seperate users, so for delivering
> into multiple mailboxes, a LDA would need to have root rights, either by
> being called from a root process (at least Postfix and Exim will not do
> that) or be SUID root. Procmail is said to be able to do
> multi-deliveries this way, but it's an ugly piece of software.
> 
> > LDA would be able to easily detect duplicates based on its own index
> > information?
> 
> That would be unnecessarily cumbersome.

Perhaps so.  Timo mentioned that the Dovecot LDA could be modified to
handle Single Instance Storage without LMTP.  Because I'm accustomed to the
LDA being called once per recipient (without LMTP, of course), I was just
wondering how he planned for the LDA to keep up with duplicate messages
(the indexes came to mind).  But based on his response, it sounds like his
thinking that the MTA (Postfix in his example) would call the Dovecot LDA
once with multiple recipients as arguments.

> >> The one thing that disturbs me with this kind of hardlinking is that
> >> then there are no Delivered-To headers (and others?) which are normally
> >> added to mails.
> > Yes, I guess we'd have to take that into account when deciding whether to
> > use single instance storage.
> 
> Are they necessary for anything special? Exim does not set this header
> (unless specially configured to do so), its default header is
> Envelope-to, which contains the list of envelope recipients.

I don't think Delivered-To: is critical, but apparently some systems use
Delivered-To: to help with loop detection.  This is from Postfix's local(8)
man page:

	In order to stop mail forwarding loops  early,  the
	software  adds  an optional Delivered-To:  header  with
	the  final  envelope recipient address. If mail arrives for
	a recipient that is already  listed  in a Delivered-To:
	header, the message is bounced.

And D. J. Bernstein mentions it in his "Tools in the war on mail loops"
document [ http://cr.yp.to/proto/mailloops.txt ]:

	The basic weapon against post-delivery loops is a new header
	field, Delivered-To, tracing all the forwarders and mailing
	lists that a message has been through. This field has the
	side benefit of making it much easier for a user (or for a
	postmaster seeing a bounce) to figure out the path that the
	message took. Delivered-To is similar to RFC 1327's
	DL-Expansion-History, but (1) it omits the time stamp,
	removing any need for parsing, and (2) it has a much better
	name.

> Anyway, if you have so many large messages going to multiple recipients,
> couldn't these people be put into groups and use shared mailboxes?

A solution like that may well help in some of our situations.  But that
solution has at least some political implications (users experience
change!), and I was focusing on Single Instance Storage as a transparent
feature that might help to some degree.

Thanks,
Glenn


More information about the dovecot mailing list