All pastes #515898 Raw Edit

Unnamed

public text v1 · immutable
#515898 ·published 2007-05-28 12:46 UTC
rendered paste body
exim.conf:
######################################################################
#                    MAIN CONFIGURATION SETTINGS                     #
######################################################################


hide mysql_servers = server/maildb/username/password

smtp_enforce_sync = false
primary_hostname = apnicsolutions.com

domainlist local_domains = @ : ${lookup mysql {SELECT userid FROM domains \
    WHERE userid="${quote_mysql:${domain}}" }}
domainlist relay_to_domains =
#hostlist   relay_from_hosts = 127.0.0.1

# domainlist relay_to_domains = *.myco.com : my.friend.org
hostlist relay_from_hosts = 127.0.0.1 : 192.168.0.0/16

acl_smtp_rcpt = acl_check_rcpt

#qualify_domain = mindtricks.mcxnet.com
# qualify_recipient =

# allow_domain_literals


never_users = 
untrusted_set_sender = *
local_sender_retain = true
local_from_check = false

# The setting below causes Exim to do a reverse DNS lookup on all incoming
# IP calls, in order to get the true host name. If you feel this is too
# expensive, you can specify the networks for which a lookup is done, or
# remove the setting entirely.

#host_lookup = *

#rfc1413_hosts = *
rfc1413_query_timeout = 0s


ignore_bounce_errors_after = 12h
timeout_frozen_after = 1d

# freeze_tell = postmaster


####################################################################
#                       ACL CONFIGURATION                            #
#         Specifies access control lists for incoming SMTP mail      #
######################################################################

begin acl

acl_check_rcpt:
  accept  hosts = :
  deny    local_parts   = ^.*[@%!/|] : ^\\.
  accept  local_parts   = postmaster
          domains       = +local_domains
  require verify        = sender
  accept  domains       = +local_domains
          endpass
          message       = unknown user
          verify        = recipient
  accept  domains       = +relay_to_domains
          endpass
          message       = unrouteable address
          verify        = recipient
  accept  hosts         = +relay_from_hosts
  accept  authenticated = *
  deny    message       = relay not permitted
  accept hosts =  : +relay_from_hosts
   accept condition = \
          ${if \
           and {\
            {match{$recipients}{\N<?(abuse|postmaster)@(.+\.)?sput\.nl>?\N}}\
            {match{$h_to:}{\N>?(abuse|postmaster)@(.+\.)?sput\.nl<?\N}}\
           }\
          {yes}{no}}
  deny message   = This message scored $spam_score spam points. See http://www.sput.nl/spam/
        condition = ${if >{$spam_score_int}{50}{1}{0}}

######################################################################
#                      ROUTERS CONFIGURATION                         #
#               Specifies how addresses are handled                  #
######################################################################
#     THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT!       #
# An address is passed to each router in turn until it is accepted.  #
######################################################################

begin routers

dnslookup:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
  no_more

spamcheck_router:
  no_verify
  check_local_user

  condition = "${if and { \
                        {!def:h_X-Spam-Flag:} \
                        {!eq {$received_protocol}{spam-scanned}} \
                        {eq {${lookup mysql{SELECT spam FROM users WHERE id='${quote_mysql:${local_part}@${domain}}'}}}{1}} \
                } {1}{0}}"
  driver = accept
  transport = spamcheck

#spamdeliver_router:
#  driver = redirect
#  allow_fail
#  allow_defer
#  condition = "${if match {$h_x-spam-status:}{Yes} {1}{0} }"
#  data = ${lookup mysql{ SELECT maildir FROM users \
#          WHERE id='${quote_mysql:${local_part}@${domain}}' }}/.Junk
#  file_transport = address_directory
#  directory_transport = address_directory

system_aliases:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup{$local_part}lsearch{/etc/aliases}}
  file_transport = address_file
  pipe_transport = address_pipe
  condition = ${if eq {$domain}{$primary_hostname} {yes}{no} }

#localuser:
#  driver = accept
#  check_local_user
#  group=mail
#  transport = local_delivery
#  condition = ${if eq {$domain}{$primary_hostname} {yes}{no} }

#userforward:
#  driver = redirect
#  check_local_user
#  file = $home/.forward
#  no_verify
#  no_expn
#  check_ancestor
##  allow_filter
#  file_transport = address_file
#  directory_transport = address_directory
#  reply_transport = address_reply

userforward:
  driver = redirect
  allow_fail
  allow_defer
  condition = "${lookup mysql{SELECT forward_enable FROM users WHERE id='${quote_mysql:${local_part}@${domain}}' }}"

#  condition = ${lookup{$local_part@$domain}lsearch{/email/forward_enable}}
  file = /email/${domain}/${local_part}.forward
  user = ${local_part}-${domain}
  no_verify
  no_expn
  allow_filter
  file_transport = address_file
  pipe_transport = address_pipe
  directory_transport = address_directory
  reply_transport = address_reply

virtual_userforward:
  driver = redirect
  data = ${lookup mysql{SELECT forward FROM fw WHERE \
                 email='${quote_mysql:${local_part}@${domain}}'}}

virtual_user:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup mysql{ SELECT maildir FROM users \
          WHERE id='${quote_mysql:${local_part}@${domain}}' }}
  file_transport = address_directory
  directory_transport = address_directory

virtual_all_aliases:
   driver = redirect 
   data = ${lookup mysql{SELECT forward FROM fw WHERE email= \
        '@${quote_mysql:${domain}}'}}


######################################################################
#                      TRANSPORTS CONFIGURATION                      #
######################################################################
#                       ORDER DOES NOT MATTER                        #
#     Only one appropriate transport is called for each delivery.    #
######################################################################

begin transports


remote_smtp:
  driver = smtp

spamcheck:
    driver = pipe
    command = /usr/exim/bin/exim -oMr spam-scanned -bS
    use_bsmtp = true
    transport_filter = /usr/bin/spamc
    home_directory = "/tmp"
    current_directory = "/tmp"
    user = mail
    group = mail
    log_output = true
    return_fail_output = true
    return_path_add = false
    message_prefix =
    message_suffix =

local_delivery:
  driver = appendfile
  file = /var/mail/$local_part
  delivery_date_add
  envelope_to_add
  return_path_add

address_pipe: 
  driver = pipe 
  return_fail_output 
  return_path_add
  environment = EXTENSION=${substr_1:$local_part_suffix}

address_file:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add

address_directory:
  driver = appendfile
  maildir_format
  delivery_date_add
  envelope_to_add
  return_path_add

address_reply:
  driver = autoreply

######################################################################
#                      RETRY CONFIGURATION                           #
######################################################################

begin retry

# This single retry rule applies to all domains and all errors. It specifies
# retries every 15 minutes for 2 hours, then increasing retry intervals,
# starting at 1 hour and increasing each time by a factor of 1.5, up to 16
# hours, then retries every 6 hours until 4 days have passed since the first
# failed delivery.

# Domain               Error       Retries
# ------               -----       -------

*                      *           F,2h,15m; G,16h,1h,1.5; F,2d,3h



######################################################################
.
.
.

User's filter file:
#Exim filter
            if
               $h_X-Spam-Status: CONTAINS "Yes"
                  or
               "${if def:h_X-Spam-Flag {def}{undef}}" is "def"
            then
               #just deliver as normal
               finish
            endif

unseen deliver <email@forward.com>
deliver <email@local.com>
finish

I'm guessing this filter is probably incorrect however