cannot start exim with this error:
2011-09-07 18:07:14 Exim configuration error in line 821 of
/etc/mail.d/exim.d/exim.conf:
  error in ACL: unknown ACL condition/modifier in "demime = *"



here is my configuration



########################################################################
#       macro.conf {
########################################################################
hide mysql_servers = localhost/EmailSystem/exim/Mypasswrd
GREYLIST_TIMEOUT = ${eval:60*10}
GREYLIST_SPAM_THRESHOLD = ${eval:10*1}
SPAM_FILESIZE_LIMIT = 1M
VIRUS_FILESIZE_LIMIT = 32M
MYSQL_LOG=INSERT INTO `spamlog` ( `ID`, `MessageID`, `SenderIP`,
`SenderPort`, `SenderHostname`, `SenderHelo`, `SenderAddress`,
`RecipientAddress`, `Username`, `Domain`, `LoadAverage`, `SpamScore`,
`MessageSize`, `BodySize`, `MessageLines`, `BodyLines`,
`ReceivedHeaders`, `ReceivedProtocol`, `Cipher`, `Authenticated`,
`SenderVerify`, `Age`, `TimeStamp`) \
                VALUES( '${quote_mysql:$message_exim_id}', \
                        '${quote_mysql:$header_Message-ID:}', \
                        '${quote_mysql:$sender_host_address}', \
                        '${quote_mysql:$sender_host_port}', \
                        '${quote_mysql:$sender_host_name}', \
                        '${quote_mysql:$sender_helo_name}', \
                        '${quote_mysql:$sender_address}', \
                        
CONCAT('${quote_mysql:$original_local_part}','@','${quote_mysql:$original_domain}'),
\
                        '${quote_mysql:$local_part}', '${quote_mysql:$domain}', 
\
                        '${quote_mysql:$load_average}/1000', \
                        '${quote_mysql:$header_X-Spam-Score:}', \
                        '${quote_mysql:$message_size}', \
                        '${quote_mysql:$message_body_size}', \
                        '${quote_mysql:$message_linecount}', \
                        '${quote_mysql:$body_linecount}', \
                        '${quote_mysql:$received_count}', \
                        '${quote_mysql:$received_protocol}', \
                        '${quote_mysql:$tls_cipher}', \
                        '${quote_mysql:$authenticated_id}', \
                        '${quote_mysql:$header_X-Sender-Verify:}', \
                        '${quote_mysql:$message_age}', \
                        NOW() )

########################################################################
#       MAIN CONFIGURATION SETTINGS {
########################################################################
daemon_smtp_ports = smtp : smtps : submission
smtp_enforce_sync = false
primary_hostname = smtp.aldimna.com
domainlist local_domains = ${lookup mysql {\
                                  SELECT domain FROM user WHERE 
domain='${quote_mysql:$domain}' \
                                UNION \
                                  SELECT domain FROM alias WHERE 
domain='${quote_mysql:$domain}' \
                                UNION \
                                  SELECT domain FROM catchall WHERE 
domain='${quote_mysql:$domain}'\
                           }}
domainlist      relay_to_domains = $smtp_active_hostname
hostlist        relay_from_hosts = 127.0.0.1 : 10.0.1.0/24 : 10.0.0.0/24 :
10.0.0.0/26 : 10.0.1.0/26
untrusted_set_sender = *
local_sender_retain = true
local_from_check = false

smtp_banner = \t$smtp_active_hostname ESMTP\n\tExim $version_number\n\t$tod_full
tls_advertise_hosts = *
tls_on_connect_ports = 465              
tls_certificate = /etc/ssl/certs/SMTP-Certificate.crt
tls_privatekey = /etc/ssl/private/SMTP-Certificate.key
log_selector = +tls_cipher +tls_peerdn +all_parents +deliver_time
+delivery_size +queue_time +queue_time_overall +received_recipients
+received_sender +smtp_confirmation +lost_incoming_connection
+smtp_incomplete_transaction +smtp_protocol_error +smtp_syntax_error
acl_smtp_connect = acl_check_connect
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
#av_scanner = $acl_m0
av_scanner = clamd:/var/run/clamav/clamd.sock
spamd_address = /var/run/spamassassin/spamd.sock
never_users = root
host_lookup = *
rfc1413_hosts = *
rfc1413_query_timeout = 5s
ignore_bounce_errors_after = 2d
timeout_frozen_after = 7d
split_spool_directory = true
########################################################################
#               10-acl.conf {
########################################################################
begin acl

acl_check_connect:
  accept
acl_check_helo:
  accept
acl_check_rcpt:
  accept  hosts = :
  defer message         = Your Message is currently still greylisted!
Please try again later.
        log_message     = message from ${sender_address} over
[${sender_host_address}] is still GreyListed
        !authenticated  = *
        condition       = ${if >={GREYLIST_TIMEOUT}{${lookup mysql{\
                            SELECT (UNIX_TIMESTAMP()-MAX(first_seen)) AS 
QueueTime \
                            FROM greylist \
                            WHERE SenderIP = 
'${quote_mysql:$sender_host_address}' \
                            AND SenderAddress = 
'${quote_mysql:$sender_address}' \
                          }{$value}{${eval:GREYLIST_TIMEOUT+1}}}}{true}{false}}
  warn  authenticated   = *
        message         = X-Authenticated-User: $authenticated_id\n\
                          X-Authenticator: $sender_host_authenticated
  deny  message         = Sender claims to have a local address, but is
neither authenticated nor relayed (try using SMTP-AUTH!)
        log_message     = Forged Sender address (claims to be local user
[${sender_address}], but isn't authenticated)
        !hosts          = +relay_from_hosts
        !authenticated  = *
        condition       = ${if 
match_domain{$sender_address_domain}{+local_domains}}

  warn  message         = You cannot be localhost.localdomain in the internet
        log_message     = HELO is faked as localhost.localdomain
        condition       = ${if 
match{$sender_helo_name}{\Nlocalhost\.localdomain\N}}
  warn  message         = X-Invalid-HELO: HELO is IP only (See RFC2821 4.1.3)
        log_message     = HELO ($sender_helo_name) is IP only (See RFC2821 
4.1.3)
        condition       = ${if isip{$sender_helo_name}}

  warn  message         = X-Invalid-HELO: HELO is no FQDN (contains no
dot) (See RFC2821 4.1.1.1)
        log_message     = HELO ($sender_helo_name) is no FQDN (contains no
dot) (See RFC2821 4.1.1.1)
        condition       = ${if match{$sender_helo_name}{\N^\[\N}{no}{yes}}      
                        
        condition       = ${if match{$sender_helo_name}{\N\.\N}{no}{yes}}

  warn  message         = X-Invalid-HELO: HELO is no FQDN (ends in dot)
(See RFC2821 4.1.1.1)
        log_message     = HELO ($sender_helo_name) is no FQDN (ends in dot)
(See RFC2821 4.1.1.1)
        condition       = ${if match{$sender_helo_name}{\N\.$\N}}

  warn  message         = X-Invalid-HELO: HELO is no FQDN (contains double
dot) (See RFC2821 4.1.1.1)
        log_message     = HELO ($sender_helo_name) is no FQDN (contains double
dot) (See RFC2821 4.1.1.1)
        condition       = ${if match{$sender_helo_name}{\N\.\.\N}}
        
  warn  message         = X-Invalid-HELO: Host impersonating [$primary_hostname]
        log_message     = HELO ($sender_helo_name) impersonating 
[$primary_hostname]
        condition       = ${if 
match{$sender_helo_name}{$primary_hostname}{yes}{no}}

  warn  message         = X-Invalid-HELO: $interface_address is _my_ address
        log_message     = HELO ($sender_helo_name) uses _my_ address
($interface_address)
        condition       = ${if or{{\
                                eq{[$interface_address]}{$sender_helo_name}\
                          }{\
                                eq{$interface_address}{$sender_helo_name}\
                          }}}
        
  warn  message         = X-Invalid-HELO: no HELO
        log_message     = no HELO ($sender_helo_name)
        condition       = ${if !def:sender_helo_name}

  deny    message       = Restricted characters in address
          domains       = +local_domains
          local_parts   = ^[.] : ^.*[@%!/|]

  deny    message       = Restricted characters in address
          domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

  accept  local_parts   = postmaster
          domains       = +local_domains

  require verify        = sender

  warn  message         = X-Sender-Verify: FAILED ($sender_verify_failure)
        log_message     = Sender ($sender_address) could not be verified using
callout: $acl_verify_message ($sender_verify_failure)
        !verify         = sender/callout=10s,random

  warn  message         = X-Sender-Verify: SUCCEEDED (sender exists & accepts 
mail)
        verify          = sender/callout=10s,random
        
  accept  hosts         = +relay_from_hosts
          control       = submission

  accept  authenticated = *
          control       = submission/sender_retain/domain=

  require message = relay not permitted
          domains = +local_domains : +relay_to_domains
  require verify = recipient

  accept

acl_check_data:
  deny  message         = $found_extension files are not accepted here
        demime          = com:exe:vbs:bat:pif:reg:scr
        
  deny  message         = Serious MIME defect detected ($demime_reason).
        demime          = *
        condition       = ${if >{$demime_errorlevel}{2}{1}{0}}
  deny  message         = This message contains a virus ($malware_name) and
is rejected.
        log_message     = rejected VIRUS ($malware_name) from $sender_address
to $recipients (ClamAV)
        set acl_m0      = clamd:/var/run/clamav/clamd.sock
        condition       = ${if < {$message_size}{VIRUS_FILESIZE_LIMIT}}
        demime          = *
        malware         = *
  deny  demime         = zip:rar:arj:tar:tgz:gz:bz2
        condition      = ${run{/etc/exim/scan_archive.sh $message_exim_id
${lc:$found_extension}}{no}{yes}}
        message        = This message contains an unwanted binary Attachment
in ${uc:$found_extension} file using a double extension
        log_message    = ${uc:$found_extension} archive contains potential
dangerous double extension.
        delay          = 15s
  warn  message         = X-Spam-Score: $spam_score\n\
                          X-Spam-Score-Int: $spam_score_int\n\
                          X-Spam-Bar: $spam_bar\n\
                          X-Spam-Report: $spam_report
        !authenticated  = *
        condition       = ${if < {$message_size}{SPAM_FILESIZE_LIMIT}}
        spam            = spamassassin:true
  defer message         = Temporary error while spam-scanning. Please try again 
later.
        log_message     = message temporarily rejected, because of spam-scan
error (maybe timeout)
        !authenticated  = *
        condition       = ${if < {$message_size}{SPAM_FILESIZE_LIMIT}}
        condition       = ${if !def:spam_score}

  deny  message         = This message is classified as UBE (SPAM) and
therefore rejected. You scored $spam_score points. Congratulations!
        !authenticated  = *
        condition       = ${if >={$spam_score_int}{${lookup mysql{\
                                SELECT ((max(spam_threshold)*2+10)*10) AS 
spam_reject_threshold \
                                FROM user \
                                WHERE SMTP_allowed='YES' \
                          }{$value}{15}}}{true}{false}}
  defer message         = Your Message will be greylisted! Please try again
in GREYLIST_TIMEOUT seconds.
  log_message           = message from ${sender_address} over
[${sender_host_address}] will be GreyListed as it scores $spam_score
spam points
  !authenticated        = *
  condition             = ${if
>={$spam_score_int}{GREYLIST_SPAM_THRESHOLD}{true}{false}}
  condition             = ${lookup mysql{ \
                                SELECT MAX(first_seen) \
                                FROM greylist \
                                WHERE SenderIP = 
'${quote_mysql:$sender_host_address}' \
                                AND SenderAddress = 
'${quote_mysql:$sender_address}' \
                          }{false}{true}}
  condition             = ${lookup mysql{ \
                                INSERT INTO greylist ( SenderIP, SenderAddress, 
first_seen ) \
                                VALUES ( '${quote_mysql:$sender_host_address}',
'${quote_mysql:$sender_address}', UNIX_TIMESTAMP() ) \
                          }{$value}fail}

  warn  message         = X-GreyList: Message successfully passed
GreyListing after $acl_m0 seconds.
        log_message     = message from ${sender_address} over
[${sender_host_address}] with HELO ($sender_helo_name) successfully
passed GreyListing after $acl_m0 seconds and scores $spam_score spam
points
        !authenticated  = *
        condition       = ${lookup mysql{ \
                                SELECT MAX(first_seen) \
                                FROM greylist \
                                WHERE SenderIP = 
'${quote_mysql:$sender_host_address}' \
                                AND SenderAddress = 
'${quote_mysql:$sender_address}' \
                          }{true}{false}}
        set     acl_m0  = ${eval:$tod_epoch-${lookup mysql{ \
                                SELECT MAX(first_seen) \
                                FROM greylist \
                                WHERE SenderIP = 
'${quote_mysql:$sender_host_address}' \
                                AND SenderAddress = 
'${quote_mysql:$sender_address}' \
                          }{$value}}}


  warn  message         = X-Exim-Version: $version_number (build at 
$compile_date)\n\
                          X-Date: $tod_log\n\
                          X-Connected-IP: $sender_host_address:$sender_host_port
                        
  warn message          = X-Message-Linecount: $message_linecount\n\
                          X-Body-Linecount: $body_linecount\n\
                          X-Message-Size: $message_size\n\
                          X-Body-Size: $message_body_size
                        
  warn log_message = DEBUG  load_avgx1000: $load_average  spam_score:
$spam_score  message_size: $message_size
                        
  accept
########################################################################
#       20-routers.conf {
########################################################################
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

mysql_all_domain_alias:
  driver        = redirect
  domains       = +local_domains
  local_parts   = alle
  data          = ${lookup mysql{ \
                        SELECT CONCAT(username,'@',domain) AS sendto \
                        FROM user \
                        WHERE domain='${quote_mysql:$domain}' \
                        AND SMTP_allowed='YES' \
                  }}
  condition     = ${if or {{\
                        def:authenticated_id\
                    }{\
                        eq {$sender_host_address}{127.0.0.1}\
                    }}\
                  }
  file_transport = address_file
  pipe_transport = address_pipe
mysql_alias:
  driver                = redirect
  # restriction to local domains only may be a double check, as data
takes care of it already ;-)
  domains               = +local_domains
  file_transport        = address_file
  pipe_transport        = address_pipe
  data                  = ${if or {{\
                                def:authenticated_id\
                          }{\
                                eq {$sender_host_address}{127.0.0.1}\
                          }}{\
                                ${lookup mysql{ \
                                        SELECT sendto \
                                        FROM alias \
                                        WHERE ( 
username='${quote_mysql:$local_part}' \
                                        AND (domain='${quote_mysql:$domain}' OR 
domain='') )}}\
                          } {\
                                ${lookup mysql{ \
                                        SELECT sendto \
                                        FROM alias \
                                        WHERE ( ( 
username='${quote_mysql:$local_part}' AND
(domain='${quote_mysql:$domain}' OR domain='') ) \
                                        AND internal='NO' )}}\
                          }}
  local_part_suffix     = +*
  local_part_suffix_optional


mysql_user_condition:
  driver                = accept
  domains               = +local_domains
  caseful_local_part    = true
  condition             = ${if and {{\
                                        # existing user
                                        eq {${lookup mysql{ \
                                                SELECT 
CONCAT(username,'@',domain) AS email \
                                                FROM user \
                                                WHERE 
username='${quote_mysql:$local_part}' \
                                                AND 
domain='${quote_mysql:$domain}' \
                                                AND SMTP_allowed='YES' \
                                        }{true}{false}}}{true}\
                                   }{\
                                        # different conditions
                                        or {{\
                                                # suffix contains #before# and 
date (yyyymmdd) is not yet
#before#yyyymmdd
                                                and {{\
                                                        eq 
{${sg{$local_part_suffix}{^#([^#]+)#[0-9]\{8\}\$}{\$1}}}{before}\
                                                }{\
                                                        lt 
{$tod_logfile}{${sg{$local_part_suffix}{^#[^#]+#([0-9]\{8\})\$}{\$1}}}\
                                                }\
                                           }\
                                           }{\
                                                # suffix contains #fromdomain# 
and the domain-name of sender
                                                and {{\
                                                        eq 
{${sg{$local_part_suffix}{^#([^#]+)#.*\$}{\$1}}}{fromdomain}\
                                                    }{\
                                                        eq 
{$sender_address_domain}{${sg{$local_part_suffix}{^#[^#]+#(.*)\$}{\$1}}}\
                                                    }\
                                                }\
                                           }{\
                                                # suffix contains #b64from# and 
the base64 encoded address of
sender  DOES NOT WORK YET!
                                                and {{\
                                                        eq 
{${sg{$local_part_suffix}{^#([^#]+)#.*\$}{\$1}}}{b64from}\
                                                    }{\
                                                        eq 
{${str2b64:$sender_address}}{${sg{$local_part_suffix}{^#[^#]+#(.*)\$}{\$1}}}\
                                                    }\
                                                }\
                                           }\
                                        }\
                                   }\
                          }\
                          }
  local_part_suffix     = #*
  transport             = local_mysql_delivery

mysql_user:
  driver                = accept
  # restriction to local domains only may be a double check, as the
condition takes care of it already ;-)
  domains               = +local_domains
  condition             = ${lookup mysql{ \
                                SELECT CONCAT(username,'@',domain) AS email \
                                FROM user \
                                WHERE username='${quote_mysql:$local_part}' \
                                AND domain='${quote_mysql:$domain}' \
                                AND SMTP_allowed='YES' \
                          }{true}{false}}
  local_part_suffix     = +*
  local_part_suffix_optional
  transport             = local_mysql_delivery
  no_more

mysql_catchall:
  driver                = redirect
  # restriction to local domains only may be a double check, as data
takes care of it already ;-)
  domains               = +local_domains
  file_transport        = address_file
  pipe_transport        = address_pipe
  data                  = ${lookup mysql{ \
                                SELECT sendto \
                                FROM catchall \
                                WHERE domain='${quote_mysql:$domain}' \
                          }}

system_aliases:
  driver                = redirect
  allow_fail
  allow_defer
  data                  = ${lookup{$local_part}lsearch{/etc/mail/aliases}}
  file_transport        = address_file
  pipe_transport        = address_pipe

localuser:
  driver                = accept
  check_local_user
  transport = local_delivery
  cannot_route_message  = Unknown user
########################################################################
#       30-transports.conf {
########################################################################
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/vendor_perl/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
        directory = /var/mail/${local_part}/
        maildir_format
        delivery_date_add
        envelope_to_add
        return_path_add
        group = mail
        mode = 0660

local_mysql_delivery:
  driver        = appendfile
  directory     = /var/mail/${domain}/${local_part}/
  maildir_format
  delivery_date_add
  envelope_to_add
  return_path_add
  user          = mail
  group         = mail
  mode          = 0660
  headers_remove = Subject : X-Spam-Flag : X-Spam-Score-Int :
X-Spam-Score : X-Spam-Bar : X-Spam-Report
  headers_add   = "X-Spam-Threshold: ${lookup mysql{ \
                                        SELECT spam_threshold \
                                        FROM user \
                                        WHERE 
username='${quote_mysql:$local_part}' \
                                        AND domain='${quote_mysql:$domain}' \
                                        AND SMTP_allowed='YES' \
                                      }{$value}{ERROR}}\n\
                  X-Spam-Score: $header_X-Spam-Score:\n\
                  X-Spam-Score-Int: $header_X-Spam-Score-Int:\n\
                  X-Spam-Bar: $header_X-Spam-Bar:\n\
                  X-Spam-Report: $header_X-Spam-Report:\n\
                  X-Spam-Flag: ${if def:header_X-Spam-Score-Int:{\
                                        ${if 
>={${eval:${sg{$header_X-Spam-Score-Int:}{^.*\n}{}}}}\
                                                {${lookup mysql{ \
                                                        SELECT 
spam_threshold*10 \
                                                        FROM user \
                                                        WHERE 
username='${quote_mysql:$local_part}' \
                                                        AND 
domain='${quote_mysql:$domain}' \
                                                        AND SMTP_allowed='YES' \
                                                }{$value}{ERROR}}}{YES}{NO}}\
                                        }{\
                                        UNKNOWN\
                                }}\n\
                  Subject: ${if def:header_X-Spam-Score-Int:{\
                                        ${if 
>={${eval:${sg{$header_X-Spam-Score-Int:}{^.*\n}{}}}}\
                                                {${lookup mysql{ \
                                                        SELECT 
spam_threshold*10 \
                                                        FROM user \
                                                        WHERE 
username='${quote_mysql:$local_part}' \
                                                        AND 
domain='${quote_mysql:$domain}' \
                                                        AND SMTP_allowed='YES' \
                                                }{$value}{ERROR}}}{${lookup 
mysql{ \
                                                                        SELECT 
spam_tag \
                                                                        FROM 
user \
                                                                        WHERE 
username='${quote_mysql:$local_part}' \
                                                                        AND 
domain='${quote_mysql:$domain}' \
                                                                        AND 
SMTP_allowed='YES' \
                                                                   
}{$value}{ERROR}}$h_subject:}{$h_subject:}}\
                                }{$h_subject:}}\n\
                  X-Delivered-To: $original_local_part@$original_domain
($local_part@$domain)\n\
                  X-Message-Age: $message_age"
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
########################################################################
#       40-retry.conf {
########################################################################
begin retry
# Address or Domain    Error       Retries
# -----------------    -----       -------
*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
########################################################################
#       50-rewrite.conf {
########################################################################
begin rewrite
########################################################################
#       60-authenticators.conf {
########################################################################
begin authenticators

login:
driver = plaintext
public_name = LOGIN
server_prompts = Username:: : Password::
server_advertise_condition      = ${if eq{$tls_cipher}{}{no}{yes}}
server_condition                = ${if crypteq {$2}{\{sha1\}${lookup mysql{ \
                                                                SELECT password 
\
                                                                FROM user \
                                                                WHERE 
CONCAT(username,'@',domain)='${quote_mysql:$1}' \
                                                                AND 
SMTPAUTH_allowed='YES' \
                                                            }}}{yes}{no}}
server_set_id = $1



-- 
Sincerely,

-- 
## 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