On 2014-03-31 08:05, Jeremy Harris wrote:
> On 31/03/14 07:08, Jacco van Gent wrote:
> > I am using Mailscanner together with Baruwa 2.0, their setup suggest 
> > deferring the message, so that Mailscanner can process it and write message 
> > data to a postgresql database. If I am not mistaken, this is the same 
> > approach Mailscanner suggests on their website.

> >
> > They to suggest deferring the message (for message scans), scanning the 
> > message and then calling exim to send it out. The missing link to me seems 
> > the part where the retry database isn't updated when that second step 
> > successfully sends the message to the backend SMTP server.

>
> In the commonly accepted usage of the words, "deferred" means that exim
> does not have the message yet.  So it can't send it out.
>
> So either your combination setup is very odd or you're using different
> words.  Perhaps you could describe your message flow in more detail.
> Include SMTP protocol-level actions and the interactions between
> Mailscanner and Exim.
> --
> Cheers,
>    Jeremy
>
>

The mail flow is as follows:

mail arrives at exim as normal smtp traffic. When certain acl statements have 
been satisfied, exim accepts the message (stuff like Recipient verification, 
SPF checks, black list checks)

Instead of directly sending the message out to the SMTP backend server (the 
domain exim relays for) it actually queues the message, so that mailscanner can 
run malware and spamassassin checks.

this is done by putting:

message_checks:
   driver = redirect
   allow_defer
   data = :defer: queued for message checks
   no_verify
   no_address_test

at the top of the routers section. Which is pretty much in line with the 
suggested setup instructions from mailscanner here : 
http://mailscanner.info/exim.html

Now after Mailscanner has scanned the message, it will call exim (using the 
specified config file in mailscanner.conf) to sent the scanned message out to 
the backend smtp server. In this case the outgoing config file of course uses a 
normal router to deliver the scanned messages to the backend SMTP server, such 
as :

deliver_clean_randomize:
   driver = manualroute
   domains = +relay_sql_rand_smtp
   transport = remote_smtp
   hosts_randomize = true
   route_data = ${lookup pgsql {ROUTE_QUERY}}

Now my initial feeling is that since this setup is using two different 
configuration files.  one for the running daemonized version of exim, that 
waits for incomming smtp connections and one for mailscanner to actually send 
out the email, it uses two retry databases.

the incomming spool directory is set in the relevant exim config file as:

spool_directory = /var/spool/exim.in

whilst the outgoing spool directory is set to  Outgoing Queue Dir = 
/var/spool/exim4/input

if I issue exim_dumpdb /var/spool/exim.in retry
it returns:

  R:localhost -1 0 queued for message checks
26-Mar-2014 23:32:20  26-Mar-2014 23:55:19  27-Mar-2014 00:10:19
and similar records for other relay domains.

when I issue exim_dumpdb /var/spool/exim4 retry

I actually get back data from mailscanner sending out the messages using exim.

Now my theory is that because the initial message deferral for the relay domain 
in /var/spool/exim.in/db/retry never gets "reset" by a successfull delivery as 
the outgoing configuration is actually using /var/spool/exim4/db as location 
for it's database files.









Sent from Windows Mail

-- 
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to