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 2006/08/12 16:43:45 UTC
svn commit: r431040 - in /james/server/trunk/src:
java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java
test/org/apache/james/smtpserver/ValidRcptMXTest.java
Author: norman
Date: Sat Aug 12 07:43:44 2006
New Revision: 431040
URL: http://svn.apache.org/viewvc?rev=431040&view=rev
Log:
Formattin
Modified:
james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java
james/server/trunk/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java
Modified: james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java?rev=431040&r1=431039&r2=431040&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java (original)
+++ james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/fastfail/ValidRcptMX.java Sat Aug 12 07:43:44 2006
@@ -39,12 +39,11 @@
import org.apache.mailet.MailAddress;
/**
- * Reject email with an MX which is 127.0.0.1. This class can be used to reject
- * email to bogus MX which is send from a authorized user or an authorized
+ * This class can be used to reject email with bogus MX which is send from a authorized user or an authorized
* network.
*/
public class ValidRcptMX extends AbstractLogEnabled implements CommandHandler,
- Serviceable, Configurable {
+ Serviceable, Configurable {
private DNSServer dnsServer = null;
@@ -54,107 +53,107 @@
public void configure(Configuration arg0) throws ConfigurationException {
- Configuration[] badMX = arg0.getChildren("invalidMXNetworks");
+ Configuration[] badMX = arg0.getChildren("invalidMXNetworks");
- if (badMX.length != 0) {
+ if (badMX.length != 0) {
+
+ Collection bannedNetworks = new ArrayList();
- Collection bannedNetworks = new ArrayList();
+ for (int i = 0; i < badMX.length; i++) {
+ String network = badMX[i].getValue(null);
- for (int i = 0; i < badMX.length; i++) {
- String network = badMX[i].getValue(null);
+ if (network != null) {
+ bannedNetworks.add(network);
+ }
+ }
- if (network != null) {
- bannedNetworks.add(network);
- }
- }
+ setBannedNetworks(bannedNetworks, dnsServer);
- setBannedNetworks(bannedNetworks, dnsServer);
+ getLogger().info("Invalid MX Networks: " + bNetwork.toString());
- getLogger().info("Invalid MX Networks: " + bNetwork.toString());
-
- } else {
- throw new ConfigurationException(
- "Please configure at least on invalid MX network");
- }
+ } else {
+ throw new ConfigurationException(
+ "Please configure at least on invalid MX network");
+ }
}
+ /**
+ * Set the banned networks
+ *
+ * @param networks Collection of networks
+ * @param dnsServer The DNSServer
+ */
public void setBannedNetworks(Collection networks, DNSServer dnsServer) {
- bNetwork = new NetMatcher(networks, dnsServer) {
- protected void log(String s) {
- getLogger().debug(s);
- }
+ bNetwork = new NetMatcher(networks, dnsServer) {
+ protected void log(String s) {
+ getLogger().debug(s);
+ }
- };
+ };
}
/**
- * @see org.apache.avalon.framework.service.Serviceable#service(ServiceManager)
- */
+ * @see org.apache.avalon.framework.service.Serviceable#service(ServiceManager)
+ */
public void service(ServiceManager arg0) throws ServiceException {
- setDNSServer((DNSServer) arg0.lookup(DNSServer.ROLE));
+ setDNSServer((DNSServer) arg0.lookup(DNSServer.ROLE));
}
/**
- * @see org.apache.james.smtpserver.CommandHandler#getImplCommands()
- */
+ * @see org.apache.james.smtpserver.CommandHandler#getImplCommands()
+ */
public Collection getImplCommands() {
- Collection c = new ArrayList();
- c.add("RCPT");
- return c;
+ Collection c = new ArrayList();
+ c.add("RCPT");
+ return c;
}
/**
- * @see org.apache.james.smtpserver.CommandHandler#onCommand(SMTPSession)
- */
+ * @see org.apache.james.smtpserver.CommandHandler#onCommand(SMTPSession)
+ */
public void onCommand(SMTPSession session) {
- doRCPT(session);
+ doRCPT(session);
}
/**
- * Set the DNSServer
- *
- * @param dnsServer
- * The dnsServer
- */
+ * Set the DNSServer
+ *
+ * @param dnsServer
+ * The dnsServer
+ */
public void setDNSServer(DNSServer dnsServer) {
- this.dnsServer = dnsServer;
+ this.dnsServer = dnsServer;
}
private void doRCPT(SMTPSession session) {
- MailAddress rcpt = (MailAddress) session.getState().get(
- SMTPSession.CURRENT_RECIPIENT);
+ MailAddress rcpt = (MailAddress) session.getState().get(SMTPSession.CURRENT_RECIPIENT);
- String domain = rcpt.getHost();
+ String domain = rcpt.getHost();
- // Email should be deliver local
- if (domain.equals(LOCALHOST))
- return;
-
- Iterator mx = dnsServer.findMXRecords(domain).iterator();
-
- if (mx.hasNext()) {
- while (mx.hasNext()) {
- String mxRec = mx.next().toString();
-
- try {
- String ip = dnsServer.getByName(mxRec).getHostAddress();
-
- // Check for invalid MX
- if (bNetwork.matchInetNetwork(ip)) {
- String response = "Invalid MX " + ip + " for domain "
- + rcpt.getHost();
- String responseString = "530"
- + DSNStatus.getStatus(DSNStatus.PERMANENT,
- DSNStatus.SECURITY_AUTH) + " "
- + response;
- getLogger().debug(response + ". Reject email");
- session.writeResponse(responseString);
- return;
- }
- } catch (UnknownHostException e) {
- // Ignore this
- }
- }
- }
+ // Email should be deliver local
+ if (domain.equals(LOCALHOST)) return;
+
+ Iterator mx = dnsServer.findMXRecords(domain).iterator();
+
+ if (mx.hasNext()) {
+ while (mx.hasNext()) {
+ String mxRec = mx.next().toString();
+
+ try {
+ String ip = dnsServer.getByName(mxRec).getHostAddress();
+
+ // Check for invalid MX
+ if (bNetwork.matchInetNetwork(ip)) {
+ String response = "Invalid MX " + ip + " for domain " + rcpt.getHost();
+ String responseString = "530" + DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " " + response;
+ getLogger().debug(response + ". Reject email");
+ session.writeResponse(responseString);
+ return;
+ }
+ } catch (UnknownHostException e) {
+ // Ignore this
+ }
+ }
+ }
}
}
Modified: james/server/trunk/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java?rev=431040&r1=431039&r2=431040&view=diff
==============================================================================
--- james/server/trunk/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/smtpserver/ValidRcptMXTest.java Sat Aug 12 07:43:44 2006
@@ -47,87 +47,79 @@
private final static String LOOPBACK = "127.0.0.1";
protected void setUp() throws Exception {
- response = null;
+ response = null;
- super.setUp();
+ super.setUp();
}
private SMTPSession setupMockedSMTPSession(final MailAddress rcpt) {
- SMTPSession session = new AbstractSMTPSession() {
- HashMap state = new HashMap();
+ SMTPSession session = new AbstractSMTPSession() {
+ HashMap state = new HashMap();
- public Map getState() {
- state.put(SMTPSession.CURRENT_RECIPIENT, rcpt);
- return state;
- }
-
- public void writeResponse(String resp) {
- response = resp;
- }
+ public Map getState() {
+ state.put(SMTPSession.CURRENT_RECIPIENT, rcpt);
+ return state;
+ }
+
+ public void writeResponse(String resp) {
+ response = resp;
+ }
- };
- return session;
+ };
+ return session;
}
private DNSServer setupMockedDNSServer() {
- DNSServer dns = new DNSServer() {
+ DNSServer dns = new DNSServer() {
- public Collection findMXRecords(String hostname) {
- Collection mx = new ArrayList();
+ public Collection findMXRecords(String hostname) {
+ Collection mx = new ArrayList();
- if (hostname.equals(INVALID_HOST)) {
- mx.add(INVALID_MX);
- }
- return mx;
- }
-
- public Collection findTXTRecords(String hostname) {
- throw new UnsupportedOperationException(
- "Unimplemented Stub Method");
- }
-
- public InetAddress[] getAllByName(String host)
- throws UnknownHostException {
- throw new UnsupportedOperationException(
- "Unimplemented Stub Method");
- }
-
- public InetAddress getByName(String host)
- throws UnknownHostException {
- System.err.println("host: " + host);
- if (host.equals(INVALID_MX) || host.equals(LOOPBACK)) {
- return InetAddress.getByName(LOOPBACK);
- } else if (host.equals("255.255.255.255")) {
- return InetAddress.getByName("255.255.255.255");
- }
- throw new UnknownHostException("Unknown host");
- }
-
- public Iterator getSMTPHostAddresses(String domainName) {
- throw new UnsupportedOperationException(
- "Unimplemented Stub Method");
- }
+ if (hostname.equals(INVALID_HOST)) {
+ mx.add(INVALID_MX);
+ }
+ return mx;
+ }
+
+ public Collection findTXTRecords(String hostname) {
+ throw new UnsupportedOperationException("Unimplemented Stub Method");
+ }
+
+ public InetAddress[] getAllByName(String host) throws UnknownHostException {
+ throw new UnsupportedOperationException("Unimplemented Stub Method");
+ }
+
+ public InetAddress getByName(String host) throws UnknownHostException {
+ if (host.equals(INVALID_MX) || host.equals(LOOPBACK)) {
+ return InetAddress.getByName(LOOPBACK);
+ } else if (host.equals("255.255.255.255")) {
+ return InetAddress.getByName("255.255.255.255");
+ }
+ throw new UnknownHostException("Unknown host");
+ }
+
+ public Iterator getSMTPHostAddresses(String domainName) {
+ throw new UnsupportedOperationException("Unimplemented Stub Method");
+ }
- };
-
- return dns;
+ };
+ return dns;
}
public void testRejectLoopbackMX() throws ParseException {
- Collection bNetworks = new ArrayList();
- bNetworks.add("127.0.0.1");
- DNSServer dns = setupMockedDNSServer();
- ValidRcptMX handler = new ValidRcptMX();
-
- ContainerUtil.enableLogging(handler, new MockLogger());
-
- handler.setDNSServer(dns);
- handler.setBannedNetworks(bNetworks, dns);
- handler.onCommand(setupMockedSMTPSession(new MailAddress("test@"
- + INVALID_HOST)));
+ Collection bNetworks = new ArrayList();
+ bNetworks.add("127.0.0.1");
+
+ DNSServer dns = setupMockedDNSServer();
+ ValidRcptMX handler = new ValidRcptMX();
+
+ ContainerUtil.enableLogging(handler, new MockLogger());
+
+ handler.setDNSServer(dns);
+ handler.setBannedNetworks(bNetworks, dns);
+ handler.onCommand(setupMockedSMTPSession(new MailAddress("test@" + INVALID_HOST)));
- assertNotNull("Reject", response);
+ assertNotNull("Reject", response);
}
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org