Benoit Tellier created JAMES-3819: ------------------------------------- Summary: James as a (distributed) MX server Key: JAMES-3819 URL: https://issues.apache.org/jira/browse/JAMES-3819 Project: James Server Issue Type: Improvement Components: SMTPServer Reporter: Benoit Tellier
h3. Why ? Alternatives like Postfix... - Do not offer a unified view of the mail queue across nodes - Requires statefull persistent storage Given Apache James recent push to adopt a distributed mail queue based on Pulsar supporting delays (JAMES-3687), it starts making sense developing tooling for MX related tooling. I propose myself to mentor a Gsoc on this topic. h3. Benefits for the student At the end of this GSOC you will... - Have a solid understanding of email relaying and associated mechanics - Understand James modular architecture (mailet/ matcher / routes) - Have a hands-on expertise in SQL / NoSQL working with technologies like Cassandra, Redis, JPA... - Identify fix and solve architecture problems. - Conduct performance tests and develop an operational mindset h3. Inventory... James ships a couple of MX related tools within smtp-hooks/mailets in default packages. It would make sense to me to move those as an extension. James supports today... - *checks agains DNS blacklists*. `DNSRBLHandler` smtp hook for instance. I did get an operational issue here: querying the blacklist on each mail can be slow. I bet a cache here would make sense to reduce the load on such blacklist. We could have a non-distributed extension based on a memory cache We could have a distributed extension based on a Redis cache. We would also need a little performance benchmark to document performance implications of activating DNS-RBL. - *Grey listing*. There's an existing implementation using JDBC as an underlying storage. Move it as an extension. Remove JDBC storage, propose 2 storage possibilities: in-memory for single node, REDIS for a distributed topology. - Some work around *whitelist mailets*? Move it as an extension, propose JPA, Cassandra, and XML configured implementations ? With a route to manage entries in there for JPA + Cassandra ? - Lossly related but a *distributed fail2ban* would be awesome to me! - I would expect a student to do his own little audit and come up with extra suggestions! -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org