i've come across what may be a bug in exim's handling of remote
lmtp. or maybe i'm doing something wrong. 8^/
i've got a redirect router that looks for a given header (a spam
indicator) and appends "+junk-mail" to the local part as such:
junkmail_delivery_router:
driver = redirect
redirect_router = normal_delivery_router
condition = [my condition]
data = ${quote:$local_part}+junk-mail
retry_use_local_part = true
this way my lmtp server knows to deliver the message into a special
junk mailbox. so this router passes on the message with a modified
local_part to normal_delivery_router:
normal_delivery_router:
driver = accept
transport = lmtp_delivery
condition = [another condition]
local_part_suffix = +junk-mail
local_part_suffix_optional = true
retry_use_local_part = true
which calls the lmtp_delivery transport to handle this message. the
transport looks like this:
lmtp_delivery:
driver = smtp
protocol = lmtp
hosts = lmtphost.my.org
hosts_avoid_tls = *
when i sent a message that's handled by junkmail_delivery_router,
it's adding the "+junk-mail" as it should, but the lmtp_delivery
transport sends the lmtp server:
RCPT TO:<dunham@???>
rather than:
RCPT TO:<dunham+junk-mail@???>
as it should. note that this doesn't happen if i use the
socket-based lmtp driver rather than the smtp-based driver. am i
doing somethin silly? or is this a bug?
the entire transport dialog follows:
lmtp_delivery transport entered
dunham+junk-mail@???
using the transport's hosts: lmtphost.my.org
getting address for lmtphost.my.org
DNS lookup of lmtphost.my.org (A) succeeded
fully qualified name = lmtphost.my.org
lmtphost.my.org xxx.xxx.xxx.200 mx=-1 sort=-250
lmtphost.my.org in queue_smtp_domains? no (option unset)
checking status of lmtphost.my.org
locking /var/exim/spool/db/retry.lockfile
locked /var/exim/spool/db/retry.lockfile
opened hints database /var/exim/spool/db/retry: flags=0
dbfn_read: key=T:lmtphost.my.org:xxx.xxx.xxx.200:2003
dbfn_read: key=T:lmtphost.my.org:xxx.xxx.xxx.200:2003:1Be0aq-0008FY-8V
no host retry record
no message retry record
lmtphost.my.org [xxx.xxx.xxx.200]:2003 status = usable
xxx.xxx.xxx.200 in serialize_hosts? no (option unset)
set_process_info: 31788 delivering 1Be0aq-0008FY-8V to
lmtphost.my.org [xxx.xxx.xxx.200] (dunham+junk-mail@???)
Connecting to lmtphost.my.org [xxx.xxx.xxx.200]:2003 ... connected
read response data: size=60
SMTP<< 220 lmtphost.my.org LMTP Cyrus v2.1.16 ready
xxx.xxx.xxx.200 in hosts_avoid_esmtp? no (option unset)
SMTP>> LHLO exim.my.org
read response data: size=130
SMTP<< 250-lmtphost.my.org
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-SIZE
250-AUTH EXTERNAL
250 IGNOREQUOTA
xxx.xxx.xxx.200 in hosts_require_tls? no (option unset)
xxx.xxx.xxx.200 in hosts_require_auth? no (option unset)
xxx.xxx.xxx.200 in hosts_try_auth? no (option unset)
SMTP>> MAIL FROM:<dunham@???> SIZE=1372
SMTP>> RCPT TO:<dunham@???>
SMTP>> DATA
read response data: size=42
SMTP<< 250 2.1.0 ok
SMTP<< 250 2.1.5 ok
SMTP<< 354 go ahead
SMTP>> writing message and terminating "."
writing data block fd=7 size=352 timeout=300
read response data: size=14
SMTP<< 250 2.1.5 Ok
journalling dunham+junk-mail@???
ok=1 send_quit=1 send_rset=0 continue_more=0 yield=0 first_address=0
transport_check_waiting entered
sequence=1 local_max=500 global_max=-1
locking /var/exim/spool/db/wait-lmtp_delivery.lockfile
locked /var/exim/spool/db/wait-lmtp_delivery.lockfile
opened hints database /var/exim/spool/db/wait-lmtp_delivery: flags=2
dbfn_read: key=lmtphost.my.org
no messages waiting for lmtphost.my.org
SMTP>> QUIT
set_process_info: 31788 delivering 1Be0aq-0008FY-8V: just tried
lmtphost.my.org [xxx.xxx.xxx.200] for
dunham+junk-mail@???: result OK
Leaving lmtp_delivery transport
--
||||||||||| Matthew E. Dunham
||||| Instructional Computing
|||||||||||| UC Santa Barbara
|||||||||||||||| 805 893 7687