> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oximail.ch/llms.txt
> Use this file to discover all available pages before exploring further.

# Migration

> Importer courrier, contacts, agendas et tâches dans OxiMail : les sources d'oximail migrate (IMAP, Stalwart, mbox/Maildir, Google Takeout, vCard, iCalendar), l'idempotence et les vérifications d'après import.

`oximail migrate` importe des données existantes dans un compte provisionné. L'[assistant d'installation](../first-boot) le propose en dernière étape, et il peut se lancer seul autant de fois que nécessaire : l'import est reprenable et tient son propre état d'avancement, une relance continue au lieu de dupliquer.

## Les sources

| Option                           | Source                                                                                                                 |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `--from-imap <hôte>`             | N'importe quel serveur IMAP4 vivant (Dovecot, Exchange, Gmail...). Courrier et arborescence de dossiers.               |
| `--from-jmap <url> --token <t>`  | Un serveur Stalwart vivant, par son API JMAP.                                                                          |
| `--from-dump <chemin>`           | Un répertoire d'export de données Stalwart (migration hors ligne).                                                     |
| `--from-mbox <chemin>`           | Un fichier mbox ou un répertoire Maildir.                                                                              |
| `--from-google-takeout <chemin>` | Un export Google Takeout : détecte automatiquement les sous-répertoires `Mail/`, `Contacts/`, `Calendar/` et `Tasks/`. |
| `--from-vcf <chemin>`            | Un fichier vCard (3.0 ou 4.0, plusieurs entrées par fichier) : contacts uniquement.                                    |
| `--from-ics <chemin>`            | Un fichier iCalendar : `VEVENT` (événements) et `VTODO` (tâches).                                                      |

## Ce que l'import fait bien

* **Les rôles de dossiers sont détectés depuis les noms.** Un dossier source localisé sans métadonnée de rôle (« Brouillons », « Papierkorb », « Sent Items »...) fusionne dans le dossier système provisionné correspondant grâce à une table multilingue nom vers rôle, au lieu d'arriver comme dossier personnalisé en double à côté d'un dossier système vide. Cela vaut dans tous les modes, y compris les imports en mode JMAP.
* **Les événements récurrents deviennent de vraies règles de récurrence.** Les `RRULE` courantes des clients sont converties en `RecurrenceRules` JMAP typées par la même autorité de conversion que le serveur vivant. Un résidu inconvertible est conservé **tel quel** (et l'événement est marqué `hasUnmodeledRecurrence` en lecture) avec un avertissement bruyant : jamais de règle à moitié convertie, jamais de perte silencieuse.
* **Les identités d'annuaire sont frappées à neuf.** Les comptes importés reçoivent des identifiants de principal nouveaux et distincts (le lien compte-principal est une colonne interne, pas une égalité d'identifiants), comme ce que fait le serveur pour les comptes créés nativement.
* **Tout atterrit par le chemin d'ingestion normal.** Le courrier importé est analysé, indexé, enfilé et chiffré au repos exactement comme le courrier remis ; il n'existe pas de classe de stockage « importé » à part.

## Idempotence et l'état d'avancement

La migration enregistre sa progression par compte dans un fichier d'état : une exécution interrompue reprend, et un compte terminé est sauté à la relance. Supprimer un compte, par la CLI **ou** par l'API d'administration, purge son état de migration : une suppression suivie d'une remigration le réimporte, au lieu de le sauter en silence comme « déjà migré ».

## Après l'import

Lancez les deux commandes de réparation (en simulation par défaut) et la vérification DNS :

```bash theme={null}
oximail account dedupe-folders --all-accounts        # dossiers en double des imports anciens
oximail account dedupe-tasks   --all-accounts        # lignes de tâches en doublon exact des imports répétés
oximail check-dns --domain <domaine> --ip <ip>       # le DNS de courrier du domaine
```

Les deux commandes `dedupe` affichent leur plan sans rien toucher ; ajoutez `--apply` pour exécuter. Voir [Travail collaboratif](./groupware) pour le détail de ce qu'elles réparent, et la [référence CLI](./cli) pour toutes les options.

<Note>
  Les comptes doivent exister avant qu'on puisse y importer du courrier : créez-les d'abord avec `oximail account create` (ou l'assistant). L'import s'authentifie auprès de la **source** ; il n'a jamais besoin des mots de passe OxiMail des utilisateurs.
</Note>
