6.3 KiB
6.3 KiB
Ultimail
Équivalent : Gmail Statut : Partiel (backend avancé, incomplet)
Résumé
Client mail unifié multi-comptes avec backend de synchronisation. Un compte Ultimail gère plusieurs comptes mail (SMTP/IMAP/POP3) avec identités d'envoi/réception distinctes, catch-all, et libellés unifiés.
État d'implémentation réel (mai 2026)
Déjà implémenté
- API
/api/v1/mailavec endpoints comptes, messages, threads, envoi, règles, webhooks. - Workers backend IMAP sync et SMTP outbox démarrés au boot.
- Schéma SQL principal mail en place (accounts, messages, folders, rules, outbox, webhooks, attachments).
Partiel / incomplet
- Outbox planifiée: incohérence de statuts
scheduled/queued. - Règles et webhooks: briques présentes mais pas entièrement branchées au pipeline réel de réception.
- Threading, pièces jointes et identités d'envoi encore incomplets.
- Realtime WS non finalisé côté auth/events.
Non commencé
- Tri IA en production.
- Tokens API fine-grained pour agents externes.
- Expérience desktop Tauri/mobile branchée au backend réel.
Points de différenciation vs Gmail
- Webhooks avancés avec système de templates personnalisables (Slack, Discord, custom)
- Connectivité contrôlée avec agents IA via tokens API fine-grained
- Tri intelligent par LLM (fournisseurs OpenAI-compatibles, prompt personnalisé par règle)
- Hébergement souverain, données sous contrôle
- Multi-comptes natif avec unification complète (libellés, dossiers, recherche cross-comptes)
Fonctionnalités
Core
- Réception / envoi de mails (IMAP/SMTP)
- Multi-comptes avec identités d'envoi/réception
- Catch-all (envoi et réception)
- Conversations / threads
- Libellés et dossiers unifiés
- Recherche avancée
- Pièces jointes
- Brouillons, envoi programmé
- Contacts intégrés
Automatisations
- Règles de tri à la réception
- Forward automatique
- Réponses automatiques
- Webhooks avec templates
- Tri IA (LLM + prompt personnalisé)
- Tokens API fine-grained pour agents
UX
- Interface inspirée Gmail (migration sans friction)
- Desktop web + Tauri + mobile — UX uniforme
- Thèmes, densité, préférences par compte
- Raccourcis clavier complets
- Offline-first avec sync backend
Intégration avec la suite (Nextcloud)
Ultimail utilise sa propre stack mail (pas le module mail de Nextcloud qui est insuffisant) mais s'intègre avec l'instance Nextcloud partagée pour les services complémentaires :
Ce qu'Ultimail utilise de Nextcloud
| Service | Usage dans Ultimail | API |
|---|---|---|
| Ultidrive (WebDAV) | Sauvegarder les pièces jointes dans Drive | PUT /remote.php/dav/files/{user}/ |
| Ultidrive (WebDAV) | Insérer des fichiers Drive dans un mail | GET + lien de partage OCS |
| Agenda (CalDAV) | Détecter les invitations .ics et créer des événements | PUT .../calendars/{user}/{cal}/{uid}.ics |
| Agenda (CalDAV) | Afficher les événements du jour dans la sidebar mail | REPORT calendar-query |
| Contacts (CardDAV) | Autocomplétion destinataires depuis le carnet | REPORT addressbook-query |
| Contacts (CardDAV) | Enrichir les fiches contact avec l'historique mail | Sync bidirectionnelle |
Ce qu'Ultimail NE délègue PAS à Nextcloud
- IMAP/SMTP — client mail custom (stalwart-mail, maddy, ou implémentation propre)
- Stockage des mails — PostgreSQL + object storage propre (pas la DB Nextcloud)
- Règles de tri, automatisations, webhooks — moteur custom dans le backend Ultimail
- Recherche mail — index dédié (Meilisearch/Typesense) distinct de la recherche NC
- Auth mail — OAuth2/App passwords gérés par le backend Ultimail, pas par NC
Flux d'interaction
┌──────────────────────────────────────────────────────────┐
│ Frontend Ultimail │
└────────────┬─────────────────────────────┬───────────────┘
│ │
▼ ▼
┌────────────────────────┐ ┌────────────────────────────┐
│ Backend Ultimail │ │ Nextcloud (headless) │
│ ├─ IMAP/SMTP client │ │ ├─ WebDAV (pièces jointes)
│ ├─ Moteur de règles │───▶│ ├─ CalDAV (invitations) │
│ ├─ Stockage mails │ │ └─ CardDAV (contacts) │
│ ├─ Webhooks/IA │ └────────────────────────────┘
│ └─ API sync clients │
└────────────────────────┘
Le backend Ultimail communique avec Nextcloud côté serveur pour :
- Créer un événement quand un mail contient une invitation .ics
- Résoudre les contacts pour l'affichage (photo, nom complet)
- Proposer "Sauvegarder dans Drive" pour les pièces jointes
Briques technologiques envisagées
| Besoin | Option retenue | Alternatives |
|---|---|---|
| IMAP/SMTP | stalwart-mail, maddy, ou client custom | — |
| Recherche full-text | Meilisearch, Typesense | — |
| Stockage mails | PostgreSQL + object storage (attachments) | — |
| Push/sync temps réel | WebSocket, SSE | — |
| Pièces jointes → Drive | Nextcloud WebDAV (même instance) | — |
| Calendrier (invitations) | Nextcloud CalDAV (même instance) | — |
| Contacts (autocomplétion) | Nextcloud CardDAV (même instance) | — |
| Auth | OIDC partagé Ulti Suite | — |
Voir aussi
- CLAUDE.md — contexte technique détaillé du frontend actuel
- ultidrive.md — détails intégration Nextcloud fichiers
- agenda.md — détails intégration Nextcloud calendrier
- contacts.md — détails intégration Nextcloud contacts
components/gmail/README.md— arborescence composantslib/stores/README.md— architecture stores