Stefano,

Another version of the improved logging stuff, sender and recipient are
the only glaringly obvious pieces of info that are missing. I've added a
method to get these rather than cluttering the code.

The logging is currently in avalon, has anyone begun work on moving this
to something else? Perhaps log4j ;-)


Index: src/java/org/apache/james/smtpserver/RcptCmdHandler.java
===================================================================
--- src/java/org/apache/james/smtpserver/RcptCmdHandler.java    (revision
370873)
+++ src/java/org/apache/james/smtpserver/RcptCmdHandler.java    (working
copy)
@@ -37,7 +37,9 @@
      */
     private final static String SENDER = "SENDER_ADDRESS";     //
Sender's email address
     private final static String RCPT_LIST = "RCPT_LIST";   // The
message recipients
-
+    private MailAddress recipientAddress = null;
+    private String recipient = null; 
+    
     /*
      * handles RCPT command
      *
@@ -60,7 +62,6 @@
         String responseString = null;
         StringBuffer responseBuffer = session.getResponseBuffer();
 
-        String recipient = null;
         if ((argument != null) && (argument.indexOf(":") > 0)) {
             int colonIndex = argument.indexOf(":");
             recipient = argument.substring(colonIndex + 1);
@@ -96,8 +97,8 @@
                     StringBuffer errorBuffer =
                         new StringBuffer(192)
                                 .append("Error parsing recipient
address: ")
-                                .append(recipient)
-                                .append(": did not start and end with <
>");
+                                .append("Address did not start and end
with < >")
+                                .append(getContext(session));
                     getLogger().error(errorBuffer.toString());
                 }
                 return;
@@ -102,7 +103,7 @@
                 }
                 return;
             }
-            MailAddress recipientAddress = null;
+            
             //Remove < and >
             recipient = recipient.substring(1, recipient.length() - 1);
             if (recipient.indexOf("@") < 0) {
@@ -123,8 +124,7 @@
                     StringBuffer errorBuffer =
                         new StringBuffer(192)
                                 .append("Error parsing recipient
address: ")
-                                .append(recipient)
-                                .append(": ")
+                                .append(getContext(session))
                                 .append(pe.getMessage());
                     getLogger().error(errorBuffer.toString());
                 }
@@ -149,7 +149,10 @@
                     if (!session.getConfigurationData().getMailServer
().isLocalServer(toDomain)) {
                         responseString = "530 "+DSNStatus.getStatus
(DSNStatus.PERMANENT,DSNStatus.SECURITY_AUTH)+" Authentication
Required";
                         session.writeResponse(responseString);
-                        getLogger().error("Rejected message -
authentication is required for mail request");
+                        StringBuffer sb = new StringBuffer(128);
+                        sb.append("Rejected message - authentication is
required for mail request");
+                        sb.append(getContext(session));
+                        getLogger().error(sb.toString());
                         return;
                     }
                 } else {
@@ -168,7 +171,8 @@
                                         .append("User ")
                                         .append(authUser)
                                         .append(" authenticated,
however tried sending email as ")
-                                        .append(senderAddress);
+                                        .append(senderAddress)
+                                        .append(getContext(session));
                                 getLogger().error(errorBuffer.toString
());
                             }
                             return;
@@ -180,7 +184,7 @@
                 if (!session.getConfigurationData().getMailServer
().isLocalServer(toDomain)) {
                     responseString = "550 "+DSNStatus.getStatus
(DSNStatus.PERMANENT,DSNStatus.SECURITY_AUTH)+" Requested action not
taken: relaying denied";
                     session.writeResponse(responseString);
-                    getLogger().error("Rejected message - " +
session.getRemoteIPAddress() + " not authorized to relay to " +
toDomain);
+                    getLogger().error("Rejected message - " +
session.getRemoteIPAddress() + " not authorized to relay to " + toDomain
+ " " + getContext(session));
                     return;
                 }
             }
@@ -203,7 +207,8 @@
                               .append("RCPT command had
unrecognized/unexpected option ")
                               .append(rcptOptionName)
                               .append(" with value ")
-                              .append(rcptOptionValue);
+                              .append(rcptOptionValue)
+                              .append(getContext(session));
                       getLogger().debug(debugBuffer.toString());
                   }
               }
@@ -219,5 +224,15 @@
         }
     }
 
-
+       private String getContext(SMTPSession session){
+               StringBuffer sb = new StringBuffer(128);
+               if(null!=recipientAddress){
+                       sb.append(" [to:" + (recipientAddress).toInternetAddress
().getAddress() + "]");
+               }else if(null!=recipient){
+                       sb.append(" [to:" + recipient + "]");
+               }
+        if(null!=session.getState().get(SENDER))
+            sb.append(" [from:" + ((MailAddress)session.getState().get
(SENDER)).toInternetAddress().getAddress() + "]");
+        return sb.toString();
+    }
 }


-- 
Kind Regards
Andrew Sykes <[EMAIL PROTECTED]>
Sykes Development Ltd
http://www.sykesdevelopment.com


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to