RE: Anti-SPAM mailet

2002-08-18 Thread Noel J. Bergman

  (4) You might want to look at
  http://sourceforge.net/projects/pop3filterproxy/
 Wouldn't this be outside of James though?

I meant for some additional ideas on filtering spam.  :-)

  (5) If we have a generic RegexMatcher ...
 This seems like a worthy project to get the experience with...

And not too difficult, either.  :-)

  (6) We'll want a mailet capable of tagging a message.
 Are there any examples that have this functionality?

Yes and no.  There are examples of adding headers, but nothing generic.
Perhaps because there isn't a means (yet) to tag meta data on a mail object,
which could be used to communicate between different James components.  That
could be used to convey information such as a non-binary spam rating or a
spam reason.  But for a simple binary rating, one could do something like:

  mailet matcher=SpamScan=... class=AddHeader
headerX-SPAM: true/header
  /mailet

Or we could drop the notion of a seperate matcher (for now), and combine the
two:

  mailet matcher=All class=SpamScanner
 param.../param
  /mailet

Anyhow, that's just an idea.  See you on the developer's list.

--- Noel


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




cvs commit: jakarta-james/src/java/org/apache/james/remotemanager package.html RemoteManager.java RemoteManagerHandler.java

2002-08-18 Thread pgoldstein

pgoldstein2002/08/18 00:21:10

  Modified:src/java/org/apache/james/remotemanager RemoteManager.java
RemoteManagerHandler.java
  Added:   src/java/org/apache/james/remotemanager package.html
  Log:
  Added extensive commenting
  
  Revision  ChangesPath
  1.8   +20 -0 
jakarta-james/src/java/org/apache/james/remotemanager/RemoteManager.java
  
  Index: RemoteManager.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/remotemanager/RemoteManager.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- RemoteManager.java12 Aug 2002 18:51:11 -  1.7
  +++ RemoteManager.java18 Aug 2002 07:21:09 -  1.8
  @@ -35,6 +35,12 @@
   return new DefaultHandlerFactory( RemoteManagerHandler.class );
   }
   
  +/**
  + * Pass the codeConfiguration/code to the instance.
  + *
  + * @param configuration the class configurations.
  + * @throws ConfigurationException if an error occurs
  + */
   public void configure( final Configuration configuration )
   throws ConfigurationException {
   
  @@ -61,6 +67,13 @@
   super.configure( configuration.getChild( handler ) );
   }
   
  +/**
  + * Initialize the component. Initialization includes
  + * allocating any resources required throughout the
  + * components lifecycle.
  + *
  + * @throws Exception if an error occurs
  + */
   public void initialize() throws Exception {
   getLogger().info( RemoteManager init... );
   StringBuffer infoBuffer =
  @@ -76,6 +89,13 @@
   getLogger().info(RemoteManager ...init end);
   }
   
  +/**
  + * The dispose operation is called at the end of a components lifecycle.
  + * Instances of this class use this method to release and destroy any
  + * resources that they own.
  + *
  + * @throws Exception if an error is encountered during shutdown
  + */
   public void dispose()
   {
   getLogger().info( RemoteManager dispose... );
  
  
  
  1.13  +67 -10
jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java
  
  Index: RemoteManagerHandler.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- RemoteManagerHandler.java 10 Aug 2002 17:53:08 -  1.12
  +++ RemoteManagerHandler.java 18 Aug 2002 07:21:09 -  1.13
  @@ -55,15 +55,47 @@
   
   private UsersStore usersStore;
   private UsersRepository users;
  -private boolean inLocalUsers = true;
  +
  +/**
  + * The scheduler used to handle timeouts for the RemoteManager
  + * interaction
  +*/
   private TimeScheduler scheduler;
   private MailServer mailServer;
   
  +/**
  + * Whether the local users repository should be used to store new
  + * users.
  + */
  +private boolean inLocalUsers = true;
  +
  +/**
  + * The reader associated with incoming commands.
  + */
   private BufferedReader in;
  +
  +/**
  + * The writer to which outgoing messages are written.
  + */
   private PrintWriter out;
  -private HashMap admaccount = new HashMap();
  +
  +/**
  + * The TCP/IP socket over which the RemoteManager interaction
  + * is occurring
  + */
   private Socket socket;
   
  +/**
  + * A HashMap of (user id, passwords) for James administrators
  + */
  +private HashMap admaccount = new HashMap();
  +
  +/**
  + * Pass the codeConfiguration/code to the instance.
  + *
  + * @param configuration the class configurations.
  + * @throws ConfigurationException if an error occurs
  + */
   public void configure( final Configuration configuration )
   throws ConfigurationException {
   
  @@ -78,6 +110,15 @@
   }
   }
   
  +/**
  + * Pass the codeComponentManager/code to the codecomposer/code.
  + * The instance uses the specified codeComponentManager/code to 
  + * acquire the components it needs for execution.
  + *
  + * @param componentManager The codeComponentManager/code which this
  + *codeComposable/code uses.
  + * @throws ComponentException if an error occurs
  + */
   public void compose( final ComponentManager componentManager )
   throws ComponentException {
   
  @@ -95,8 +136,8 @@
* This handler is responsible for processing connections as they occur.
*
* @param connection the connection
  - * @exception IOException if an error reading from socket occurs
  - * @exception ProtocolException if an error handling 

cvs commit: jakarta-james/src/java/org/apache/james/pop3server POP3Handler.java

2002-08-18 Thread pgoldstein

pgoldstein2002/08/18 00:27:51

  Modified:src/java/org/apache/james/transport JamesSpoolManager.java
   src/java/org/apache/james/transport/mailets
RemoteDelivery.java
   src/java/org/apache/james/pop3server POP3Handler.java
  Log:
  Added null check after retrieving mail from repository.  This avoids
  spurious NPEs.  Thanks to Noel Bergman
  
  Revision  ChangesPath
  1.13  +5 -2  
jakarta-james/src/java/org/apache/james/transport/JamesSpoolManager.java
  
  Index: JamesSpoolManager.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/transport/JamesSpoolManager.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- JamesSpoolManager.java16 Aug 2002 17:08:53 -  1.12
  +++ JamesSpoolManager.java18 Aug 2002 07:27:51 -  1.13
  @@ -301,6 +301,9 @@
   try {
   String key = spool.accept();
   MailImpl mail = spool.retrieve(key);
  +// Retrieve can return null if the mail is no longer on the spool
  +// (i.e. another thread has gotten to it first).
  +// In this case we simply continue to the next key
   if (mail == null) {
   continue;
   }
  
  
  
  1.23  +7 -2  
jakarta-james/src/java/org/apache/james/transport/mailets/RemoteDelivery.java
  
  Index: RemoteDelivery.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/transport/mailets/RemoteDelivery.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- RemoteDelivery.java   9 Aug 2002 06:04:22 -   1.22
  +++ RemoteDelivery.java   18 Aug 2002 07:27:51 -  1.23
  @@ -516,6 +516,11 @@
   .append(key);
   log(logMessageBuffer.toString());
   MailImpl mail = outgoing.retrieve(key);
  +// Retrieve can return null if the mail is no longer on the 
outgoing spool.
  +// In this case we simply continue to the next key
  +if (mail == null) {
  +continue;
  +}
   if (deliver(mail, session)) {
   //Message was successfully delivered/fully failed... delete 
it
   outgoing.remove(key);
  
  
  
  1.10  +5 -0  
jakarta-james/src/java/org/apache/james/pop3server/POP3Handler.java
  
  Index: POP3Handler.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/pop3server/POP3Handler.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- POP3Handler.java  15 Aug 2002 21:57:27 -  1.9
  +++ POP3Handler.java  18 Aug 2002 07:27:51 -  1.10
  @@ -260,6 +260,11 @@
   for (Iterator it = userInbox.list(); it.hasNext(); ) {
   String key = (String) it.next();
   MailImpl mc = userInbox.retrieve(key);
  +// Retrieve can return null if the mail is no longer in the store.
  +// In this case we simply continue to the next key
  +if (mc == null) {
  +continue;
  +}
   userMailbox.addElement(mc);
   }
   backupUserMailbox = (Vector) userMailbox.clone();
  
  
  

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




cvs commit: jakarta-james/src/java/org/apache/james/nntpserver/repository ArticleIDRepository.java NNTPRepositoryImpl.java NNTPSpooler.java

2002-08-18 Thread pgoldstein

pgoldstein2002/08/18 00:30:18

  Modified:src/java/org/apache/james/nntpserver ArticleWriter.java
AuthService.java AuthServiceImpl.java
LISTGroup.java NNTPHandler.java NNTPServer.java
   src/java/org/apache/james/nntpserver/repository
ArticleIDRepository.java NNTPRepositoryImpl.java
NNTPSpooler.java
  Log:
  Added comments, adjusted spacing.
  
  Revision  ChangesPath
  1.4   +1 -1  
jakarta-james/src/java/org/apache/james/nntpserver/ArticleWriter.java
  
  Index: ArticleWriter.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/nntpserver/ArticleWriter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ArticleWriter.java18 Jan 2002 02:48:36 -  1.3
  +++ ArticleWriter.java18 Aug 2002 07:30:17 -  1.4
  @@ -14,7 +14,7 @@
   
   /**
* used by ARTICLE, HEAD, BODY, STAT command.
  - * these commands are identical except in the writing the Article header 
  + * these commands are identical except in how they write the Article header 
* and body to the response stream
* ARTICLE - writes header and body
* HEAD - writes headers
  
  
  
  1.3   +28 -1 
jakarta-james/src/java/org/apache/james/nntpserver/AuthService.java
  
  Index: AuthService.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/nntpserver/AuthService.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AuthService.java  3 Jun 2002 16:07:06 -   1.2
  +++ AuthService.java  18 Aug 2002 07:30:17 -  1.3
  @@ -8,16 +8,43 @@
   package org.apache.james.nntpserver;
   
   /**
  - * Authenticates users and 
  + * Authenticates users and provides
* Access Control for User Commands.
*
* @author  Harmeet [EMAIL PROTECTED] 
*/
   public interface AuthService {
  +
  +/**
  + * The component role used by components implementing this service
  + */
   String ROLE = org.apache.james.nntpserver.AuthService;
   
  +/**
  + * Check whether the service is authenticated
  + *
  + * @return true if the user and password have been set and are valid, false 
otherwise
  + */
   boolean isAuthenticated();
  +
  +/**
  + * Set the user id for this service
  + *
  + * @param userid the user id for this AuthService
  + */
   void setUser(String userid);
  +
  +/**
  + * Set the password for this service
  + *
  + * @param password the password for this AuthService
  + */
   void setPassword(String password);
  +
  +/**
  + * Check whether the service is authenticated
  + *
  + * @return true if the user is authenticated and is authorized to execute this 
command
  + */
   boolean isAuthorized(String command);
   }
  
  
  
  1.5   +15 -0 
jakarta-james/src/java/org/apache/james/nntpserver/AuthServiceImpl.java
  
  Index: AuthServiceImpl.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/nntpserver/AuthServiceImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AuthServiceImpl.java  7 Aug 2002 23:37:02 -   1.4
  +++ AuthServiceImpl.java  18 Aug 2002 07:30:17 -  1.5
  @@ -52,6 +52,15 @@
   return allowed;
   }
   
  +/**
  + * Pass the codeComponentManager/code to the codecomposer/code.
  + * The instance uses the specified codeComponentManager/code to 
  + * acquire the components it needs for execution.
  + *
  + * @param componentManager The codeComponentManager/code which this
  + *codeComposable/code uses.
  + * @throws ComponentException if an error occurs
  + */
   public void compose( final ComponentManager componentManager )
   throws ComponentException
   {
  @@ -59,6 +68,12 @@
   repo = usersStore.getRepository(LocalUsers);
   }
   
  +/**
  + * Pass the codeConfiguration/code to the instance.
  + *
  + * @param configuration the class configurations.
  + * @throws ConfigurationException if an error occurs
  + */
   public void configure( Configuration configuration ) throws 
ConfigurationException {
   authRequired =
   configuration.getChild(authRequired).getValueAsBoolean(false);
  
  
  
  1.5   +3 -0  
jakarta-james/src/java/org/apache/james/nntpserver/LISTGroup.java
  
  Index: LISTGroup.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/nntpserver/LISTGroup.java,v
  retrieving revision 1.4
  retrieving revision 1.5
 

cvs commit: jakarta-james/src/java/org/apache/james BaseConnectionHandler.java Constants.java James.java Main.java

2002-08-18 Thread pgoldstein

pgoldstein2002/08/18 00:32:38

  Modified:src/java/org/apache/james BaseConnectionHandler.java
Constants.java James.java Main.java
  Log:
  Added comments.
  Fixed a minor threading bug.
  Removed a few unused and undocumented constants.
  
  Revision  ChangesPath
  1.9   +6 -0  
jakarta-james/src/java/org/apache/james/BaseConnectionHandler.java
  
  Index: BaseConnectionHandler.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/BaseConnectionHandler.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- BaseConnectionHandler.java17 Apr 2002 02:56:31 -  1.8
  +++ BaseConnectionHandler.java18 Aug 2002 07:32:38 -  1.9
  @@ -27,6 +27,12 @@
   protected int timeout;
   protected String helloName;
   
  +/**
  + * Pass the codeConfiguration/code to the instance.
  + *
  + * @param configuration the class configurations.
  + * @throws ConfigurationException if an error occurs
  + */
   public void configure( final Configuration configuration )
   throws ConfigurationException {
   
  
  
  
  1.5   +21 -9 jakarta-james/src/java/org/apache/james/Constants.java
  
  Index: Constants.java
  ===
  RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/Constants.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Constants.java25 Sep 2001 04:51:19 -  1.4
  +++ Constants.java18 Aug 2002 07:32:38 -  1.5
  @@ -19,21 +19,33 @@
*/
   public class Constants {
   
  +/**
  + * The version of James.
  + */
   public static final String SOFTWARE_VERSION = @@VERSION@@;
   
  +/**
  + * The name of the software (i.e. James).
  + */
   public static final String SOFTWARE_NAME = @@NAME@@;
   
  +/**
  + * Context key used to store the list of mail domains being
  + * serviced by this James instance in the context.
  + */
   public static final String SERVER_NAMES = SERVER_NAMES;
   
  -public static final String SPOOL_REPOSITORY = SPOOL_REPOSITORY;
  -
  -public static final String LOCAL_USERS = LOCAL_USERS;
  -
  +/**
  + * Context key used to store the postmaster address for
  + * this James instance in the context.
  + */
   public static final String POSTMASTER = POSTMASTER;
   
  -public static final int HEADERLIMIT = 2048;
  -
  +/**
  + * Key used to store the component manager for
  + * this James instance in a way accessible by
  + * Avalon aware Mailets.
  + */
   public static final String AVALON_COMPONENT_MANAGER = AVALON_COMP_MGR;
   
  -public static final String BUILD_DATE = @@DATE@@;
   }
  
  
  
  1.26  +57 -6 jakarta-james/src/java/org/apache/james/James.java
  
  Index: James.java
  ===
  RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/James.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- James.java15 Aug 2002 07:07:21 -  1.25
  +++ James.java18 Aug 2002 07:32:38 -  1.26
  @@ -77,36 +77,83 @@
   private String inboxRootURL;
   private UsersRepository localusers;
   private Collection serverNames;
  +
  +/**
  + * Whether to ignore case when looking up user names on this server
  + */
   private boolean ignoreCase;
  +
  +/**
  + * Whether to enable aliasing for users on this server
  + */
   private boolean enableAliases;
  +
  +/**
  + * Whether to enable forwarding for users on this server
  + */
   private boolean enableForwarding;
   
  -// this used to be long, but increment operations on long are not
  -// thread safe. Changed to int. 'int' should be ok, because id generation
  -// is based on System time and count
  -private static int count;
  +/**
  + * The number of mails generated.  Access needs to be synchronized for
  + * thread safety and to ensure that all threads see the latest value.
  + */
  +private static long count;
   private MailAddress postmaster;
   private Map mailboxes; //Not to be shared!
  +
  +/**
  + * A hash table of server attributes
  + */
   private Hashtable attributes = new Hashtable();
   
  +/**
  + * The Avalon context used by the instance
  + */
   protected Context   myContext;
   
  +/**
  + * Pass the Context to the component.
  + * This method is called after the setLogger()
  + * method and before any other method.
  + *
  + * @param context the context
  + * @throws ContextException if context is invalid
  + */
   public void contextualize(final 

cvs commit: jakarta-james/src/conf sqlResources.xml

2002-08-18 Thread pgoldstein

pgoldstein2002/08/18 00:57:34

  Modified:src/conf sqlResources.xml
  Log:
  Removed tabs
  Adjusted column lengths to match RFCs.
  
  Thanks to Noel Bergman for the patch
  
  Revision  ChangesPath
  1.12  +81 -83jakarta-james/src/conf/sqlResources.xml
  
  Index: sqlResources.xml
  ===
  RCS file: /home/cvs/jakarta-james/src/conf/sqlResources.xml,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- sqlResources.xml  27 Feb 2002 03:09:23 -  1.11
  +++ sqlResources.xml  18 Aug 2002 07:57:34 -  1.12
  @@ -54,9 +54,9 @@
   WHERE username = ?
   /sql
   sql name=deleteDELETE FROM ${table} WHERE username = ?/sql
  -sql name=createTableCREATE TABLE ${table} (username VARCHAR(50) NOT NULL, 
pwdHash VARCHAR(50), pwdAlgorithm VARCHAR(20), useForwarding SMALLINT, 
forwardDestination VARCHAR(250), useAlias SMALLINT, alias VARCHAR(250), PRIMARY 
KEY(username))/sql
  +sql name=createTableCREATE TABLE ${table} (username VARCHAR(64) NOT NULL, 
pwdHash VARCHAR(50), pwdAlgorithm VARCHAR(20), useForwarding SMALLINT, 
forwardDestination VARCHAR(255), useAlias SMALLINT, alias VARCHAR(255), PRIMARY 
KEY(username))/sql
   !-- An example of a database-specific sql statement
  -sql name=createTable db=mssqlCREATE TABLE ${table} (uniqueId 
UNIQUEIDENTIFIER, username VARCHAR(50) NOT NULL, pwdHash VARCHAR(50), pwdAlgorithm 
VARCHAR(20), useForwarding SMALLINT, forwardDestination VARCHAR(250), useAlias 
SMALLINT, alias VARCHAR(250), PRIMARY KEY(username))/sql
  +sql name=createTable db=mssqlCREATE TABLE ${table} (uniqueId 
UNIQUEIDENTIFIER, username VARCHAR(64) NOT NULL, pwdHash VARCHAR(50), pwdAlgorithm 
VARCHAR(20), useForwarding SMALLINT, forwardDestination VARCHAR(255), useAlias 
SMALLINT, alias VARCHAR(255), PRIMARY KEY(username))/sql
   --
   /sqlDefs
   
  @@ -75,7 +75,7 @@
   WHERE username = ?
   /sql
   sql name=deleteDELETE FROM ${table} WHERE username = ?/sql
  -sql name=createTableCREATE TABLE ${table} (username VARCHAR(50) NOT NULL, 
pwdHash VARCHAR(50), pwdAlgorithm VARCHAR(20), PRIMARY KEY(username))/sql
  +sql name=createTableCREATE TABLE ${table} (username VARCHAR(64) NOT NULL, 
pwdHash VARCHAR(50), pwdAlgorithm VARCHAR(20), PRIMARY KEY(username))/sql
   /sqlDefs
   
   !-- SQL statements for the ListUsersJdbcRepository
  @@ -101,7 +101,7 @@
   sql name=deleteDELETE FROM ${table}
   WHERE listSubscriber = ? AND listName = '${key}'
   /sql
  -sql name=createTableCREATE TABLE ${table} (listName VARCHAR(50) NOT NULL, 
listSubscriber VARCHAR(50) NOT NULL)/sql
  +sql name=createTableCREATE TABLE ${table} (listName VARCHAR(64) NOT NULL, 
listSubscriber VARCHAR(255) NOT NULL)/sql
   /sqlDefs
   
   !-- SQL statements for the JdbcMailRepository  --
  @@ -118,47 +118,46 @@
   sql name=listMessagesSQLSELECT message_name, message_state, last_updated 
FROM ${table} WHERE repository_name = ? ORDER BY last_updated ASC/sql
   sql name=createTable db=mysql
   CREATE TABLE ${table} (
  - message_name varchar (200) NOT NULL,
  - repository_name varchar (200) NOT NULL,
  - message_state varchar (30) NOT NULL ,
  - error_message varchar (200) NULL ,
  - sender varchar (200) NULL ,
  - recipients text NOT NULL ,
  - remote_host varchar (100) NOT NULL ,
  - remote_addr varchar (20) NOT NULL ,
  - message_body longblob NOT NULL ,
  - last_updated datetime NOT NULL,
  - PRIMARY KEY (message_name, repository_name)
  +message_name varchar (200) NOT NULL,
  +repository_name varchar (255) NOT NULL,
  +message_state varchar (30) NOT NULL ,
  +error_message varchar (200) NULL ,
  +sender varchar (255) NULL ,
  +recipients text NOT NULL ,
  +remote_host varchar (255) NOT NULL ,
  +remote_addr varchar (20) NOT NULL ,
  +message_body longblob NOT NULL ,
  +last_updated datetime NOT NULL,
  +PRIMARY KEY (message_name, repository_name)
   )
   /sql
   sql name=createTable db=mssql
   CREATE TABLE [${table}] (
  - [message_name] [varchar] (200) NOT NULL,
  - [repository_name] [varchar] (200) NOT NULL,
  - [message_state] [varchar] (30) NOT NULL ,
  - [error_message] [varchar] (1000) NULL ,
  - [sender] [varchar] (200) NULL ,
  - [recipients] [text] NOT NULL ,
  - [remote_host] [varchar] (100) NOT NULL ,
  - [remote_addr] [varchar] (20) NOT NULL ,
  - [message_body] [image] NOT NULL ,
  - [last_updated] [datetime] NOT NULL
  -)
  - ALTER TABLE [${table}] WITH NOCHECK ADD
  

cvs commit: jakarta-james/src/java/org/apache/james/transport/mailets Forward.java

2002-08-18 Thread pgoldstein

pgoldstein2002/08/18 01:55:33

  Modified:src/java/org/apache/james/transport/mailets Forward.java
  Log:
  Check for valid sender address before forwarding.
  
  Thanks to Noel Bergman for the patch
  
  Revision  ChangesPath
  1.4   +20 -2 
jakarta-james/src/java/org/apache/james/transport/mailets/Forward.java
  
  Index: Forward.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/transport/mailets/Forward.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Forward.java  18 Jun 2002 21:39:52 -  1.3
  +++ Forward.java  18 Aug 2002 08:55:33 -  1.4
  @@ -17,7 +17,7 @@
   import java.util.StringTokenizer;
   
   /**
  - * Replace incoming recipient with specified ones.
  + * Replaces incoming recipients with those specified.
*
* @author Federico Barbieri [EMAIL PROTECTED]
* @author Serge Knystautas [EMAIL PROTECTED]
  @@ -35,7 +35,25 @@
   }
   
   public void service(Mail mail) throws MessagingException {
  -getMailetContext().sendMail(mail.getSender(), newRecipients, 
mail.getMessage());
  +   if (mail.getSender() == null || 
getMailetContext().getMailServers(mail.getSender().getHost()).size() != 0) {
  +   // If we do not do this check, and somone uses Forward in a
  +   // processor initiated by SenderInFakeDomain, then a fake
  +   // sender domain will cause an infinite loop (the forwarded
  +   // e-mail still appears to come from a fake domain).
  +   // Although this can be viewed as a configuration error, the
  +   // consequences of such a mis-configuration are severe enough
  +   // to warrant protecting against the infinite loop.
  +   getMailetContext().sendMail(mail.getSender(), newRecipients, 
mail.getMessage());
  +   }
  +   else {
  +   StringBuffer logBuffer = new StringBuffer(256)
  +   .append(Forward mailet cannot forward )
  +   .append(mail)
  +   .append(. Invalid sender domain for )
  +   .append(mail.getSender())
  +   .append(. Consider using the Redirect mailet.);
  +   log(logBuffer.toString());
  +   }
  if(! (new Boolean(getInitParameter(passThrough))).booleanValue()) {
   mail.setState(Mail.GHOST);
  }
  
  
  

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




Re: IMAP LIST command

2002-08-18 Thread Vincent Keunen

Andrew C. Oliver wrote:

(oops I sent this to the wrong newsgroup)

Hi Jamesers(jamesies?) --

In my quest to get my mailserver up and running I've stumbled upon 
james nicethanks.

However, it looks like its a few parsecs short of an imap server and I 
find that kind of thing kinda fun.  


Hi Andrew,

IMAP development has been stopped for some time but has regained 
interest recently, thanks to several new developers.  So keep your 
comments coming, and don't hesitate to submit code.


-- 
!try; do()
--
Vincent Keunen, Ir, http://vincent.keunen.net
Manex, rue Wagner 93, BE-4100 Boncelles, Belgium
Our site: http://www.manex.be



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




about javadocs (was: Re: FW: What do we need to release 2.1?)

2002-08-18 Thread Vincent Keunen

Thanks Peter, for your message that makes things move forward.  I'm 
adding some comments about the specific item of javadocs.  First, I must 
say that I agree with 2 comments from Noel:

 Internal Documentation
 Absolutely necessary. But NOT to hold up the 2.1 release. We can continue
 to upgrade the web site with new documentation, and any serious developer
 should be working from the CVS


and

 At least get the javadoc complete.

 javadocs are for developers. I view 2.1 as a RELEASE build for users. Yes,
 we need to work on the javadocs, but I would not wait for them before
 putting out a stable release build if we can do so.

Peter M. Goldstein wrote:

Internal Documentation

I know some people tend to dismiss internal documentation, but I don't
see how a project that is seeking to attract developers can function
without it.  As such I tend to include it in the exit criteria for a
particular release.

1) All methods and instance variables should be documented.  All classes
should be documented.  The documentation doesn't need to be extensive,
but it should be present.  It should include issues such as class/method
contracts and threading restrictions where appropriate.
2) All public and protected classes, methods, and variables need to be
documented using Javadoc style to ensure appropriate Javadoc
3) The Javadoc should build without warnings
4) All packages should have package documentation

  

Peter, I'd like to modify a bit your suggestion.  From my experience (15 
years of OO software developement), doc should be reduced to the minimum 
(and I find XP discussions about documenting the code quite appropriate 
to modern developments).  Some ideas:

* code is the only thing that really lives; it changes often
  (writing docs is time consuming and is very difficult to keep in
  sync with the code; and out of sync doc is useless, and may even
  lead you to wrong assumptions...)
* the code (at the class/method level) should be self explicit: if
  you need doc to explain code, think about rewriting code to make
  it more explicit; also, good developers read code almost as easily
  as the doc (if the code is good, of course)
* doc is very useful at the package level: what does this package
  contain, where to look first (important classes and methods
  should be mentionned)
* important classes/methods may need some doc
* important here meaning part of an API, important for external
  developers or part of the basic building blocks of the system,
  that all developers should be comfortable with

I really don't want to start a lengthy discussion on the pros and cons 
of documentation (see the forum related to that), but I believe that 
docs should not get in the way of developing fast (especially on a 
volunteer basis, with restrained resources).  And I am convinced that it 
won't hurt the project's perennity...

Just my 2 cents (and I hope I did not offense you, Peter).

-- 
!try; do()
--
Vincent Keunen, Ir, http://vincent.keunen.net
Manex, rue Wagner 93, BE-4100 Boncelles, Belgium
Our site: http://www.manex.be




Re: about javadocs (was: Re: FW: What do we need to release 2.1?)

2002-08-18 Thread Andrew C. Oliver

Vincent Keunen wrote:
 Thanks Peter, for your message that makes things move forward.  I'm 
 adding some comments about the specific item of javadocs.  First, I must 
 say that I agree with 2 comments from Noel:
 
 Internal Documentation
 Absolutely necessary. But NOT to hold up the 2.1 release. We can continue
 to upgrade the web site with new documentation, and any serious developer
 should be working from the CVS


I disagree. You wouldn't release Documentation with no code would you? 
Why would you release code with no documentation?  If documentation 
isn't a condition for release, you'll never do it.  So say what you mean
Absolutely someone else...the mythical someone else..should document 
JAMES, but quality is not important to me so I'd rather get it out the 
door undocumented and hope the mythical someone else comes along

 
 javadocs are for developers. I view 2.1 as a RELEASE build for users. 
 Yes,
 we need to work on the javadocs, but I would not wait for them before
 putting out a stable release build if we can do so.


retranslate:  Code quality is not important


 Peter M. Goldstein wrote:
 
 Internal Documentation

 I know some people tend to dismiss internal documentation, but I don't
 see how a project that is seeking to attract developers can function
 without it.  As such I tend to include it in the exit criteria for a
 particular release.

 1) All methods and instance variables should be documented.  All classes
 should be documented.  The documentation doesn't need to be extensive,
 but it should be present.  It should include issues such as class/method
 contracts and threading restrictions where appropriate.
 2) All public and protected classes, methods, and variables need to be
 documented using Javadoc style to ensure appropriate Javadoc
 3) The Javadoc should build without warnings
 4) All packages should have package documentation

  

 Peter, I'd like to modify a bit your suggestion.  From my experience (15 
 years of OO software developement), doc should be reduced to the minimum 
 (and I find XP discussions about documenting the code quite appropriate 
 to modern developments).  Some ideas:
 
* code is the only thing that really lives; it changes often
  (writing docs is time consuming and is very difficult to keep in
  sync with the code; and out of sync doc is useless, and may even
  lead you to wrong assumptions...)
* the code (at the class/method level) should be self explicit: if
  you need doc to explain code, think about rewriting code to make
  it more explicit; also, good developers read code almost as easily
  as the doc (if the code is good, of course)
* doc is very useful at the package level: what does this package
  contain, where to look first (important classes and methods
  should be mentionned)
* important classes/methods may need some doc
* important here meaning part of an API, important for external
  developers or part of the basic building blocks of the system,
  that all developers should be comfortable with
 
 I really don't want to start a lengthy discussion on the pros and cons 
 of documentation (see the forum related to that), but I believe that 
 docs should not get in the way of developing fast (especially on a 
 volunteer basis, with restrained resources).  And I am convinced that it 
 won't hurt the project's perennity...
 
 Just my 2 cents (and I hope I did not offense you, Peter).
 





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




RE: about javadocs (was: Re: FW: What do we need to release 2.1?)

2002-08-18 Thread Peter M. Goldstein


Vincent,

I'm not offended, although I disagree almost entirely with your points.
:)

Basically I feel that on distributed, volunteer projects extensive and
appropriate documentation is even more important than on projects being
done by a full-time, localized development team.  And I feel that it is
extremely important even in the latter case.

While XP is an interesting methodology, James is in no way an XP
project.  We are using none of the XP techniques (pair programming,
rapid rotation of developers to different parts of the code base,
aggressive refactoring of unclear code etc.) that make internal
documentation far less important.  And as observation of the changelog
indicates, leaving javadoc out vs. adding javadoc has not made the
development any faster.

I believe that one of the essential things an open source project must
do is attract developers.  You do that by making the projects
interesting, and the code easy to understand.  To me, that means
internal documentation.  That's what allows a new developer to come up
to speed in a very short time and participate productively in the
project.  And on this point at least the Apache code standards seem to
agree with me.  :)

I also suggested that the internal documentation be tied to a release
because:

i) That way it actually gets done
ii) When the release announcement spurs a few developers to take a look
at the code base, they'll find a well-documented, inviting code base.

I'd be happy to continue this discussion offline, but I stand by my
original wish list entry.  

--Peter

 -Original Message-
 From: Vincent Keunen [mailto:[EMAIL PROTECTED]]
 Sent: Sunday, August 18, 2002 7:13 AM
 To: James Developers List
 Subject: about javadocs (was: Re: FW: What do we need to release 2.1?)
 
 Thanks Peter, for your message that makes things move forward.  I'm
 adding some comments about the specific item of javadocs.  First, I
must
 say that I agree with 2 comments from Noel:
 
  Internal Documentation
  Absolutely necessary. But NOT to hold up the 2.1 release. We can
 continue
  to upgrade the web site with new documentation, and any serious
 developer
  should be working from the CVS
 
 
 and
 
  At least get the javadoc complete.
 
  javadocs are for developers. I view 2.1 as a RELEASE build for
users.
 Yes,
  we need to work on the javadocs, but I would not wait for them
before
  putting out a stable release build if we can do so.
 
 Peter M. Goldstein wrote:
 
 Internal Documentation
 
 I know some people tend to dismiss internal documentation, but I
don't
 see how a project that is seeking to attract developers can function
 without it.  As such I tend to include it in the exit criteria for a
 particular release.
 
 1) All methods and instance variables should be documented.  All
classes
 should be documented.  The documentation doesn't need to be
extensive,
 but it should be present.  It should include issues such as
class/method
 contracts and threading restrictions where appropriate.
 2) All public and protected classes, methods, and variables need to
be
 documented using Javadoc style to ensure appropriate Javadoc
 3) The Javadoc should build without warnings
 4) All packages should have package documentation
 
 
 
 Peter, I'd like to modify a bit your suggestion.  From my experience
(15
 years of OO software developement), doc should be reduced to the
minimum
 (and I find XP discussions about documenting the code quite
appropriate
 to modern developments).  Some ideas:
 
 * code is the only thing that really lives; it changes often
   (writing docs is time consuming and is very difficult to keep in
   sync with the code; and out of sync doc is useless, and may even
   lead you to wrong assumptions...)
 * the code (at the class/method level) should be self explicit: if
   you need doc to explain code, think about rewriting code to make
   it more explicit; also, good developers read code almost as
easily
   as the doc (if the code is good, of course)
 * doc is very useful at the package level: what does this package
   contain, where to look first (important classes and methods
   should be mentionned)
 * important classes/methods may need some doc
 * important here meaning part of an API, important for external
   developers or part of the basic building blocks of the system,
   that all developers should be comfortable with
 
 I really don't want to start a lengthy discussion on the pros and cons
 of documentation (see the forum related to that), but I believe that
 docs should not get in the way of developing fast (especially on a
 volunteer basis, with restrained resources).  And I am convinced that
it
 won't hurt the project's perennity...
 
 Just my 2 cents (and I hope I did not offense you, Peter).
 
 --
 !try; do()
 --
 Vincent Keunen, Ir, http://vincent.keunen.net
 Manex, rue Wagner 93, BE-4100 Boncelles, Belgium
 Our site: http://www.manex.be




--
To unsubscribe, 

RE: address-literal addressing not working

2002-08-18 Thread Peter M. Goldstein


Danny et al,

I'm leaning towards Noel's reading of this.  How strong are your
objections?  I don't want to commit anything before we have a consensus.

--Peter

 -Original Message-
 From: Noel J. Bergman [mailto:[EMAIL PROTECTED]]
 Sent: Saturday, August 17, 2002 3:47 PM
 To: James Developers List
 Subject: Re: address-literal addressing not working
 
 Danny,
 
  I can't see why this needs to be fixed it may be that you don't
 actually
  want to handle mail delivered using IP addresses ...
 
 Section 4.1.3 of RFC 2821 (http://www.ietf.org/rfc/rfc2821.txt):
 Sometimes
 a host is not known to the domain name system and communication (and,
in
 particular, communication to report and repair the error) is blocked.
To
 bypass this barrier a special literal form of the address is allowed
as an
 alternative to a domain name.  I read that as saying that the special
 literal form IS allowed, not that it MAY BE allowed.  For example, if
I
 normally count on domain names and your DNS server goes out, I can use
the
 address-literal form to reach you.  I do understand your differing
 understanding, and see a bit of US-centric political humor in that we
are
 saying that it depends upon what the definition of 'is' is.
 
 As for maintaining it by hand, not only don't I read it as optional,
but
 for
 those of us dealing with virtual hosting, there can be quite a few IP
 addresses as well as domain names.  I'd like the DNS to deal with
that,
 not
 have to do it by hand.  For example, within the next week or so, we're
 moving to a new ARIN block.  When there is a DNS change, I'd like to
make
 change in the DNS, not have to keep disjoint applications in synch.
 
   --- Noel
 
 -Original Message-
 From: Danny Angus [mailto:[EMAIL PROTECTED]]
 Sent: Saturday, August 17, 2002 18:12
 To: James Developers List
 Subject: RE: DO NOT REPLY [Bug 11795] New: - address-literal
addressing
 not working
 
 
 Oh, now I see what this is about,
 Yes you have to specify that James will handle mail for the address
 literals
 as well as domain names, then it works.
 I can't see why this needs to be fixed it may be that you don't
actually
 want to handle mail delivered using IP addresses, only FQDN's, for any
 number of reasons.
 Specifying ip address literals to be handled in the servernames
section
 seems reasonable to me.
 My fix would be to simply document this requirement, and point out the
 reasoning.
 What do you think?
 d.
 
  -Original Message-
  From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
  Sent: 17 August 2002 21:41
  To: [EMAIL PROTECTED]
  Subject: DO NOT REPLY [Bug 11795] New: - address-literal addressing
not
  working
 
 
  DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
  RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
  http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11795.
  ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
  INSERTED IN THE BUG DATABASE.
 
  http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11795
 
  address-literal addressing not working
 
 Summary: address-literal addressing not working
 Product: James
 Version: unspecified
Platform: Other
  OS/Version: Other
  Status: NEW
Severity: Normal
Priority: Other
   Component: James Core
  AssignedTo: [EMAIL PROTECTED]
  ReportedBy: [EMAIL PROTECTED]
 
 
  2.1a1 doesn't appear to support user@address-literal addressing
  as required
  by the SMTP RFC.  James.isServerLocal() does a simple String lookup
in a
  serverName collection, so unless the IP addresses are in the
  collection, they
  won't be matched.
 
  There are some reports that this is a regression, since it worked
  with 2.0a3.
  That should be tested.  There was also an Open Relay defect in 2.0a3
 that
  might have masked this problem, depending upon the test.  A patch
  for this
  defect has been submitted.
 
  --
  To unsubscribe, e-mail:
 mailto:[EMAIL PROTECTED]
 For additional commands, e-mail: mailto:james-dev-
 [EMAIL PROTECTED]
 
 
 --
 To unsubscribe, e-mail:   mailto:james-dev-
 [EMAIL PROTECTED]
 For additional commands, e-mail: mailto:james-dev-
 [EMAIL PROTECTED]
 
 
 --
 To unsubscribe, e-mail:   mailto:james-dev-
 [EMAIL PROTECTED]
 For additional commands, e-mail: mailto:james-dev-
 [EMAIL PROTECTED]



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




cvs commit: jakarta-james build.bat

2002-08-18 Thread pgoldstein

pgoldstein2002/08/18 10:42:45

  Modified:.build.bat
  Log:
  Changing build.bat to a DOS style linefeed file.  It's a Windows only
  file, and the build changes it to this linefeed style on first run.
  
  Revision  ChangesPath
  1.6   +18 -18jakarta-james/build.bat
  
  Index: build.bat
  ===
  RCS file: /home/cvs/jakarta-james/build.bat,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- build.bat 13 Aug 2002 22:57:57 -  1.5
  +++ build.bat 18 Aug 2002 17:42:45 -  1.6
  @@ -1,18 +1,18 @@
  -@echo off
  -
  -echo.
  -echo James Build System
  -echo ---
  -
  -set OLD_ANT_HOME=%ANT_HOME%
  -set ANT_HOME=tools
  -
  -set OLD_CLASSPATH=%CLASSPATH%
  -set 
CLASSPATH=phoenix-bin\lib\xercesImpl-2.0.2.jar;phoenix-bin\lib\xml-apis.jar;tools\lib\velocity-1.3-dev.jar;tools\lib\jdom-b7.jar
  -
  -%ANT_HOME%\bin\ant.bat -emacs %1 %2 %3 %4 %5 %6 %7 %8
  -goto cleanup
  -
  -:cleanup
  -set ANT_HOME=%OLD_ANT_HOME%
  -set CLASSPATH=%OLD_CLASSPATH%
  +@echo off
  +
  +echo.
  +echo James Build System
  +echo ---
  +
  +set OLD_ANT_HOME=%ANT_HOME%
  +set ANT_HOME=tools
  +
  +set OLD_CLASSPATH=%CLASSPATH%
  +set 
CLASSPATH=phoenix-bin\lib\xercesImpl-2.0.2.jar;phoenix-bin\lib\xml-apis.jar;tools\lib\velocity-1.3-dev.jar;tools\lib\jdom-b7.jar

  +
  +%ANT_HOME%\bin\ant.bat -emacs %1 %2 %3 %4 %5 %6 %7 %8
  +goto cleanup
  +
  +:cleanup
  +set ANT_HOME=%OLD_ANT_HOME%
  +set CLASSPATH=%OLD_CLASSPATH%
  
  
  

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




Re: about javadocs (was: Re: FW: What do we need to release 2.1?)

2002-08-18 Thread Andrew C. Oliver

Well said Peter.  If your on Advogoto I'd love to upgrade you.

-Andy

PS... very offtopic
Furthermore de-emphasizing documentation is one of my key beefs with XP.
While I hate 300 page specs, I hate 0 page ones too.

Peter M. Goldstein wrote:
 Vincent,
 
 I'm not offended, although I disagree almost entirely with your points.
 :)
 
 Basically I feel that on distributed, volunteer projects extensive and
 appropriate documentation is even more important than on projects being
 done by a full-time, localized development team.  And I feel that it is
 extremely important even in the latter case.
 
 While XP is an interesting methodology, James is in no way an XP
 project.  We are using none of the XP techniques (pair programming,
 rapid rotation of developers to different parts of the code base,
 aggressive refactoring of unclear code etc.) that make internal
 documentation far less important.  And as observation of the changelog
 indicates, leaving javadoc out vs. adding javadoc has not made the
 development any faster.
 
 I believe that one of the essential things an open source project must
 do is attract developers.  You do that by making the projects
 interesting, and the code easy to understand.  To me, that means
 internal documentation.  That's what allows a new developer to come up
 to speed in a very short time and participate productively in the
 project.  And on this point at least the Apache code standards seem to
 agree with me.  :)
 
 I also suggested that the internal documentation be tied to a release
 because:
 
 i) That way it actually gets done
 ii) When the release announcement spurs a few developers to take a look
 at the code base, they'll find a well-documented, inviting code base.
 
 I'd be happy to continue this discussion offline, but I stand by my
 original wish list entry.  
 
 --Peter
 
 
-Original Message-
From: Vincent Keunen [mailto:[EMAIL PROTECTED]]
Sent: Sunday, August 18, 2002 7:13 AM
To: James Developers List
Subject: about javadocs (was: Re: FW: What do we need to release 2.1?)

Thanks Peter, for your message that makes things move forward.  I'm
adding some comments about the specific item of javadocs.  First, I
 
 must
 
say that I agree with 2 comments from Noel:


Internal Documentation
Absolutely necessary. But NOT to hold up the 2.1 release. We can

continue

to upgrade the web site with new documentation, and any serious

developer

should be working from the CVS


and


At least get the javadoc complete.

javadocs are for developers. I view 2.1 as a RELEASE build for

 users.
 
Yes,

we need to work on the javadocs, but I would not wait for them

 before
 
putting out a stable release build if we can do so.


Peter M. Goldstein wrote:


Internal Documentation

I know some people tend to dismiss internal documentation, but I

 don't
 
see how a project that is seeking to attract developers can function
without it.  As such I tend to include it in the exit criteria for a
particular release.

1) All methods and instance variables should be documented.  All

 classes
 
should be documented.  The documentation doesn't need to be

 extensive,
 
but it should be present.  It should include issues such as

 class/method
 
contracts and threading restrictions where appropriate.
2) All public and protected classes, methods, and variables need to

 be
 
documented using Javadoc style to ensure appropriate Javadoc
3) The Javadoc should build without warnings
4) All packages should have package documentation




Peter, I'd like to modify a bit your suggestion.  From my experience
 
 (15
 
years of OO software developement), doc should be reduced to the
 
 minimum
 
(and I find XP discussions about documenting the code quite
 
 appropriate
 
to modern developments).  Some ideas:

* code is the only thing that really lives; it changes often
  (writing docs is time consuming and is very difficult to keep in
  sync with the code; and out of sync doc is useless, and may even
  lead you to wrong assumptions...)
* the code (at the class/method level) should be self explicit: if
  you need doc to explain code, think about rewriting code to make
  it more explicit; also, good developers read code almost as
 
 easily
 
  as the doc (if the code is good, of course)
* doc is very useful at the package level: what does this package
  contain, where to look first (important classes and methods
  should be mentionned)
* important classes/methods may need some doc
* important here meaning part of an API, important for external
  developers or part of the basic building blocks of the system,
  that all developers should be comfortable with

I really don't want to start a lengthy discussion on the pros and cons
of documentation (see the forum related to that), but I believe that
docs should not get in the way of developing fast (especially on a
volunteer basis, with restrained resources).  And I am convinced that
 
 it
 
won't 

cvs commit: jakarta-james/src/java/org/apache/james/transport/mailets Redirect.java

2002-08-18 Thread pgoldstein

pgoldstein2002/08/18 11:19:54

  Modified:src/java/org/apache/james/transport/mailets Redirect.java
  Log:
  Removed redundant pass-through, added xml:space preserve to internal docs.
  Reformatted some of the Javadoc comments for consistency.
  Thanks to Noel Bergman
  
  Revision  ChangesPath
  1.9   +60 -45
jakarta-james/src/java/org/apache/james/transport/mailets/Redirect.java
  
  Index: Redirect.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/transport/mailets/Redirect.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Redirect.java 7 Aug 2002 23:26:38 -   1.8
  +++ Redirect.java 18 Aug 2002 18:19:54 -  1.9
  @@ -166,17 +166,16 @@
   *lt;inlinegt;unalteredlt;/inlinegt;BR
   *lt;passThroughgt;FALSElt;/passThroughgt;BR
   *lt;replytogt;postmasterlt;/replytogt;BR
  -+*lt;prefix xml:space=preservegt;[test mailing] lt;/prefixgt;BR
  -+*lt;!-- note the xml:space=preserve to preserve whitespace --gt;BR
  +*lt;prefix xml:space=preservegt;[test mailing] lt;/prefixgt;BR
  +*lt;!-- note the xml:space=preserve to preserve whitespace --gt;BR
   *lt;staticgt;TRUElt;/staticgt;BR
  -*lt;passThroughgt;FALSElt;/passThroughgt;BR
   *lt;/mailetgt;BR
   */P
   *Pand:/P
   *P lt;mailet match=quot;Allquot; class=quot;Redirectquot;gt;BR
   *lt;recipientsgt;x@localhostlt;/recipientsgt;BR
   *lt;sendergt;postmasterlt;/sendergt;BR
  -*lt;messagegt;Message marked as spam:BR
  +*lt;message xml:space=preservegt;Message marked as spam:BR
   *lt;/messagegt;BR
   *lt;inlinegt;headslt;/inlinegt;BR
   *lt;attachmentgt;messagelt;/attachmentgt;BR
  @@ -192,12 +191,22 @@
*
*/
   public class Redirect extends GenericMailet {
  +
  +// The values that indicate how to attach the original mail
  +// to the redirected mail.
  +
   private static final int UNALTERED   = 0;
  +
   private static final int HEADS   = 1;
  +
   private static final int BODY= 2;
  +
   private static final int ALL = 3;
  +
   private static final int NONE= 4;
  +
   private static final int MESSAGE = 5;
  +
   private InternetAddress[] apparentlyTo;
   private String messageText;
   private Collection recipients;
  @@ -226,15 +235,15 @@
   }
   
   /**
  -* returns one of these values to indicate how to append the original message
  -*ul
  -*liUNALTERED : original message is the new message body/li
  -*liBODY : original message body is appended to the new message/li
  -*liHEADS : original message headers are appended to the new message/li
  -*liALL : original is appended with all headers/li
  -*liNONE : original is not appended/li
  -*/ul
  -*/
  + * returns one of these values to indicate how to append the original message
  + *ul
  + *liUNALTERED : original message is the new message body/li
  + *liBODY : original message body is appended to the new message/li
  + *liHEADS : original message headers are appended to the new message/li
  + *liALL : original is appended with all headers/li
  + *liNONE : original is not appended/li
  + */ul
  + */
   public int getInLineType() {
   if(getInitParameter(inline) == null) {
   return BODY;
  @@ -253,8 +262,8 @@
   }
   
   /**
  -* must return either an empty string, or a message to which the redirect can be 
attached/appended
  -*/
  + * must return either an empty string, or a message to which the redirect can 
be attached/appended
  + */
   public String getMessage() {
   if(getInitParameter(message) == null) {
   return ;
  @@ -264,8 +273,8 @@
   }
   
   /**
  -* return true to allow thie original message to continue through the processor, 
false to GHOST it
  -*/
  + * return true to allow thie original message to continue through the 
processor, false to GHOST it
  + */
   public boolean getPassThrough() {
   if(getInitParameter(passThrough) == null) {
   return false;
  @@ -275,8 +284,8 @@
   }
   
   /**
  -* must return a Collection of recipient MailAddress'es
  -*/
  + * must return a Collection of recipient MailAddresses
  + */
   public Collection getRecipients() {
   Collection newRecipients   = new HashSet();
   String addressList = (getInitParameter(recipients) == 
null)
  @@ -294,8 +303,10 @@
   }
   
   /**
  -* return the reply to address as a string
  -*/
  + * Returns the reply to address as a string.
  + *
  + * @return the replyto address for the mail as a string
  + */
   public MailAddress getReplyTo() {
   String sr = getInitParameter(replyto);
   if(sr != null) {
  @@ -318,8 +329,8 @@
   }
   
   /**
  

RE: address-literal addressing not working

2002-08-18 Thread Danny Angus

Medium :)

Because to do it right you'd need to make sure you could match all the IP
addresses a machine is accepting, and in both forms (with and without [])
I don't think it is such simple matter to correctly identify all the
addresses, whereas it is common practice to configure server daemons with
lists of addresses to accept (see httpd for example).

d.

 I'm leaning towards Noel's reading of this.  How strong are your
 objections?  I don't want to commit anything before we have a consensus.


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




RE: cvs commit: jakarta-james build.bat

2002-08-18 Thread Danny Angus

tricky call, the linefeed standard has more to do with the apache repository
systems than the intended audience, but I guess there won't be many
complaints.
d.

 -Original Message-
 From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
 Sent: 18 August 2002 18:43
 To: [EMAIL PROTECTED]
 Subject: cvs commit: jakarta-james build.bat


 pgoldstein2002/08/18 10:42:45

   Modified:.build.bat
   Log:
   Changing build.bat to a DOS style linefeed file.  It's a Windows only
   file, and the build changes it to this linefeed style on first run.

   Revision  ChangesPath
   1.6   +18 -18jakarta-james/build.bat

   Index: build.bat
   ===
   RCS file: /home/cvs/jakarta-james/build.bat,v
   retrieving revision 1.5
   retrieving revision 1.6
   diff -u -r1.5 -r1.6
   --- build.bat   13 Aug 2002 22:57:57 -  1.5
   +++ build.bat   18 Aug 2002 17:42:45 -  1.6
   @@ -1,18 +1,18 @@
   -@echo off
   -
   -echo.
   -echo James Build System
   -echo ---
   -
   -set OLD_ANT_HOME=%ANT_HOME%
   -set ANT_HOME=tools
   -
   -set OLD_CLASSPATH=%CLASSPATH%
   -set
 CLASSPATH=phoenix-bin\lib\xercesImpl-2.0.2.jar;phoenix-bin\lib\xml
 -apis.jar;tools\lib\velocity-1.3-dev.jar;tools\lib\jdom-b7.jar
   -
   -%ANT_HOME%\bin\ant.bat -emacs %1 %2 %3 %4 %5 %6 %7 %8
   -goto cleanup
   -
   -:cleanup
   -set ANT_HOME=%OLD_ANT_HOME%
   -set CLASSPATH=%OLD_CLASSPATH%
   +@echo off
   +
   +echo.
   +echo James Build System
   +echo ---
   +
   +set OLD_ANT_HOME=%ANT_HOME%
   +set ANT_HOME=tools
   +
   +set OLD_CLASSPATH=%CLASSPATH%
   +set
 CLASSPATH=phoenix-bin\lib\xercesImpl-2.0.2.jar;phoenix-bin\lib\xml
 -apis.jar;tools\lib\velocity-1.3-dev.jar;tools\lib\jdom-b7.jar
   +
   +%ANT_HOME%\bin\ant.bat -emacs %1 %2 %3 %4 %5 %6 %7 %8
   +goto cleanup
   +
   +:cleanup
   +set ANT_HOME=%OLD_ANT_HOME%
   +set CLASSPATH=%OLD_CLASSPATH%




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


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




RE: address-literal addressing not working

2002-08-18 Thread Peter M. Goldstein


Danny,

 Medium :)
 
 Because to do it right you'd need to make sure you could match all the
IP
 addresses a machine is accepting, and in both forms (with and without
[])
 I don't think it is such simple matter to correctly identify all the
 addresses, whereas it is common practice to configure server daemons
with
 lists of addresses to accept (see httpd for example).

I concur with you about the difficulty of matching all the IP addresses.
That should be much easier once we migrate to Java 1.4 (using the
NetworkAddress class), but for now it's definitely a problem for complex
IP setups.  However for simple IP setups I think this change would make
life substantially easier.

I'm not sure why we'd have to support both forms.  From my reading of
the RFC, only the bracketed form is strictly correct for IP addresses.

How about we make it an optional behavior with a config param?

--Peter  



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




cvs commit: jakarta-james build.xml

2002-08-18 Thread pgoldstein

pgoldstein2002/08/18 12:17:27

  Modified:.build.xml
  Log:
  Removed tabs from build.xml
  
  Revision  ChangesPath
  1.103 +21 -21jakarta-james/build.xml
  
  Index: build.xml
  ===
  RCS file: /home/cvs/jakarta-james/build.xml,v
  retrieving revision 1.102
  retrieving revision 1.103
  diff -u -r1.102 -r1.103
  --- build.xml 15 Aug 2002 07:07:21 -  1.102
  +++ build.xml 18 Aug 2002 19:17:27 -  1.103
  @@ -177,7 +177,7 @@
   /target
   !--
  ===
  -jdbc3 
  +   jdbc3 
  ===
 --
   target name=prepare-jdbc3 depends=prepare if=jdbc3.present
  @@ -229,12 +229,12 @@
   param name=-version/
   param name=-breakiterator/
   param name=-use/
  - param name=-link 
value=http://java.sun.com/j2se/1.4/docs/api/
  - param name=-link 
value=http://java.sun.com/j2ee/sdk_1.3/techdocs/api/
  - param name=-link 
value=http://jakarta.apache.org/avalon/api/
  - param name=-link 
value=http://jakarta.apache.org/avalon/phoenix/api/
  - param name=-link 
value=http://jakarta.apache.org/avalon/cornerstone/api/
  - param name=-link 
value=http://jakarta.apache.org/avalon/logkit/api/  
 
  +param name=-link value=http://java.sun.com/j2se/1.4/docs/api/
  +param name=-link 
value=http://java.sun.com/j2ee/sdk_1.3/techdocs/api/
  +param name=-link value=http://jakarta.apache.org/avalon/api/
  +param name=-link 
value=http://jakarta.apache.org/avalon/phoenix/api/
  +param name=-link 
value=http://jakarta.apache.org/avalon/cornerstone/api/
  +param name=-link 
value=http://jakarta.apache.org/avalon/logkit/api/  
  
   param name=-doctitle value=${Name} ${version}/
   param name=-windowtitle value=${Name} API/
   param name=-bottom value=quot;Copyright #169; 2001 Apache 
Jakarta Project. All Rights Reserved.quot;/
  @@ -248,12 +248,12 @@
   param name=-version/
   param name=-breakiterator/
   param name=-use/
  - param name=-link 
value=http://java.sun.com/j2se/1.4/docs/api/
  - param name=-link 
value=http://java.sun.com/j2ee/sdk_1.3/techdocs/api/  
  - param name=-link 
value=http://jakarta.apache.org/avalon/api/
  - param name=-link 
value=http://jakarta.apache.org/avalon/phoenix/api/
  - param name=-link 
value=http://jakarta.apache.org/avalon/cornerstone/api/
  - param name=-link 
value=http://jakarta.apache.org/avalon/logkit/api/  
 
  +param name=-link value=http://java.sun.com/j2se/1.4/docs/api/
  +param name=-link 
value=http://java.sun.com/j2ee/sdk_1.3/techdocs/api/  
  +param name=-link value=http://jakarta.apache.org/avalon/api/
  +param name=-link 
value=http://jakarta.apache.org/avalon/phoenix/api/
  +param name=-link 
value=http://jakarta.apache.org/avalon/cornerstone/api/
  +param name=-link 
value=http://jakarta.apache.org/avalon/logkit/api/  
  
   param name=-doctitle value=Apache Jakarta Mailet API/
   param name=-windowtitle value=Apache Jakarta Mailet API/
   param name=-bottom value=quot;Copyright #169; 2002 Apache 
Jakarta Project. All Rights Reserved.quot;/
  @@ -266,15 +266,15 @@
  ===
 --
   target name=xdocs depends=prepare,prepare-jdbc3
  - style style=${docs.src}/stylesheets/site.xsl
  +style style=${docs.src}/stylesheets/site.xsl
   basedir=${docs.src}/
  - destdir=${build.docs}/ 
  - includes=**/*.xml 
  - /style
  +destdir=${build.docs}/ 
  +includes=**/*.xml 
  +/style
   copy todir=${build.docs} filtering=no
  - fileset dir=${docs.src}
  +fileset dir=${docs.src}
   include name=**/*.css/
  - /fileset
  +/fileset
   /copy
   copy todir=${build.docs}/images filtering=no
   fileset 

cvs commit: jakarta-james/src/java/org/apache/james/transport/mailets Redirect.java

2002-08-18 Thread pgoldstein

pgoldstein2002/08/18 12:19:32

  Modified:src/java/org/apache/james/transport/mailets Redirect.java
  Log:
  Missed a redundant passthrough on last checkin
  
  Revision  ChangesPath
  1.10  +0 -1  
jakarta-james/src/java/org/apache/james/transport/mailets/Redirect.java
  
  Index: Redirect.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/transport/mailets/Redirect.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Redirect.java 18 Aug 2002 18:19:54 -  1.9
  +++ Redirect.java 18 Aug 2002 19:19:32 -  1.10
  @@ -184,7 +184,6 @@
   *lt;replytogt;postmasterlt;/replytogt;BR
   *lt;prefixgt;[spam notification]lt;/prefixgt;BR
   *lt;staticgt;TRUElt;/staticgt;BR
  -*lt;passThroughgt;FALSElt;/passThroughgt;BR
   *lt;/mailetgt;/P
*
* @author  Danny Angus   [EMAIL PROTECTED]
  
  
  

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




RE: address-literal addressing not working

2002-08-18 Thread Noel J. Bergman

  How about we make it an optional behavior with a config param?

 Ok, a fine compromise, if we add (and document) a section
serveraddresses
 equivalent to servernames with an autodetect element/parameter, as for
 servernames that should allow simple situations to be detected, complex
 situations to override it, and the chosen behaviour to be clearly seen in
 the configuration.
 I think it should be composed of addressxxx.xxx.xxx.xxx/address
elements
 which are added in [] to the servernames collection. Yes?

I did attempt to implement this compromise position.  The patch I submitted
does add such an autodetect parameter.  It tells James to autodetect IP
addresses for the mail hosts it supports.  The parameter is addIPAddresses,
although it can be renamed to whatever anyone wants.

I consider a separate serveraddresses section to be unnecessary.  It is
perfectly permissible today to add elements of the form:

servernamexxx.xxx.xxx.xxx/servername

to the servernames element today.  If truely desired, we could accept:

servername[xxx.xxx.xxx.xxx]/servername

and strip the brackets.  The brackets must be stripped because the
comparison is made against MailAddress.getHost(), and getHost() must return
a valid host (which is why getHost() strips the brackets when it provides
the host).

--- Noel


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




DO NOT REPLY [Bug 11808] New: - 8bitmime capabilities missing

2002-08-18 Thread bugzilla

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11808.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11808

8bitmime capabilities missing

   Summary: 8bitmime capabilities missing
   Product: James
   Version: 2.0a3
  Platform: All
OS/Version: All
Status: NEW
  Severity: Normal
  Priority: Other
 Component: SMTPServer
AssignedTo: [EMAIL PROTECTED]
ReportedBy: [EMAIL PROTECTED]


I am using an IIS front end server which forwards email to the james backend 
server. The front server accepts 8bitmime messages but then cannot forward them 
to the james server, resulting in an error message being sent to the 
admininstrator(me). It should be a simple matter to add support for 8 bit and 
it may even be supported intrinsicly, but the james server does nont advertise 
it via the EHLO commannd.

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




RE: about javadocs (was: Re: FW: What do we need to release 2.1?)

2002-08-18 Thread Noel J. Bergman

Vincent Keunen wrote:
  First, I must say that I agree with 2 comments from Noel:
   Internal Documentation
   Absolutely necessary. But NOT to hold up the 2.1 release. We can
continue
   to upgrade the web site with new documentation, and any serious
developer
   should be working from the CVS
 You wouldn't release Documentation with no code would you?
 Why would you release code with no documentation?  If documentation
 isn't a condition for release, you'll never do it.

Everyone is agreeing that the documentation is necessary.  But javadocs for
developers is not a reason to hold end users hostage.  The psychology is
backwards.  The documentation is getting done, but telling developers who
can get the current code from the CVS that there won't be a user release
until there is developer documentation is not going to incent them to do
javadocs.  If they don't care, they don't care, and they aren't the ones
being held hostage by this false incentive.  Fortunately, Peter has both
time and interest, and he is doing a great job of updating the internal
documentation.

 javadocs are for developers. I view 2.1 as a RELEASE build for users.
 Yes, we need to work on the javadocs, but I would not wait for them
 before putting out a stable release build if we can do so.

 retranslate:  Code quality is not important

Overly simplistic software cliche.  2.1 is superior in all ways to 2.0a3,
including javadocs (albiet incomplete).

Ironically, I just answered a question from someone who downloaded 2.0a3
over a week ago, and ran into the erroneous end user documentation.
Releasing 2.1, which has CORRECT documentation would have saved that person
10 days of grief.  Sure, it would have saved me the 30 seconds it took to
reply, but it would have saved him 10 days.

At the least, I do not see any reason not to replace 2.1a1 with a 2.1a2
Milestone Build based upon what we have now, and invite end users to help
out with the user documentation.  The CVS HEAD currently fills all the
criteria necessary for a Milestone Build.

--- Noel


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




RE: about javadocs (was: Re: FW: What do we need to release 2.1?)

2002-08-18 Thread Noel J. Bergman

Peter,

I agree with almost all of your points.  The only ones that I disagree with
are:

 observation of the changelog indicates, leaving javadoc out vs.
 adding javadoc has not made the development any faster.

I disagree, in a way that you'll like.  I think that accurate javadocs
facilitates development.

 I also suggested that the internal documentation be tied to a release
because:
 i) That way it actually gets done

Only because you want to get it done.  Practically, it just doesn't work
that way.  Developers already have access to the current code, so if they
don't care about the javadocs, holding a release up isn't an incentive for
them to do it.  And you don't need the incentive, you are doing it anyway.

 ii) When the release announcement spurs a few developers to take a look
 at the code base, they'll find a well-documented, inviting code base.

I support that goal.

As I said in another e-mail, let's put out a 2.1a2 Milestone Build to
replace the ancient May 30 2.1a1 Milestone, and I'll feel much better for
our end users.

--- Noel


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




Re: about javadocs (was: Re: FW: What do we need to release 2.1?)

2002-08-18 Thread Andrew C. Oliver

I totally disagree with just about everything Noel said except for the 
end.  Development builds milestone builds or whatever, should not be 
delayed for quality concerns.  It just can't be blessed as a release.

As long as everyone understands that documentation is as important as 
code and that poorly documented code is just pure rat dung.  IF you 
don't Javadoc, you are a crappy no good developer.  Code complete, means 
docs too.

Noel, you're wrong, once releases are the gold standard developers 
care.  What good is a release to a user if he can't make hide nor hair 
of it?  If I weren't a semi-decent Java developer I couldn't even set up 
JAMES.  That puts JAMES a bit behind most other mail servers.  If a 
developer doesn't care about that, then there isn't much he could care 
about.  I've seen projects where the documentation was tied to the 
*real* release and the developers DID care.

-Andy



Noel J. Bergman wrote:
 Peter,
 
 I agree with almost all of your points.  The only ones that I disagree with
 are:
 
 
observation of the changelog indicates, leaving javadoc out vs.
adding javadoc has not made the development any faster.
 
 
 I disagree, in a way that you'll like.  I think that accurate javadocs
 facilitates development.
 
 
I also suggested that the internal documentation be tied to a release
 
 because:
 
i) That way it actually gets done
 
 
 Only because you want to get it done.  Practically, it just doesn't work
 that way.  Developers already have access to the current code, so if they
 don't care about the javadocs, holding a release up isn't an incentive for
 them to do it.  And you don't need the incentive, you are doing it anyway.
 
 
ii) When the release announcement spurs a few developers to take a look
at the code base, they'll find a well-documented, inviting code base.
 
 
 I support that goal.
 
 As I said in another e-mail, let's put out a 2.1a2 Milestone Build to
 replace the ancient May 30 2.1a1 Milestone, and I'll feel much better for
 our end users.
 
   --- Noel





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




Jakarta James Nightly Build

2002-08-18 Thread Peter M. Goldstein


To more knowledgeable heads than I,

Noel and I have been looking at the nightly build process and are a
little disturbed by the fact that:

i) It is failing
ii) It is failing without notifying james-dev

See the nightly build report here:

http://jakarta.apache.org/builds/gump/latest/jakarta-james.html

After examining the definition file here,

http://jakarta.apache.org/builds/gump/latest/module_jakarta-james.html

it is very clear that this definition is pretty far out of date.  Among
other things, the file refers to a James.bar, which if I recall
correctly was the predecessor to the current James.sar.  So the file
needs to be updated.

The build is currently failing because of unnecessary dependencies -
James builds off snapshots of the assorted Avalon subprojects and hence
does not need those project builds to succeed.  So the dependency
entries need to be updated.

I'm willing to volunteer to do the jakarta-james.xml file update.  My
big problem is that I don't know where the file is, and I don't think I
have write-access to it.  I'd like to get one of the Apache elders to
give me a hand with this.  As Peter Donald is listed in the nag tag, I'm
cc'ing him on this email.  Any help would be greatly appreciated.

--Peter




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




Re: about javadocs (was: Re: FW: What do we need to release 2.1?)

2002-08-18 Thread Tetsuya Kitahata


On Sun, 18 Aug 2002 20:40:35 -0400
Noel J. Bergman [EMAIL PROTECTED] wrote:

 Everyone is agreeing that the documentation is necessary.  But javadocs for
 developers is not a reason to hold end users hostage.

I love this sentence, But javadocs for developers is not a reason to
hold end users hostage.

I think documentation is VERY important, however, in my position
just exernal documents (for users) not necessarily internal ones
(javadocs).

Sorry for the interruption.

-- Tetsuya Kitahata [EMAIL PROTECTED]


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




Re: about javadocs (was: Re: FW: What do we need to release 2.1?)

2002-08-18 Thread Andrew C. Oliver

 
 No, I'm pragmatic and you just don't like it.  This isn't about some ivory
 tower notion of what makes good code.  This is about lots of James users who
 are stuck using buggy code and bad documention while we sit here using the
 good stuff and arguing over when to deliver it to them.
 
 
What good is a release to a user if he can't make hide nor hair of it?
If I weren't a semi-decent Java developer I couldn't even set up JAMES.
 
 
 I agree with you, but what does this have to do with javadocs, Andy?  Talk
 about end user documentation and we'd be agreeing, because what good are
 javadocs to the average user?
 

Its the whole package.  Code complete.  You're not pragmatic. 
Undocumented non-quality code is NOT pragmatic... in fact:

http://www.pragmaticprogrammer.com/cgi-local/pragprog?FailureHowTo

Fine to release a development build, but don't lie and call something a 
release, you do everyone a disservice.

-Andy


   --- Noel





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




Re: about javadocs (was: Re: FW: What do we need to release 2.1?)

2002-08-18 Thread Andrew C. Oliver

To be honest Tetsuya, it makes me scared to use it.  Javadoc to me is so 
basic and takes so little time, to actually argue against it...  To me 
this is the same as an argument to write variables a1, a2, a3... Its 
code quality.  This is an active argument for poor code quality and I 
can't believe this is controversial!

Tetsuya Kitahata wrote:
 On Sun, 18 Aug 2002 20:40:35 -0400
 Noel J. Bergman [EMAIL PROTECTED] wrote:
 
 
Everyone is agreeing that the documentation is necessary.  But javadocs for
developers is not a reason to hold end users hostage.
 
 
 I love this sentence, But javadocs for developers is not a reason to
 hold end users hostage.
 
 I think documentation is VERY important, however, in my position
 just exernal documents (for users) not necessarily internal ones
 (javadocs).
 
 Sorry for the interruption.
 
 -- Tetsuya Kitahata [EMAIL PROTECTED]





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




Re: about javadocs (was: Re: FW: What do we need to release 2.1?)

2002-08-18 Thread Serge Knystautas

Andrew,

If you feel there's something glaringly wrong that should be improved,
patches are always greatly welcome.

For my money, the only thing that should hold up a release is a volunteer
saying they will fix something but won't have it ready until date X.  Beyond
that, changelogs go out with all the contributors and committers names on
them... believe me, they're not looking to put out a bad product and just
are trying to find a balance.

Serge Knystautas
Loki Technologies
http://www.lokitech.com/
- Original Message -
From: Andrew C. Oliver [EMAIL PROTECTED]
Newsgroups: gmane.comp.jakarta.james.devel
To: [EMAIL PROTECTED]
Sent: Sunday, August 18, 2002 11:21 PM
Subject: Re: about javadocs (was: Re: FW: What do we need to release 2.1?)


 To be honest Tetsuya, it makes me scared to use it.  Javadoc to me is so
 basic and takes so little time, to actually argue against it...  To me
 this is the same as an argument to write variables a1, a2, a3... Its
 code quality.  This is an active argument for poor code quality and I
 can't believe this is controversial!

 Tetsuya Kitahata wrote:
  On Sun, 18 Aug 2002 20:40:35 -0400
  Noel J. Bergman [EMAIL PROTECTED] wrote:
 
 
 Everyone is agreeing that the documentation is necessary.  But javadocs
for
 developers is not a reason to hold end users hostage.
 
 
  I love this sentence, But javadocs for developers is not a reason to
  hold end users hostage.
 
  I think documentation is VERY important, however, in my position
  just exernal documents (for users) not necessarily internal ones
  (javadocs).
 
  Sorry for the interruption.
 
  -- Tetsuya Kitahata [EMAIL PROTECTED]



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




Re: about javadocs (was: Re: FW: What do we need to release 2.1?)

2002-08-18 Thread Tetsuya Kitahata


Hi, Andy and all.

On Sun, 18 Aug 2002 23:21:42 -0400
Andrew C. Oliver [EMAIL PROTECTED] wrote:

 To be honest Tetsuya, it makes me scared to use it.  Javadoc to me is so 
 basic and takes so little time, to actually argue against it...  To me 
 this is the same as an argument to write variables a1, a2, a3... Its 
 code quality.  This is an active argument for poor code quality and I 
 can't believe this is controversial!

I know your feelings, but it seems that it is the difference of 
where and when to put our milestones things.
For example, our objectives at version 2.1 are not necessary 
complete javadocs, but at version 3.0, complete javadocs are
necessary ... I think (for example) this is possible.

--

I agreed with Noel's opinion, But javadocs for developers is not a 
reason to hold end users hostage, because this matter also applies
to the translation.
To catch up with frequently changed javadocs (to keep in sync) is
very difficult and almost impossible things.
The difference between this two Japanese Translation Groups(?)
http://www.terra-intl.com/jakarta/
http://www.ingrid.org/jajakarta/
is apparent. I (the former one) clearly declared  I will not
translate Javadocs because external documents are very important
for the PROMOTION of jakarta-projects but javadocs are different.
That's why I can speed it up to translate 9 jakarta-projects (including
JAMES) and the latter could not, it seems.

That's why I love the Noel's sentence.

Regards,

-- Tetsuya Kitahata [EMAIL PROTECTED]



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




First pass Token Counter mailet for ANTI SPAM mailet

2002-08-18 Thread Chris Means

Hi,

This is my first attempt at developing a mailet...so if I've made a mistake
about how best to implement this...or if I've just done something dumb in my
code (cos I'm no Java guru either) please let me know.

I'm following through with a posting I saw on /. regarding using word
occurance statistics to be able to filter out SPAM from legit messages.
Here's the original article: http://www.paulgraham.com/spam.html

I saw this as a two part development.

Part 1:
  Routines for building good/bad word-token statistics.

Part 2:
  Using the statistics to route or flag new messages as SPAM or not.

Attached is my first pass at the code for Part 1.

As I decided to get familiar with JDBC with James at the same time, I've
coded this to use JDBC as the repository...that may not be the best approach
as it introduces a time lag at start up (as it loads the existing
words/occurances) and at shutdown, as it persists the new statistics back
into the database.

Let me know what you guys think of my approach...etc.

P.S.  Hopefully, there's something I don't understand about how to develope
under James.  I'm using JBuilder 4 to compile my code, then I've got to
update the James.bar (which JBuilder doesn't recognize as a jar repository)
with the new class file, then restart James.  I realize there's probably no
easy way around restarting James, but it would be nice to skip updating the
.bar all the time...is there a way to do this?

Thanks.

-Chris



JDBCTokenCounter.java
Description: JavaScript source


database.sql
Description: Binary data

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


config.xml : RE: First pass Token Counter mailet for ANTI SPAM mailet

2002-08-18 Thread Chris Means

I forgot to add sample configuration necessary in config.xml:

  mailet match=[EMAIL PROTECTED]
class=ToProcessor
processor notSpam /processor
  /mailet


processor name=notSpam
  mailet match=All class=JDBCTokenCounter
repositoryPath db://maildb/filter_goodwords /repositoryPath
statisticPath filter_statistics/goodmessages /statisticPath
  /mailet
/processor

-Chris

 -Original Message-
 From: Chris Means [mailto:[EMAIL PROTECTED]]
 Sent: Sunday, August 18, 2002 11:11 PM
 To: [EMAIL PROTECTED]
 Subject: First pass Token Counter mailet for ANTI SPAM mailet


 Hi,

 This is my first attempt at developing a mailet...so if I've made
 a mistake
 about how best to implement this...or if I've just done something
 dumb in my
 code (cos I'm no Java guru either) please let me know.

 I'm following through with a posting I saw on /. regarding using word
 occurance statistics to be able to filter out SPAM from legit messages.
 Here's the original article: http://www.paulgraham.com/spam.html

 I saw this as a two part development.

 Part 1:
   Routines for building good/bad word-token statistics.

 Part 2:
   Using the statistics to route or flag new messages as SPAM or not.

 Attached is my first pass at the code for Part 1.

 As I decided to get familiar with JDBC with James at the same time, I've
 coded this to use JDBC as the repository...that may not be the
 best approach
 as it introduces a time lag at start up (as it loads the existing
 words/occurances) and at shutdown, as it persists the new statistics back
 into the database.

 Let me know what you guys think of my approach...etc.

 P.S.  Hopefully, there's something I don't understand about how
 to develope
 under James.  I'm using JBuilder 4 to compile my code, then I've got to
 update the James.bar (which JBuilder doesn't recognize as a jar
 repository)
 with the new class file, then restart James.  I realize there's
 probably no
 easy way around restarting James, but it would be nice to skip
 updating the
 .bar all the time...is there a way to do this?

 Thanks.

 -Chris



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




Re: Jakarta James Nightly Build

2002-08-18 Thread Stephen McConnell



Peter M. Goldstein wrote:

To more knowledgeable heads than I,

Noel and I have been looking at the nightly build process and are a
little disturbed by the fact that:

i) It is failing
ii) It is failing without notifying james-dev


This explains a lot.  With no notification of failures, the Avalon 
Community have been moving along in ignorant bliss (relative to the 
James Commnity).  Over the last few days that has been discussion 
concerning inconsitencies in Cornerstone jar brough about by some recent 
testing I've been doing of James using the Avalon CVS builds of 
Cornerstone. With gump working we would have spotted the issue months ago.

Getting this back in place would be really good becuse you can validate 
that the Avalon Community are not braking anything as a result of 
maintainance and service development.



See the nightly build report here:

http://jakarta.apache.org/builds/gump/latest/jakarta-james.html

After examining the definition file here,

http://jakarta.apache.org/builds/gump/latest/module_jakarta-james.html

it is very clear that this definition is pretty far out of date.  Among
other things, the file refers to a James.bar, which if I recall
correctly was the predecessor to the current James.sar.  So the file
needs to be updated.


Its also out-of-date relative some restructuring that took place of the 
Excalibur project.


The build is currently failing because of unnecessary dependencies -
James builds off snapshots of the assorted Avalon subprojects and hence
does not need those project builds to succeed.  So the dependency
entries need to be updated.

I'm willing to volunteer to do the jakarta-james.xml file update.  My
big problem is that I don't know where the file is, and I don't think I
have write-access to it.  I'd like to get one of the Apache elders to
give me a hand with this.  As Peter Donald is listed in the nag tag, I'm
cc'ing him on this email.  Any help would be greatly appreciated.


Pete the right person to talk to - he knows this stuff inside out.

Cheers, Steve.


-- 

Stephen J. McConnell

OSM SARL
digital products for a global economy
mailto:[EMAIL PROTECTED]
http://www.osm.net




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




Re: NNTP auth issues

2002-08-18 Thread Stephen McConnell



Noel J. Bergman wrote:

Shouldn't be any different.  Did you make any progress on this?

You might want to ask Paul Hammant to take a look at it.  For example, I
don't know what the relationship is between the .xinfo files and things like
the assembly file, but the .xinfo for the nntp server doesn't have an entry
for the UsersStore, which is present in the .xinfo for other services.

   --- Noel

-Original Message-
From: Jason Webb [mailto:[EMAIL PROTECTED]]
Sent: Thursday, August 15, 2002 6:30
To: 'James Developers List'
Subject: NNTP auth issues


I'm trying to link our database into the NNTP auth mechanism as we
provide an MLM that has a lot of NNTP style features. However, when I
ask for a DataSource from the ComponentManager, I get an exception
thrown at me:

org.apache.avalon.framework.component.ComponentException: Unable to
provide implementation for
org.apache.avalon.cornerstone.services.datasource.DataSourceSelector
at
org.apache.avalon.framework.component.DefaultComponentManager.lookup
DefaultComponentManager.java:70)
at
org.apache.james.nntpserver.AuthServiceImpl.isAuthenticated(AuthServiceI
mpl.java:84)
at
org.apache.james.nntpserver.AuthServiceImpl.isAuthorized(AuthServiceImpl
.java:53)


Etc
  


Could you post the Etc.
It as just getting interesting ;-)
Steve.

It all works fine in the mailet we use for our MLM. Is NNTP special with
regards to DataSources?

Help!

-- Jason


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

  


-- 

Stephen J. McConnell

OSM SARL
digital products for a global economy
mailto:[EMAIL PROTECTED]
http://www.osm.net




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




Re: First pass Token Counter mailet for ANTI SPAM mailet

2002-08-18 Thread Stephen McConnell



Chris Means wrote:

Hi,

This is my first attempt at developing a mailet...so if I've made a mistake
about how best to implement this...or if I've just done something dumb in my
code (cos I'm no Java guru either) please let me know.

I'm following through with a posting I saw on /. regarding using word
occurance statistics to be able to filter out SPAM from legit messages.
Here's the original article: http://www.paulgraham.com/spam.html

I saw this as a two part development.

Part 1:
  Routines for building good/bad word-token statistics.

Part 2:
  Using the statistics to route or flag new messages as SPAM or not.

Attached is my first pass at the code for Part 1.

As I decided to get familiar with JDBC with James at the same time, I've
coded this to use JDBC as the repository...that may not be the best approach
as it introduces a time lag at start up (as it loads the existing
words/occurances) and at shutdown, as it persists the new statistics back
into the database.

Let me know what you guys think of my approach...etc.

P.S.  Hopefully, there's something I don't understand about how to develope
under James.  I'm using JBuilder 4 to compile my code, then I've got to
update the James.bar (which JBuilder doesn't recognize as a jar repository)
with the new class file, then restart James.  I realize there's probably no
easy way around restarting James, but it would be nice to skip updating the
.bar all the time...is there a way to do this?


You can safely rename a .bar files to x.jar.
The .bar file was an old format supported by Phoenix - it basically 
represebnted a Block packaged as a jar file.  Phoneix today does not do 
anytihg special with respect to .bar files.

Cheers, Steve.

-- 

Stephen J. McConnell

OSM SARL
digital products for a global economy
mailto:[EMAIL PROTECTED]
http://www.osm.net




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




RE: Jakarta James Nightly Build

2002-08-18 Thread Noel J. Bergman

 This explains a lot.  With no notification of failures, the Avalon
 Community have been moving along in ignorant bliss (relative to the
 James Commnity).

There are Avalon developers here on this mailing list aware of what is going
on.  Some months ago, Paul Hammant kindly offered to keep James going well
with Phoenix, and to be responsible for changing the James infrastructure to
match changes in Phoenix; he was made a James committer for this purpose.
James has its own snapshot of Phoenix, allowing James and Phoenix to evolve
at their own pace.

Apparently, there was a decision made half a year ago to eliminate the
Component interface in favor of A-Better-Way.  Because of some ... shall we
say anemia ... in the Mailet v1 API, there are Mailets that must get at
non-Mailet API functionality.  They do that by requesting the
ComponentManager via MailetContext.getAttribute(), and going on from there.
It is not a problem to migrate the James code, but Paul has expressed
concern about third-party mailets (outside of the scope of the CVS).

My proposal is that Paul remove dependency upon the Component interface
within Jame's code, and support foreign matchers/mailets as follows.  The
only documented way for a matcher/mailet to get the component manager is via
a specific mechanism, and the set of components is limited.  We can provide
our own Component code that lies (and wraps) as necessary, until we can drop
that code entirely.  James' stock matchers/mailets would show how to make
the transition.

Personally, I have no problem with Phoenix continuing to evolve, given that
they've accepted responsibility for converting James along.

Again, personally, I would not want James to build against the Phoenix
nightly builds.  I'd prefer that it build against the snapshot that is part
of James.

--- Noel


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




Re: Jakarta James Nightly Build

2002-08-18 Thread Paul Hammant

Stephen,

 To more knowledgeable heads than I,

 Noel and I have been looking at the nightly build process and are a
 little disturbed by the fact that:

 i) It is failing
 ii) It is failing without notifying james-dev


 This explains a lot.  With no notification of failures, the Avalon 
 Community have been moving along in ignorant bliss (relative to the 
 James Commnity).  Over the last few days that has been discussion 
 concerning inconsitencies in Cornerstone jar brough about by some 
 recent testing I've been doing of James using the Avalon CVS builds of 
 Cornerstone. With gump working we would have spotted the issue months ago.

 Getting this back in place would be really good becuse you can 
 validate that the Avalon Community are not braking anything as a 
 result of maintainance and service development.

Err not true dude.  The problem exists because casting (I think) which 
neither gump nor a guy doing 'ant clean, ant dist' can test for.  

 See the nightly build report here:

 http://jakarta.apache.org/builds/gump/latest/jakarta-james.html

 After examining the definition file here,

 http://jakarta.apache.org/builds/gump/latest/module_jakarta-james.html

 it is very clear that this definition is pretty far out of date.  Among
 other things, the file refers to a James.bar, which if I recall
 correctly was the predecessor to the current James.sar.  So the file
 needs to be updated.


 Pete the right person to talk to - he knows this stuff inside out.

Indeed he is.  Confuses the hell out me me.

- Paul


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




Re: NNTP auth issues

2002-08-18 Thread Paul Hammant

Noel,  Jason,

Shouldn't be any different.  Did you make any progress on this?

You might want to ask Paul Hammant to take a look at it.  For example, I
don't know what the relationship is between the .xinfo files and things like
the assembly file, but the .xinfo for the nntp server doesn't have an entry
for the UsersStore, which is present in the .xinfo for other services.

There is a strong relationship is Noel suspects.

You will have to fork the root NNTP block to declare its need for and 
get DataSource from ComponentManager in its compose method.

At least until we find a way of eliminating the dar I suggest insecure 
anti-pattern of Mailets getting free reign of the ComponentManager.

- Paul

   --- Noel

-Original Message-
From: Jason Webb [mailto:[EMAIL PROTECTED]]
Sent: Thursday, August 15, 2002 6:30
To: 'James Developers List'
Subject: NNTP auth issues


I'm trying to link our database into the NNTP auth mechanism as we
provide an MLM that has a lot of NNTP style features. However, when I
ask for a DataSource from the ComponentManager, I get an exception
thrown at me:

org.apache.avalon.framework.component.ComponentException: Unable to
provide implementation for
org.apache.avalon.cornerstone.services.datasource.DataSourceSelector
at
org.apache.avalon.framework.component.DefaultComponentManager.lookup
DefaultComponentManager.java:70)
at
org.apache.james.nntpserver.AuthServiceImpl.isAuthenticated(AuthServiceI
mpl.java:84)
at
org.apache.james.nntpserver.AuthServiceImpl.isAuthorized(AuthServiceImpl
.java:53)


Etc

It all works fine in the mailet we use for our MLM. Is NNTP special with
regards to DataSources?

Help!

-- Jason


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

  





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