[Exim] exim amavisd-new trouble

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Markus Eckerl
Date:  
À: exim-users
Sujet: [Exim] exim amavisd-new trouble
Hallo,

I am running exim-4.30 with the mySQL backend and amavisd-new. Everything is working fine but unfortunatelly exim is receiving and queueing all mail. I think I made a little mistake - configuring exim the wrong way.
The scenario should work the following way:
1. exim listens on port 25 for mail.
2. if new mail arrives exim searches weather the receiver and the sender address are valid.
3. if the addresses are valid exim delivers the mail.

now my scenario:
1. exim listens on port 25 for mail.
2. if new mail arrives exim delivers it to amavisd-new!
This is extremly bad because there are several bounces and exim will delay email for the specific domains!

Whats wrong with my config?
Here are the parts from my exim configuration:

begin acl

acl_check_rcpt:

    accept  hosts = :
    accept  authenticated = *
    require verify      = sender
    require verify      = recipient
    deny    domains     = +local_domains
    local_parts         = ^[.] : ^.*[@%!/|]
    deny    domains     = !+local_domains
    local_parts         = ^[./|] : ^.*[@%!] : ^.*/\\.\\./



    accept  local_parts = postmaster
    domains             = +local_domains
    require verify      = sender
    require verify      = recipient



    accept  domains     = +local_domains
    endpass
    require verify      = sender
    require verify      = recipient



    accept  domains     = +relay_to_domains
    endpass
    require verify      = sender
    require verify      = recipient



    accept  hosts       = +relay_from_hosts



    deny    message     = relay not permitted, are you authenticated?\n Please contact the technical support!


check_message:
    require verify = header_syntax
    warn message = X-Authenticated: $authenticated_id
    condition = ${if !def:h_X-Authenticated: {yes}{no}}
    authenticated = *
    require verify        = header_sender
    accept  senders       = !:
    require verify        = header_sender
    accept


begin routers

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


# virenscanner -- alles was noch nicht gescannt wurde wird auf viren gecheckt!
amavis:
    driver = manualroute
    check_local_user
    domains = ! +local_domains
    condition = "${if or {{eq {$interface_port}{10025}} {eq {$received_protocol}{spam-scanned}} {eq {$sender_address}{}} }{0}{1}}"
    retry_use_local_part
    transport = amavis
    route_list = "* localhost byname"
    self = send


# router for local aliases --> postmaster
system_aliases:
    driver = redirect
    allow_fail
    allow_defer
    data = ${lookup{$local_part}lsearch{/etc/aliases}}
    domains = LOCAL_DOMAINS
    retry_use_local_part
    file_transport = address_file
    pipe_transport = address_pipe


# router for local user mailboxes
localuser:
    driver = accept
    check_local_user
    domains = LOCAL_DOMAINS
    transport = local_delivery
    cannot_route_message = Unknown user


# router for virtual user and av-scanning
mysqluser_amavis:
    driver = manualroute
    domains = +local_domains
    condition = "${if or {{eq {$interface_port}{10025}} {eq {$received_protocol}{spam-scanned}} {eq {$sender_address}{}} }{0}{1}}"
    route_list = "* localhost byname"
    retry_use_local_part
    transport = amavis
    self = send


# autoresponders from the db
mysql_autorespond:
    driver = accept
    condition = ${if eq{} {${lookup mysql{SELECT autoresponder FROM emails WHERE autoresponder='yes' AND username='$local_part' AND
    no_verify
    no_expn
    unseen
    transport = address_mysql


# usercheck -- if real (in mysql database)
virtual_local_user:
    driver = accept
    condition = ${if eq{} {${lookup mysql{SELECT id FROM emails WHERE username='$local_part' AND domain='$domain' AND status='1'}}}{
    domains = ${lookup mysql {MYSQL_USER}{$value}}
    retry_use_local_part
    transport = virtual_delivery


# usercheck -- if alias (in mysql database)
virtual_aliases:
    driver = redirect
    allow_defer
    allow_fail
    data = ${lookup mysql {MYSQL_ALIAS}}
    retry_use_local_part
# wild card match '@'@domain (in mysql database)


virtual_all_alias:
    driver = redirect
    allow_defer
    allow_fail
    data = ${lookup mysql {MYSQL_ALL_ALIAS}}
    retry_use_local_part




begin transports

# SMTP transport Exim -> amavisd
amavis:
    driver = smtp
    port = 10024
    allow_localhost
    # for debugging change return_output to true
    no_return_path_add


# transport for delivering over SMTP
remote_smtp:
    driver = smtp


# local delivery to user mailboxes
local_delivery:
    driver = appendfile
    file = /var/spool/virtual_mail/postbox/${domain}/${local_part}
    delivery_date_add
    envelope_to_add
    return_path_add
    group = mail
    mode = 0660
    user = mail
    quota = ${lookup mysql{SELECT quota FROM emails WHERE username='$local_part' AND domain='$domain'}{$value}{25M}}
    quota_warn_threshold = ${lookup mysql{SELECT quotawarn FROM emails WHERE username='$local_part' AND domain='$domain'}{$value}{80
%}}
    quota_warn_message = "\
    To: $local_part@$domain\n\
    Subject: Your mailbox\n\n\
    Diese Email wurde automatisch erstellt.\n\n\
    Die Groesse Ihrer Mailbox hat \
    einen festgelegten Schwellwert \n\
    ueberschritten. Bitte rufen Sie ihre Emails ab!\n"


# virtual delivery to user mailboxes
virtual_delivery:
    driver = appendfile
    file = /var/spool/virtual_mail/postbox/${domain}/${local_part}
    group = mail
    mode = 0660
    user = mail


# transport for autoresponders
address_mysql:
    driver   = autoreply
    reply_to = "${local_part}@${domain}"
    from     = "${local_part}@${domain}"
    to       = "${sender_address}"
    subject  = "${lookup mysql{SELECT arsubject FROM emails WHERE username='$local_part' AND domain='$domain'}{$value} {Automatic re
ply from ${local_part}@${domain}}}"
    text     = "${lookup mysql{SELECT artext FROM emails WHERE username='$local_part' AND domain='$domain'}{$value}}"




who can help me please?

Bye
Markus