Hello - I am in the process of installing the new release of James 3.4.0 and am encountering an error that doesn't make sense to me, involving the startup of the smtp service. As shown below in the exception traceback I am getting a complaint about the keystore file either not being found or getting some sort of permission denied error. The keystore file does indeed exist and there is really nothing wrong with the path or file that this error is reporting. In this particular example the keystore is a symlink to the actual keystore file. I created from LetsEncrypt wildcard certificates, and I have tried configuring the path directly to the actual keystore file with no symlinks involved and still no joy. So I suspect the "FileNotFoundException" error is misleading.
quasar:/mail/apache-james-3.4/james-server-app-3.4.0/conf # ll keystore lrwxrwxrwx 1 james mail 34 Dec 23 18:47 keystore -> keystore.privateFiles/keystore.jks quasar:/mail/apache-james-3.4/james-server-app-3.4.0/conf # ll -d keystore.privateFiles drw-rw-r-- 2 james mail 4096 Dec 27 22:11 keystore.privateFiles quasar:/mail/apache-james-3.4/james-server-app-3.4.0/conf # ll keystore.privateFiles/ total 12 -rw-rw-r-- 1 james mail 4637 Dec 27 22:13 keystore.jks As for the "Permission denied" comment in the error message this is what I can report. All of the files for James, including the keystore file have their owner and group set to james:mail. Both the user james and root are part of the mail group. The file permissions are set to -rw-rw-r--. I have also experimented with other file permissions such as -rw-rw---- and -rw-r----- with no joy. As for the password to use for accessing the keystore itself again I know that what I am specifying in the smtpserver.xml file is correct and I can test it by using the following command which will ask for the keystore password. keytool -list -v -keystore /mail/apache-james-3.4/james-server-app-3.4.0/conf/keystore So I am at a loss trying to figure out what is going wrong. I set the debug levels in the logj4.properties file to debug to see if that would produce any further helpful info, but it didn't. What follows is the exception walkback, anyone got any ideas that I can try? Thanks in advance... Marc ---- INFO | jvm 1 | 2019/12/28 08:36:27 | WARN 08:36:27,067 | org.apache.james.container.spring.context.JamesServerApplicationContext | Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'smtpserver': Invocation of init method failed; nested exception is java.io.FileNotFoundException: /mail/apache-james-3.4/james-server-app-3.4.0/conf/keystore (Permission denied) INFO | jvm 1 | 2019/12/28 08:36:27 | INFO 08:36:27,068 | org.apache.james.mailetcontainer.impl.JamesMailSpooler | start dispose() ... INFO | jvm 1 | 2019/12/28 08:36:27 | INFO 08:36:27,068 | org.apache.james.mailetcontainer.impl.JamesMailSpooler | thread shutdown completed. INFO | jvm 1 | 2019/12/28 08:36:27 | INFO | jvm 1 | 2019/12/28 08:36:27 | WrapperSimpleApp: Encountered an error running main: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'smtpserver': Invocation of init method failed; nested exception is java.io.FileNotFoundException: /mail/apache-james-3.4/james-server-app-3.4.0/conf/keystore (Permission denied) INFO | jvm 1 | 2019/12/28 08:36:27 | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'smtpserver': Invocation of init method failed; nested exception is java.io.FileNotFoundException: /mail/apache-james-3.4/james-server-app-3.4.0/conf/keystore (Permission denied) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:396) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1507) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:638) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:942) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.apache.james.container.spring.context.JamesServerApplicationContext.<init>(JamesServerApplicationContext.java:40) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.apache.james.app.spring.JamesAppSpringMain.init(JamesAppSpringMain.java:56) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.apache.james.app.spring.JamesAppSpringMain.main(JamesAppSpringMain.java:42) INFO | jvm 1 | 2019/12/28 08:36:27 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) INFO | jvm 1 | 2019/12/28 08:36:27 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) INFO | jvm 1 | 2019/12/28 08:36:27 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) INFO | jvm 1 | 2019/12/28 08:36:27 | at java.lang.reflect.Method.invoke(Method.java:498) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240) INFO | jvm 1 | 2019/12/28 08:36:27 | at java.lang.Thread.run(Thread.java:748) INFO | jvm 1 | 2019/12/28 08:36:27 | Caused by: java.io.FileNotFoundException: /mail/apache-james-3.4/james-server-app-3.4.0/conf/keystore (Permission denied) INFO | jvm 1 | 2019/12/28 08:36:27 | at java.io.FileInputStream.open0(Native Method) INFO | jvm 1 | 2019/12/28 08:36:27 | at java.io.FileInputStream.open(FileInputStream.java:195) INFO | jvm 1 | 2019/12/28 08:36:27 | at java.io.FileInputStream.<init>(FileInputStream.java:138) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer.buildSSLContext(AbstractConfigurableAsyncServer.java:404) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer.init(AbstractConfigurableAsyncServer.java:263) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.apache.james.protocols.lib.netty.AbstractServerFactory.init(AbstractServerFactory.java:57) INFO | jvm 1 | 2019/12/28 08:36:27 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) INFO | jvm 1 | 2019/12/28 08:36:27 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) INFO | jvm 1 | 2019/12/28 08:36:27 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) INFO | jvm 1 | 2019/12/28 08:36:27 | at java.lang.reflect.Method.invoke(Method.java:498) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:344) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:295) INFO | jvm 1 | 2019/12/28 08:36:27 | at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:130) INFO | jvm 1 | 2019/12/28 08:36:27 | ... 22 more STATUS | wrapper | 2019/12/28 08:36:29 | <-- Wrapper Stopped -- --... ...-- .----. ... -.. . .-- .- --... .--. -..- .-- -- .- .-. -.-. *Computers: the final frontier. These are the voyages of the user Marc. His mission: to explore strange new hardware. To seek out new software and new applications. To boldly go where no Marc has gone before! *
