Commit Graph
19 Commits
Author SHA1 Message Date
03a8dc743d ✨(mta) add Direct mode for MTA out (#285)
This PR adds support for 2 MTA out modes : Direct-to-MX and SMTP-relay outbound delivery. Direct mode supports SOCKS5 proxies, and we bundle a new `src/socks-proxy` component to support it.

We also add an end-to-end self-check command plus scheduled health-check task with optional Prometheus metrics.

---------

Co-authored-by: Bastien Ogier <bastien.ogier@ext.anct.gouv.fr>
Co-authored-by: Stanislas Bruhiere <stanislas@bruhiere.fr>
2025-09-04 15:48:46 +02:00
jbpenrath 7c07711489 👽️(openapi) improve user definition with or without abilities
The OpenAPI Schema does not embedded abilities property.
We fix that and make two serializers for User model in order to get proper
openapi definition for User instance with abilities and without abilities.
2025-07-31 17:19:23 +02:00
Sylvain ZimmerandGitHub 9b4ba9ba09 ✨(dns) add admin page for DNS records (#283)
* ✨(dns) add admin page for DNS records. Fixes #177

* 👷(dockerflow) add a flag to disable Dockerflow

* 💚(ghactions) fix check-api-update that was missing Orval

* 💚(ci) fix tests that depended on Keycloak

* ♻️(admin) refactor CopyableInput into a separate component

* 🎨(dns) improve code style
2025-07-21 14:41:08 +02:00
Sylvain ZimmerandSabrina Demagny 9bef38c53a 💚(lint) fix lint GH action 2025-07-18 14:11:29 +02:00
Sylvain ZimmerandSabrina Demagny 4545f4ff48 ✨(roles) implement MailboxAccessRole.SENDER 2025-07-18 14:11:29 +02:00
Sylvain Zimmer 21ee4e9177 📈(posthog) add posthog.identify call to ID users' feedbacks 2025-07-17 22:32:47 +02:00
BastienandGitHub 286e01f3e8 actions: cleanup container tags and add the retention action. (#269) 2025-07-15 14:04:55 +02:00
jbpenrath 5e72ec0c6d 💚(ci) fix lint-all job
Use the command `make lint` instead of the deleted `make lint-check`
2025-07-15 13:55:51 +02:00
Sylvain Zimmer d93f1a9e71 💚(actions) fix github action with dockerfile target stage 2025-07-15 11:29:20 +02:00
Sylvain ZimmerandGitHub f1a89a5bdb ✨(all) refactor several areas before 0.1 release (#265)
We are going to release a 0.1 version soon, along with our first production deployment. Starting from there, migrations and a consistent developer experience will be officially supported. To make that easier, this large patch cleans up several areas:
 * Reset migrations one last time
 * Update models for storage efficiency (move textchoices to integerchoices on high-volume tables)
 * Use Blobs for mail mime data and draft bodies. Having them in a separate PG table is a first step, we will later start offloading them to object storage.
 * Add default ZSTD compression to blobs
 * Add per-domain DKIM Keys
 * Add DNS check and provisioning, with a first Scaleway provider
 * Fix Keycloak user provisioning
 * Fix Attachment storage, they are now stored individually only at the drafting stage. Afterwards they are extracted from the main blob. This may be optimized later but at least we only store once. For JMAP compatibility, this requires using fake IDs in the blob API route.
 * Add a management command and recurring task to retry unsent messages
 * Improve the local developer experience with new ports and make commands
 * Repackage MTA-in and MTA-out to be closer to Backend: Poetry, multi-step Dockerfile, move compose and makefile to the root
 * Migrate to OpenSearch
 * Improve overall documentation and add a self-hosting page

Contributes to #177 and #185
2025-07-15 10:41:55 +02:00
Bastien Ogier 1c3d218042 ci: docker build and push mta-in and mta-out. 2025-07-09 20:25:57 +00:00
Sabrina Demagny d39932c353 💚(backend) fix lint and collectstatic needed
Fix lint failures and run collectstatic
before running tests
2025-06-02 16:47:29 +02:00
Jean-Baptiste PENRATHandGitHub 7ddcc668f3 💚(ci) add job check-api-state (#111)
Add a job to ensure that api schema and client
are up-to-date.
2025-05-21 22:22:27 +02:00
Sylvain ZimmerandGitHub 1f4047a061 ✨(celery) add Celery worker, search, recipient statuses, better build (#88)
Before, sending was done synchronously on the api/send POST call. Now
we just build the MIME message and mark the message for sending, and
queue the actual SMTP (or internal) sending for the worker. We use
this opportunity to add fine-grained delivery statuses for each
recipient, something that traditional email systems are unable to do!

Expanding on that, this (too large) PR adds an initial Elasticsearch
index of threads. It also overhauls the build and CI system, using
Poetry instead of Pip.
2025-05-13 00:52:48 +02:00
Sylvain Zimmer 318cb72aa9 ✨(rfc5322) add stronger RFC5322 parsing and connect to MTAs
This large commit upgrades our raw email parsing from the native
Python library to the Flanker package.
2025-04-22 10:34:26 +02:00
jbpenrath 925f71f8a1 💚(ci) add jobs to check frontend
Run test, lint and try to build the front
2025-04-22 10:24:18 +02:00
jbpenrath e9abfcac9a 💚(ci) fix lint-back job
Since we added a setup.py module, the lint-back was failing
as setuptools was not install in the ci job
2025-04-16 22:09:07 +02:00
Sabrina Demagny 74332e4642 👷(ci) run tests and linters 2025-04-15 17:50:12 +02:00
Sylvain Zimmer 53db5a748d 🎉(all) bootstrap the Messages project
We used the Drive repository as starting point. There are still
some leftovers that will be cleaned up over time.
2025-04-13 18:48:04 +02:00