Commit Graph
25 Commits
Author SHA1 Message Date
BastienandGitHub a67fd36c33 (ops) implement production docker images (#451)
* (ops) implement production docker images

Github workflows:
  - moved docker-publish jobs into a separate file on push main only
Backend:
  - added healthcheck on backend Dockerfile + minor fixes
  - bumped django to 5.1.15 to mitigate major CVE
  - moved /healthz endpoint to /__heartbeat__ + added db connection
    check
Frontend:
  - Added runtime-prod Dockerfile target + minor fixes on the Dockerfile
  - bump next to 15.5.9 to mitigate major CVE
  - moved nginx config to standard nginx container configuration
    template, fixed `scalingo_postfrontend` accordingly
Keycloak:
  - Added production Dockerfile
  - Removed scalingo_pgdump script & cron.json
socks-proxy:
  - added package upgrades run into runtime Dockerfile stage
Misc:
  - removed scalingo_pgdump.sh & cron.json
  - fixed compose and e2e nginx configs with /healthz replacement

* (fix) coderabbit recommandations
2026-01-12 15:18:25 +01:00
jbpenrath a87d8f4a46 (e2e) add first tests
Add first test to test import and send message

Resolve #238
2025-11-25 23:28:21 +01:00
Jean-Baptiste PENRATHandGitHub 2d9fd3e5a1 💚(crowdin) fix crowdin upload job (#399)
The `synchronize-with-crowdin` was not working since we add the msg-import
s3 storage.
2025-10-30 11:34:53 +01:00
Jean-Baptiste PENRATHandGitHub 10be269761 (import) Enhance message import through multipart upload (#372)
- Added multipart upload capabilities for EML and MBOX files to the
  message imports bucket.
- Introduced new API endpoints for initiating uploads, completing
  uploads, and aborting uploads.
- Updated serializers and viewsets to handle file uploads efficiently.
- Improved frontend components to display upload progress and handle
  file uploads seamlessly.
- Adjusted backend services to process uploaded files asynchronously,
  ensuring better performance and user experience.
- Updated documentation and tests to reflect the new functionality.
2025-10-14 17:31:17 +02:00
Jean-Baptiste PENRATHandGitHub 408f6e61de 💚(crowdin) push french translations through ci (#367)
Upload french translations only as we want to translate this language
during dev
2025-10-07 18:36:02 +02:00
jbpenrath 032501eb5f 🔧(crowdin) setup a crowdin workflow
Enable commands to upload and download translation file to/from crowdin.
Setup ci workflow to automatically update translation files on each merge on
main branch. Also add a worklow that can be manually triggered which is in
charge to update application translation files then open a PR.
2025-10-06 10:06:14 +02:00
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