James allows defining your own handler packages (logical union).
To do that you need to define imapPackages
in imapserver.xml
configuration file.
Eg:
<imapPackages>org.apache.james.modules.protocols.DefaultImapPackage</imapPackages>
<imapPackages>org.apache.james.examples.imap.PingImapPackages</imapPackages>
Sample configure file: imapserver.xml
Note that when imapPackages
is not provided, James will implicit use
org.apache.James.modules.protocols.DefaultImapPackage
Build the project:
mvn clean install
Drop the jar with dependencies in the James extensions-jars
folder.
Then start James.
Compile:
mvn clean install
Then start James:
docker-compose up
Test with imap package: org.apache.james.examples.imap.PingImapPackages
Command example:
telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK JAMES IMAP4rev1 Server james.local is ready.
a01 LOGIN bob secret
a01 NO LOGIN failed. Invalid login/password.
a02 LOGIN bob@localhost secret
a02 OK LOGIN completed.
A03 PING
* PONG
A03 OK PING completed.