# ============================================= BlobStore Implementation ==================================
# Read https://james.apache.org/server/config-blobstore.html for further details

# Choose your BlobStore implementation
# Mandatory, allowed values are: cassandra, s3, hybrid
# hybrid is using both objectstorage for unfrequently read or big blobs & cassandra for small, often read blobs
implementation=s3

# ========================================= ObjectStorage deduplication ========================================
# If you choose to enable deduplication, the mails with the same content will be stored only once.
# Warning: Once this feature is enabled, there is no turning back as turning it off will lead to the deletion of all
# the mails sharing the same content once one is deleted.
# Mandatory, Allowed values are: true, false
deduplication.enable=false

# ========================================= Cassandra BlobStore Cache ======================================
# A cassandra cache can be enabled to reduce latency when reading small blobs frequently
# A dedicated keyspace with a replication factor of one is then used
# Cache eviction policy is TTL based
# Only blobs below a given threshold will be stored.
# To be noted that blobs are stored within a single Cassandra row, hence a low threshold should be used.

# Enable the cache? Optional and default to false. Must be a boolean.
cache.enable=false

# Cache eviction policy is TTL based. Optional and defaults to 7 days. Must be a duration.
# Valid units: ms, sec, min, hour, day, week, month, year
# cache.cassandra.ttl=7days

# Timeout after which this cache should be bypassed. Optional and defaults to 100ms. Can not exceed 1 hour.
# Must be a duration Valid units: ms, sec, min, hour, day, week, month, year
# cache.cassandra.timeout=100ms

# Maximum size of stored objects expressed in bytes. Must be strictly positive. Defaults to 8192.
# Units: bytes, Kib, MiB, GiB, TiB
# cache.sizeThresholdInBytes=8 KiB

# ============================================== ObjectStorage ============================================

# ========================================= ObjectStorage Buckets ==========================================
# bucket names prefix
# Optional, default no prefix
# objectstorage.bucketPrefix=prod-

# Default bucket name
# Optional, default is bucketPrefix + `default`
objectstorage.namespace=${env:OS_NAMESPACE}


# ========================================= ObjectStorage on S3 =============================================
objectstorage.s3.region=${env:OS_S3_REGION}
objectstorage.s3.endPoint=${env:OS_S3_ENDPOINT}
objectstorage.s3.accessKeyId=${env:OS_S3_ACCESSKEYID}
objectstorage.s3.secretKey=${env:OS_S3_SECRETKEY}

# ============================================ Blobs Exporting ==============================================
# Read https://james.apache.org/server/config-blob-export.html for further details

# Choosing blob exporting mechanism, allowed mechanism are: localFile, linshare
# LinShare is a file sharing service, will be explained in the below section
# Optional, default is localFile
blob.export.implementation=localFile

# ======================================= Local File Blobs Exporting ========================================
# Optional, directory to store exported blob, directory path follows James file system format
# default is file://var/blobExporting
blob.export.localFile.directory=file://var/blobExporting

# ======================================= LinShare File Blobs Exporting ========================================
# LinShare is a sharing service where you can use james, connects to an existing LinShare server and shares files to
# other mail addresses as long as those addresses available in LinShare. For example you can deploy James and LinShare
# sharing the same LDAP repository
# Mandatory if you choose LinShare, url to connect to LinShare service
# blob.export.linshare.url=http://linshare:8080

# ======================================= LinShare Configuration BasicAuthentication ===================================
# Authentication is mandatory if you choose LinShare, TechnicalAccount is need to connect to LinShare specific service.
# For Example: It will be formalized to 'Authorization: Basic {Credential of UUID/password}'

# blob.export.linshare.technical.account.uuid=Technical_Account_UUID
# blob.export.linshare.technical.account.password=password
