2

I want to find an email server implementation, convert the code to a war file like all my other apps.
The JAMES project seems so ... finished. But for years I couldn't even started it.

Milestones:

  1. i have extracted james-server-jpa-guice.zip file from https://james.apache.org/download.cgi and run:
D:\james>java -classpath 'james-server-jpa-app.lib/*' -javaagent:james-server-jpa-app.lib/openjpa-3.2.0.jar -Dlogback.configurationFile=conf/logback.xml -Dworking.directory=. org.apache.james.JPAJamesServerMain
Some product derivations are being skipped. For information about product derivation status, run:
java org.apache.openjpa.lib.conf.ProductDerivations
org.apache.openjpa.persistence.PersistenceProductDerivation:java.lang.NoClassDefFoundError: javax/persistence/spi/PersistenceUnitInfo
Error: Could not find or load main class org.apache.james.JPAJamesServerMain
Caused by: java.lang.ClassNotFoundException: org.apache.james.JPAJamesServerMain

no luck.

  1. Even though i don't understand Spring, I extracted james-server-app-3.7.0-app.zip from https://james.apache.org/download.cgi and run in admin mode:
D:\james\bin>james console
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 1    |
jvm 1    | 2022-04-24 15:52:29,840 main ERROR Unable to create file ${sys:app.home}/log/springframework.log java.io.IOException: Dosya ad², dizin ad² veya birim etiketi s÷zdizimi hatal²
jvm 1    |      at java.base/java.io.WinNTFileSystem.canonicalize0(Native Method)
jvm 1    |      at java.base/java.io.WinNTFileSystem.canonicalize(WinNTFileSystem.java:417)
jvm 1    |      at java.base/java.io.File.getCanonicalPath(File.java:626)
jvm 1    |      at java.base/java.io.File.getCanonicalFile(File.java:651)
jvm 1    |      at org.apache.logging.log4j.core.util.FileUtils.makeParentDirs(FileUtils.java:135)
jvm 1    |      at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:732)
jvm 1    |      at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:716)
jvm 1    |      at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:114)
jvm 1    |      at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100)
jvm 1    |      at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:217)
jvm 1    |      at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
jvm 1    |      at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
jvm 1    |      at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1120)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1045)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1037)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:247)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:293)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:626)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:699)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:716)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:270)
jvm 1    |      at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
jvm 1    |      at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
jvm 1    |      at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
jvm 1    |      at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
jvm 1    |      at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:55)
jvm 1    |      at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
jvm 1    |      at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:33)
jvm 1    |      at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
jvm 1    |      at org.apache.james.app.spring.JamesAppSpringMain.<clinit>(JamesAppSpringMain.java:34)
jvm 1    |      at java.base/java.lang.Class.forName0(Native Method)
jvm 1    |      at java.base/java.lang.Class.forName(Class.java:375)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperSimpleApp.<init>(WrapperSimpleApp.java:147)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperSimpleApp.main(WrapperSimpleApp.java:485)
jvm 1    |
jvm 1    | 2022-04-24 15:52:29,843 main ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@44a59da3] unable to create manager for [${sys:app.home}/log/springframework.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@27e47833[pattern=${sys:app.home}/log/springframework.%d{yyyy-MM-dd}-%i.log.gz, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[]), strategy=DefaultRolloverStrategy(min=1, max=7, useMax=true), advertiseURI=null, layout=%d{dd-MMM-yyyy HH:mm:ss.SSS} %level [%t] %C.%M:%L - %msg%n, filePermissions=null, fileOwner=null]] java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@44a59da3] unable to create manager for [${sys:app.home}/log/springframework.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@27e47833[pattern=${sys:app.home}/log/springframework.%d{yyyy-MM-dd}-%i.log.gz, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[]), strategy=DefaultRolloverStrategy(min=1, max=7, useMax=true), advertiseURI=null, layout=%d{dd-MMM-yyyy HH:mm:ss.SSS} %level [%t] %C.%M:%L - %msg%n, filePermissions=null, fileOwner=null]]
jvm 1    |      at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:116)
jvm 1    |      at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100)
jvm 1    |      at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:217)
jvm 1    |      at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
jvm 1    |      at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
jvm 1    |      at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1120)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1045)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1037)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:247)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:293)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:626)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:699)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:716)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:270)
jvm 1    |      at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
jvm 1    |      at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
jvm 1    |      at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
jvm 1    |      at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
jvm 1    |      at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:55)
jvm 1    |      at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
jvm 1    |      at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:33)
jvm 1    |      at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
jvm 1    |      at org.apache.james.app.spring.JamesAppSpringMain.<clinit>(JamesAppSpringMain.java:34)
jvm 1    |      at java.base/java.lang.Class.forName0(Native Method)
jvm 1    |      at java.base/java.lang.Class.forName(Class.java:375)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperSimpleApp.<init>(WrapperSimpleApp.java:147)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperSimpleApp.main(WrapperSimpleApp.java:485)
jvm 1    |
jvm 1    | 2022-04-24 15:52:29,947 main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
jvm 1    |      at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:236)
jvm 1    |      at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:134)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1120)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1045)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1037)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:247)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:293)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:626)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:699)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:716)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:270)
jvm 1    |      at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
jvm 1    |      at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
jvm 1    |      at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
jvm 1    |      at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
jvm 1    |      at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:55)
jvm 1    |      at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
jvm 1    |      at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:33)
jvm 1    |      at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
jvm 1    |      at org.apache.james.app.spring.JamesAppSpringMain.<clinit>(JamesAppSpringMain.java:34)
jvm 1    |      at java.base/java.lang.Class.forName0(Native Method)
jvm 1    |      at java.base/java.lang.Class.forName(Class.java:375)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperSimpleApp.<init>(WrapperSimpleApp.java:147)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperSimpleApp.main(WrapperSimpleApp.java:485)
jvm 1    |
jvm 1    | 2022-04-24 15:52:29,954 main ERROR Unable to create file ${sys:app.home}/log/openjpa.log java.io.IOException: Dosya ad², dizin ad² veya birim etiketi s÷zdizimi hatal²
jvm 1    |      at java.base/java.io.WinNTFileSystem.canonicalize0(Native Method)
jvm 1    |      at java.base/java.io.WinNTFileSystem.canonicalize(WinNTFileSystem.java:417)
jvm 1    |      at java.base/java.io.File.getCanonicalPath(File.java:626)
jvm 1    |      at java.base/java.io.File.getCanonicalFile(File.java:651)
jvm 1    |      at org.apache.logging.log4j.core.util.FileUtils.makeParentDirs(FileUtils.java:135)
jvm 1    |      at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:732)
jvm 1    |      at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:716)
jvm 1    |      at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:114)
jvm 1    |      at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100)
jvm 1    |      at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:217)
jvm 1    |      at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
jvm 1    |      at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
jvm 1    |      at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1120)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1045)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1037)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:247)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:293)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:626)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:699)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:716)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:270)
jvm 1    |      at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
jvm 1    |      at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
jvm 1    |      at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
jvm 1    |      at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
jvm 1    |      at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:55)
jvm 1    |      at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
jvm 1    |      at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:33)
jvm 1    |      at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
jvm 1    |      at org.apache.james.app.spring.JamesAppSpringMain.<clinit>(JamesAppSpringMain.java:34)
jvm 1    |      at java.base/java.lang.Class.forName0(Native Method)
jvm 1    |      at java.base/java.lang.Class.forName(Class.java:375)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperSimpleApp.<init>(WrapperSimpleApp.java:147)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperSimpleApp.main(WrapperSimpleApp.java:485)
jvm 1    |
jvm 1    | 2022-04-24 15:52:29,966 main ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@44a59da3] unable to create manager for [${sys:app.home}/log/openjpa.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@6c61a903[pattern=${sys:app.home}/log/openjpa.%d{yyyy-MM-dd}-%i.log.gz, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[]), strategy=DefaultRolloverStrategy(min=1, max=7, useMax=true), advertiseURI=null, layout=%d{dd-MMM-yyyy HH:mm:ss.SSS} %level [%t] %C.%M:%L - %msg%n, filePermissions=null, fileOwner=null]] java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@44a59da3] unable to create manager for [${sys:app.home}/log/openjpa.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@6c61a903[pattern=${sys:app.home}/log/openjpa.%d{yyyy-MM-dd}-%i.log.gz, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[]), strategy=DefaultRolloverStrategy(min=1, max=7, useMax=true), advertiseURI=null, layout=%d{dd-MMM-yyyy HH:mm:ss.SSS} %level [%t] %C.%M:%L - %msg%n, filePermissions=null, fileOwner=null]]
jvm 1    |      at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:116)
jvm 1    |      at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100)
jvm 1    |      at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:217)
jvm 1    |      at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
jvm 1    |      at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
jvm 1    |      at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1120)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1045)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1037)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:247)
jvm 1    |      at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:293)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:626)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:699)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:716)
jvm 1    |      at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:270)
jvm 1    |      at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
jvm 1    |      at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
jvm 1    |      at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
jvm 1    |      at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
jvm 1    |      at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:55)
jvm 1    |      at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
jvm 1    |      at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:33)
jvm 1    |      at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
jvm 1    |      at org.apache.james.app.spring.JamesAppSpringMain.<clinit>(JamesAppSpringMain.java:34)
jvm 1    |      at java.base/java.lang.Class.forName0(Native Method)
jvm 1    |      at java.base/java.lang.Class.forName(Class.java:375)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperSimpleApp.<init>(WrapperSimpleApp.java:147)
jvm 1    |      at 

.........

jvm 1    | 24-Nis-2022 15:52:37.034 INFO [WrapperSimpleAppMain] org.springframework.jmx.export.MBeanExporter.registerBeanInstance:672 - Located MBean 'org.apache.james:type=component,name=mailboxcopier': registering with JMX server as MBean [org.apache.james:type=component,name=mailboxcopier]
jvm 1    | 24-Nis-2022 15:52:37.034 INFO [WrapperSimpleAppMain] org.springframework.jmx.export.MBeanExporter.registerBeanInstance:672 - Located MBean 'org.apache.james:type=component,name=quotamanagerbean': registering with JMX server as MBean [org.apache.james:type=component,name=quotamanagerbean]
jvm 1    | 24-Nis-2022 15:52:37.035 INFO [WrapperSimpleAppMain] org.springframework.jmx.export.MBeanExporter.registerBeanInstance:672 - Located MBean 'org.apache.james:type=component,name=reindexerbean': registering with JMX server as MBean [org.apache.james:type=component,name=reindexerbean]
jvm 1    | 24-Nis-2022 15:52:37.035 INFO [WrapperSimpleAppMain] org.springframework.jmx.export.MBeanExporter.registerBeanInstance:672 - Located MBean 'org.apache.james:type=component,name=sievemanagerbean': registering with JMX server as MBean [org.apache.james:type=component,name=sievemanagerbean]
jvm 1    | 24-Nis-2022 15:52:37.040 INFO [WrapperSimpleAppMain] org.apache.james.app.spring.JamesAppSpringMain.main:46 - Apache James Server is successfully started in 6214 milliseconds.

It says server started, there are so many error messages that i am doubtfull.\

  1. Anyway, I tried to add a user as below; but i did not worked again
D:\james\bin>james-cli.bat adduser user@localhost myPass
24-Nis-2022 15:59:13.194 ERROR [main] org.apache.james.cli.ServerCmd.main:101 - Error while playing command
java.lang.Exception: Unexpected exception
        at org.apache.james.user.lib.UsersRepositoryManagement.addUser(UsersRepositoryManagement.java:57) ~[james-server-data-library-3.7.0.jar:3.7.0]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:72) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:262) ~[?:?]
        at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112) ~[?:?]
        at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46) ~[?:?]
        at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) ~[?:?]
        at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) ~[?:?]
        at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) ~[?:?]
        at javax.management.StandardMBean.invoke(StandardMBean.java:405) ~[?:?]
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:814) ~[?:?]
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802) ~[?:?]
        at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1472) ~[?:?]
        at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1310) ~[?:?]
        at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1405) ~[?:?]
        at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360) ~[?:?]
        at sun.rmi.transport.Transport$1.run(Transport.java:200) ~[?:?]
        at sun.rmi.transport.Transport$1.run(Transport.java:197) ~[?:?]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at sun.rmi.transport.Transport.serviceCall(Transport.java:196) ~[?:?]
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587) ~[?:?]
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828) ~[?:?]
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705) ~[?:?]
        at java.security.AccessController.doPrivileged(AccessController.java:399) ~[?:?]
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]
Error class java.lang.Exception while executing command:Unexpected exception
usage: java org.apache.james.cli.ServerCmd --host <arg> <command>
 -h,--host <arg>   node hostname or ip address
 -p,--port <arg>   remote jmx agent port number
AddUser <username> <password>
RemoveUser <username>
ListUsers
AddDomain <domainName>
RemoveDomain <domainName>
ContainsDomain <domainName>
ListDomains
ListMappings
ListUserDomainMappings <user> <domain>
AddAddressMapping <fromUser> <fromDomain> <toAddress>
RemoveAddressMapping <fromUser> <fromDomain> <toAddress>
AddRegexMapping <user> <domain> <regex>
RemoveRegexMapping <user> <domain> <regex>
SetPassword <username> <password>
CopyMailbox <srcBean> <dstBean>
DeleteUserMailboxes <user>
CreateMailbox <namespace> <user> <name>
ListUserMailboxes <user>
DeleteMailbox <namespace> <user> <name>
ImportEml <namespace> <user> <name> <path>
GetStorageQuota <quotaroot>
GetMessageCountQuota <quotaroot>
GetQuotaroot <namespace> <user> <name>
GetMaxStorageQuota <quotaroot>
GetMaxMessageCountQuota <quotaroot>
SetMaxStorageQuota <quotaroot> <maxMessageCount>
SetMaxMessageCountQuota <quotaroot> <maxStorage>
SetGlobalMaxStorageQuota <maxStorage>
SetGlobalMaxMessageCountQuota <maxMessageCount>
GetGlobalMaxStorageQuota
GetGlobalMaxMessageCountQuota
ReindexMailbox <namespace> <user> <name>
ReindexAll
GetSieveQuota
SetSieveQuota <quota>
RemoveSieveQuota
GetSieveUserQuota <username>
SetSieveUserQuota <username> <quota>
RemoveSieveUserQuota <username>
AddActiveSieveScript <username> <scriptname> <path>

Could you put me in the right track.

  • I'm wondering why you'd want to run a mail server as a web app? – g00se Apr 24 '22 at 13:56
  • Standardization of codes. I dont want programs, here and there. I want them, all in one place – Tugalsan Karabacak Apr 24 '22 at 14:06
  • I don't understand the answer but right off the bat you're going to have difficulty getting the networking that a mail server needs to work from a web app. It might have changed since I first heard about it. Looking at the distro zip it looks as if the server itself supports some kind of web admin, so it might be all the other way around ;) – g00se Apr 24 '22 at 14:10
  • @g00se What i mean is, when one make a jar file, (for security reasons) she need to create a new folder sharing to put it in; configure users for that sharing. And it creates complexity for users and maintainers. When one builds a war file, she will just put it in.... tomcat webapps. done. – Tugalsan Karabacak Apr 25 '22 at 05:48
  • I'd be surprised if it can be done. But if you're lucky, from what I said before, it would appear then that you'd have a web app inside a mail server inside a web app ;) – g00se Apr 25 '22 at 08:54
  • @Tugalsan Karabacak, Apache James Mail Server 3.x requires JDK 11, do not use JDK 17. – life888888 Jan 18 '23 at 12:49
  • @life888888 I have downloaded james-server-jpa-guice again from https://archive.apache.org/dist/james/server/3.7.3 also. with OpenJDK11U-jdk_x64_windows_hotspot_11.0.18_10.zip it gave the same error. Now I will try the spring version – Tugalsan Karabacak Jan 24 '23 at 08:14
  • @life888888 No, james-server-spring-app-3.7.3-app.zip also not working with OpenJDK11U-jdk_x64_windows_hotspot_11.0.18_10.zip. – Tugalsan Karabacak Jan 24 '23 at 08:24

1 Answers1

3

Use

cd james-server-spring-app-3.7.3\bin
run.bat

If the windows firewall pops up and asks to allow the opening of the port, please allow the opening of the relevant port for Apache James Mail Server to use.

Do not use

james console

run.bat - log

C:\Users\IEUser\Downloads\james-server-spring-app-3.7.3\bin>run.bat
24-Jan-2023 04:55:15.525 INFO [main] org.springframework.context.support.AbstractApplicationContext.prepareRefresh:583 - Refreshing org.apache.james.container.spring.context.JamesServerApplicationContext@7c098bb3: startup date [Tue Jan 24 04:55:15 PST 2023]; root of context hierarchy
24-Jan-2023 04:55:15.610 INFO [main] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions:317 - Loading XML bean definitions from class path resource [META-INF/org/apache/james/spring-server.xml]
...
24-Jan-2023 04:55:25.995 INFO [main] org.apache.activemq.transport.TransportServerThreadSupport.doStart:69 - Listening for connections at: tcp://127.0.0.1:50043
24-Jan-2023 04:55:25.995 INFO [main] org.apache.activemq.broker.TransportConnector.start:267 - Connector tcp://127.0.0.1:50043 started
24-Jan-2023 04:55:26.010 INFO [main] org.apache.activemq.broker.BrokerService.doStartBroker:759 - Apache ActiveMQ 5.17.2 (james, broker) started
...
24-Jan-2023 04:55:27.678 INFO [main] org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer.configure:199 - SMTP Service bound to: 0.0.0.0:25
...
24-Jan-2023 04:55:27.992 INFO [main] org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer.configure:199 - POP3 Service bound to: 0.0.0.0:110
...
24-Jan-2023 04:55:28.239 INFO [main] org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer.configure:199 - IMAP Service bound to: 0.0.0.0:143
...
24-Jan-2023 04:55:28.378 INFO [main] org.springframework.remoting.rmi.RmiRegistryFactoryBean.getRegistry:217 - Looking for RMI registry at port '9999', using custom socket factory
...
24-Jan-2023 04:55:29.997 INFO [main] org.apache.james.app.spring.JamesAppSpringMain.main:46 - Apache James Server is successfully started in 14534 milliseconds.

james-cli.bat - log

C:\Users\IEUser\Downloads\james-server-spring-app-3.7.3\bin>james-cli.bat adduser user@localhost myPass
AddUser command executed sucessfully in 573 ms.

My Env:

JDK install

(1) Remove Environment Variavle: JAVA_HOME, And Remove JDK Path from Environment Variavle: PATH

(2) install adoptium Open JDK 11

(2-1) Download JDK msi file - https://adoptium.net/temurin/releases/

  • Operating System: Windows
  • Architecture: x64
  • Package Type: JDK
  • Version: 11
  • install Type: .msi

(2-2) click OpenJDK11U-jdk_x64_windows_hotspot_11.0.18_10.msi

(2-3) GUI: Welcome to ..., Click Next

(2-4) GUI: Custom Setup,

(2-4-1) Set JAVA_HOME variale, drop down, select Entire feacture will be installed on local hard drive

(2-4-2) JavaSoft(Oracle) registry keys, drop down, select Entire feacture will be installed on local hard drive

(2-4-3) Click Next

(2-5) GUI: Ready to install ..., click Install

(2-6) Windows: User Account Control, Do you want to allow..., clock Yes

(2-7) GUI: Completed the Eclipse ..., click Finish

life888888
  • 835
  • 2
  • 2
  • 8