blob: 15011dc388a2d086e4b7efbb88eda989b267acf3 [file]
This file may contain any additional system properties for tweaking JVM execution. When you normally would add a command line option `-Dmy.property=whatever`, you can put it in this file as `my.property=whatever` instead. These properties will be added as system properties on server start.
Note that in some rare cases this might not work,
when a property affects very early JVM start behaviour.
For testing purposes, you may specify a different file path via the command line option `-Dextra.props=/some/other/jvm.properties`.
== Control the threshold memory
This governs the threshold MimeMessageInputStreamSource relies on for storing MimeMessage content on disk.
In `jvm.properties`
----
james.message.memory.threshold=12K
----
(Optional). String (size, integer + size units, example: `12 KIB`, supported units are bytes KIB MIB GIB TIB). Defaults to 100KIB.
== Enable the copy of message in memory
Should MimeMessageWrapper use a copy of the message in memory? Or should bigger message exceeding james.message.memory.threshold
be copied to temporary files?
----
james.message.usememorycopy=true
----
Optional. Boolean. Defaults to false. Recommended value is false.
== Running resource leak detection
It is used to detect a resource not be disposed of before it's garbage-collected.
In `jvm.properties`
----
james.lifecycle.leak.detection.mode=advanced
----
Allowed mode values are: none, simple, advanced, testing
The purpose of each mode is introduced in `config-system.xml`
== Disabling host information in protocol MDC logging context
Should we add the host in the MDC logging context for incoming IMAP, SMTP, POP3? Doing so, a DNS resolution
is attempted for each incoming connection, which can be costly. Remote IP is always added to the logging context.
In `jvm.properties`
----
james.protocols.mdc.hostname=false
----
Optional. Boolean. Defaults to true.
== Change the encoding type used for the blobId
By default, the blobId is encoded in base64 url. The property `james.blob.id.hash.encoding` allows to change the encoding type.
The support value are: base16, hex, base32, base32Hex, base64, base64Url.
Ex in `jvm.properties`
----
james.blob.id.hash.encoding=base16
----
Optional. String. Defaults to base64Url.
== Improve listing support for MinIO
Due to blobs being stored in folder, adding `/` in blobs name emulates folder and avoids blobs to be all stored in a
same folder, thus improving listing.
Instead of `1_628_36825033-d835-4490-9f5a-eef120b1e85c` the following blob id will be used: `1/628/3/6/8/2/5033-d835-4490-9f5a-eef120b1e85c`
To enable blob hierarchy compatible with MinIO add in `jvm.properties`:
----
james.s3.minio.compatibility.mode=true
----
== JMAP Quota draft compatibility
Some JMAP clients depend on the JMAP Quota draft specifications. The property `james.jmap.quota.draft.compatibility` allows
to enable JMAP Quota draft compatibility for those clients and allow them a time window to adapt to the RFC-9245 JMAP Quota.
Optional. Boolean. Default to false.
Ex in `jvm.properties`
----
james.jmap.quota.draft.compatibility=true
----
To enable the compatibility.
== Enable Reactor Netty metrics for JMAP server
Allow to enable https://projectreactor.io/docs/netty/1.1.19/reference/index.html#_metrics_4[Reactor Netty metrics] for JMAP server which would provide useful debug information.
Optional. Boolean. Default to false.
Ex in `jvm.properties`:
----
james.jmap.reactor.netty.metrics.enabled=true
----
To enable the metrics.
== Enable S3 metrics
James supports extracting some S3 client-level metrics e.g. number of connections being used, time to acquire an S3 connection, total time to finish a S3 request...
The property `james.s3.metrics.enabled` allows to enable S3 metrics collection. Please pay attention that enable this
would impact a bit on S3 performance.
Optional. Boolean. Default to true.
Ex in `jvm.properties`
----
james.s3.metrics.enabled=false
----
To disable the S3 metrics.
== Reactor Stream Prefetch
Prefetch to use in Reactor to stream convertions (S3 => InputStream). Default to 1.
Higher values will tend to block less often at the price of higher memory consumptions.
Ex in `jvm.properties`
----
# james.reactor.inputstream.prefetch=4
----
== Disable mailet container check at James startup
James is doing checks on startup for validating mailet container configuration against a set of
business rules, for instance making sure that the `bcc` header is being removed via
`RemoveMimeHeader` mailet in the mail processing pipeline defined in `mailetcontainer.xml` file.
It could be useful for some administrators that know what they are doing to disable such checks
during James startup.
Optional. Boolean. Defaults to true.
Ex in `jvm.properties`
----
james.mailet.container.check.enabled=false
----
To disable the mailet container check at James startup.
== Relax mailbox name validation
The property `james.relaxed.mailbox.name.validation` allows to accept `*` and `%` characters in mailbox name.
Optional. Boolean. Default to false.
Ex in `jvm.properties`
----
james.relaxed.mailbox.name.validation=true
----
To relax validating `\*` and `%` characters in the mailbox name. Be careful as `%` and `*` are ambiguous for the LIST / LSUB commands that interpret those as wildcard thus returning all mailboxes matching the pattern.