blob: 1ca468c25c57a4261a24ef8894377cb14ef19246 [file] [log] [blame] [view]
# Creating your own IMAP commands
James allows defining your own handler packages (logical union).
To do that you need to define `imapPackages` in `imapserver.xml` configuration file.
Eg:
```xml
<imapPackages>org.apache.james.modules.protocols.DefaultImapPackage</imapPackages>
<imapPackages>org.apache.james.examples.imap.PingImapPackages</imapPackages>
```
Sample configure file: [imapserver.xml](./sample-configuration/imapserver.xml)
Note that when `imapPackages` is not provided, James will implicit use
`org.apache.James.modules.protocols.DefaultImapPackage`
## Running the example
Build the project:
```
mvn clean install
```
Drop the jar with dependencies in the James `extensions-jars` folder.
Then start James.
## Running the example with docker compose
Compile:
```
mvn clean install
```
Then start James:
```
docker-compose up
```
Test with imap package: `org.apache.james.examples.imap.PingImapPackages`
Command example:
```bash
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.
```