Szerző: Jeff Wishnie Dátum: Címzett: exim-users Tárgy: [Exim] 4.12 -> 4.34 upgrade problem
This is a multi-part message in MIME format.
--
[ Picked text/plain from multipart/alternative ]
Hi folks,
I recently tried to upgrade my install of Exim 4.12 to 4.34 and hit a configuration problem I can't track down. Here is a summary of my config and an explanation of what no longer works. Any help appreciated.
I host several virtual-mail domains with a combination of:
Exim + Exim Filters
Courier-Imap/POP
Bogofilter
using Maildirs
I use a simple directory structure (the one expected by Courier-Imap) as the basis of my config. It is as follows:
For each domain I have a home directory of the form: /home/vmail/[domain name]
For each user I have a directory in the domain dir of the form: /home/vmail/[domain name]/[mailbox name]
In addition I, each domain may have an optional 'alias' file used by a router to perform forwards:
/home/vmail/[domain name]/alias
And each user may optionaly have a 'exim.filter' file used for Exim filter rules as such:
/home/vmail/[domain name]/[mailbox name]/exim.filter
My router chain functions as follows--
Router 0: Relay - if not for a local domain, do remote_smtp delivery (protected by ACLs so only relay's for local system)
Router 1: Bogofilter -- pipes all mail for local delivery domains to bogofilter for spam scanning. A header is added to indicate that the message has been scanned so that when it is piped back through Exim, this router is skipped.
Router 2: Filters -- all local delivery mail for which there is an actual mailbox directory AND an exim.filter file is passed to the redirect transport for filter processing.
Router 3: Accept -- all local delivery mail for which the local part does _not_ exist in the alias file is delivered locally
Router 4: Alias redirect -- all undelivered local mail gets processed by alias file
Under 4.12 this works fine.
Under 4.34, inbound mail is passed to Bogofilter, but when it is passed _back_ to Exim it goes directly to local delivery and is not processed for Filters or Aliases. Rolling back to 4.12 solved the problem.
I've included my Router and Transport definitions at the end of this message--any suggestions or pointers to what might be wrong greatly appreciated.
cheers,
Jeff
-----------------
begin routers
dnslookup:
driver = dnslookup
domains = !+accept_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
more = false
# bogofilter integration
bogofilter_router:
domains = +local_domains
no_verify
# the next line looks for X-flag to see if the mail has been scanned
condition = ${if !def:h_X-bogo_spam_check: {true }}
driver = accept
transport = bogofilter_filter
# condition says only run if real user dir, not alias
virt_filters:
driver = redirect
domains = +virt_domains
require_files = /home/vmail/$domain/$local_part/exim.filter
file = /home/vmail/$domain/$local_part/exim.filter
debug_print = FILTER: /home/vmail/$domain/$local_part/exim.filter
allow_filter
allow_fail
check_ancestor
directory_transport = virtual_domain_transport
file_transport = virtual_domain_transport
pipe_transport = address_pipe
reply_transport = address_reply
user = ...
modemask = 002
virtual_domains:
driver = accept
domains = +virt_domains
local_parts = ! aliases:dsearch;/home/vmail/$domain
transport = virtual_domain_transport
more = false
bogofilter_filter:
driver = pipe
command = /usr/local/exim/bin/exim -oMr spam-scanned -bS
use_bsmtp = true
# next line adds the X-flag so we will later know mail has been scanned
headers_add = X-bogo_spam_check: true
transport_filter = "/usr/bin/bogofilter -d /var/spool/bogofilter -l -p -e"
group = ...
return_fail_output = true
user = ...
home_directory = "/tmp"
log_output = true
return_path_add = false