Commit Graph
15 Commits
Author SHA1 Message Date
jbpenrath b887e926c7 🔧(Makefile) add command to generate es index
Add `elasticsearch-index` command
2025-05-14 16:58:43 +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 270d07b9b2 🔨(db) add a script to make a full reset of the database, including schema 2025-04-24 15:56:02 +02:00
Sylvain ZimmerandGitHub 58226a7822 (threads) implement better threading algorithm (#53)
* 🚧(threads) implement first threading algorithm

* (threads) improve threading algorithm and add tests
2025-04-23 19:53:43 +02:00
Sylvain Zimmer d789bb48ca (e2e) make end-to-end emailing work!
You can now send emails to the inbound MTA, which will forward them
to the Django MDA. You can then read them (served through REST) from
the frontend and compose a reply! The frontend will POST the message
to Django, which will build an RFC5322 message and send it to the
outbound MTA, which will relay it to the local mailcatcher where you
can view your reply. Phew!

Initial documentation in the README but this is the core loop that
will be expanded upon, with diagrams and videos!
2025-04-22 18:47:35 +02:00
jbpenrath 1149bf73b7 🔧(make) add commands to generate openapi stuff
Add a command `api-update` to generate JSON OpenApi Schema then
update the frontend api client.
2025-04-22 11:59:10 +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 7dfa7c44ce (frontend) setup vitest
We need to write some tests and we decide to use vitest
for that
2025-04-22 10:24:18 +02:00
Sylvain Zimmer 2b670b69dc (mta-out) add HAProxy toggle in MTA-out + lint the tests 2025-04-21 14:54:07 +02:00
Sylvain Zimmer e522acdef0 👷(front) update frontend tooling, nginx config and app name
Simplified Docker setup for frontend, use frontend-dev for running
the app itself, and frontend-tools for all npm usage. The local
node_modules directory should be used, without any copy in the container
2025-04-17 00:25:53 +02:00
Sabrina Demagny 2c85d14d75 🧑‍💻(Makefile) add showmigrations
Allow to display all migrations status
2025-04-16 23:24:08 +02:00
Sylvain ZimmerandGitHub 1070c1ab19 🚀(scalingo) add Scalingo deployment scripts (#12)
* 🚀(scalingo) add scalingo nginx config

* 👷(frontend) fix frontend build, no lint for now

* 👷(scalingo) fix frontend build location and backend buildpack compat

* 🐛(nginx) try another build location

* 🐛(scalingo) fix nginx startup

* 🐛(scalingo) fix scripts and buildpack run location

* 🐛(scalingo) fix buildpack cleanup

* 🐛(nginx) pass host headers to the backend

* 🚀(scalingo) support DATABASE_URL env var
2025-04-16 18:17:09 +02:00
Sylvain Zimmer 287169118b (mta) harmonize MTA and Django routes and tests
First emails can now be sent from port 25 of mta-in through Django.
2025-04-16 01:20:08 +02:00
Sylvain ZimmerandGitHub 7769a8c7a6 (mda) add incoming mail route and clean backend tests (#2)
* (mda) add incoming mail route and clean backend tests

* ♻️(api) add a JWT auth middleware for the MTA routes and move to viewset_mta.py
2025-04-15 19:17:06 +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