Index: jakarta-james/src/java/org/apache/james/James.java
===================================================================
RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/James.java,v
retrieving revision 1.32
diff -u -r1.32 James.java
--- jakarta-james/src/java/org/apache/james/James.java	14 Sep 2002 09:00:56 -0000	1.32
+++ jakarta-james/src/java/org/apache/james/James.java	27 Sep 2002 07:39:18 -0000
@@ -687,8 +687,23 @@
     public void storeMail(MailAddress sender, MailAddress recipient, MimeMessage message)
         throws MessagingException {
         String username;
+        if (recipient == null) {
+            throw new IllegalArgumentException("Recipient for mail to be spooled cannot be null.");
+        }
+        if (message == null) {
+            throw new IllegalArgumentException("Mail message to be spooled cannot be null.");
+        }
         if (ignoreCase) {
-            username = localusers.getRealName(recipient.getUser());
+            String originalUsername = recipient.getUser();
+            username = localusers.getRealName(originalUsername);
+            if (username == null) {
+                StringBuffer errorBuffer =
+                    new StringBuffer(128)
+                        .append("The inbox for user ")
+                        .append(originalUsername)
+                        .append(" was not found on this server.");
+                throw new MessagingException(errorBuffer.toString());
+            }
         } else {
             username = recipient.getUser();
         }
@@ -698,8 +713,17 @@
             if (enableAliases && user.getAliasing()) {
                 username = user.getAlias();
             }
+            // Forwarding takes precedence over local aliases
             if (enableForwarding && user.getForwarding()) {
                 MailAddress forwardTo = user.getForwardingDestination();
+                if (forwardTo == null) {
+                    StringBuffer errorBuffer = 
+                        new StringBuffer(128)
+                            .append("Forwarding was enabled for ")
+                            .append(username)
+                            .append(" but no forwarding address was set for this account.");
+                    throw new MessagingException(errorBuffer.toString());
+                }
                 Collection recipients = new HashSet();
                 recipients.add(forwardTo);
                 try {
@@ -721,6 +745,7 @@
                                     .append("attempting local delivery");
                         getLogger().error(logBuffer.toString());
                     }
+                    throw me;
                 }
             }
         }
@@ -728,7 +753,16 @@
         Collection recipients = new HashSet();
         recipients.add(recipient);
         MailImpl mailImpl = new MailImpl(getId(), sender, recipients, message);
-        getUserInbox(username).store(mailImpl);
+        MailRepository userInbox = getUserInbox(username);
+        if (userInbox == null) {
+            StringBuffer errorBuffer =
+                new StringBuffer(128)
+                    .append("The inbox for user ")
+                    .append(username)
+                    .append(" was not found on this server.");
+            throw new MessagingException(errorBuffer.toString());
+        }
+        userInbox.store(mailImpl);
     }
 
     /**
