Mailbox is the core component of Carbonio.
This repository contains the source code of Carbonio Mailbox which consists of several subcomponents and their roles:
- client: client package to interact with the mailbox
- common: package providing classes of common use, like utilities, clients and common parameters
- native: package to load native libraries
- soap: package describing SOAP APIs and tools to generate wsdl documentation
- store: the real mailbox service (SOAP APIs, IMAP, POP3 and CLI)
- Requirements:
- JDK version 17. Confirm by running:
$ javac -version
- gcc to build
native
module
- Build the Code by running:
$ mvn clean install -DskipTests
Whenever you make changes to attrs.xml you can generate rights and ZAttr* classes by running:
mvn antrun:run@generate-zattr-rights
mvn antrun:run@generate-soap-docs
Following guide provides two different ways to run Carbonio Mailbox locally for Development:
Run com.zextras.mailbox.SampleLocalMailbox
main class in store module,
test directory.
This will start a Mailbox with in-memory LDAP and an HSQLDB database.
This option compiles the code, packages the artifacts, installs all the built Carbonio Mailbox packages, and then starts the services.
- Build the project:
$ mvn install -DskipTests
- Build packages using build_packages.sh:
The following commands will build the packages for ubuntu-focal, see
build_packages.sh for other supported targets.
$ ./build_packages.sh ubuntu-focal
- Navigate to the docker/single-server directory:
$ cd ./docker/single-server
- Start Carbonio-CE
Ubuntu Focal
docker image with built Carbonio Mailbox packages:NB: don't forget to use the$ docker compose --profile ubuntu-focal up --build
--build
flag, otherwise it will not load the new changes
All contributions are accepted! Please refer to the CONTRIBUTING file (if present in this repository) for more detail on how to contribute. If the repository has a Code of Conduct, we kindly ask to follow that as well.
To publish packages in RC:
- Make sure release-it is
installed or install it by running
npm install
- Update pom.xml version according to needs
- run
npm run release
accepting to commit, tag and push It will result in CI building the tag and releasing the packages to RC channel.
See COPYING file for detail.