update
[exim-website.git] / config.samples / C005
1 From: Marc.Haber-lists@gmx.de (Marc Haber)
2 Date: Sat, 01 Aug 1998 13:05:12 GMT
3
4 I am using a virus scanner program that is invoked by a pipe, scans the mail
5 and re-invokes Exim to do the delivery. The pipe is invoking a perl script that
6 tries to unpack and MIME, zip and other archives and then applies the McAfee
7 scanner on the results.
8
9 The Exim configuration to handle this was created by Sven Paulus
10 <sven@oops.sub.de>. The relevant bits are shown below. The virus scanner scans
11 the mail and re-delivers it with
12
13   exim -oMr scanned-ok 
14   
15 to stop the mail from being scanned a second time. There was a bug in Exim 
16 prior to release 2.00 that stopped this working.
17
18
19 ######################################################################
20 #                      TRANPORTS CONFIGURATION                       #
21 ######################################################################
22 #                       ORDER DOES NOT MATTER                        #
23 #     Only one appropriate transport is called for each delivery.    #
24 ######################################################################
25
26 virscan:
27   driver = pipe
28   bsmtp = all
29   batch_max = 32767
30   bsmtp_helo = true
31   command = "/usr/local/virscan/bin/scanmail \
32     $sender_host_address /var/log/exim_virscan 1"
33   current_directory = "/tmp"
34   from_hack = false
35   freeze_exec_fail = false
36   group = virscan
37   ignore_status = false
38   log_defer_output = false
39   log_fail_output = false
40   log_output = true
41   prefix =
42   return_output = false
43   return_path_add = false
44   timeout = 6h
45   umask = 022
46   use_shell = false
47   user = virscan
48
49
50 ######################################################################
51 #                      DIRECTORS CONFIGURATION                       #
52 #             Specifies how local addresses are handled              #
53 ######################################################################
54 #                          ORDER DOES MATTER                         #
55 #   A local address is passed to each in turn until it is accepted.  #
56 ######################################################################
57
58 # Follows system_aliases and userforward directors, but precedes localuser.
59
60 vircheck:
61   condition = "${if or {{eq {$received_protocol}{no-attachment}} \
62                         {eq {$received_protocol}{local-not-scanned}} \
63                         {eq {$received_protocol}{scanned-ok}} \
64                         {match {$sender_host_address}{^192\.168\.10\.}}} \
65                  {0}{1}}"
66   driver = localuser
67   transport = virscan
68
69
70 ######################################################################
71 #                      ROUTERS CONFIGURATION                         #
72 #            Specifies how remote addresses are handled              #
73 ######################################################################
74 #                          ORDER DOES MATTER                         #
75 #  A remote address is passed to each in turn until it is accepted.  #
76 ######################################################################
77
78 # The first router routes everything to the scanner unless the message
79 # has previously been scanned.
80
81 vircheck:
82   condition = "${if eq {$received_protocol}{scanned-ok} {0}{1}}"
83   driver = domainlist
84   route_list = "*"
85   transport = virscan