Changeset 170

Show
Ignore:
Timestamp:
11/19/07 19:02:27 (1 year ago)
Author:
jfp
Message:

Fix specific accept cases.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/jsmtpd/src/org/jsmtpd/core/common/acl/IACL.java

    r3 r170  
    5757    public boolean isValidRelay(String hostIP); 
    5858     
     59    public boolean isLocalDomain (String domain); 
     60     
    5961} 
  • trunk/jsmtpd/src/org/jsmtpd/core/receive/ProtocolHandler.java

    r136 r170  
    424424 
    425425    private boolean isAcceptable(EmailAddress addr) { 
    426         //user is authentified by external mecanism 
    427         if (relayed) { 
    428             log.debug("RCPT: " + addr + " is valid for relayed host :" + mail.getReceivedFrom()+" allowed by SMTP extension(s)"); 
    429             return true;       
    430         } 
    431          
    432          
    433         // Mail is sent from our local domain 
    434         if (acl.isValidRelay(mail.getReceivedFrom())) { 
    435             log.debug("RCPT: " + addr + " is valid for relayed host :" + mail.getReceivedFrom()); 
    436             return true; 
    437         } 
    438         //reject mails not from open relay and for localhost ? 
    439         if (addr.getHost().equals("localhost") || addr.getHost().equals("127.0.0.1")) { 
    440             log.debug("RCPT is not valid for " + mail.getReceivedFrom() + ", this is for localhost but sender is not to be relayed"); 
    441             return false; 
    442         } 
    443  
    444         // Mail is not send from local domain, so we only accept messages for our domain(s). 
    445         if (acl.isValidAddress(addr)) { 
    446             log.debug("RCPT " + addr + " is valid (local domain)"); 
    447             return true; 
    448         } 
     426         
     427        boolean isValidAddress = acl.isValidAddress(addr); 
     428         
     429        if (acl.isLocalDomain(addr.getHost())){ 
     430                if (isValidAddress){ 
     431                        log.debug("RCPT: " + addr + " is valid: local domain & valid address"); 
     432                return true; 
     433                } else { 
     434                        log.debug("RCPT: " + addr + " is not valid: local domain but not valid address"); 
     435                return false; 
     436                }        
     437        } else { 
     438                 // Mail is sent from relayed hosts 
     439                if (acl.isValidRelay(mail.getReceivedFrom())) { 
     440                log.debug("RCPT: " + addr + " is valid for relayed host :" + mail.getReceivedFrom()); 
     441                return true; 
     442            } 
     443                // user is authentified by external mecanism 
     444            if (relayed) { 
     445                log.debug("RCPT: " + addr + " is valid for relayed host :" + mail.getReceivedFrom()+" allowed by SMTP extension(s)"); 
     446                return true;       
     447            } 
     448            if (addr.getHost().equals("localhost") || addr.getHost().equals("127.0.0.1")) { 
     449                log.debug("RCPT is not valid for " + mail.getReceivedFrom() + ", this is for localhost but sender is not to be relayed"); 
     450                return false; 
     451            } 
     452        } 
     453         
    449454        log.debug("RCPT is not valid for " + mail.getReceivedFrom() + ", this is not from relayed host and not for local domain"); 
    450455        return false; 
  • trunk/jsmtpd/src/org/jsmtpd/plugins/acls/LdapACL.java

    r136 r170  
    2424import java.net.InetAddress; 
    2525import java.net.UnknownHostException; 
     26import java.util.ArrayList; 
    2627import java.util.HashSet; 
    2728import java.util.Hashtable; 
     29import java.util.List; 
    2830import java.util.Set; 
    2931 
     
    6971        private Hashtable<String,String> environnement; 
    7072        private static Log log = LogFactory.getLog(LdapACL.class); 
     73         
     74        private List<String> localDomains=new ArrayList<String>(); 
    7175         
    7276        public void initPlugin() throws PluginInitException { 
     
    273277    } 
    274278 
     279        public boolean isLocalDomain(String domain) { 
     280                return localDomains.contains(domain); 
     281        } 
     282 
     283        public void setLocalDomain (String domain) { 
     284                localDomains.add(domain); 
     285        } 
    275286 
    276287} 
  • trunk/jsmtpd/src/org/jsmtpd/plugins/acls/SimpleACL.java

    r136 r170  
    6060    protected List<EmailAddress> wildcardUsers = new ArrayList<EmailAddress>(); 
    6161 
     62    protected List<String> localDomains=new ArrayList<String>(); 
     63     
    6264    /** 
    6365     * @param hostIP the ip acessing to smtp service 
     
    202204    } 
    203205 
     206        public boolean isLocalDomain(String domain) { 
     207                return localDomains.contains(domain); 
     208        } 
     209 
     210        public void setLocalDomain (String domain) { 
     211                localDomains.add(domain); 
     212        } 
    204213}