james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Löffler <s_loe...@ira.uka.de>
Subject Steps to get IMAP starting
Date Sun, 13 Oct 2002 17:05:53 GMT

Hello!

Other mails already indicated that there are some problems when doing
a clean build of James with IMAP from CVS.

This description of my solutions to some of the issues I've found so far
may save some time to others.

See below for diffs of the files I've changed. Someone more involved
should review them before committing. Some of my changes (6,7) may have
consequences which I didn't foresee.

Peter



1) Minor build problem under UNIX:

   | ~/jakarta-james/proposals/imap/dist/james-2.1a1-cvs$ bin/run.sh 
   | bin/run.sh: ~/jakarta-james/proposals/imap/dist/james-2.1a1-cvs/bin/phoenix.sh: /bin/sh:
bad interpreter: Permission denied

   Cause:
   build.xml doesn't make phoenix.sh executable

2) james-server.xml is not a valid XML file:

   | Error building configuration from file:~/jakarta-james/proposals/imap/dist/james-2.1a1-cvs/apps/james/SAR-INF/environment.xml.
   | Caused by: org.xml.sax.SAXParseException: The element type "categories" must be terminated
by the matching end-tag "</categories>".

   Cause:
   <category name="imapserver" log-level="DEBUG"/>
      <log-target name="imapserver-target"/>
   </category>
      
   This replacement eliminates two errors:
   <category name="imapserver" log-level="DEBUG">
     <log-target id-ref="imapserver-target"/>
   </category>
      
3) Another build problem:
   The (newer) James.java from main doesn't get replaced by the (older) one
   from the IMAP proposal.

   I use <exclude> elements in build.xml.

4)james-assembly.xml (the IMAP proposal one) isn't up to date:

   | Unknown dependency named "nntpauth" with role "org.apache.james.nntpserver.AuthService"
declared for Block nntpserver.

   I replaced 
   <provide name="nntpauth" role="org.apache.james.nntpserver.AuthService"/>
   by
   <provide name="users-store" role="org.apache.james.services.UsersStore"/>
   in james-assembly.xml and deleted the "NNTP Authentication Service" block.
   The <nntpauth> element got removed from james-config.xml.

5) Now the server starts up and it's possible to log in, but INBOX doesn't
   exist and can't be created:

   | $ telnet localhost 143
   | Trying 127.0.0.1...
   | Connected to localhost.
   | Escape character is '^]'.
   | * OK IMAP4rev1 Server peter ready
   | 1 LOGIN peter peter
   | 1 OK LOGIN completed
   | 2 SELECT "INBOX"
   | 2 NO SELECT Unknown mailbox
   | 3 CREATE "INBOX"
   | * BYE Error processing command.
   | Connection closed by foreign host.

   I added the following to james-config.xml:
   <storage>IMAP</storage>

6) At startup there were these warnings:

   | The Block named "imapsystem" (implementation class "org.apache.james.imapserver.IMAPSystem"),
implements a service "org.apache.james.imapserver.IMAPSystem" which extends a Lifecycle interface
"org.apache.avalon.framework.context.Contextualizable". This violates the expected usage patterns.
   | The Block named "imapsystem" (implementation class "org.apache.james.imapserver.IMAPSystem"),
implements a service "org.apache.james.imapserver.IMAPSystem" which extends a Lifecycle interface
"org.apache.avalon.framework.component.Composable". This violates the expected usage patterns.
   | The Block named "imapsystem" (implementation class "org.apache.james.imapserver.IMAPSystem"),
implements a service "org.apache.james.imapserver.IMAPSystem" which extends a Lifecycle interface
"org.apache.avalon.framework.configuration.Configurable". This violates the expected usage
patterns.
   | The Block named "imapsystem" (implementation class "org.apache.james.imapserver.SimpleSystem"),
implements Block interface. The Block interface has been deprecated and should no longer be
used.
   | The Block named "imaphost" (implementation class "org.apache.james.imapserver.JamesHost"),
implements Block interface. The Block interface has been deprecated and should no longer be
used.

   They could be eliminated by small changes in IMAPSystem.java,
   SimpleSystem.java and JamesHost.java.

7) Solution of problem 5) creates a new one.
   Impossible to add any new users:

   xterm A: James starts up
   | Started IMAP Server plain:143
   | POP3 Server Started plain:110
   | SMTP Server Started plain:25
   | java.lang.NullPointerException
   |         at org.apache.james.nntpserver.repository.NNTPSpooler$SpoolerRunnable.run(NNTPSpooler.java:200)
   |         at java.lang.Thread.run(Thread.java:536)
   | NNTP Server Started plain:119

   xterm B:
   | $ telnet localhost 4555
   | Trying 127.0.0.1...
   | Connected to localhost.
   | Escape character is '^]'.
   | JAMES RemoteAdministration Tool 2.1a1-cvs
   | Please enter your login and password
   | Login id:
   | root
   | Password:
   | root
   | Welcome root. HELP for a list of commands
   | adduser peter peter
   | Connection closed by foreign host.

   xterm A (continued):
   | MailboxDir TO WRITE TO var/mail/mailboxes/user/peter
   | MailboxDir TO WRITE TO var/mail/mailboxes/user/peter/INBOX
   | Exception: null
   | java.lang.NullPointerException
   |         at org.apache.james.imapserver.FileMailbox.getNextUID(FileMailbox.java:460)

   Cause: highestUID in FileMailbox.java was not initialised.

   Remark:
   I don't quite understand why highestUID is static.
   This prevents configuration of the FileStoreHighestUID location.
   My reading of RFC 2060 (2.3.1.1) is that global uniqueness (across
   all mailboxes) is unnecessary.



Diffs of the files I've changed:

Index: proposals/imap/build.xml
===================================================================
RCS file: /home/cvspublic/jakarta-james/proposals/imap/build.xml,v
retrieving revision 1.6
diff -u -r1.6 build.xml
--- proposals/imap/build.xml    27 Sep 2002 08:49:11 -0000      1.6
+++ proposals/imap/build.xml    13 Oct 2002 15:58:52 -0000
@@ -176,6 +176,7 @@
         <chmod perm="+x">
             <fileset dir="${dist.dir}/bin">
                 <include name="run.sh"/>
+                <include name="phoenix.sh"/>
             </fileset>
         </chmod>
         <fixcrlf srcdir="." includes="build.sh" eol="lf"/>
@@ -194,6 +195,8 @@
                 <include name="**/*.properties"/>
                 <include name="**/*.xinfo"/>
                 <include name="**/*.mxinfo"/>
+                <exclude name="org/apache/james/James.java"/>
+                <exclude name="org/apache/james/James.xinfo"/>
             </fileset>
         </copy>
         <copy todir="${build.src}">



Index: proposals/imap/conf/james-assembly.xml
===================================================================
RCS file: /home/cvspublic/jakarta-james/proposals/imap/conf/james-assembly.xml,v
retrieving revision 1.3
diff -u -r1.3 james-assembly.xml
--- proposals/imap/conf/james-assembly.xml      17 Sep 2002 21:51:27 -0000     1.3
+++ proposals/imap/conf/james-assembly.xml      13 Oct 2002 15:59:35 -0000
@@ -98,7 +98,7 @@
 
   <!-- NNTP Server -->
   <block class="org.apache.james.nntpserver.NNTPServer" name="nntpserver" >
-    <provide name="nntpauth" role="org.apache.james.nntpserver.AuthService"/>
+    <provide name="users-store" role="org.apache.james.services.UsersStore"/>
     <provide name="sockets"
         role="org.apache.avalon.cornerstone.services.sockets.SocketManager"/>
     <provide name="connections"
@@ -107,11 +107,6 @@
         role="org.apache.avalon.cornerstone.services.scheduler.TimeScheduler"/>
     <provide name="nntp-repository"
         role="org.apache.james.nntpserver.repository.NNTPRepository"/>
-  </block>
-
-  <!-- NNTP Authentication Service -->
-  <block class="org.apache.james.nntpserver.AuthServiceImpl" name="nntpauth" >
-    <provide name="users-store" role="org.apache.james.services.UsersStore"/>
   </block>
 
   <!-- NNTP Repository -->



Index: proposals/imap/conf/james-config.xml
===================================================================
RCS file: /home/cvspublic/jakarta-james/proposals/imap/conf/james-config.xml,v
retrieving revision 1.3
diff -u -r1.3 james-config.xml
--- proposals/imap/conf/james-config.xml        17 Sep 2002 21:51:27 -0000     1.3
+++ proposals/imap/conf/james-config.xml        13 Oct 2002 15:59:59 -0000
@@ -39,6 +39,13 @@
       <!-- Set whether to enable local aliases -->
       <usernames ignoreCase="TRUE" enableAliases="TRUE" enableForwarding="TRUE"/>
 
+      <!-- Set the type of permanent mailfolders to be used.
+      If IMAP service is to be provided, storage must be 'IMAP'; if only POP3
+      service is being provided then use must be 'basic' (default) . At some
+      stage POP3 will, hopefully, be able to use IMAP storage as well.  This
+      choice is irrelevant if the only service provided is SMTP. -->
+      <storage>IMAP</storage>
+
       <!-- The inbox repository is the location for users inboxes -->
       <!-- Default setting: file based repository - enter path ( use  "file:///" for absolute)
-->
       <inboxRepository>
@@ -338,11 +345,6 @@
          <connectiontimeout>120000</connectiontimeout>
       </handler>
    </nntpserver>
-
-   <nntpauth>
-      <!-- make this true, if you want only authenticated users to access NNTP-->
-      <authRequired>false</authRequired>
-   </nntpauth>
 
    <nntp-repository>
       <!-- make this true to disallow posting to all newsgroups-->



Index: proposals/imap/conf/james-server.xml
===================================================================
RCS file: /home/cvspublic/jakarta-james/proposals/imap/conf/james-server.xml,v
retrieving revision 1.2
diff -u -r1.2 james-server.xml
--- proposals/imap/conf/james-server.xml        17 Sep 2002 21:51:27 -0000     1.2
+++ proposals/imap/conf/james-server.xml        13 Oct 2002 16:00:26 -0000
@@ -26,8 +26,8 @@
       <category name="remotemanager" log-level="DEBUG">
         <log-target id-ref="remotemanager-target"/>
       </category>
-      <category name="imapserver" log-level="DEBUG"/>
-        <log-target name="imapserver-target"/>
+      <category name="imapserver" log-level="DEBUG">
+        <log-target id-ref="imapserver-target"/>
       </category>
       <category name="pop3server" log-level="DEBUG">
         <log-target id-ref="pop3server-target"/>



Index: proposals/imap/java/org/apache/james/imapserver/IMAPSystem.java
===================================================================
RCS file: /home/cvspublic/jakarta-james/proposals/imap/java/org/apache/james/imapserver/IMAPSystem.java,v
retrieving revision 1.4
diff -u -r1.4 IMAPSystem.java
--- proposals/imap/java/org/apache/james/imapserver/IMAPSystem.java     17 Sep 2002 17:00:38
-0000      1.4
+++ proposals/imap/java/org/apache/james/imapserver/IMAPSystem.java     13 Oct 2002 16:01:00
-0000
@@ -7,9 +7,6 @@
  */
 package org.apache.james.imapserver;
 
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.context.Contextualizable;
 import org.apache.james.imapserver.AuthenticationException;
 
 import java.util.Iterator;
@@ -24,8 +21,7 @@
  * @version 0.1 on 14 Dec 2000
  * @see Host
  */
-public interface IMAPSystem
-    extends Configurable, Contextualizable, Composable {
+public interface IMAPSystem {
 
     String ROLE = "org.apache.james.imapserver.IMAPSystem";
 



Index: proposals/imap/java/org/apache/james/imapserver/SimpleSystem.java
===================================================================
RCS file: /home/cvspublic/jakarta-james/proposals/imap/java/org/apache/james/imapserver/SimpleSystem.java,v
retrieving revision 1.7
diff -u -r1.7 SimpleSystem.java
--- proposals/imap/java/org/apache/james/imapserver/SimpleSystem.java   17 Sep 2002 17:00:38
-0000      1.7
+++ proposals/imap/java/org/apache/james/imapserver/SimpleSystem.java   13 Oct 2002 16:01:25
-0000
@@ -8,11 +8,14 @@
 package org.apache.james.imapserver;
 
 import org.apache.avalon.framework.activity.Initializable;
+import org.apache.avalon.framework.component.Component;
 import org.apache.avalon.framework.component.ComponentManager;
+import org.apache.avalon.framework.component.Composable;
+import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.phoenix.Block;
+import org.apache.avalon.framework.context.Contextualizable;
 import org.apache.james.imapserver.AuthenticationException;
 
 import java.net.InetAddress;
@@ -30,7 +33,7 @@
  * @version 0.1 on 14 Dec 2000
  */
 public class SimpleSystem
-    implements IMAPSystem, Block, Initializable {
+    implements IMAPSystem, Component, Initializable, Configurable, Contextualizable, Composable
{
 
     private static final String namespaceToken = "#";
     private static final String hierarchySeperator = ".";



Index: proposals/imap/java/org/apache/james/imapserver/JamesHost.java
===================================================================
RCS file: /home/cvspublic/jakarta-james/proposals/imap/java/org/apache/james/imapserver/JamesHost.java,v
retrieving revision 1.8
diff -u -r1.8 JamesHost.java
--- proposals/imap/java/org/apache/james/imapserver/JamesHost.java      17 Sep 2002 17:00:38
-0000      1.8
+++ proposals/imap/java/org/apache/james/imapserver/JamesHost.java      13 Oct 2002 16:02:05
-0000
@@ -8,6 +8,7 @@
 package org.apache.james.imapserver;
 
 import org.apache.avalon.framework.activity.Initializable;
+import org.apache.avalon.framework.component.Component;
 import org.apache.avalon.framework.component.ComponentManager;
 import org.apache.avalon.framework.component.Composable;
 import org.apache.avalon.framework.configuration.Configurable;
@@ -16,7 +17,6 @@
 import org.apache.avalon.framework.context.Context;
 import org.apache.avalon.framework.context.Contextualizable;
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.phoenix.Block;
 import org.apache.james.imapserver.AccessControlException;
 import org.apache.james.imapserver.AuthorizationException;
 import org.apache.james.services.MailServer;
@@ -49,7 +49,7 @@
  */
 public class JamesHost
         extends AbstractLogEnabled
-        implements Host, Block, Configurable, Composable, Contextualizable, Initializable
{
+        implements Host, Component, Configurable, Composable, Contextualizable, Initializable
{
             
     private Context context;
     private Configuration conf;



Index: proposals/imap/java/org/apache/james/imapserver/FileMailbox.java
===================================================================
RCS file: /home/cvspublic/jakarta-james/proposals/imap/java/org/apache/james/imapserver/FileMailbox.java,v
retrieving revision 1.8
diff -u -r1.8 FileMailbox.java
--- proposals/imap/java/org/apache/james/imapserver/FileMailbox.java    17 Sep 2002 17:00:38
-0000      1.8
+++ proposals/imap/java/org/apache/james/imapserver/FileMailbox.java    13 Oct 2002 16:02:36
-0000
@@ -144,8 +144,8 @@
     private boolean notSelectableByAnyone;
 
     // Sets the UID for all Mailboxes
-    private static HighestUID highestUID;
-
+    // TODO: This is only a short term solution.
+    private static HighestUID highestUID = new FileStoreHighestUID(new File("var/mail/uidstore"));
     // The message sequence number of a msg is its index in List sequence + 1
     private List sequence; //List of UIDs of messages in mailbox
 





--
To unsubscribe, e-mail:   <mailto:james-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:james-dev-help@jakarta.apache.org>


Mime
View raw message