On Thu, 1 Feb 2007, geza@??? wrote:
> From: geza@???
> To: exim-users@???
> Date: Thu, 1 Feb 2007 11:56:37 +0100 (CET)
> Subject: [exim] String manipulation in require
>
> Sorry if this is a newbee question, but I'm not (yet) a longtime
> exim user. I've googled for it without too much luck. I have
> a exim version 4.63 (on debian etch) delivering to a cyrus lmtp
> server via a unix socket. To check if the mailbox exist before
> accepting mail I have the following in my router configuration:
>
> require_files=/var/spool/cyrus/mail/${lc::${substr_0_1::$local_part}}/user/${lc::$local_part}
> no_more
>
> Everthing is going well except one minor problem.
...
It's not an answer to your question, but you might like to consider
running Cyrus and exim in a way that avoids this problem.
Set up cyrus with the lmtp daemons listening on the lmtp (2003) port
on the loopback address. Then you can configure exim to deliver to
cyrus with a transport similar to:
cyrus_ltmp:
driver = smtp
protocol = lmtp
hosts = 127.0.0.1
hosts_override = true
allow_localhost = true
Doing things this way means you can get exim to do recipient
verification using callouts. Ie exim treats cyrus as a "black box"
and just effecively asks it if mail can be delivered to a particular
address. Exim needs to know nothing about how cyrus is configured.
This method works just as well when you have full hashing on your
cyrus server. Ie have:
fulldirhash: yes
hashimapspool: yes
set in /etc/imapd.conf
I've got this running here on a little test server (exim-4.66,
cyrus-2.3.7). It works well for me.
--
Dennis Davis, BUCS, University of Bath, Bath, BA2 7AY, UK
D.H.Davis@??? Phone: +44 1225 386101