LMTP from remote Postfix, user mismatch -> Mailbox does not exist

Tomasz Chmielewski mangoo at wpkg.org
Fri Sep 22 12:17:57 EDT 2006

Currently, I'm using Cyrus and Postfix on the same box, everything works
Due to the high load of the server, I'm going to split the server into
several machines.

Users are kept in MySQL database, each email has its own login and password:

joe at domain, user-001, password
mary at domain2, user-002, password2

Right now, when Postfix receives email to joe at domain, it delivers it to
Cyrus using local sockets (lmtp) to user-001.

With separate machines, it doesn't work.

First, Postfix machine receives email to joe at domain.
Then, it sends it via lmtp (tcp) to Cyrus machine, with the address
joe at domain.
Cyrus wants to deliver the mail to "joe" mailbox, which doesn't exist -
cyrus should deliver the mail to "user-001":

connection from postfix1.domain []
about to exec /usr/lib/cyrus-imapd/lmtpd
login: postfix1.syneticon.net [] cyruslmtp PLAIN User logged in
verify_user(user.joe) failed: Mailbox does not exist

Unfortunately, I'm not even sure where to fix the problem, as when
Postfix attempts to deliver mail via lmtp/tcp, Cyrus/lmtp doesn't even
do any lookups in MySQL database.

I started lmtpd with "-a" parameter, as hosts are in a trusted network:

   lmtp          cmd="lmtpd -a" listen="lmtp" prefork=1

Anyone knows how to fix this issue?

In other words, lmtpd, when receives an email to joe at domain, should 
perform a lookup in MySQL database:

SELECT dest FROM virtual WHERE alias='joe at domain'

Tomasz Chmielewski

More information about the Info-cyrus mailing list