Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to make Exim perform recipient verification with a callout to the LMTP server during processing of the RCPT ACL.

I have the following router:

    domains = +virtual_domains
    driver = accept
    transport = dovecot

and transport:

    driver = lmtp
    socket = /var/run/dovecot/lmtp

When ACL processing reaches the following statement:

    domains = +virtual_domains
    verify = recipient/callout

the callout is not attempted:

$ exim -d -bhc
>>> using ACL "acl_check_rcpt"
processing "warn"
check domains = +virtual_domains
cached yes match for +virtual_domains
cached lookup data = in "+virtual_domains"? yes (matched "+virtual_domains" - cached)
check verify = recipient/callout
--------> virtual_account router <--------
checking domains
cached yes match for +virtual_domains
cached lookup data = in "+virtual_domains"? yes (matched "+virtual_domains" - cached)
R: virtual_account for
calling virtual_account router
virtual_account router called for
  domain =
queued for dovecot transport: local_part = test
domain =
  errors_to=NULL localpart_data=NULL
routed by virtual_account router
  envelope to:
  transport: dovecot
Cannot do callout: neither router nor transport provided a host list
----------- end verify ------------
warn: condition test succeeded in ACL "acl_check_rcpt"

I guess the lmtp transport is unable to do callouts, but I'd appreciate a second opinion.

share|improve this question
up vote 2 down vote accepted

AFAIR Exim can do recipient email verification via LMTP over internet socket (you use Unix socket).

Exim LMTP callouts for recipient existence verification - The document describes how to make Exim4 check in real time presence of Cyrus (IMAP) mailbox using exim's (LMTP) callouts.

share|improve this answer
That did the trick! The only disadvantage is that now my LMTP server is exposed to any process on the system. Fortunately iptables can help here: iptables -A OUTPUT --out-interface lo --protocol tcp --dport 24 --match owner ! --uid-owner Debian-exim --jump REJECT --reject-with icmp-admin-prohibited prevents ant other processes from interfering with the LMTP service on port 23. – Sam Morris Jul 31 '13 at 2:07
You may consider reporting it a the bug (no verification over Unix sockets). – Andrzej A. Filip Jul 31 '13 at 4:18
In fact I found this bug while searching: <>;. Shame their robots.txt file prevents search engines from indexing the bugs. :( – Sam Morris Jul 31 '13 at 12:47
It is a pretty old wish (year 2004) :-) – Andrzej A. Filip Jul 31 '13 at 17:54

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.