Thanks Dean.  Below is my ACL section (I use cPanel server, so I don't 
fully understand it.)  Can you help me figure out where your helpful 
code will go?  -- I assuming right before the other lines that contain 
"authenticated"

Also, do you see any conflicting code with other parts of the ACL?


Thanks,
Terry





begin acl





#!!# ACL that is used after the RCPT command
check_recipient:
   # Exim 3 had no checking on -bs messages, so for compatibility
   # we accept if the source is local SMTP (i.e. not over TCP/IP).
   # We do this by testing for an empty sending host field.
   accept  hosts = :


   # Accept bounces to lists even if callbacks or other checks would fail
   warn     message      = X-WhitelistedRCPT-nohdrfromcallback: Yes
            condition    = \
            ${if and {{match{$local_part}{(.*)-bounces\+.*}} \
                      {exists 
{/usr/local/cpanel/3rdparty/mailman/lists/${lc:$1}/config.pck}}} \
                 {yes}{no}}

   accept   condition    = \
            ${if and {{match{$local_part}{(.*)-bounces\+.*}} \
                      {exists 
{/usr/local/cpanel/3rdparty/mailman/lists/${lc:$1}/config.pck}}} \
                 {yes}{no}}


   # Accept bounces to lists even if callbacks or other checks would fail
   warn     message      = X-WhitelistedRCPT-nohdrfromcallback: Yes
            condition    = \
            ${if and {{match{$local_part}{(.*)-bounces\+.*}} \
                      {exists 
{/usr/local/cpanel/3rdparty/mailman/lists/${lc:$1}_${lc:$domain}/config.pck}}} 
\
                 {yes}{no}}

   accept   condition    = \
            ${if and {{match{$local_part}{(.*)-bounces\+.*}} \
                      {exists 
{/usr/local/cpanel/3rdparty/mailman/lists/${lc:$1}_${lc:$domain}/config.pck}}} 
\
                 {yes}{no}}

   #if it gets here it isn't mailman

   accept  hosts = *
           authenticated = *


   #if they poped before smtp we just accept
   accept  condition = ${if 
match_ip{$sender_host_address}{iplsearch;/etc/relayhosts}{1}{${if 
eq{$sender_host_address}{127.0.0.1}{1}{0}}}}
         add_header = ${perl{popbeforesmtpwarn}{$sender_host_address}}
   accept  hosts = +relay_hosts
       add_header = ${perl{popbeforesmtpwarn}{$sender_host_address}}

    #recipient verifications are now done after smtp auth and pop before 
smtp so the users get back bounces instead of
    # a clogged outbox in outlook

   #recipient verifications are required for all messages that are not 
sent to the local machine
   #this was done at multiple users requests
   require verify = recipient



   require verify = sender/callout=60s


# The only problem with this setup is that if the message is for 
multiple users on the same server
# and they are on different unix accounts, the settings for the first 
recipient which has spamassassin enabled will be used.
# This shouldn't be a problem 99.9% of the time, however its a very 
small price to pay for a massive speed increase.


   warn  domains = ! ${primary_hostname} : +local_domains
     condition = ${if eq 
{${acl_m0}}{1}{0}{${perl{acl_checksa_deliver}{$domain}{${extract{5}{:}{${lookup{${lookup{$domain}lsearch*{/etc/userdomains}{$value}}}lsearch{/etc/passwd}{$value}}}}}}}}
     set acl_m0    = 1
     set acl_m1    = ${lookup{$domain}lsearch*{/etc/userdomains}{$value}}

   warn  domains = ${primary_hostname}
     condition = ${if eq 
{${acl_m0}}{1}{0}{${perl{acl_checkusersa}{$local_part}{${extract{5}{:}{${lookup{$local_part}lsearch{/etc/passwd}{$value}}}}}}}}
     set acl_m0    = 1
     set acl_m1    = $local_part


   accept  domains = +relay_domains

   deny    message = $sender_fullhost is currently not permitted to \
                         relay through this server. Perhaps you \
                         have not logged into the pop/imap server in the \
                         last 30 minutes or do not have SMTP 
Authentication turned on in your email client.


#!!# ACL that is used after the DATA command
check_message:
#  Enabling this will make the server non-rfc compliant
#  require verify = header_sender
  accept  hosts = 127.0.0.1 : +relay_hosts

   accept  hosts = *
           authenticated = *

   warn
     condition = ${if eq {${acl_m0}}{1}{1}{0}}
     spam =  ${acl_m1}/defer_ok
     log_message = "SpamAssassin as ${acl_m1} detected message as spam"
     add_header = X-Spam-Subject: ***SPAM*** $h_subject
     add_header = X-Spam-Status: Yes, score=$spam_score
     add_header = X-Spam-Score: $spam_score_int
     add_header = X-Spam-Bar: $spam_bar
     add_header = X-Spam-Report: $spam_report
     add_header = X-Spam-Flag: YES
     set acl_m2 = 1

   warn
   condition = ${if eq {${acl_m0}}{1}{${if eq {${acl_m2}}{1}{0}{1}}}{0}}
   add_header = X-Spam-Status: No, score=$spam_score
   add_header = X-Spam-Score: $spam_score_int
   add_header = X-Spam-Bar: $spam_bar
   add_header = X-Spam-Flag: NO
     log_message = "SpamAssassin as ${acl_m1} detected message as NOT spam"

deny
     condition = ${if eq {${acl_m0}}{1}{${if 
 >{$spam_score_int}{200}{1}{0}}}{0}}
     log_message = "The mail server detected your message as spam and 
has prevented delivery (200)."
     message = "The mail server detected your message as spam and has 
prevented delivery."




  accept








Dean Brooks wrote:
> On Sun, Oct 14, 2007 at 01:58:21PM -0500, [EMAIL PROTECTED] wrote:
> 
>> So I guess what I'm saying is how could I go about writing the following 
>> rule as an ACL (possibly with a call from acl_smtp_data):
>>
>> "If the connection is SMTP and isn't authenticated, check the "From" 
>> header address to see if it contains a local domain, and if it does, 
>> reject the message with error:
> 
> Well, if you have your local domains in a domainlist, such as:
> 
>    domainlist localdomains = mydomain1.com : mydomain2.com
> 
> then you could use something like:
> 
> deny
>   ! authenticated = *
>   condition = ${if match_domain{${domain:${address:$h_from:}}}{+localdomains}}
>   message   = sorry, external MTA's and unauthenticated MTU's don't have\
>               permission to send email to this server with a header that\
>               states the email is from ${lc:${domain:${address:$h_from:}}}.
> 
> Keep in mind that placement of this in your DATA ACL is important.  The
> ACL would need to have already accepted email that is within your IP
> space.  Otherwise, this will block email from your domain from *everyone*
> who hasn't used SMTP auth.  Unless that is what you want, of course.
> 
> --
> Dean Brooks
> [EMAIL PROTECTED]
> 


-- 
## List details at http://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