Problem configuring lmtp on cyrus backend

Michael Menge michael.menge at zdv.uni-tuebingen.de
Wed Mar 16 12:25:18 EDT 2011


Quoting Dan White <dwhite at olp.net>:

> On 16/03/11&nbsp;14:12&nbsp;+0100, Michael Menge wrote:
>> Hi,
>>
>> i have a problem configuring cyrus backend in a almost traditional
>> murder setup.
>>
>> I have one master process which starts the forntend and backend services.
>> The forntend services use /etc/imapd_fe.conf as config file and listen
>> on the external network interface and  the backend services listen to
>> the internal network interfaces and use /etc/imapd_be.conf
>>
>> The lmtpdproxy delivers the mail to the backend using lmtp over tcp.
>> The backend lmtpd asks the mupdate server where the mailbox is,
>> which results in the "wrong" answer that the mailbox is remote.
>> The backend tries to proxies the mail to an other lmtpd
>> on the same backend. This results in an infinite loop.
>> I tried this with 2.4.6 and 2.3.16.
>>
>> AFAIK the backend config must contain the mupdate_server
>> because create mailbox, rename mailbox and delete mailbox
>> information must be send to the mupdate master.
>> But if mupdate_server is configured lmtpd will ask
>> the mupdate_server where the mailbox is, which will always
>> result in an "remote mailbox" as answer
>>
>> What do i need to change?
>>
>> Regards
>>
>>    Michael Menge
>>
>> ---------- cyrus.conf -------------------------------
>>
>> START {
>>   fe_recover cmd="ctl_cyrusdb -r -C /etc/imapd_fe.conf"
>>   be_recover cmd="ctl_cyrusdb -r -C /etc/imapd_be.conf"
>>   be_mupdatepush cmd="ctl_mboxlist -m -C /etc/imapd_be.conf"
>> }
>>
>> SERVICES {
>>   imap          cmd="imapd -C /etc/imapd_fe.conf"
>> listen="localhost:imap" prefork=1 maxfds=1024
>>   imaps         cmd="imapd -U 50 -s -C /etc/imapd_fe.conf"
>> listen="mailserv05.uni-tuebingen.de:imaps" prefork=1 maxfds=1024
>>   feimaps       cmd="imapd -U 50 -s -C /etc/imapd_fe.conf"
>> listen="mailserv.uni-tuebingen.de:imaps" prefork=1 maxfds=1024
>
> Shouldn't these be 'proxyd' instead of 'imapd'?

proxyd and imapd have the same md5sum and changing didn't solve
the problem. The imap and lmpt connections are forwarded to the
correct backend.

>
>>   pop3s         cmd="pop3d -s -C /etc/imapd_fe.conf"
>> listen="mailserv05.uni-tuebingen.de:pop3s" prefork=1 maxfds=1024
>>   fepop3s       cmd="pop3d -s -C /etc/imapd_fe.conf"
>> listen="mailserv.uni-tuebingen.de:pop3s" prefork=1 maxfds=1024
>>   sieve         cmd="timsieved -C /etc/imapd_fe.conf"
>> listen="mailserv05.uni-tuebingen.de:sieve" prefork=0 maxfds=1024
>>   lmtpunix      cmd="lmtpd -U 5 -C /etc/imapd_fe.conf"
>> listen="/var/spool/postfix/public/lmtp" prefork=1 maxfds=1024
>
> And I think this should be lmtpproxyd.

same as with imapd and proxyd

>
>>   lomupdate     cmd="mupdate -C /etc/imapd_fe.conf"
>> listen="mailserv05.uni-tuebingen.de:mupdate" prefork=1
>
> Is the mupdate master on another server? If not (and you intend for
> imapd_fe.conf to be the mudpate master), you need to specify a -m parameter
> to mupdate here.
>

Mupdate master is listening on an other interface and communication  
with mupdatemaster works fine.

>>   beimap        cmd="imapd -U 50 -C /etc/imapd_be.conf"
>> listen="be05.mail.localhost:imap" prefork=1 maxfds=1024
>>   beimaps       cmd="imapd -U 50 -s -C /etc/imapd_be.conf"
>> listen="be05.mail.localhost:imaps" prefork=1 maxfds=1024
>>   bepop3s       cmd="pop3d -s -C /etc/imapd_be.conf"
>> listen="be05.mail.localhost:pop3s" prefork=1 maxfds=1024
>>   besieve       cmd="timsieved -C /etc/imapd_be.conf"
>> listen="be05.mail.localhost:sieve" prefork=0 maxfds=1024
>>   belmtp        cmd="lmtpd -U 5 -C /etc/imapd_be.conf"
>> listen="be05.mail.localhost:lmtp" prefork=1 maxfds=1024
>> }
>>
>> EVENTS {
>>   fecheckpoint    cmd="ctl_cyrusdb -c -C /etc/imapd_fe.conf" period=30
>>   becheckpoint    cmd="ctl_cyrusdb -c -C /etc/imapd_be.conf" period=30
>>
>>   bedelprune     cmd="cyr_expire -E 3 -X 4 -D 4 -C
>> /etc/imapd_be.conf" at=0100
>>
>>   fetlsprune      cmd="tls_prune -C /etc/imapd_fe.conf" at=0400
>>   betlsprune      cmd="tls_prune -C /etc/imapd_be.conf" at=0430
>>
>>   besquatter      cmd="squatter -C /etc/imapd_be.conf -s -r -i user" at=2200
>> }
>>
>> --------------- imapd_be.conf ------------------------------
>> servername: be05.mail.localhost
>> configdirectory: /home/cyrus-be
>> partition-default: /home/cyrus-be
>> defaultpartition: default
>> admins: xxxxx xxxxx-xxxxxxx
>>
>> mupdate_server: mupdate.mail.localhost
>> mupdate_port: 3905
>> mupdate_authname: xxxxx-xxxxxxx
>> mupdate_password: xxxxxxxx
>> proxy_authname: xxxxx-xxxxxxx
>> proxy_password: xxxxxxxx
>>
>> allowusermoves: 1
>> allowallsubscribe: 1
>>
>> sievedir: /home/cyrus-be/sieve
>> sieve_extensions: fileinto reject vacation imapflags notify include
>> envelope body relational regex subaddress copy
>> sieve_maxscriptsize: 150
>>
>> sasl_pwcheck_method: saslauthd
>> sasl_mech_list: plain login
>>
>> ---------------------------------------------------------
>
> What does your imapd_fe.conf look like?
>

-------------- imapd_fe.conf

servername: mailser05.uni-tuebingen.de
configdirectory: /home/cyrus-fe
partition-default: /home/cyrus-fe
admins: xxxxx xxxxxx-xxxxxxx

mupdate_server: mupdate.mail.localhost
mupdate_port: 3905
mupdate_authname: xxxxx-xxxxxxx
mupdate_password: xxxxxxxx
proxy_authname: xxxxxx-xxxxxxx
proxy_password: xxxxxxxx
sasl_pwcheck_method: saslauthd
sasl_mech_list: plain login

allowusermoves: 1
allowallsubscribe: 1
proxyd_disable_mailbox_referrals: 1
unixhierarchysep: 1
altnamespace: 1
expunge_mode: delayed
delete_mode: delayed
deletedprefix: DELETED

--------------------------------------

Creating mailboxes works fine
> Do:
>
> ctl_mboxlist -C /etc/imapd_fe.conf -d

user.zrssg01    1 be05.mail.localhost!default zrssg01   lrswipkxtecda

same output for mupdate master

> ctl_mboxlist -C /etc/imapd_be.conf -d

user.zrssg01    0 default zrssg01       lrswipkxtecda

>
> and see if the output is sensible. The output of the backend should
> reference a local partition for the location of your mailboxes ('default'),
> and should not reference a remote server.
>
> In the frontend mailbox list output, you should see the location of the
> mailbox list pointing to <backend>!default, or something that resolves
> (uniquely) to the backend.
>
it looks like what i would expect.

The problem is lmtpd does not trie to look in his mailbox db but ask  
mupdate.mail.localhost, for which all mailboxes are remote.


--------------------------------------------------------------------------------
M.Menge                                Tel.: (49) 7071/29-70316
Universität Tübingen                   Fax.: (49) 7071/29-5912
Zentrum für Datenverarbeitung          mail:  
michael.menge at zdv.uni-tuebingen.de
Wächterstraße 76
72074 Tübingen
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5267 bytes
Desc: S/MIME Signatur
Url : http://lists.andrew.cmu.edu/pipermail/info-cyrus/attachments/20110316/076aec71/attachment.bin 


More information about the Info-cyrus mailing list