Re: cvs commit: jakarta-james build.xml

2003-02-09 Thread Leo Simons
get

http://cvs.apache.org/viewcvs.cgi/avalon/check-targets.ent
http://cvs.apache.org/viewcvs.cgi/avalon/check-targets.properties

put them in james cvs, modifying them to include additional information 
about the jars james needs (mostly very simple cut-n-paste). Then update 
the james build.xml to kinda macro-include check-targets.ent. Some info 
on that in check-targets.ent itself. Also see

http://cvs.apache.org/viewcvs.cgi/avalon/build.xml.diff?r1=1.159r2=1.160diff_format=h

where I implemented this for avalon.

Notes:
	- it is cleaner and neater to move to maven :D
	- licenses currently fetched from the OSI site, the maven
	  repo will get updated to have the licenses there, and
	  the script should be too

cheers,

- Leo

Pseudo-build-file to give more ideas:

?xml version=1.0?
  !DOCTYPE project [
!ENTITY forrest-targets SYSTEM file:forrest-targets.ent
  ]

project name=James default=main basedir=.
snip/
property name=Name value=JAMES/
snip/
property name=lib.dir value=lib//
snip/
path id=project.class.path
pathelement path=${java.class.path} /
fileset dir=${lib.dir}
include name=*.jar /
/fileset
pathelement path=${target.classes} /
/path
snip/
check-targets;
snip/
!-- Set up properties --
target name=setup-properties depends=setup-dependencies
snip/
/target

!-- defer to check-targets.ent for figuring out dependencies --
target name=check-dependencies 
depends=junit-check,log4j-check,logkit-check,jdk14-check/

!-- defer to check-targets.ent for downloading dependencies --
target name=import-dependencies 
depends=import-junit,import-log4j,import-logkit/

!-- Prepares the build directory --
target name=prepare depends=check-dependencies
snip/
/target

!-- Compiles the source code --
target name=compile 
depends=setup-properties,setup-dependencies,prepare 
description=compiles the source code

mkdir dir=${target.classes}/

javac srcdir=${java.dir}
destdir=${target.classes}
debug=${debug}
optimize=${optimize}
deprecation=${deprecation}
target=1.2
classpath refid=project.class.path /
src path=${test.dir}/
exclude name=org/apache/avalon/framework/logger/LogKit*.java
unless=logkit.present/
exclude 
name=org/apache/avalon/framework/logger/AvalonFormatter.java
unless=logkit.present/
exclude 
name=org/apache/avalon/framework/logger/Log4JLogger.java
unless=log4j.present/
exclude 
name=org/apache/avalon/framework/logger/AbstractLoggable.java
unless=logkit.present/
exclude 
name=org/apache/avalon/framework/logger/Loggable.java
unless=logkit.present/
exclude 
name=org/apache/avalon/framework/logger/Jdk14Logger.java
unless=jdk14.present/
exclude 
name=org/apache/avalon/framework/logger/CommonsLogger.java
unless=commons-logging.present/
/javac
/target

target name=test depends=compile,junit-check 
description=perform unit tests
snip/
/target
snip/


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



SMTP Auth incompatibility (fix included)

2003-02-09 Thread kai . londenberg
Hello,

I just discovered a small incompatibility between
my eMail Client (Forte Agent), and James in the way
they handle SMTP-AUTH.

If James requires SMTP Authentication, he sends something like this at the start of an 
SMTP Session:


220 dualserver.buchseiten.com SMTP Server (JAMES SMTP Server 2.1.1a6) ready Sun, 9 Feb 
2003 11:32:22 +0100 (CET)
EHLO elias
250-dualserver.buchseiten.com Hello elias (192.168.0.112 [192.168.0.112])
250 AUTH LOGIN PLAIN

---

Now, as it turns out, Forte Agent would expect the 
250 AUTH LOGIN PLAIN part of the EHLO Greeting in the Format 250 AUTH=LOGIN PLAIN 
(Note the equals sign).

It simply does not try to authenticate if it receives the
above, and then reports an error if it gets a response
that authentification would have been required.

I tried the same with a Postfix setup, and Postfix sends an EHLO greeting like this:


220 dualserver.buchseiten.com ESMTP Postfix (Debian/GNU)
EHLO elias
250-dualserver.buchseiten.com
250-PIPELINING
250-SIZE 1024
250-VRFY
250-ETRN
250-AUTH GSSAPI CRAM-MD5 DIGEST-MD5 LOGIN PLAIN NTLM
250-AUTH=GSSAPI CRAM-MD5 DIGEST-MD5 LOGIN PLAIN NTLM
250-XVERP
250 8BITMIME
AUTH LOGIN


As you can see, there are 2 250-AUTH Statements - one without, and one with an 
equals sign. 

Forte Agent works perfectly well in conjuction with Postfix, so I guessed the missing 
equals sign was the problem.

And actually, it was. I changed the following lines from
org/apache/james/smtpserver/SMTPHandler.java in the methods doHELO() and doEHLO() 
(both contain partially the same code)

--- original ---
if (theConfigData.isAuthRequired()) {
writeLoggedResponse(responseString);
responseString = 250 AUTH LOGIN PLAIN;
}


 fixed -
if (theConfigData.isAuthRequired()) {
writeLoggedResponse(responseString);
responseString = 250-AUTH LOGIN PLAIN;
writeLoggedResponse(responseString);
responseString = 250 AUTH=LOGIN PLAIN;
}


After I rebuilt, it worked fine ..

I don't know if other eMail Clients are affected by this, but Forte Agent definitely 
is. 

with best regards,

   Kai Londenberg


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


RE: Critical bug in James 2.1 and 2.1.1

2003-02-09 Thread kai . londenberg

Hello,

In the meantime I upgraded to James 2.1.1a6.
In this version, the Exception did not occur. 

I guess this is due to the fact that JavaMail 1.3 along with a current activation.jar 
are used in this version. I've written a few Applications using JavaMail myself, and 
I've always had problems with JavaMail 1.2 - Version 1.3 is much more robust.

I can only recommend to release 2.1.1 - Put in the latest bug fixes (note my SMTP Auth 
incompatibility report :)) and release it as a Milestone Release at least.

When it comes to the MySQL Corruption, obviuously it wasn't James fault, since even 
when the Exception happened, it released every resource gracefully, and even
finished the Insert.

With the Exception being gone in 2.1.1a6, everything works fine - until I use MySQL 
Front to view the table, that is.

As it turned out, somehow my MySQL Client seems to be responsible for the problem. It 
accessed the data, and it seems as if it wasn't able to cope with the stored data and 
locked up. So maybe there is a bug in the libraries it uses to access MySQL.

PHPMyAdmin on the other hand is capable of dealing with the contents of the tables.

Another coincidence seems to be that myisamchk reports errors on perfectly working 
tables, even on empty ones. 

I don't know why - maybe myisamchk doesn't know how to handle primary keys of varchar 
type, and/or spanning two columns. Or the Table structure is somehow working, but 
invalid.

Maybe those of you who also use MySQL should try myisamchk on their own tables, and 
see if they get error-reports as well.

The fact that I cannot reproduce your results
notwithstanding, I have several observations.

First, thank you for the report.  Looking over the stack trace has given me
ideas regarding optimizing future versions of James. We should be able to 
speed up performance of the message stores.

In the meantime, I see what enables the potential problem, and I 
don't believe that we need to do it that way.
We just want to stream the raw data (minus the headers) to the output stream.
Will see if I can bypass that portion of JavaMail entirely. 
Should have a test build for that this weekend.

By the way:

I'd like to contribute to James as a developer. 

I am propably going to use James as the underlying Mail-Server in a Unified Messaging 
Portal. (See http://www.my-vwclub.de and http://www.zoomie.de - both in German)

As an experienced Java developer, I guess that I'll go ahead and fix bugs and 
implement new features out of sheer necessity. And why shouldn't I contribute those 
additions back to the official James distribution ?

What do I need to do to get CVS Access ?

with best regards,


Kai Londenberg

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


RE: Critical bug in James 2.1 and 2.1.1

2003-02-09 Thread Danny Angus
Kai,


As an experienced Java developer, I guess that I'll go ahead and fix bugs and 
implement new features out of sheer necessity. And why shouldn't I contribute those 
additions back to the official James distribution ?

No reason at all, we'd be glad to acceot any contributions.


What do I need to do to get CVS Access ?

First read this http://james.apache.org/contribute.html ... Now get involved, 
particiate in discussions, give people advice, but most importantly submit patches and 
code.
The existing commiters will be watching you, and if we like what you're doing someone 
will propose you and we'll hold an election.

d.



Re: cvs commit: jakarta-james build.xml

2003-02-09 Thread Stephen McConnell

Thanks Leo!

Leo Simons wrote:


get

http://cvs.apache.org/viewcvs.cgi/avalon/check-targets.ent
http://cvs.apache.org/viewcvs.cgi/avalon/check-targets.properties

put them in james cvs, modifying them to include additional 
information about the jars james needs (mostly very simple 
cut-n-paste). Then update the james build.xml to kinda macro-include 
check-targets.ent. Some info on that in check-targets.ent itself. Also 
see

http://cvs.apache.org/viewcvs.cgi/avalon/build.xml.diff?r1=1.159r2=1.160diff_format=h 


where I implemented this for avalon.

Notes:
- it is cleaner and neater to move to maven :D
- licenses currently fetched from the OSI site, the maven
  repo will get updated to have the licenses there, and
  the script should be too

cheers,

- Leo

Pseudo-build-file to give more ideas:

?xml version=1.0?
  !DOCTYPE project [
!ENTITY forrest-targets SYSTEM file:forrest-targets.ent
  ]

project name=James default=main basedir=.
snip/
property name=Name value=JAMES/
snip/
property name=lib.dir value=lib//
snip/
path id=project.class.path
pathelement path=${java.class.path} /
fileset dir=${lib.dir}
include name=*.jar /
/fileset
pathelement path=${target.classes} /
/path
snip/
check-targets;
snip/
!-- Set up properties --
target name=setup-properties depends=setup-dependencies
snip/
/target

!-- defer to check-targets.ent for figuring out dependencies --
target name=check-dependencies 
depends=junit-check,log4j-check,logkit-check,jdk14-check/

!-- defer to check-targets.ent for downloading dependencies --
target name=import-dependencies 
depends=import-junit,import-log4j,import-logkit/

!-- Prepares the build directory --
target name=prepare depends=check-dependencies
snip/
/target

!-- Compiles the source code --
target name=compile 
depends=setup-properties,setup-dependencies,prepare 
description=compiles the source code

mkdir dir=${target.classes}/

javac srcdir=${java.dir}
destdir=${target.classes}
debug=${debug}
optimize=${optimize}
deprecation=${deprecation}
target=1.2
classpath refid=project.class.path /
src path=${test.dir}/
exclude 
name=org/apache/avalon/framework/logger/LogKit*.java
unless=logkit.present/
exclude 
name=org/apache/avalon/framework/logger/AvalonFormatter.java
unless=logkit.present/
exclude 
name=org/apache/avalon/framework/logger/Log4JLogger.java
unless=log4j.present/
exclude 
name=org/apache/avalon/framework/logger/AbstractLoggable.java
unless=logkit.present/
exclude 
name=org/apache/avalon/framework/logger/Loggable.java
unless=logkit.present/
exclude 
name=org/apache/avalon/framework/logger/Jdk14Logger.java
unless=jdk14.present/
exclude 
name=org/apache/avalon/framework/logger/CommonsLogger.java
unless=commons-logging.present/
/javac
/target

target name=test depends=compile,junit-check 
description=perform unit tests
snip/
/target
snip/


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




--

Stephen J. McConnell
mailto:[EMAIL PROTECTED]
http://www.osm.net




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




cvs commit: jakarta-james check-targets.properties check-targets.ent default.properties build.xml

2003-02-09 Thread mcconnell
mcconnell2003/02/09 06:49:06

  Modified:.default.properties build.xml
  Added:   .check-targets.properties check-targets.ent
  Log:
  Addition of autochecking of jars plus some property checking.
  
  Revision  ChangesPath
  1.2   +20 -20jakarta-james/default.properties
  
  Index: default.properties
  ===
  RCS file: /home/cvs/jakarta-james/default.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- default.properties9 Feb 2003 02:54:42 -   1.1
  +++ default.properties9 Feb 2003 14:49:06 -   1.2
  @@ -103,61 +103,61 @@
   xerces.jar = ${lib.dir}/xerces-1.4.3.jar
   
   # - Avalon Framework -
  -avalon-framework.jar=${phoenix-lib}/avalon-framework-4.1.3.jar
  +avalon-framework.jar=${phoenix.lib.dir}/avalon-framework-4.1.3.jar
   
   # - Cornerstone threads, version 1.0 or later -
  -cornerstone-threads.jar=${candidates}/cornerstone-threads-1.0.jar
  +cornerstone-threads.jar=${candidates.dir}/cornerstone-threads-1.0.jar
   
   # - Cornerstone connection, version 1.0 or later -
  -cornerstone-connection.jar=${candidates}/cornerstone-connection-1.0.jar
  +cornerstone-connection.jar=${candidates.dir}/cornerstone-connection-1.0.jar
   
   # - Cornerstone masterstore, version 1.0 or later -
  -cornerstone-store.jar=${candidates}/cornerstone-store-1.0.jar
  +cornerstone-store.jar=${candidates.dir}/cornerstone-store-1.0.jar
   
   # - Cornerstone sockets, version 1.0 or later -
  -cornerstone-sockets.jar=${candidates}/cornerstone-sockets-1.0.jar
  +cornerstone-sockets.jar=${candidates.dir}/cornerstone-sockets-1.0.jar
   
   # - Cornerstone scheduler, version 1.0 or later -
  -cornerstone-scheduler.jar=${candidates}/cornerstone-scheduler-1.0.jar
  +cornerstone-scheduler.jar=${candidates.dir}/cornerstone-scheduler-1.0.jar
   
   # - Cornerstone scheduler, version 1.0 or later -
  -cornerstone-datasources.jar=${candidates}/cornerstone-datasources-1.0.jar
  +cornerstone-datasources.jar=${candidates.dir}/cornerstone-datasources-1.0.jar
   
   # - Excalibur collections, version 1.0 or later -
  -excalibur-collections.jar=${phoenix-lib}/excalibur-collections-1.0.jar
  +excalibur-collections.jar=${phoenix.lib.dir}/excalibur-collections-1.0.jar
   
   # - Excalibur threadcontext, version 1.0 or later -
  -excalibur-threadcontext.jar=${phoenix-lib}/excalibur-threadcontext-1.0.jar
  +excalibur-threadcontext.jar=${phoenix.lib.dir}/excalibur-threadcontext-1.0.jar
   
   # - Excalibur cli -
  -excalibur-cli.jar=${phoenix-lib}/excalibur-cli-1.0.jar
  +excalibur-cli.jar=${phoenix.lib.dir}/excalibur-cli-1.0.jar
   
   # - Excalibur thread, version 1.0 or later -
  -excalibur-thread.jar=${candidates}/excalibur-thread-1.1.jar
  +excalibur-thread.jar=${candidates.dir}/excalibur-thread-1.1.jar
   
   # - Excalibur pool -
  -excalibur-pool.jar=${candidates}/excalibur-pool-1.2.jar
  +excalibur-pool.jar=${candidates.dir}/excalibur-pool-1.2.jar
   
   # - Excalibur datasource -
  -excalibur-datasource.jar=${lib}/excalibur-datasource-1.0.jar
  +excalibur-datasource.jar=${lib.dir}/excalibur-datasource-1.0.jar
   
   # - Excalibur datasource -
  -excalibur-io.jar=${phoenix-lib}/excalibur-io-1.1.jar
  +excalibur-io.jar=${phoenix.lib.dir}/excalibur-io-1.1.jar
   
   # - Javax mail -
  -javax-mail.jar=${lib}/mail_1_3.jar
  +javax-mail.jar=${lib.dir}/mail_1_3.jar
   
   # - Activation -
  -javax-activation.jar=${lib}/activation.jar
  +javax-activation.jar=${lib.dir}/activation.jar
   
   # - DNS -
  -dns.jar=${lib}/dnsjava-1.3.2.jar
  +dns.jar=${lib.dir}/dnsjava-1.3.2.jar
   
   # - Commons Net -
  -commons-net.jar=${lib}/commons-net-1.0.0-dev.jar
  +commons-net.jar=${lib.dir}/commons-net-1.0.0-dev.jar
   
   # - Jakarta ORO -
  -jakarta-oro.jar=${lib}/jakarta-oro-2.0.1.jar
  +jakarta-oro.jar=${lib.dir}/jakarta-oro-2.0.1.jar
   
   # - Commons Collections -
  -commons-collections.jar=${candidates}/commons-collections-2.1.jar
  +commons-collections.jar=${candidates.dir}/commons-collections-2.1.jar
  
  
  
  1.126 +14 -1 jakarta-james/build.xml
  
  Index: build.xml
  ===
  RCS file: /home/cvs/jakarta-james/build.xml,v
  retrieving revision 1.125
  retrieving revision 1.126
  diff -u -r1.125 -r1.126
  --- build.xml 9 Feb 2003 03:41:15 -   1.125
  +++ build.xml 9 Feb 2003 14:49:06 -   1.126
  @@ -1,4 +1,8 @@
   ?xml version=1.0?
  +  !DOCTYPE project [
  +!ENTITY check-targets SYSTEM file:check-targets.ent
  +  ]
  +
   !-- ==
   
James build file $Revision$  Committed on $Date$ by: $Author$
  @@ -63,9 +67,18 @@
   /fileset
   

Re: cvs commit: jakarta-james build.xml

2003-02-09 Thread Stephen McConnell


Noel J. Bergman wrote:


There are libraries that we are likely to need to remove from the CVS,
specifically, mail_1_3.jar and activation.jar.  We are allowed to put them
in the builds, but not in the CVS, apparently.  What I have in mind is
modifying .cvsignore and the Ant scripts so that if they are not present,
the Ant script tells the user that they need to be downloaded, and from
where.  The .cvsignore will keep cvs from trying to put them back in the
module.
 


Noel:

I've put in place Leo's script that puts up details of where to download 
javamail and activation.  If you want to see it in action - just rename 
either of these resources in james/lib you will get the details of where 
to download and the license location.  I havn't done the stuff related 
to .cvsignore - maybe we can get to that later (I think it's a good idea).

Cheers, Steve.

--

Stephen J. McConnell
mailto:[EMAIL PROTECTED]
http://www.osm.net




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



cvs commit: jakarta-james build.xml

2003-02-09 Thread mcconnell
mcconnell2003/02/09 07:18:52

  Modified:.build.xml
  Log:
  Enable dependency checking.
  
  Revision  ChangesPath
  1.127 +4 -3  jakarta-james/build.xml
  
  Index: build.xml
  ===
  RCS file: /home/cvs/jakarta-james/build.xml,v
  retrieving revision 1.126
  retrieving revision 1.127
  diff -u -r1.126 -r1.127
  --- build.xml 9 Feb 2003 14:49:06 -   1.126
  +++ build.xml 9 Feb 2003 15:18:52 -   1.127
  @@ -77,8 +77,9 @@
   Dependency Check
   ===
   --
  +
   check-targets;
  -target name=test depends=javamail-check,activation-check,junit-check/
  +target name=check-dependencies 
depends=javamail-check,activation-check,junit-check/
   
   !--
   ===
  @@ -93,7 +94,7 @@
   all targets
   ===
   --
  -target name=prepare-common
  +target name=prepare-common depends=check-dependencies
   
 echo message=Preparing code/
   
  
  
  

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




cvs commit: jakarta-james/src/java/org/apache/james/smtpserver SMTPHandler.java

2003-02-09 Thread noel
noel2003/02/09 09:33:25

  Modified:src/java/org/apache/james/smtpserver Tag: branch_2_1_fcs
SMTPHandler.java
  Log:
  Some SMTP clients require the '=' in 250 AUTH=LOGIN
  
  Revision  ChangesPath
  No   revision
  
  
  No   revision
  
  
  1.35.4.6  +8 -4  
jakarta-james/src/java/org/apache/james/smtpserver/SMTPHandler.java
  
  Index: SMTPHandler.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/smtpserver/SMTPHandler.java,v
  retrieving revision 1.35.4.5
  retrieving revision 1.35.4.6
  diff -u -r1.35.4.5 -r1.35.4.6
  --- SMTPHandler.java  6 Feb 2003 21:06:02 -   1.35.4.5
  +++ SMTPHandler.java  9 Feb 2003 17:33:25 -   1.35.4.6
  @@ -604,10 +604,12 @@
   responseString = clearResponseBuffer();
   if (theConfigData.isAuthRequired()) {
   writeLoggedResponse(responseString);
  -responseString = 250 AUTH LOGIN PLAIN;
  +responseString = 250-AUTH LOGIN PLAIN;
  +writeLoggedResponse(responseString);
  +responseString = 250 AUTH=LOGIN PLAIN;
   }
  -}
   writeLoggedFlushedResponse(responseString);
  +}
   }
   
   /**
  @@ -648,7 +650,9 @@
   responseString = clearResponseBuffer();
   if (theConfigData.isAuthRequired()) {
   writeLoggedResponse(responseString);
  -responseString = 250 AUTH LOGIN PLAIN;
  +responseString = 250-AUTH LOGIN PLAIN;
  +writeLoggedResponse(responseString);
  +responseString = 250 AUTH=LOGIN PLAIN;
   }
   writeLoggedFlushedResponse(responseString);
   }
  
  
  

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




RE: Critical bug in James 2.1 and 2.1.1

2003-02-09 Thread Noel J. Bergman
Kai,

It probably was the activation.jar, but I just made some changes to avoid
rendering the content with data handlers unless we really must.  The same
changes should also address Danny's issue with volatile Message-ID.  These
changes are not in HEAD, yet, but will be in 2.1.1a7, which I'll be
uploading shortly.

Please test it to make sure that I haven't accidently introduced a
regression.  So far it looks good in my tests, but my tests do more in terms
of load testing than functional verification.

I'm not seeing problems with myisamchk, but I'll check again.

We would be happy to have you contribute to James.  Our plans for James v3
further expand it into a unified messaging server.  You may have noticed
comments regarding a Jabber service, for example, and both IMAP and NNTP
need attention.

CVS access for writes is earned (and voted upon).  CVS access for reads is
easy.  I just posted a message with instructions, since the question has
come up before.  I'd thought I had sent that message on Thursday, but
apparently it had still been pending.

--- Noel

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Sunday, February 09, 2003 8:52
To: [EMAIL PROTECTED]
Subject: RE: Critical bug in James 2.1 and 2.1.1



Hello,

In the meantime I upgraded to James 2.1.1a6.
In this version, the Exception did not occur.

I guess this is due to the fact that JavaMail 1.3 along with a current
activation.jar are used in this version. I've written a few Applications
using JavaMail myself, and I've always had problems with JavaMail 1.2 -
Version 1.3 is much more robust.

I can only recommend to release 2.1.1 - Put in the latest bug fixes (note my
SMTP Auth incompatibility report :)) and release it as a Milestone Release
at least.

When it comes to the MySQL Corruption, obviuously it wasn't James fault,
since even when the Exception happened, it released every resource
gracefully, and even
finished the Insert.

With the Exception being gone in 2.1.1a6, everything works fine - until I
use MySQL Front to view the table, that is.

As it turned out, somehow my MySQL Client seems to be responsible for the
problem. It accessed the data, and it seems as if it wasn't able to cope
with the stored data and locked up. So maybe there is a bug in the libraries
it uses to access MySQL.

PHPMyAdmin on the other hand is capable of dealing with the contents of the
tables.

Another coincidence seems to be that myisamchk reports errors on perfectly
working tables, even on empty ones.

I don't know why - maybe myisamchk doesn't know how to handle primary keys
of varchar type, and/or spanning two columns. Or the Table structure is
somehow working, but invalid.

Maybe those of you who also use MySQL should try myisamchk on their own
tables, and see if they get error-reports as well.

The fact that I cannot reproduce your results
notwithstanding, I have several observations.

First, thank you for the report.  Looking over the stack trace has given me
ideas regarding optimizing future versions of James. We should be able to
speed up performance of the message stores.

In the meantime, I see what enables the potential problem, and I
don't believe that we need to do it that way.
We just want to stream the raw data (minus the headers) to the output
stream.
Will see if I can bypass that portion of JavaMail entirely.
Should have a test build for that this weekend.

By the way:

I'd like to contribute to James as a developer.

I am propably going to use James as the underlying Mail-Server in a Unified
Messaging Portal. (See http://www.my-vwclub.de and http://www.zoomie.de -
both in German)

As an experienced Java developer, I guess that I'll go ahead and fix bugs
and implement new features out of sheer necessity. And why shouldn't I
contribute those additions back to the official James distribution ?

What do I need to do to get CVS Access ?

with best regards,


Kai Londenberg


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




RE: Message-ID bug

2003-02-09 Thread Noel J. Bergman
Jason (and Danny),

 We rely on the message-id being correct (i.e. the original message).

Can you check to see if the current patch I submitted to the v2.1 branch
works for you?

--- Noel


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




Re: Submitting a patch

2003-02-09 Thread Harmeet Bedi
- Original Message -
From: Noel J. Bergman [EMAIL PROTECTED]
 If you are on linux, cvs is included in most distros.  If you are on
 Windows, there are several good CVS GUIs.

Would like to add that cvs is included in cygwin distribution. It is
compatible with linux cvs and works very well.
One can get cygwin from http://sources.redhat.com/cygwin/
It provides unix environment on windows and has other tools like patch, diff
etc.

Harmeet


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




Third party jar dependency checking

2003-02-09 Thread Noel J. Bergman
Stephen and Leo,

Thanks!  :-)

I'll update my copy of HEAD later today, and then try to backport the
changes to the v2.1 branch, without changing the Avalon dependencies.

After all of the Avalon jars are released, maybe we should look at updating
the v2.1 branch, but not until after all of the necessary jars are in
Release state.

--- Noel

-Original Message-
From: Stephen McConnell [mailto:[EMAIL PROTECTED]]
Sent: Sunday, February 09, 2003 9:56
To: James Developers List
Subject: Re: cvs commit: jakarta-james build.xml

Noel J. Bergman wrote:

There are libraries that we are likely to need to remove from the CVS,
specifically, mail_1_3.jar and activation.jar.  We are allowed to put them
in the builds, but not in the CVS, apparently.  What I have in mind is
modifying .cvsignore and the Ant scripts so that if they are not present,
the Ant script tells the user that they need to be downloaded, and from
where.  The .cvsignore will keep cvs from trying to put them back in the
module.



Noel:

I've put in place Leo's script that puts up details of where to download
javamail and activation.  If you want to see it in action - just rename
either of these resources in james/lib you will get the details of where
to download and the license location.  I havn't done the stuff related
to .cvsignore - maybe we can get to that later (I think it's a good idea).

Cheers, Steve.

--

Stephen J. McConnell
mailto:[EMAIL PROTECTED]
http://www.osm.net




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


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




cvs commit: jakarta-james/www changelog.html weare.html

2003-02-09 Thread noel
noel2003/02/09 11:21:31

  Modified:www  changelog.html weare.html
  Log:
  updated changes, added Kai Londenberg to list of contributors
  
  Revision  ChangesPath
  1.16  +6 -0  jakarta-james/www/changelog.html
  
  Index: changelog.html
  ===
  RCS file: /home/cvs/jakarta-james/www/changelog.html,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- changelog.html6 Feb 2003 06:19:26 -   1.15
  +++ changelog.html9 Feb 2003 19:21:30 -   1.16
  @@ -174,6 +174,12 @@
   
   pExpected release February 2003/p
   
  +li [KL] (code) SMTP AUTH compatibility change/li
  +
  +li [NjB] (code) Changed MimeMessageWrapper to use the raw stream when 
possible/li
  +
  +li [NjB] (code) Fixed synchronization bug in AvalonMailRepository/li
  +
   li [NjB] (update) Updated Avalon LogKit/li
   
   li [NjB] (code) Infinite loops are interruptable/li
  
  
  
  1.16  +4 -0  jakarta-james/www/weare.html
  
  Index: weare.html
  ===
  RCS file: /home/cvs/jakarta-james/www/weare.html,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- weare.html6 Feb 2003 06:19:26 -   1.15
  +++ weare.html9 Feb 2003 19:21:31 -   1.16
  @@ -292,6 +292,10 @@
   bSerge Sergei Sozonoff (serge at globalbeach.com) (SS4)/b
   /p
   
  +p
  +bKai Londenberg (kai.londenberg at my-vwclub.de) [KL]/b
  +/p
  +
   /blockquote
   /td
   /tr
  
  
  

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




cvs commit: jakarta-james/src/xdocs changelog.xml weare.xml

2003-02-09 Thread noel
noel2003/02/09 11:26:05

  Modified:src/xdocs changelog.xml weare.xml
  Log:
  updated changes, added Kai Londenberg and Stephen McConnell to contributors
  
  Revision  ChangesPath
  1.16  +3 -0  jakarta-james/src/xdocs/changelog.xml
  
  Index: changelog.xml
  ===
  RCS file: /home/cvs/jakarta-james/src/xdocs/changelog.xml,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- changelog.xml 6 Feb 2003 06:14:29 -   1.15
  +++ changelog.xml 9 Feb 2003 19:26:05 -   1.16
  @@ -20,6 +20,9 @@
   
   section name=Version 2.1.1
   pExpected release February 2003/p
  +li [KL] (code) SMTP AUTH compatibility change/li
  +li [NjB] (code) Changed MimeMessageWrapper to use the raw stream when 
possible/li
  +li [NjB] (code) Fixed synchronization bug in AvalonMailRepository/li
   li [NjB] (update) Updated Avalon LogKit/li
   li [NjB] (code) Infinite loops are interruptable/li
   li [HB, NjB] (code) Fixed NNTP crossposting/li
  
  
  
  1.14  +3 -2  jakarta-james/src/xdocs/weare.xml
  
  Index: weare.xml
  ===
  RCS file: /home/cvs/jakarta-james/src/xdocs/weare.xml,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- weare.xml 28 Jan 2003 21:06:56 -  1.13
  +++ weare.xml 9 Feb 2003 19:26:05 -   1.14
  @@ -4,8 +4,7 @@
   
properties
 titleWho We Are/title
  -  author email=[EMAIL PROTECTED]Danny Angus/author
  -  author email=[EMAIL PROTECTED]Serge Knystautas/author
  +  author email=[EMAIL PROTECTED]James Team/author
/properties
   
   body
  @@ -23,6 +22,7 @@
   pbDanny Angus (danny at autonomous.co.uk) (DA)/bbr/ Danny is CTO of a 
href=http://www.autonomous.co.uk;Autonomous Software Ltd./a where I try not to get 
too distracted by open source projects./p
   pbPeter M. Goldstein (farsight at alum.mit.edu) (PG)/b/p
   pbNoel J. Bergman (noel at devtech.com) (NjB)/b/p
  +pbStephen J. McConnell (mcconnell at apache.org) (SJM)/b/p
   /section
   
   section name=Other Contributors
  @@ -46,6 +46,7 @@
   pbSteve Short (sshort at postx.com) (SS3)/b/p
   pbAaron Knauf (aknauf at xtra.co.nz) (AK)/b/p
   pbSerge Sergei Sozonoff (serge at globalbeach.com) (SS4)/b/p
  +pbKai Londenberg (kai.londenberg at my-vwclub.de) [KL]/b/p
   /section
   
   /body
  
  
  

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




cvs commit: jakarta-james/www weare.html

2003-02-09 Thread noel
noel2003/02/09 11:27:27

  Modified:www  weare.html
  Log:
  Added Stephen McConnell to Committers
  
  Revision  ChangesPath
  1.17  +6 -4  jakarta-james/www/weare.html
  
  Index: weare.html
  ===
  RCS file: /home/cvs/jakarta-james/www/weare.html,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- weare.html9 Feb 2003 19:21:31 -   1.16
  +++ weare.html9 Feb 2003 19:27:27 -   1.17
  @@ -2,10 +2,8 @@
   head
   META http-equiv=Content-Type content=text/html; charset=iso-8859-1
   titleApache James - Who We Are - Java Mail and News server, SMTP POP3 NNTP/title
  -meta value=Danny Angus name=author
  -meta value=[EMAIL PROTECTED] name=email
  -meta value=Serge Knystautas name=author
  -meta value=[EMAIL PROTECTED] name=email
  +meta value=James Team name=author
  +meta value=[EMAIL PROTECTED] name=email
   meta 
content=mail,email,news,SMTP,POP3,NNTP,IMAP,MAILET,JAVA,WINDOWS,LINUX,server,Windows,2k,NT,98,ME,XP,Linux.
 name=keywords
   meta content=Free (Open Source) Java mail server (mailserver) from Apache. 
Providing SMTP POP3 IMAP and News NNTP runs on Microsoft Windows 2k,NT,98,ME,XP, and 
most flavours of Linux. name=description
   meta content=ALL name=ROBOTS
  @@ -198,6 +196,10 @@
   
   p
   bNoel J. Bergman (noel at devtech.com) (NjB)/b
  +/p
  +
  +p
  +bStephen J. McConnell (mcconnell at apache.org) (SJM)/b
   /p
   
   /blockquote
  
  
  

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




cvs commit: jakarta-james/src/xdocs changelog.xml weare.xml

2003-02-09 Thread noel
noel2003/02/09 11:28:40

  Modified:src/xdocs Tag: branch_2_1_fcs changelog.xml weare.xml
  Log:
  updated changes, added Kai Londenberg and Stephen McConnell to contributors
  
  Revision  ChangesPath
  No   revision
  
  
  No   revision
  
  
  1.11.4.4  +3 -0  jakarta-james/src/xdocs/changelog.xml
  
  Index: changelog.xml
  ===
  RCS file: /home/cvs/jakarta-james/src/xdocs/changelog.xml,v
  retrieving revision 1.11.4.3
  retrieving revision 1.11.4.4
  diff -u -r1.11.4.3 -r1.11.4.4
  --- changelog.xml 6 Feb 2003 06:14:44 -   1.11.4.3
  +++ changelog.xml 9 Feb 2003 19:28:40 -   1.11.4.4
  @@ -13,6 +13,9 @@
   /p
   section name=Version 2.1.1
   pExpected release February 2003/p
  +li [KL] (code) SMTP AUTH compatibility change/li
  +li [NjB] (code) Changed MimeMessageWrapper to use the raw stream when 
possible/li
  +li [NjB] (code) Fixed synchronization bug in AvalonMailRepository/li
   li [NjB] (update) Updated Avalon LogKit/li
   li [NjB] (code) Infinite loops are interruptable/li
   li [HB, NjB] (code) Fixed NNTP crossposting/li
  
  
  
  1.12.4.2  +3 -2  jakarta-james/src/xdocs/weare.xml
  
  Index: weare.xml
  ===
  RCS file: /home/cvs/jakarta-james/src/xdocs/weare.xml,v
  retrieving revision 1.12.4.1
  retrieving revision 1.12.4.2
  diff -u -r1.12.4.1 -r1.12.4.2
  --- weare.xml 30 Jan 2003 04:26:50 -  1.12.4.1
  +++ weare.xml 9 Feb 2003 19:28:40 -   1.12.4.2
  @@ -4,8 +4,7 @@
   
properties
 titleWho We Are/title
  -  author email=[EMAIL PROTECTED]Danny Angus/author
  -  author email=[EMAIL PROTECTED]Serge Knystautas/author
  +  author email=[EMAIL PROTECTED]James Team/author
/properties
   
   body
  @@ -23,6 +22,7 @@
   pbDanny Angus (danny at autonomous.co.uk) (DA)/bbr/ Danny is CTO of a 
href=http://www.autonomous.co.uk;Autonomous Software Ltd./a where I try not to get 
too distracted by open source projects./p
   pbPeter M. Goldstein (farsight at alum.mit.edu) (PG)/b/p
   pbNoel J. Bergman (noel at devtech.com) (NjB)/b/p
  +pbStephen J. McConnell (mcconnell at apache.org) (SJM)/b/p
   /section
   
   section name=Other Contributors
  @@ -46,6 +46,7 @@
   pbSteve Short (sshort at postx.com) (SS3)/b/p
   pbAaron Knauf (aknauf at xtra.co.nz) (AK)/b/p
   pbSerge Sergei Sozonoff (serge at globalbeach.com) (SS4)/b/p
  +pbKai Londenberg (kai.londenberg at my-vwclub.de) [KL]/b/p
   /section
   
   /body
  
  
  

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




cvs commit: jakarta-james/src/java/org/apache/james/core MimeMessageWrapper.java

2003-02-09 Thread noel
noel2003/02/09 11:29:54

  Modified:src/java/org/apache/james/core Tag: branch_2_1_fcs
MimeMessageWrapper.java
  Log:
  removed tabs
  
  Revision  ChangesPath
  No   revision
  
  
  No   revision
  
  
  1.17.4.4  +4 -4  
jakarta-james/src/java/org/apache/james/core/MimeMessageWrapper.java
  
  Index: MimeMessageWrapper.java
  ===
  RCS file: 
/home/cvs/jakarta-james/src/java/org/apache/james/core/MimeMessageWrapper.java,v
  retrieving revision 1.17.4.3
  retrieving revision 1.17.4.4
  diff -u -r1.17.4.3 -r1.17.4.4
  --- MimeMessageWrapper.java   9 Feb 2003 06:54:16 -   1.17.4.3
  +++ MimeMessageWrapper.java   9 Feb 2003 19:29:54 -   1.17.4.4
  @@ -262,9 +262,9 @@
   MimeMessageWrapper wrapper = (MimeMessageWrapper)message;
   wrapper.writeTo(headerOs, bodyOs, ignoreList);
   } else {
  - if(message.getMessageID() == null) {
  - message.saveChanges();
  - }
  +if(message.getMessageID() == null) {
  +message.saveChanges();
  +}
   
   //Write the headers (minus ignored ones)
   Enumeration headers = message.getNonMatchingHeaderLines(ignoreList);
  @@ -920,7 +920,7 @@
   if (message == null) {
   loadMessage();
   }
  - modified = true;
  +modified = true;
   message.saveChanges();
   }
   
  
  
  

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




CIDr Addition

2003-02-09 Thread alan.gerhard
Just read the Submit Patch post and understand that - have
winCVS and am gettting aquainted with it ...

I am adding two new classes and patching two others heavily.

The attached files are my contribution to James for the CIDR
process we spoke of earlier.

It compiles and runs - I will be testing this more later on
this afternoon, but in the meantime, I thought I would pass
them off for review.

I can diff the RemoteAddressInNetwork and
RemortAddressNotInNetwork and pass those in as patches, but
without the other two classes, they are meaningless.

Thanks for your time ...
Alan



- Message Forwarded on 2003-02-09 -
From: alan.gerhard [EMAIL PROTECTED]
To: James Users List [EMAIL PROTECTED]
Subject: RE: CIDR Notation
Date: Sun, 02 Feb 2003 03:00:52 -0500

Noel -

You are suggesting to create a
apache.mailet.GenericAddressMatcher abstract that folds most
of the 'common' code of the RemoteAddrInNetwork and
RemoteAddrNotInNetwork classes - similar to the
GenericRecipientMatcher abstract ..

Okay - I'll have a good at it;
see what I can come up with.



 Alan,

 I don't believe that you are missing something.  It isn't
 an oversight, just nothing that anyone got around to.
 When I first picked up the code, it didn't accept domain
 names, either.  I think I have some code for CIDR around
 here somewhere, but never finished adding it to those
 matchers.

 Actually, if you're going to do it, I suggest that you
 take those matchers, factor out most of the code into
 GenericAddressMatcher, and then subclass them for the
 specific behavior.  That'll make it easier to enhance them
 in the future.

 --- Noel

/*
 * Copyright (C) The Apache Software Foundation. All rights reserved.
 *
 * This software is published under the terms of the Apache Software License
 * version 1.1, a copy of which has been included with this distribution in
 * the LICENSE file.
 */
package org.apache.james.util;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.math.BigInteger;
import java.util.StringTokenizer;

/**
  *   RFC 1518, 1519 - Classless Inter-Domain Routing (CIDR)
  *   Known as 'Slash Notation' where an IP address range is described as
  *   IPADDRESS / SUBMASK =
  *   60.182.194.0/24 =
  *   a Class C =
  *   60.182.194.0 - 60.182.194.255
  *
  *   Simple class used to validate and check a given IP addresses against
  *   the allowed range as described above
  *
  *   As of 2003-02-08 System.out.println() needs to be either piped back to caller
  *   or switched with DEEP_DEBUG boolean; currently, with error, output is sent to 
the console
  *
  *   @author Alan Gerhard[EMAIL PROTECTED]
  *   @version This is $Revision: 5 $
  */

public class CIDR  {
/**
  *   Stirng constants based on the expected characters as defined for the CIDR 
Notation
  */
private String  SLASH = /;
private String  DOT = .;

/**
  * Method to check whether or not the given InetAddress object falls within
  * the sub-net as described by the given CIDR String.
  * @param pInetObj - an InetAddress object to be tesed
  * @paran pCIDR - a String representation of a CIDR subnet definition
  * @param pValidate - boolean specifying weather to validate the CIDR or not
  * @return ( addressInSubnet(pInetObj.getHostAddress(), pCIDR, pValidate) )
  */
public boolean addressInSubnet ( InetAddress pInetObj, String pCIDR, boolean 
pValidate ) {
return( addressInSubnet ( pInetObj.getHostAddress(), pCIDR, pValidate) );
}   //  EoM

/**
  * Method to check whether or not the given string IP Address ( 127.0.0.1 ) falls 
within
  * the sub-net as described by the given CIDR String.
  * @param pInetObj - a String representation of a valid IP address to be tesed
  * @paran pCIDR - a String representation of a CIDR subnet definition
  * @param pValidate - boolean specifying weather to validate the CIDR or not
  * @return true if pIPAddr is within the subnet as defined by pCIDR
  */
public boolean addressInSubnet ( String pIPAddr, String pCIDR, boolean pValidate  
) {
if (pValidate ) {
if ( !validCIDR(pCIDR) ) {
System.out.println(CIDR [ + pCIDR + ] is not valid);
return (false);
}
}

BigInteger theMask = new BigInteger ( mkBinaryMask(pCIDR),2 );

BigInteger testIPAddress = new BigInteger 
(mkBinaryAddress(pIPAddr).substring(0,mkBinaryMask(pCIDR).length()), 2 );

BigInteger theCIDR = new BigInteger (mkBinaryAddress(pCIDR.substring(0, 
pCIDR.indexOf(SLASH))).substring(0,mkBinaryMask(pCIDR).length()), 2 );

return (testIPAddress.and(theMask).equals(theCIDR));

}   //  EoM


/** validCIDR will check the given CIDR string aginst it's defined mask such that
  * the given IPAddress  MASK shall equal 0
  * BRexample:
  * BR  255.255.255.16/28 256.256.132.0/11
  * BR 

Tarpitting/Firewalling Spammers

2003-02-09 Thread kai . londenberg
Hello,

I'd just like to know if James somehow supports a feature often called Tarpitting, 
or if someone is working on such support.

It simply works this way: If a given host produces too many (x) errors in a given 
timespan (t), that host will not be allowed to connect to the SMTP Server at all for a 
given timespan (usually 20 minutes or so). 

With the SMTP Server I currently use at work (Merak Mailserver), this seems to be the 
only feature which really works to keep consistent spammers from using up system, and 
bandwidth resources.

It can also stop brute-force SMTP-AUTH breaking attempts, or simple DoS Attacks where 
the wannabe-hacker reconnects very fast, or simultaneously.

If that feature isn't available, I'll try to implement it myself. 

What do you think would be the best approach ? There could be a mailet in the error 
and/or spam processors, which logs errors, and puts spammers on a blacklist, and
possibly even execute some command to put them on a (dynamic) firewall blacklist. A 
TimerTask could then be responsible for removing entries from the internal and 
firewall blacklists.

Is there already a Timer class in the framework to register TimerTasks with ? No need 
to create another Thread if there is one for such purposes already.

Which class would have to be modified to drop connection attempts from blacklisted 
hosts ?

with best regards,

   Kai Londenberg

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


Re: Tarpitting/Firewalling Spammers

2003-02-09 Thread Harmeet Bedi

- Original Message -
From: [EMAIL PROTECTED]


 I'd just like to know if James somehow supports a feature often called
Tarpitting, or if someone is working on such support.
..
 If that feature isn't available, I'll try to implement it myself.

This feature isn't available yet. Hopefully soon going by your last patch.
:-)


 What do you think would be the best approach ?

It may be a good idea to collect statistics at mailet level and override
connection listener to implement blocking logic based on a statisitics
collection.
Statistics Collector could be in memory or persistent based on if you want
single or multiple instances of mail server or if you want another process
monitor stats and trigger blocking logic in firewall.

Take a look at  server-sockets in 'Socket Manager Block' in config.xml. It
will point you to the class and abstractions.


 Is there already a Timer class in the framework to register TimerTasks
with ?

There is time scheduler block used by POP3 Mail Fetcher and watchdog
abstraction used by protocol handlers, but if you want to block connections
from an aggressive client, a statistical feedback from mailet could be
sufficient.

Harmeet


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




RE: Tarpitting/Firewalling Spammers

2003-02-09 Thread kai . londenberg
Hello

It simply works this way: If a given host produces too
many (x) errors in a given timespan (t), that host will 
not be allowed to connect to the SMTP Server at all for 
a given timespan (usually 20 minutes or so). 

Thinking a little bit more about it, it would also make sense to keep track of 
successfully delivered mails, so that the tarpitting code does not put large 
mailservers or mailing lists on a blacklist which just happen to send 1000 Mails 
within 2 minutes and a 2% failure rate to a given server.

What do you think ?

   Kai Londenberg

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


Virtual Hosts, Database Structure and IMAP-Folders

2003-02-09 Thread kai . londenberg
Hello,

There are a few other points in James I wanted to comment upon. I don't know exactly 
what your plans for changes are, but these are some ideas that came to my mind. Sure, 
this is nothing for an 2.1.1 release, but nevertheless ..

I've read about the way James supports Virtual Hosting so far. One question came to my 
mind:

Why do users need to have a unique name ?
You could just request that they have a unique username / password hash combination.

Another thing that left me wondering was the database format. As far as I know, it's 
not very efficient to have
non-numerical primary keys.

Give each user an unique numerical primary key,
and create another table which just maps eMail Adresses to user-ids. And at once, you 
have a very flexible and fast database structure which would support virtual hosting, 
multiple eMail Addresses per user and so on.

Of course another table with local domains would help a lot as well. In that table I'd 
have at least 3 fields:

domain-ID (numerical, primary key)
domain-Name (varchar)
catch-all-user (numerical reference)

Also I'd possibly include the user id for domain-administrator users.

Of course I do not know about the file based repositories, but from a database 
perspective that's how I'd do it.

In the inbox table, I'd give every message a unique numerical id, and associate it 
with the recipients user-id. Also I'd add another field specifying the name of the 
folder (POP3 could just ignore that, but for IMAP this is just as well a neccessity as 
the numerical ID).

To make it even more scalable I'd add another table with folders, associating unique 
folder-ids with folder names, parent folders and user-ids.

I guess this would require writing an alternative JDBC Repository, but it would make 
virtual hosting and IMAP much easier, and could improve the performance and 
scalability for larger systems a lot.

Some more ideas:

Add a size-field to every message.

Add message count/mailbox size as well as quota fields to every user.

Add a timestamp to every received message to be able to filter by date. (Like delete 
all mails older than XX days or show all mails from 3 to 10 january).

Add an extension-header field to messages in the db, so they can be marked somehow. 
(You could for example give them spam-levels from statistical analysis, or mark them 
as likely containing a virus, or as having been modified by a virus scanner/filter)

For powerful search capabilities, add full-text indices to the message-bodies, so they 
can be searched (using text fields instead of blob in MySQL).

I hope this wasn't too chaotic. It's late :)

   bye,

 Kai Londenberg

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


RE: Tarpitting/Firewalling Spammers

2003-02-09 Thread Noel J. Bergman
Kai,

No, James doesn't support tarpitting.  There are some plans to add a generic
filter package to James v3, which would bridge between the Mailet API and
the handlers for purposes of providing a means to short circuit or otherwise
control a connection.

If you search the archives, you ought to find discussion on the subject, as
it comes up from time to time.  I would only use the Mailets / Matchers to
educate the filter.  The implementation of the package would have access to
Avalon services that we don't expose to Matchers and Mailets, such as a
Scheduler.

The SMTO handler changes to accommodate this, and there are some issues
related to RFC compliance.  Again, there should be discussion of this in the
archives.

Someone has already been working on this, so let me find out the status
before you invest effort in it.

--- Noel

P.S.  Someone had also been working on a metrics package a while back, which
perhaps might be resurrected in some form or another.


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




RE: Virtual Hosts, Database Structure and IMAP-Folders

2003-02-09 Thread Noel J. Bergman
Kai,

You have a lot of reading to do in the archives.  :-)

Your comments are based upon James v2 repositories, and we're looking at
replacing the user repositories with JNDI, and using JavaMail interfaces for
stores in James v3.  And, yes, we'll have to implement optimized service
providers, as well as support the current formats.

Virtual hosting is something that still needs to be resolved, but it ought
to be in the context of the rest of what we're doing.

 Why do users need to have a unique name ?
 You could just request that they have a unique username / password hash
combination.

When e-mail comes in we need a unique mailbox.  We don't need have their
password; we need a unique SMTP - mailbox mapping.  And what if two people
with the same name chose the same password?  What do you do if someone loses
their password?  You want a unique mailbox ID, although it does not have to
be their e-mail name.

 Give each user an unique numerical primary key, and create another table
 which just maps eMail Adresses to user-ids.

You might want to look at the JDBCVirtualUserTable mailet.  Does that and
more, except we don't need a nuberical key.  Non-numerical primary keys
aren't actually that bad, and we don't do much more than a straight lookup.
If we were doing a lot of database manipulation, I would agree with you.

FWIW, I'm hoping that in James v3 we will include hsqldb, so that we can
always assume the presence of a database, although there is a need to allow
some things to be in the file system if user want to configure it that way.

--- Noel


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




[PATCH] xdocs

2003-02-09 Thread alan.gerhard
in documentation_2_1.xml, insert after line 51

lia href=dns_configuration_2_1.htmlDNS Server
Configuration/a/li

Also, add the attached to 
..\src\xdocs\dns_configuration_2_1.xml



___
thanks,
alan

?xml version=1.0?

document

 properties
  titleJames 2.1 - Configuring DNS Services/title
 /properties

body
section name=DNS Configuration

  
pDNS Transport services are controlled by a configuration block in the config.xml. This block
affects SMTP remote delivery./p

pThe dnsserver tag defines the boundaries of the configuration block. It encloses 
all the relevant configuration for the DNS server. The behavior of the DNS service is
controlled by the attributes and children of this tag./p 
pThe standard children of the dnsserver tag are:/p
ul
listrongservers/strong - This is a list of DNS Servers to be used by James and are 
specified by one, or more strongiserver/i/strong elements, which are child elements. 
Each server element is the IP address of a single DNS server.
plt;serversgt;/p
pnbsp;lt;servergt;127.0.0.1lt;/servergt;/p
pnbsp;lt;serverv166.181.194.205lt;/servergt;/p
plt;/serversgt;/p
/li

listrongauthoritative/strong - (strongtrue/false/strong)This tag specifies whether or not 
to require authoritative (non-cached) DNS records; to only accept DNS responses that are 
authoritative for the domain. It is primarily useful in an intranet/extranet environment.
pThis should always be strongfalse/strong unless you understand the implications. 
/li
/ul
/section
/body
/document

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


RE: Phoenix updates complete

2003-02-09 Thread Noel J. Bergman
Stephen,

Would you please recheck?  I cannot do a build of HEAD.  I have done both a
cvs update -Pd, and finally deleted both lib/ and phoenix-bin/ just to be
sure.  For one thing, I don't see some of the updated excalibur jars, and I
do see old ones.

--- Noel

-Original Message-
From: Stephen McConnell [mailto:[EMAIL PROTECTED]]
Sent: Saturday, February 08, 2003 22:18
To: James Developers List
Subject: Phoenix updates complete

Hi everyone:

Have just updated the buildfile with some changes to the prepare-phoenix
task.  These changes include the following:

  1. ensures that excalibur-thread-1.1 is placed in the phoenix/lib
 directory instead of the 1.0 version
  2. ensures that ecalibur-pool-1.2 is placed in the phoenix/lib
 directory (required by thread 1.1) instead of 1.0
  3. adds the commons-collections-2.1 jar to phoenix/lib (required
 by pool 2.1)

The changes to thread 1.0 - 1.1 include the bug fix concernign the max
pool parameter.  The 1.1 version introduces the dependency on pool 1.2
which in turn has been recently updated with the replacement of the
depricated excalibur-collections with commons-collections library.  All
of the above are on the Avalon Considated Release schedule so we should
be able to lock onto released content reasonably soon.

I've tested all of the above and everything is working fine.

I also updated the formatting in the buildfile to make it easier to read
and shifted property declarations into default.properties (hope that's
ok).  Based on these changes - the build file I was using is now
redundant (james.xml and james.properties), however, I suggest we leave
it there until I've cleaned up the test build file.

Cheers, Steve.

--

Stephen J. McConnell
mailto:[EMAIL PROTECTED]
http://www.osm.net


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




RE: CIDr Addition

2003-02-09 Thread Noel J. Bergman
Alan,

Thanks.  I did a little bit of cleanup work on it, but I haven't compiled
the changes, yet (birthing pains in HEAD).  Still, I thought that you might
want to look over what I did, finish any cleanup (like with the docs), and
do some testing.

--- Noel

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Sunday, February 09, 2003 16:17
To: James Developers List
Subject: CIDr Addition


Just read the Submit Patch post and understand that - have
winCVS and am gettting aquainted with it ...

I am adding two new classes and patching two others heavily.

The attached files are my contribution to James for the CIDR
process we spoke of earlier.

It compiles and runs - I will be testing this more later on
this afternoon, but in the meantime, I thought I would pass
them off for review.

I can diff the RemoteAddressInNetwork and
RemortAddressNotInNetwork and pass those in as patches, but
without the other two classes, they are meaningless.

Thanks for your time ...
Alan



- Message Forwarded on 2003-02-09 -
From: alan.gerhard [EMAIL PROTECTED]
To: James Users List [EMAIL PROTECTED]
Subject: RE: CIDR Notation
Date: Sun, 02 Feb 2003 03:00:52 -0500

Noel -

You are suggesting to create a
apache.mailet.GenericAddressMatcher abstract that folds most
of the 'common' code of the RemoteAddrInNetwork and
RemoteAddrNotInNetwork classes - similar to the
GenericRecipientMatcher abstract ..

Okay - I'll have a good at it;
see what I can come up with.



 Alan,

 I don't believe that you are missing something.  It isn't
 an oversight, just nothing that anyone got around to.
 When I first picked up the code, it didn't accept domain
 names, either.  I think I have some code for CIDR around
 here somewhere, but never finished adding it to those
 matchers.

 Actually, if you're going to do it, I suggest that you
 take those matchers, factor out most of the code into
 GenericAddressMatcher, and then subclass them for the
 specific behavior.  That'll make it easier to enhance them
 in the future.

 --- Noel


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


RE: CIDr Addition

2003-02-09 Thread Noel J. Bergman
Alan,

[Resending.  Weird, but it looks like the attachments were stripped.]

Thanks.  I did a little bit of cleanup work on it, but I haven't compiled
the changes, yet (birthing pains in HEAD).  Still, I thought that you might
want to look over what I did, finish any cleanup (like with the docs), and
do some testing.

--- Noel

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Sunday, February 09, 2003 16:17
To: James Developers List
Subject: CIDr Addition


Just read the Submit Patch post and understand that - have
winCVS and am gettting aquainted with it ...

I am adding two new classes and patching two others heavily.

The attached files are my contribution to James for the CIDR
process we spoke of earlier.

It compiles and runs - I will be testing this more later on
this afternoon, but in the meantime, I thought I would pass
them off for review.

I can diff the RemoteAddressInNetwork and
RemortAddressNotInNetwork and pass those in as patches, but
without the other two classes, they are meaningless.

Thanks for your time ...
Alan



- Message Forwarded on 2003-02-09 -
From: alan.gerhard [EMAIL PROTECTED]
To: James Users List [EMAIL PROTECTED]
Subject: RE: CIDR Notation
Date: Sun, 02 Feb 2003 03:00:52 -0500

Noel -

You are suggesting to create a
apache.mailet.GenericAddressMatcher abstract that folds most
of the 'common' code of the RemoteAddrInNetwork and
RemoteAddrNotInNetwork classes - similar to the
GenericRecipientMatcher abstract ..

Okay - I'll have a good at it;
see what I can come up with.



 Alan,

 I don't believe that you are missing something.  It isn't
 an oversight, just nothing that anyone got around to.
 When I first picked up the code, it didn't accept domain
 names, either.  I think I have some code for CIDR around
 here somewhere, but never finished adding it to those
 matchers.

 Actually, if you're going to do it, I suggest that you
 take those matchers, factor out most of the code into
 GenericAddressMatcher, and then subclass them for the
 specific behavior.  That'll make it easier to enhance them
 in the future.

 --- Noel



Network.zip
Description: Zip compressed data
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]