[prev in list] [next in list] [prev in thread] [next in thread] 

List:       james-dev
Subject:    svn commit: r915502 - in /james/server/trunk:
From:       norman () apache ! org
Date:       2010-02-23 20:27:49
Message-ID: 20100223202749.B18A223888E2 () eris ! apache ! org
[Download RAW message or body]

Author: norman
Date: Tue Feb 23 20:27:49 2010
New Revision: 915502

URL: http://svn.apache.org/viewvc?rev=915502&view=rev
Log:
Fix NPE in DNSBounce. (JAMES-975)
Also make sure we inject services to other mailets and not use the mailetContext to \
lookup stuff

Modified:
    james/server/trunk/core-library/src/main/java/org/apache/james/Constants.java
    james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRedirect.java
  james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/AbstractVirtualUserTable.java
  james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
  james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java
  james/server/trunk/spoolmanager/src/main/java/org/apache/james/JamesMailetContext.java
  james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/mailets/AbstractVirtualUserTableMailet.java


Modified: james/server/trunk/core-library/src/main/java/org/apache/james/Constants.java
                
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/Constants.java?rev=915502&r1=915501&r2=915502&view=diff
 ==============================================================================
--- james/server/trunk/core-library/src/main/java/org/apache/james/Constants.java \
                (original)
+++ james/server/trunk/core-library/src/main/java/org/apache/james/Constants.java Tue \
Feb 23 20:27:49 2010 @@ -40,26 +40,4 @@
      */
     public static final String SOFTWARE_NAME = "@@NAME@@";
 
-    /**
-     * Context key used to store the default domain name
-     * serviced by this James instance in the context.
-     */
-    public static final String DEFAULT_DOMAIN = "DEFAULT_DOMAIN";
-
-    /**
-     * Context key used to store the Mailet/SMTP "hello name" for this
-     * James instance in the context.
-     */
-    public static final String HELLO_NAME = "HELLO_NAME";
-
-    /**
-     * Key used to store the hostaddress of the localhost
-     */
-    public static final String HOSTADDRESS = "LOCAL_HOSTADDRESS";
-    
-    /**
-     * Key used to store the hostname of localhost
-     */
-    public static final String HOSTNAME = "LOCAL_HOSTNAME";
-
 }

Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRedirect.java
                
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/ \
james/transport/mailets/AbstractRedirect.java?rev=915502&r1=915501&r2=915502&view=diff
 ==============================================================================
--- james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRedirect.java \
                (original)
+++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRedirect.java \
Tue Feb 23 20:27:49 2010 @@ -23,6 +23,7 @@
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.net.UnknownHostException;
 
 import java.util.Collection;
 import java.util.Date;
@@ -33,6 +34,7 @@
 import java.util.ArrayList;
 
 
+import javax.annotation.Resource;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.internet.ParseException;
@@ -44,9 +46,10 @@
 
 import org.apache.mailet.base.RFC2822Headers;
 import org.apache.mailet.base.RFC822DateFormat;
-import org.apache.james.Constants;
+import org.apache.james.api.dnsservice.DNSService;
 import org.apache.james.core.MailImpl;
 import org.apache.james.core.MimeMessageUtil;
+import org.apache.james.services.MailServer;
 
 import org.apache.mailet.base.GenericMailet;
 import org.apache.mailet.Mail;
@@ -135,6 +138,7 @@
 
 public abstract class AbstractRedirect extends GenericMailet {
     
+    
     /**
      * Gets the expected init parameters.
      *
@@ -230,6 +234,23 @@
 
     private RFC822DateFormat rfc822DateFormat = new RFC822DateFormat();
 
+    protected MailServer mailServer;
+
+    protected DNSService dns;
+
+    
+    @Resource(name="James")
+    public void setMailServer(MailServer mailServer) {
+        this.mailServer = mailServer;
+    }
+    
+
+    @Resource(name="dnsserver")
+    public void setDNSService(DNSService dns) {
+        this.dns = dns;
+    }
+
+    
     /* ******************************************************************** */
     /* ****************** Begin of getX and setX methods ****************** */
     /* ******************************************************************** */
@@ -983,8 +1004,17 @@
             // We don't need to use the original Remote Address and Host,
             // and doing so would likely cause a loop with spam detecting
             // matchers.
-            newMail.setRemoteAddr(getMailetContext().getAttribute(Constants.HOSTADDRESS).toString());
                
-            newMail.setRemoteHost(getMailetContext().getAttribute(Constants.HOSTNAME).toString());
 +            try {
+                newMail.setRemoteAddr(dns.getLocalHost().getHostAddress());
+            } catch (UnknownHostException e) {
+                newMail.setRemoteAddr("127.0.0.1");
+
+            }
+            try {
+                newMail.setRemoteHost(dns.getLocalHost().getHostName());
+            } catch (UnknownHostException e) {
+                newMail.setRemoteHost("localhost");
+            }
             
             if (isDebug) {
                 log("New mail - sender: " + newMail.getSender()

Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/AbstractVirtualUserTable.java
                
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/ \
james/transport/mailets/AbstractVirtualUserTable.java?rev=915502&r1=915501&r2=915502&view=diff
 ==============================================================================
--- james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/AbstractVirtualUserTable.java \
                (original)
+++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/AbstractVirtualUserTable.java \
Tue Feb 23 20:27:49 2010 @@ -21,17 +21,7 @@
 
 package org.apache.james.transport.mailets;
 
-import org.apache.james.Constants;
-import org.apache.james.core.MailImpl;
-import org.apache.james.impl.vut.VirtualUserTableUtil;
-import org.apache.mailet.base.GenericMailet;
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
-import org.apache.oro.text.regex.MalformedPatternException;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.ParseException;
-
+import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -40,6 +30,19 @@
 import java.util.Map;
 import java.util.StringTokenizer;
 
+import javax.annotation.Resource;
+import javax.mail.MessagingException;
+import javax.mail.internet.ParseException;
+
+import org.apache.james.api.dnsservice.DNSService;
+import org.apache.james.core.MailImpl;
+import org.apache.james.impl.vut.VirtualUserTableUtil;
+import org.apache.james.services.MailServer;
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
+import org.apache.mailet.base.GenericMailet;
+import org.apache.oro.text.regex.MalformedPatternException;
+
 /**
  * Provides an abstraction of common functionality needed for implementing
  * a Virtual User Table. Override the <code>mapRecipients</code> method to
@@ -48,7 +51,19 @@
 public abstract class AbstractVirtualUserTable extends GenericMailet
 {
     static private final String MARKER = \
"org.apache.james.transport.mailets.AbstractVirtualUserTable.mapped"; +    private \
MailServer mailServer; +    private DNSService dns;
 
+    @Resource(name="James")
+    public void setMailServer(MailServer mailServer) {
+        this.mailServer = mailServer;
+    }
+    
+    @Resource(name="dnsserver")
+    public void setDNSService(DNSService dns) {
+        this.dns = dns;
+    }
+    
     /**
      * Checks the recipient list of the email for user mappings.  Maps recipients as
      * appropriate, modifying the recipient list of the mail and sends mail to any \
new @@ -107,7 +122,7 @@
                         }
 
                         try {
-                            MailAddress target = (targetAddress.indexOf('@') < 0) ? \
new MailAddress(targetAddress, (String) \
getMailetContext().getAttribute(Constants.DEFAULT_DOMAIN)) +                          \
MailAddress target = (targetAddress.indexOf('@') < 0) ? new \
MailAddress(targetAddress, mailServer.getDefaultDomain())  : new \
MailAddress(targetAddress);  
                             //Mark this source address as an address to remove from \
the recipient list @@ -165,8 +180,16 @@
             // duplicates the Mail object, to be able to modify the new mail keeping \
the original untouched  MailImpl newMail = new MailImpl(mail);
             try {
-            newMail.setRemoteAddr(getMailetContext().getAttribute(Constants.HOSTADDRESS).toString());
                
-                newMail.setRemoteHost(getMailetContext().getAttribute(Constants.HOSTNAME).toString());
 +                try {
+                    newMail.setRemoteAddr(dns.getLocalHost().getHostAddress());
+                } catch (UnknownHostException e) {
+                    newMail.setRemoteAddr("127.0.0.1");
+                }
+                try {
+                    newMail.setRemoteHost(dns.getLocalHost().getHostName());
+                } catch (UnknownHostException e) {
+                    newMail.setRemoteHost("localhost");
+                }
                 
                 newMail.setRecipients(recipientsToAddForward);
                 newMail.setAttribute(MARKER, Boolean.TRUE);

Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
                
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java?rev=915502&r1=915501&r2=915502&view=diff
 ==============================================================================
--- james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java \
                (original)
+++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java \
Tue Feb 23 20:27:49 2010 @@ -21,38 +21,37 @@
 
 package org.apache.james.transport.mailets;
 
-import org.apache.james.Constants;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.ConnectException;
+import java.net.InetAddress;
+import java.net.SocketException;
+import java.net.UnknownHostException;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+
+import javax.mail.MessagingException;
+import javax.mail.SendFailedException;
+import javax.mail.Session;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+
 import org.apache.james.core.MailImpl;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
-import org.apache.mailet.base.mail.MimeMultipartReport;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.RFC2822Headers;
 import org.apache.mailet.base.RFC822DateFormat;
+import org.apache.mailet.base.mail.MimeMultipartReport;
 import org.apache.oro.text.regex.MalformedPatternException;
 import org.apache.oro.text.regex.MatchResult;
 import org.apache.oro.text.regex.Pattern;
 import org.apache.oro.text.regex.Perl5Compiler;
 import org.apache.oro.text.regex.Perl5Matcher;
 
-import javax.mail.MessagingException;
-import javax.mail.SendFailedException;
-import javax.mail.Session;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.internet.MimeMessage;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.ConnectException;
-import java.net.InetAddress;
-import java.net.SocketException;
-import java.net.UnknownHostException;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Iterator;
-
 
 
 
@@ -90,7 +89,7 @@
 
 public class DSNBounce extends AbstractNotify {
 
-
+    
     private static final RFC822DateFormat rfc822DateFormat = new RFC822DateFormat();
 
     // regexp pattern for scaning status code from exception message
@@ -152,8 +151,18 @@
             // We don't need to use the original Remote Address and Host,
             // and doing so would likely cause a loop with spam detecting
             // matchers.
-            newMail.setRemoteAddr(getMailetContext().getAttribute(Constants.HOSTADDRESS).toString());
                
-            newMail.setRemoteHost(getMailetContext().getAttribute(Constants.HOSTNAME).toString());
 +            try {
+                newMail.setRemoteAddr(dns.getLocalHost().getHostName());
+            } catch (UnknownHostException e) {
+                newMail.setRemoteHost("localhost");
+            }
+           
+            try {
+                newMail.setRemoteHost(dns.getLocalHost().getHostAddress());
+            } catch (UnknownHostException e) {
+                newMail.setRemoteAddr("127.0.0.1");
+            }
+
             
             if (originalMail.getSender() == null) {
                 if (isDebug)
@@ -311,8 +320,7 @@
         // failure reports into DSNs
         nameType = "dns";
         try {
-            String myAddress =
-                (String)getMailetContext().getAttribute(Constants.HELLO_NAME);
+            String myAddress = mailServer.getHelloName();
             /*
             String myAddress = InetAddress.getLocalHost().getCanonicalHostName();
             */

Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java
                
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/ \
james/transport/mailets/RemoteDelivery.java?rev=915502&r1=915501&r2=915502&view=diff \
                ==============================================================================
                
--- james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java \
                (original)
+++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java \
Tue Feb 23 20:27:49 2010 @@ -22,7 +22,6 @@
 package org.apache.james.transport.mailets;
 
 import org.apache.commons.configuration.DefaultConfigurationBuilder;
-import org.apache.james.Constants;
 import org.apache.james.api.dnsservice.DNSService;
 import org.apache.james.api.dnsservice.TemporaryResolutionException;
 import org.apache.james.lifecycle.LifecycleUtil;
@@ -1482,7 +1481,7 @@
         PrintWriter out = new PrintWriter(sout, true);
         String machine = "[unknown]";
         try {
-            machine = \
getMailetContext().getAttribute(Constants.HOSTNAME).toString(); +            machine \
= dnsServer.getLocalHost().getHostName();  
         } catch(Exception e){
             machine = "[address unknown]";

Modified: james/server/trunk/spoolmanager/src/main/java/org/apache/james/JamesMailetContext.java
                
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager/src/main/java/org/apache/james/JamesMailetContext.java?rev=915502&r1=915501&r2=915502&view=diff
 ==============================================================================
--- james/server/trunk/spoolmanager/src/main/java/org/apache/james/JamesMailetContext.java \
                (original)
+++ james/server/trunk/spoolmanager/src/main/java/org/apache/james/JamesMailetContext.java \
Tue Feb 23 20:27:49 2010 @@ -107,9 +107,6 @@
     @PostConstruct
     public void init() throws Exception {
 
-        // used by RemoteDelivery for HELO
-        attributes.put(Constants.DEFAULT_DOMAIN, mailServer.getDefaultDomain());
-
         initializeLocalDeliveryMailet();
 
         initPostmaster();

Modified: james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/mailets/AbstractVirtualUserTableMailet.java
                
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager/src/main/java/org/ap \
ache/james/transport/mailets/AbstractVirtualUserTableMailet.java?rev=915502&r1=915501&r2=915502&view=diff
 ==============================================================================
--- james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/mailets/AbstractVirtualUserTableMailet.java \
                (original)
+++ james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/mailets/AbstractVirtualUserTableMailet.java \
Tue Feb 23 20:27:49 2010 @@ -25,10 +25,11 @@
 import java.util.LinkedList;
 import java.util.Vector;
 
+import javax.annotation.Resource;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.james.Constants;
+import org.apache.james.services.MailServer;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.GenericMailet;
@@ -42,6 +43,13 @@
  */
 public abstract class AbstractVirtualUserTableMailet extends GenericMailet {
     
+    private MailServer mailServer;
+
+    @Resource(name="James")
+    public void setMailServer(MailServer mailServer) {
+        this.mailServer = mailServer;
+    }
+    
     /*
      * (non-Javadoc)
      * @see org.apache.mailet.base.GenericMailet#service(org.apache.mailet.Mail)
@@ -128,7 +136,7 @@
 
             if (rcpt.indexOf("@") < 0) {
                 // the mapping contains no domain name, use the default domain
-                rcpt = rcpt + "@" + \
getMailetContext().getAttribute(Constants.DEFAULT_DOMAIN); +                rcpt = \
rcpt + "@" + mailServer.getDefaultDomain();  }
 
             MailAddress nextMap = new MailAddress(rcpt);



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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic