You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2012/01/01 10:16:20 UTC

svn commit: r1226220 - in /james/protocols/trunk/smtp/src: main/java/org/apache/james/protocols/smtp/ main/java/org/apache/james/protocols/smtp/core/fastfail/ test/java/org/apache/james/protocols/smtp/ test/java/org/apache/james/protocols/smtp/core/fas...

Author: norman
Date: Sun Jan  1 09:16:19 2012
New Revision: 1226220

URL: http://svn.apache.org/viewvc?rev=1226220&view=rev
Log:
Remove DNSService interface. See PROTOCOLS-79

Removed:
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/DNSService.java
    james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeDNSService.java
Modified:
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java
    james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java
    james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java
    james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java?rev=1226220&r1=1226219&r2=1226220&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java Sun Jan  1 09:16:19 2012
@@ -21,11 +21,13 @@
 
 package org.apache.james.protocols.smtp.core.fastfail;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.StringTokenizer;
 
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.smtp.DNSService;
 import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
@@ -44,9 +46,7 @@ public class DNSRBLHandler implements  R
      */
     private String[] whitelist;
     private String[] blacklist;
-    
-    private DNSService dnsService = null;
-    
+        
     private boolean getDetail = false;
     
     private String blocklistedDetail = null;
@@ -54,16 +54,6 @@ public class DNSRBLHandler implements  R
     public static final String RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME = "org.apache.james.smtpserver.rbl.blocklisted";
     
     public static final String RBL_DETAIL_MAIL_ATTRIBUTE_NAME = "org.apache.james.smtpserver.rbl.detail";
-
-
-    /**
-     * Sets the DNS service.
-     * @param dnsService the dnsService to set
-     */
-    public final void setDNSService(DNSService dnsService) {
-        this.dnsService = dnsService;
-    }
-
    
     
     /**
@@ -137,52 +127,84 @@ public class DNSRBLHandler implements  R
 
             if (whitelist != null) {
                 String[] rblList = whitelist;
-                for (int i = 0 ; i < rblList.length ; i++) try {
-                    dnsService.getByName(reversedOctets + rblList[i]);
-                    if (session.getLogger().isInfoEnabled()) {
-                        session.getLogger().info("Connection from " + ipAddress + " whitelisted by " + rblList[i]);
-                    }
+                for (int i = 0 ; i < rblList.length ; i++) {
+                    if (resolve(reversedOctets + rblList[i])) {
+                        if (session.getLogger().isInfoEnabled()) {
+                            session.getLogger().info("Connection from " + ipAddress + " whitelisted by " + rblList[i]);
+                        }
                     
-                    return;
-                } catch (java.net.UnknownHostException uhe) {
-                    if (session.getLogger().isDebugEnabled()) {
-                        session.getLogger().debug("IpAddress " + session.getRemoteAddress().getAddress()  + " not listed on " + rblList[i]);
+                        return;
+                    } else {
+                        if (session.getLogger().isDebugEnabled()) {
+                            session.getLogger().debug("IpAddress " + session.getRemoteAddress().getAddress()  + " not listed on " + rblList[i]);
+                        }
                     }
                 }
             }
 
             if (blacklist != null) {
                 String[] rblList = blacklist;
-                for (int i = 0 ; i < rblList.length ; i++) try {
-                    dnsService.getByName(reversedOctets + rblList[i]);
-                    if (session.getLogger().isInfoEnabled()) {
-                        session.getLogger().info("Connection from " + ipAddress + " restricted by " + rblList[i] + " to SMTP AUTH/postmaster/abuse.");
-                    }
-                    
-                    // we should try to retrieve details
-                    if (getDetail) {
-                        Collection<String> txt = dnsService.findTXTRecords(reversedOctets + rblList[i]);
+                for (int i = 0 ; i < rblList.length ; i++) {
+                    if (resolve(reversedOctets + rblList[i])) {
+                        if (session.getLogger().isInfoEnabled()) {
+                            session.getLogger().info("Connection from " + ipAddress + " restricted by " + rblList[i] + " to SMTP AUTH/postmaster/abuse.");
+                        }
                         
-                        // Check if we found a txt record
-                        if (!txt.isEmpty()) {
-                            // Set the detail
-                            String blocklistedDetail = txt.iterator().next().toString();
+                        // we should try to retrieve details
+                        if (getDetail) {
+                            Collection<String> txt = resolveTXTRecords(reversedOctets + rblList[i]);
                             
-                            session.setAttachment(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, blocklistedDetail, State.Connection);
+                            // Check if we found a txt record
+                            if (!txt.isEmpty()) {
+                                // Set the detail
+                                String blocklistedDetail = txt.iterator().next().toString();
+                                
+                                session.setAttachment(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, blocklistedDetail, State.Connection);
+                            }
+                        }
+                        
+                        session.setAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, "true", State.Connection);
+                        return;
+                    } else {
+                        // if it is unknown, it isn't blocked
+                        if (session.getLogger().isDebugEnabled()) {
+                            session.getLogger().debug("unknown host exception thrown:" + rblList[i]);
                         }
                     }
-                    
-                    session.setAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, "true", State.Connection);
-                    return;
-                } catch (java.net.UnknownHostException uhe) {
-                    // if it is unknown, it isn't blocked
-                    if (session.getLogger().isDebugEnabled()) {
-                        session.getLogger().debug("unknown host exception thrown:" + rblList[i]);
-                    }
+                   
                 }
             }
         }
     }
+    
+    /**
+     * Check if the given ipaddress is resolvable. 
+     * 
+     * This implementation use {@link InetAddress#getByName(String)}. Sub-classes may override this with a more performant solution
+     * 
+     * @param ip
+     * @return canResolve
+     */
+    protected boolean resolve(String ip) {
+        try {
+            InetAddress.getByName(ip);
+            return true;
+        } catch (UnknownHostException e) {
+            return false;
+        }
+    }
+    
+    /**
+     * Return a {@link Collection} which holds all TXT records for the ip. This is most times used to add details for a RBL entry.
+     * 
+     * This implementation always returns an empty {@link Collection}. Sub-classes may override this.
+     * 
+     * @param ip
+     * @return txtRecords
+     */
+    protected Collection<String> resolveTXTRecords(String ip) {
+        return Collections.<String>emptyList();
+    }
 
     /**
      * @see org.apache.james.protocols.smtp.hook.RcptHook#doRcpt(org.apache.james.protocols.smtp.SMTPSession, org.apache.mailet.MailAddress, org.apache.mailet.MailAddress)

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java?rev=1226220&r1=1226219&r2=1226220&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java Sun Jan  1 09:16:19 2012
@@ -19,11 +19,11 @@
 
 package org.apache.james.protocols.smtp.core.fastfail;
 
+import java.net.InetAddress;
 import java.net.UnknownHostException;
 
 
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.smtp.DNSService;
 import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
@@ -41,25 +41,6 @@ public class ResolvableEhloHeloHandler i
 
     public final static String BAD_EHLO_HELO = "BAD_EHLO_HELO";
 
-    protected DNSService dnsService = null;
-
-    /**
-     * Gets the DNS service.
-     * @return the dnsService
-     */
-    public final DNSService getDNSService() {
-        return dnsService;
-    }
-
-    /**
-     * Sets the DNS service.
-     * @param dnsService the dnsService to set
-     */
-    public final void setDNSService(DNSService dnsService) {
-        this.dnsService = dnsService;
-    }
-
-
     /**
      * Check if EHLO/HELO is resolvable
      * 
@@ -75,6 +56,9 @@ public class ResolvableEhloHeloHandler i
         }
     }
     
+    protected String resolve(String host) throws UnknownHostException {
+        return InetAddress.getByName(host).getHostName();
+    }
     /**
      * @param session the SMTPSession
      * @param argument the argument
@@ -84,7 +68,7 @@ public class ResolvableEhloHeloHandler i
         // try to resolv the provided helo. If it can not resolved do not
         // accept it.
         try {
-            dnsService.getByName(argument);
+            resolve(argument);
         } catch (UnknownHostException e) {
             return true;
         }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java?rev=1226220&r1=1226219&r2=1226220&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java Sun Jan  1 09:16:19 2012
@@ -19,11 +19,9 @@
 
 package org.apache.james.protocols.smtp.core.fastfail;
 
-import org.apache.james.protocols.smtp.SMTPSession;
-
-
 import java.net.UnknownHostException;
 
+import org.apache.james.protocols.smtp.SMTPSession;
 
 public class ReverseEqualsEhloHeloHandler extends ResolvableEhloHeloHandler {
 
@@ -33,16 +31,16 @@ public class ReverseEqualsEhloHeloHandle
     @Override
     protected boolean isBadHelo(SMTPSession session, String argument) {
         try {
-            // get reverse entry
-            String reverse = dnsService.getHostName(dnsService.getByName(
-                    session.getRemoteAddress().getAddress().getHostAddress()));
+            String reverse = resolve(session.getRemoteAddress().getAddress().getHostAddress());
             if (!argument.equals(reverse)) {
                 return true;
             }
         } catch (UnknownHostException e) {
-            return true;
+            // ignore
         }
+
         return false;
     }
     
+    
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java?rev=1226220&r1=1226219&r2=1226220&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java Sun Jan  1 09:16:19 2012
@@ -18,13 +18,9 @@
  ****************************************************************/
 package org.apache.james.protocols.smtp.core.fastfail;
 
-import java.util.Collection;
-
-import org.apache.james.protocols.smtp.DNSService;
 import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
-import org.apache.james.protocols.smtp.TemporaryResolutionException;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
 import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
@@ -34,50 +30,19 @@ import org.apache.james.protocols.smtp.h
  * Add MFDNSCheck feature to SMTPServer. This handler reject mail from domains which have not an an valid MX record.  
  * 
  */
-public class ValidSenderDomainHandler implements MailHook {
-    
-    private DNSService dnsService = null;
-
-    /**
-     * Sets the DNS service.
-     * @param dnsService the dnsService to set
-     */
-    public final void setDNSService(DNSService dnsService) {
-        this.dnsService = dnsService;
-    }
-    
-        
-
+public abstract class ValidSenderDomainHandler implements MailHook { 
 
-    
-    protected boolean check(SMTPSession session, MailAddress senderAddress) {
-        // null sender so return
-        if (senderAddress == null) return false;
-
-        Collection<String> records = null;
-            
-        // try to resolv the provided domain in the senderaddress. If it can not resolved do not accept it.
-        try {
-            records = dnsService.findMXRecords(senderAddress.getDomain());
-        } catch (TemporaryResolutionException e) {
-            // TODO: Should we reject temporary ?
-        }
-    
-        if (records == null || records.size() == 0) {
-            return true;
-        }
 
-        return false;
-    }
-    
     /**
      * @see org.apache.james.protocols.smtp.hook.MailHook#doMail(org.apache.james.protocols.smtp.SMTPSession, org.apache.mailet.MailAddress)
      */
     public HookResult doMail(SMTPSession session, MailAddress sender) {
-        if (check(session,sender)) {
+        if (sender != null  && !hasMXRecord(session,sender.getDomain())) {
             return new HookResult(HookReturnCode.DENY,SMTPRetCode.SYNTAX_ERROR_ARGUMENTS,DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_SYNTAX_SENDER)+ " sender " + sender + " contains a domain with no valid MX records");
         } else {
             return HookResult.declined();
         }
     }
+    
+    protected abstract boolean hasMXRecord(SMTPSession session, String domain);
 }

Modified: james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java?rev=1226220&r1=1226219&r2=1226220&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java (original)
+++ james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java Sun Jan  1 09:16:19 2012
@@ -20,33 +20,27 @@
 
 package org.apache.james.protocols.smtp.core.fastfail;
 
-import java.net.InetAddress;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+
 import java.net.InetSocketAddress;
-import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-
-import static junit.framework.Assert.*;
-
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.smtp.BaseFakeDNSService;
 import org.apache.james.protocols.smtp.BaseFakeSMTPSession;
-import org.apache.james.protocols.smtp.DNSService;
 import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.MailAddressException;
 import org.apache.james.protocols.smtp.SMTPSession;
-import org.apache.james.protocols.smtp.core.fastfail.DNSRBLHandler;
 import org.junit.Before;
 import org.junit.Test;
 
 public class DNSRBLHandlerTest {
 
-    private DNSService mockedDnsServer;
-
     private SMTPSession mockedSMTPSession;
 
     private String remoteIp = "127.0.0.2";
@@ -59,7 +53,6 @@ public class DNSRBLHandlerTest {
 
     @Before
     public void setUp() throws Exception {
-        setupMockedDnsServer();
         setRelayingAllowed(false);
     }
 
@@ -85,10 +78,23 @@ public class DNSRBLHandlerTest {
      * Setup the mocked dnsserver
      *
      */
-    private void setupMockedDnsServer() {
-        mockedDnsServer  = new BaseFakeDNSService() {
+    private DNSRBLHandler createHandler() {
+        return new DNSRBLHandler() {
 
-            public Collection<String> findTXTRecords(String hostname) {
+            @Override
+            protected boolean resolve(String host) {
+                if ("2.0.0.127.bl.spamcop.net.".equals(host)) {
+                    return true;
+                } else if ("3.0.0.127.bl.spamcop.net.".equals(host)) {
+                    return true;
+                } else if ("1.0.168.192.bl.spamcop.net.".equals(host)) {
+                    return false;
+                }
+                throw new UnsupportedOperationException("getByName("+host+") not implemented in DNSRBLHandlerTest mock");
+            }
+
+            @Override
+            protected Collection<String> resolveTXTRecords(String hostname) {
                 List<String> res = new ArrayList<String>();
                 if (hostname == null) {
                     return res;
@@ -99,19 +105,9 @@ public class DNSRBLHandlerTest {
                 }
                 return res;
             }
-
-            public InetAddress getByName(String host)
-                    throws UnknownHostException {
-                if ("2.0.0.127.bl.spamcop.net.".equals(host)) {
-                    return InetAddress.getByName("127.0.0.1");
-                } else if ("3.0.0.127.bl.spamcop.net.".equals(host)) {
-                    return InetAddress.getByName("127.0.0.1");
-                } else if ("1.0.168.192.bl.spamcop.net.".equals(host)) {
-                    throw new UnknownHostException(host);
-                }
-                throw new UnsupportedOperationException("getByName("+host+") not implemented in DNSRBLHandlerTest mock");
-            }
+            
         };
+       
         
     }
 
@@ -178,10 +174,9 @@ public class DNSRBLHandlerTest {
     // ip is blacklisted and has txt details
     @Test
     public void testBlackListedTextPresent() throws MailAddressException {
-        DNSRBLHandler rbl = new DNSRBLHandler();
+        DNSRBLHandler rbl = createHandler();
        
         setupMockedSMTPSession(new MailAddress("any@domain"));
-        rbl.setDNSService(mockedDnsServer);
 
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
@@ -194,9 +189,8 @@ public class DNSRBLHandlerTest {
     // ip is blacklisted and has txt details but we don'T want to retrieve the txt record
     @Test
     public void testGetNoDetail() throws MailAddressException {
-        DNSRBLHandler rbl = new DNSRBLHandler();
+        DNSRBLHandler rbl = createHandler();
         setupMockedSMTPSession(new MailAddress("any@domain"));
-        rbl.setDNSService(mockedDnsServer);
 
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(false);
@@ -208,12 +202,10 @@ public class DNSRBLHandlerTest {
     // ip is allowed to relay
     @Test
     public void testRelayAllowed() throws MailAddressException {
-        DNSRBLHandler rbl = new DNSRBLHandler();
+        DNSRBLHandler rbl = createHandler();
         setRelayingAllowed(true);
         setupMockedSMTPSession(new MailAddress("any@domain"));
 
-        rbl.setDNSService(mockedDnsServer);
-
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
         rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
@@ -224,13 +216,11 @@ public class DNSRBLHandlerTest {
     // ip not on blacklist
     @Test
     public void testNotBlackListed() throws MailAddressException {
-        DNSRBLHandler rbl = new DNSRBLHandler();
+        DNSRBLHandler rbl = createHandler();
 
         setRemoteIp("192.168.0.1");
         setupMockedSMTPSession(new MailAddress("any@domain"));
 
-        rbl.setDNSService(mockedDnsServer);
-
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
         rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
@@ -241,13 +231,11 @@ public class DNSRBLHandlerTest {
     // ip on blacklist without txt details
     @Test
     public void testBlackListedNoTxt() throws MailAddressException {
-        DNSRBLHandler rbl = new DNSRBLHandler();
+        DNSRBLHandler rbl = createHandler();
 
         setRemoteIp("127.0.0.3");
         setupMockedSMTPSession(new MailAddress("any@domain"));
 
-        rbl.setDNSService(mockedDnsServer);
-
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
         rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
@@ -258,13 +246,11 @@ public class DNSRBLHandlerTest {
     // ip on whitelist
     @Test
     public void testWhiteListed() throws MailAddressException {
-        DNSRBLHandler rbl = new DNSRBLHandler();
+        DNSRBLHandler rbl = createHandler();
 
         setRemoteIp("127.0.0.2");
         setupMockedSMTPSession(new MailAddress("any@domain"));
 
-        rbl.setDNSService(mockedDnsServer);
-
         rbl.setWhitelist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
         rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));

Modified: james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java?rev=1226220&r1=1226219&r2=1226220&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java (original)
+++ james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java Sun Jan  1 09:16:19 2012
@@ -30,9 +30,7 @@ import java.util.Map;
 import static junit.framework.Assert.*;
 
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.smtp.BaseFakeDNSService;
 import org.apache.james.protocols.smtp.BaseFakeSMTPSession;
-import org.apache.james.protocols.smtp.DNSService;
 import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.MailAddressException;
 import org.apache.james.protocols.smtp.SMTPSession;
@@ -112,24 +110,24 @@ public class ResolvableEhloHeloHandlerTe
         return session;
     }
     
-    private DNSService setupMockDNSServer() {
-    	DNSService dns = new BaseFakeDNSService(){
-            public InetAddress getByName(String host) throws UnknownHostException {
+    private ResolvableEhloHeloHandler createHandler() {
+        return new ResolvableEhloHeloHandler() {
+
+            @Override
+            protected String resolve(String host) throws UnknownHostException {
                 if (host.equals(INVALID_HOST)) 
                     throw new UnknownHostException();
-                return InetAddress.getLocalHost();
+                return InetAddress.getLocalHost().getHostName();
             }
+            
         };
-        
-        return dns;
     }
     
     @Test
     public void testRejectInvalidHelo() throws MailAddressException {
         MailAddress mailAddress = new MailAddress("test@localhost");
         SMTPSession session = setupMockSession(INVALID_HOST,false,false,null,mailAddress);
-        ResolvableEhloHeloHandler handler = new ResolvableEhloHeloHandler();
-        handler.setDNSService(setupMockDNSServer());
+        ResolvableEhloHeloHandler handler = createHandler();
         
         handler.doHelo(session, INVALID_HOST);
         assertNotNull("Invalid HELO",session.getAttachment(ResolvableEhloHeloHandler.BAD_EHLO_HELO, State.Transaction));
@@ -142,9 +140,8 @@ public class ResolvableEhloHeloHandlerTe
     public void testNotRejectValidHelo() throws MailAddressException {
         MailAddress mailAddress = new MailAddress("test@localhost");
         SMTPSession session = setupMockSession(VALID_HOST,false,false,null,mailAddress);
-        ResolvableEhloHeloHandler handler = new ResolvableEhloHeloHandler();
-                
-        handler.setDNSService(setupMockDNSServer());
+        ResolvableEhloHeloHandler handler = createHandler();
+
   
         handler.doHelo(session, VALID_HOST);
         assertNull("Valid HELO",session.getAttachment(ResolvableEhloHeloHandler.BAD_EHLO_HELO, State.Transaction));
@@ -157,9 +154,8 @@ public class ResolvableEhloHeloHandlerTe
     public void testRejectInvalidHeloAuthUser() throws MailAddressException {
         MailAddress mailAddress = new MailAddress("test@localhost");
         SMTPSession session = setupMockSession(INVALID_HOST,false,true,"valid@user",mailAddress);
-        ResolvableEhloHeloHandler handler = new ResolvableEhloHeloHandler();
-                
-        handler.setDNSService(setupMockDNSServer());
+        ResolvableEhloHeloHandler handler = createHandler();
+
 
         handler.doHelo(session, INVALID_HOST);
         assertNotNull("Value stored",session.getAttachment(ResolvableEhloHeloHandler.BAD_EHLO_HELO, State.Transaction));
@@ -174,10 +170,8 @@ public class ResolvableEhloHeloHandlerTe
     public void testRejectRelay() throws MailAddressException {
         MailAddress mailAddress = new MailAddress("test@localhost");
         SMTPSession session = setupMockSession(INVALID_HOST,true,false,null,mailAddress);
-        ResolvableEhloHeloHandler handler = new ResolvableEhloHeloHandler();
-        
-        
-        handler.setDNSService(setupMockDNSServer());
+        ResolvableEhloHeloHandler handler = createHandler();
+
 
         handler.doHelo(session, INVALID_HOST);
         assertNotNull("Value stored",session.getAttachment(ResolvableEhloHeloHandler.BAD_EHLO_HELO, State.Transaction));

Modified: james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java?rev=1226220&r1=1226219&r2=1226220&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java (original)
+++ james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java Sun Jan  1 09:16:19 2012
@@ -19,40 +19,32 @@
 
 package org.apache.james.protocols.smtp.core.fastfail;
 
-import java.util.ArrayList;
-import java.util.Collection;
+import static junit.framework.Assert.assertEquals;
+
 import java.util.HashMap;
 import java.util.Map;
 
-
-import static junit.framework.Assert.*;
-
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.smtp.BaseFakeDNSService;
 import org.apache.james.protocols.smtp.BaseFakeSMTPSession;
-import org.apache.james.protocols.smtp.DNSService;
 import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.MailAddressException;
 import org.apache.james.protocols.smtp.SMTPSession;
-import org.apache.james.protocols.smtp.core.fastfail.ValidSenderDomainHandler;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.junit.Test;
 
 public class ValidSenderDomainHandlerTest {
     
-    private DNSService setupDNSServer() {
-    	DNSService dns = new BaseFakeDNSService(){
-
-            public Collection<String> findMXRecords(String hostname) {
-                Collection<String> mx = new ArrayList<String>();
-                if (hostname.equals("test.james.apache.org")) {
-                    mx.add("mail.james.apache.org");
+    private ValidSenderDomainHandler createHandler() {
+        return new ValidSenderDomainHandler() {
+            
+            @Override
+            protected boolean hasMXRecord(SMTPSession session, String domain) {
+                if (domain.equals("test.james.apache.org")) {
+                    return true;
                 }
-                return mx;
+                return false;
             }
-            
         };
-        return dns;
     }
     
     private SMTPSession setupMockedSession(final MailAddress sender) {
@@ -106,8 +98,7 @@ public class ValidSenderDomainHandlerTes
     // Test for JAMES-580
     @Test
     public void testNullSenderNotReject() {
-        ValidSenderDomainHandler handler = new ValidSenderDomainHandler();
-        handler.setDNSService(setupDNSServer());
+        ValidSenderDomainHandler handler = createHandler();
         int response = handler.doMail(setupMockedSession(null),null).getResult();
         
         assertEquals("Not blocked cause its a nullsender",response,HookReturnCode.DECLINED);
@@ -115,9 +106,8 @@ public class ValidSenderDomainHandlerTes
 
     @Test
     public void testInvalidSenderDomainReject() throws MailAddressException {
-        ValidSenderDomainHandler handler = new ValidSenderDomainHandler();
+        ValidSenderDomainHandler handler = createHandler();
         SMTPSession session = setupMockedSession(new MailAddress("invalid@invalid"));
-        handler.setDNSService(setupDNSServer());
         int response = handler.doMail(session,(MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction)).getResult();
         
         assertEquals("Blocked cause we use reject action", response,HookReturnCode.DENY);



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org