LinEdu-Banner LinEdu-Logo LinEdu-text Learn more about LinEdu linshare-mobile Secure file sharing app
in open source
Download LinShare app for Android linshare-mobile
openpaas-slider openpaas-devices-2 Cover-LinTO
Linh Thao Nguyen

Linagora representing JAMES at the ApacheCon Europe 2019

I started contributed to Apache JAMES as a shy guy proposing patches attached to emails to the James mailing list. Since 2015, I kept devoting my time and energy to this beautiful project, eventually becoming part of the Project Member Committee.

Along that road, full of community interactions and contributions, I never had the chance to meet other Apache folks. Thus, when a talk “Gaining control over your emails with Apache James” was accepted at the ApacheCon Europe 2019, I was really excited!

Here we go!

Apache James ships many extensions. Some of them allows full customization of the mail processing, some other allow extending the administrative REST API. James allows loading custom components to be used by one extension, allowing development of generic extensions in a back-end agnostic fashion.

The “blacklist” extensions contains a generic mail processing component and administrative API. We provided a simple memory implementation, but you can very well provide a Cassandra or JPA based storage for this feature!

I organized a live-coding session, where a generic “NotInBlackList” matcher reads an in memory implementation that had been configured with a user defined administrative endpoint.

During the Hackaton, I explained another key aspect of Apache James: it is a distributed mail server. Leveraging Cassandra for meta-data storage, an object store, ElasticSearch for distributed search and RabbitMQ for messaging. Such an email server is way easier to administrate and scale than a classical email server, relying on file storage.

High level distributed James architecture

Furthermore, this was a dreamed occasion to discuss with people about “The Apache Way”. We can summarize this as “Community over Code”. And that great community will eventually contribute great code. This can be achieved through centralized asynchronous conversation, where we let people the time to interact, respect the right for people to do mistakes. Debates takes time, and we should be aiming at consensus. Hopefully, this might give some new ideas of how to structure Apache James community!

Linagora employs 8 committers to the Apache James project for over 4 years. This investment lead to contributions that benefits the all community. Mentioning all contributions would of course be too long, but we can mention the Distributed Email server leveraging Cassandra, ElasticSearch, RabbitMQ and object storage, and the JMAP protocol draft.

WRITTEN BY

Benoit Tellier

Software back-end engineer @linagora, Apache James PMC