Discussion:
postfix and cyrus-imap : Single instance message store
(too old to reply)
Lutz Kittler
2004-01-26 11:09:34 UTC
Permalink
Hi,

I use postfix 2.0.16 and cyrus 2.1.15 on debian woody.
I want to use "Single instance message store" for cyrus.
I followed the configuration hints given in LMTP_README.
My configuraions are as follows:

postfix : main.cf
-----------------
mydestination = imap.dom.test, localhost
mailbox_transport = lmtp:imap.dom.test:lmtp
lmtp_sasl_auth_enable = yes
lmtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
lmtp_sasl_security_options = noanonymous
local_destination_recipient_limit = 300
local_destination_concurrency_limit = 5
lmtp_destination_recipient_limit = 300
lmtp_destination_concurrency_limit = 5

postfix : master.cf
-------------------
lmtp unix - - n - - lmtp

cyrus on imap.dom.test: cyrus.conf
-----------------------------------
SERVICES {
...
# At least one form of LMTP is required for delivery
# (you must keep the Unix socket name in sync with imap.conf)
lmtp cmd="lmtpd" listen="lmtp" prefork=0 maxchild=20
...
}

cyrus : imapd.conf
------------------
singleinstancestore: yes

When I send mail to ***@imap.dom.test,***@dom.test I see the
following in mail.log:

postfix/smtpd[4527]: connect from master.dom.test[192.168.1.4]
postfix/smtpd[4527]: D0715849E: client=master.dom.test[192.168.1.4]
postfix/cleanup[4529]: D0715849E: message-id=<200401261049.29670.
***@dom.test>
postfix/qmgr[4525]: D0715849E: from=<***@dom.test>, size=782,
nrcpt=2 (queue active)
postfix/smtpd[4527]: disconnect from master.dom.test[192.168.1.4]
cyrus/master[4534]: about to exec /usr/lib/cyrus/bin/lmtpd
cyrus/lmtp[4534]: executed
cyrus/lmtpd[4534]: accepted connection
cyrus/lmtpd[4534]: connection from imap.dom.test [192.168.1.87]
cyrus/lmtpd[4534]: login: imap.dom.test [192.168.1.87]
postman PLAIN User logged in
cyrus/lmtpd[4534]: duplicate_check: <***@imap.dom.test>
user.test2 0
cyrus/lmtpd[4534]: mystore: starting txn 2147483751
cyrus/lmtpd[4534]: mystore: committing txn 2147483751
cyrus/lmtpd[4534]: duplicate_mark: <***@imap.dom.test>
user.test2 1075110571
cyrus/lmtpd[4534]: mystore: starting txn 2147483752
cyrus/lmtpd[4534]: mystore: committing txn 2147483752
cyrus/lmtpd[4534]: duplicate_mark: <***@imap.dom.test>
.test2+.sieve. 1075110571
postfix/lmtp[4533]: D0715849E: to=<***@imap.dom.test>,
relay=imap.dom.test[192.168.1.87], delay=1, status=sent (250 2.1.5 Ok)
cyrus/lmtpd[4534]: duplicate_check: <***@imap.dom.test>
user.test1 0
cyrus/lmtpd[4534]: mystore: starting txn 2147483753
cyrus/lmtpd[4534]: mystore: committing txn 2147483753
cyrus/lmtpd[4534]: duplicate_mark: <***@imap.dom.test>
user.test1 1075110571
postfix/lmtp[4533]: D0715849E: to=<***@imap.dom.test>,
relay=imap.dom.test[192.168.1.87], delay=1, status=sent (250 2.1.5 Ok)
cyrus/master[2933]: process 4534 exited, status 0

As you see nessages for test1 and test2 are not stored as hard links:

ls -li /var/spool/cyrus/t/user/test1/:
80907 -rw------- 1 cyrus mail 1020 Jan 26 10:49 14.
...

ls -li /var/spool/cyrus/t/user/test2/:
80851 -rw------- 1 cyrus mail 1020 Jan 26 10:49 26.
...

What could bve the reason. The same results I got when using ltmp
over unix sockets.

I need "Single instance message store" because we get many mails
to more than one user.

Thanks for help

Lutz
V***@morganstanley.com
2004-01-26 15:13:25 UTC
Permalink
Post by Lutz Kittler
Hi,
I use postfix 2.0.16 and cyrus 2.1.15 on debian woody.
I want to use "Single instance message store" for cyrus.
I followed the configuration hints given in LMTP_README.
postfix : main.cf
-----------------
mydestination = imap.dom.test, localhost
mailbox_transport = lmtp:imap.dom.test:lmtp
With "mailbox_transport", messages are first handled by the "local"
transport (one recipient at a time), and only then by "lmtp".

Disk space is cheap, single instance store is not worth the effort IMHO.
If you really must have it, you need to bypass "local" and deliver mail
for the recipients in question directly to "lmtp" (either change
"local_transport" in main.cf or use transport_maps). Any aliases would
have to move into virtual_alias_maps, with any command aliases first
mapped via virtual(5) to ***@localhost, and localhost.$mydomain
(expanded) added to transport_maps if necessary mapped to the local
transport. You probably should refuse mail for "localhost.$mydomain" from
SMTP clients...
--
Viktor.
Loading...