On 10/3/2016 1:02 AM, Matthieu Baechler wrote:

My first question relates to the cassandra.properties file. According to the instructions at https://james.apache.org/server/3/config-cassandra.html

*cassandra.ip*
    Is the IP (or host) of the Cassandra used. (cluster is not yet
    supported)

Am I suppose to assign the internal private or an external public IP address for the host that Cassandra is running on? If external, does this host have to be in a DMZ? I don't know how this is going to be used hence the reason I am asking... The version of the cassandra.properties file that I got when I cloned the GIT repository had it pre-configured as cassandra.ip = cassandra which I am sure must be wrong but then again I have little experience with Docker so I could be wrong...
So the documentation uses --link docker option, it creates to right alias into james container so that cassandra resolves to cassandra IP. The cool thing about that is : cassandra port is not routed outside docker private network so you don't have to care too much about cassandra security.

Thanks once again for your help Matthieu. I made an attempt to go ahead and start the James server using my best guesses on how the configuration files should be set up. Unfortunately I hit another snag, see below. I can send you the contents of my configuration files if you need to see them. For the cassandra.properties I set the cassandra.ip back to cassandra.ip = cassandra as it was originally configured. (When I got the stack exception/walkback that you see below I also tried, just for grins, a few other guesses but nothing I tried worked so decided to leave it alone and get help.)


My second question concerns setting up the SMTP server to use Authentication. Again according to the instructions at https://james.apache.org/server/3/config-smtp-lmtp.html it says -


... (stuff deleted from my previous emails)

Depending on your domain backend, you can define statically the domains into domainlist.xml (I guess servernames got replaced by domainnames) or dynamically by calling administration API.

With cassandra, we rather use dynamic config, so take a look at "how to call james-cli" in the documentation, there's an API like "adddomain" in it.

OK. I will punt on this for now and try to configure the domain names dynamically when I get the server up and running....

I had to modify the command to start the James server slightly to point the jar file to what I believe is the correct location. Please verify that my command I issued is correct. That resulted in what appears to be 6 repetitions of an error that seems to center around "cassandra.port" Because these walkbacks are so long I will only show the first one. Got any ideas on what I have done wrong? Marc.....

bigbang:/james/docker/james-project # java -Dworking.directory=dockerfiles/run/guice/destination/conf -jar server/container/guice/cassandra-guice/target/james-server-cassandra-guice-3.0.0-beta5-SNAPSHOT.jar Exception in thread "main" com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) Error in custom provider, java.util.concurrent.ExecutionException: java.util.NoSuchElementException: 'cassandra.port' doesn't map to an existing object at org.apache.james.modules.mailbox.CassandraSessionModule.provideCluster(CassandraSessionModule.java:76) (via modules: com.google.inject.util.Modules$CombinedModule -> com.google.inject.util.Modules$CombinedModule -> org.apache.james.modules.mailbox.CassandraSessionModule) at org.apache.james.modules.mailbox.CassandraSessionModule.provideCluster(CassandraSessionModule.java:76) (via modules: com.google.inject.util.Modules$CombinedModule -> com.google.inject.util.Modules$CombinedModule -> org.apache.james.modules.mailbox.CassandraSessionModule)
  while locating com.datastax.driver.core.Cluster
for parameter 1 at org.apache.james.modules.mailbox.CassandraSessionModule.provideSession(CassandraSessionModule.java:68) at org.apache.james.modules.mailbox.CassandraSessionModule.provideSession(CassandraSessionModule.java:68) (via modules: com.google.inject.util.Modules$CombinedModule -> com.google.inject.util.Modules$CombinedModule -> org.apache.james.modules.mailbox.CassandraSessionModule) at org.apache.james.modules.mailbox.CassandraSessionModule.provideSession(CassandraSessionModule.java:68) (via modules: com.google.inject.util.Modules$CombinedModule -> com.google.inject.util.Modules$CombinedModule -> org.apache.james.modules.mailbox.CassandraSessionModule)
  while locating com.datastax.driver.core.Session
for parameter 0 at org.apache.james.mailbox.cassandra.mail.CassandraUidProvider.<init>(CassandraUidProvider.java:65) at org.apache.james.modules.mailbox.CassandraMailboxModule.configure(CassandraMailboxModule.java:63) (via modules: com.google.inject.util.Modules$CombinedModule -> com.google.inject.util.Modules$CombinedModule -> org.apache.james.modules.mailbox.CassandraMailboxModule) while locating org.apache.james.mailbox.cassandra.mail.CassandraUidProvider
  while locating org.apache.james.mailbox.store.mail.UidProvider
for parameter 0 at org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory.<init>(CassandraMailboxSessionMapperFactory.java:57) at org.apache.james.modules.mailbox.CassandraMailboxModule.configure(CassandraMailboxModule.java:58) (via modules: com.google.inject.util.Modules$CombinedModule -> com.google.inject.util.Modules$CombinedModule -> org.apache.james.modules.mailbox.CassandraMailboxModule) while locating org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory for parameter 0 at org.apache.james.mailbox.cassandra.CassandraMailboxManager.<init>(CassandraMailboxManager.java:50) at org.apache.james.modules.mailbox.CassandraMailboxModule.configure(CassandraMailboxModule.java:59) (via modules: com.google.inject.util.Modules$CombinedModule -> com.google.inject.util.Modules$CombinedModule -> org.apache.james.modules.mailbox.CassandraMailboxModule) while locating org.apache.james.mailbox.cassandra.CassandraMailboxManager
  while locating org.apache.james.mailbox.MailboxManager
for parameter 0 at org.apache.james.jmap.JMAPModule$RequiredCapabilitiesPrecondition.<init>(JMAPModule.java:101) at org.apache.james.jmap.JMAPModule$RequiredCapabilitiesPrecondition.class(JMAPModule.java:101) while locating org.apache.james.jmap.JMAPModule$RequiredCapabilitiesPrecondition while locating org.apache.james.utils.ConfigurationPerformer annotated with @com.google.inject.multibindings.Element(setName=,uniqueId=16, type=MULTIBINDER, keyType=) at org.apache.james.modules.server.DNSServiceModule.configure(DNSServiceModule.java:47) (via modules: com.google.inject.util.Modules$CombinedModule -> com.google.inject.util.Modules$CombinedModule -> org.apache.james.modules.CommonServicesModule -> org.apache.james.modules.server.DNSServiceModule -> com.google.inject.multibindings.Multibinder$RealMultibinder) while locating java.util.Set<org.apache.james.utils.ConfigurationPerformer> for parameter 0 at org.apache.james.utils.ConfigurationsPerformer.<init>(ConfigurationsPerformer.java:36)
  while locating org.apache.james.utils.ConfigurationsPerformer
Caused by: java.util.concurrent.ExecutionException: java.util.NoSuchElementException: 'cassandra.port' doesn't map to an existing object at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895) at org.apache.james.modules.mailbox.CassandraSessionModule.provideCluster(CassandraSessionModule.java:87) at org.apache.james.modules.mailbox.CassandraSessionModule$$FastClassByGuice$$c011b41b.invoke(<generated>) at com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:272) at com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:172) at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53) at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61) at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45) at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012) at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:104) at com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:167) at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53) at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61) at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45) at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38) at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62) at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267) at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56) at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38) at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62) at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267) at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38) at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62) at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267) at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56) at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38) at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62) at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267) at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56) at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012) at com.google.inject.multibindings.Multibinder$RealMultibinder.get(Multibinder.java:375) at com.google.inject.multibindings.Multibinder$RealMultibinder.get(Multibinder.java:258) at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53) at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61) at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45) at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38) at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62) at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267) at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012) at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051) at org.apache.james.GuiceJamesServer.start(GuiceJamesServer.java:75) at org.apache.james.CassandraJamesServerMain.main(CassandraJamesServerMain.java:55) Caused by: java.util.NoSuchElementException: 'cassandra.port' doesn't map to an existing object at org.apache.commons.configuration.AbstractConfiguration.getInt(AbstractConfiguration.java:816) at org.apache.james.modules.mailbox.CassandraSessionModule.lambda$provideCluster$0(CassandraSessionModule.java:83) at com.nurkiewicz.asyncretry.SyncRetryJob.run(SyncRetryJob.java:23)
        at com.nurkiewicz.asyncretry.RetryJob.run(RetryJob.java:108)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)





--
"The Truth is out there" - Spooky


---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org
For additional commands, e-mail: server-user-h...@james.apache.org

Reply via email to