Module Collecteur de courrier électronique: Difference between revisions

Ajout de la configuration coté office 365
Tag: 2017 source edit
(Ajout de la configuration coté office 365)
Tag: 2017 source edit
 
Line 25: Line 25:
{{ActivationModuleFr}}
{{ActivationModuleFr}}


==Configuration avec Microsoft 365 / Office 365 (Exchange Online)==
Cette procédure décrit une collecte IMAP avec OAuth 2.0 délégué et autorisation initiale dans un navigateur. Elle s’appuie sur les mécanismes natifs de Dolibarr 24 ; les intitulés et fournisseurs proposés peuvent varier avec la version installée. Elle ne décrit pas le mode « application seule » avec IMAP.AccessAsApp.
===Prérequis===
*Une boîte Exchange Online accessible au compte qui autorisera la connexion.
*Un accès administrateur à Dolibarr et l’intervention d’un administrateur Microsoft Entra / Exchange pour les autorisations nécessaires.
*Une URL Dolibarr HTTPS valide, comprenant son éventuel sous-répertoire.
*Depuis le serveur hébergeant Dolibarr : résolution DNS et connexions TCP sortantes vers outlook.office365.com:993 et vers les points de terminaison Microsoft OAuth en HTTPS sur le port 443. Une connexion réussie depuis le poste de l’utilisateur ne vérifie pas celle du serveur.
===Côté Dolibarr : relever les informations avant l’inscription Microsoft===
#Activer le module '''Collecteur de courrier électronique''' dans Configuration → Modules/Applications.
#Ouvrir Configuration → Services OAuth, ou la page <code>/admin/oauth.php</code>.
#Créer un service dédié et sélectionner, lorsqu’il est proposé, '''Microsoft Exchange Online [SMTP/IMAP]'''. Ce service peut servir à la réception seule.
#Copier l’'''URL de redirection affichée par Dolibarr'''. Pour ce fournisseur, elle se termine par <code>/core/modules/oauth/microsoft3_oauthcallback.php</code>. Exemple : <code>https://erp.example.org/core/modules/oauth/microsoft3_oauthcallback.php</code>.
#Avec un autre fournisseur natif ou générique, utiliser son URL affichée : les callbacks microsoft, microsoft2 et generic sont différents. Ne pas substituer un chemin arbitraire.
===Côté Microsoft 365===
====1. Inscription de l’application====
Dans le [https://entra.microsoft.com/ centre d’administration Microsoft Entra], ouvrir '''Identité → Inscriptions d’applications → Nouvelle inscription'''.
*Donner un nom explicite à l’application, par exemple « Dolibarr – collecte IMAP ».
*Pour une installation interne à une organisation, choisir les comptes de cet annuaire uniquement.
*Ajouter une plateforme '''Web''' et renseigner exactement l’URL de redirection copiée depuis Dolibarr.
*Conserver l’'''ID d’application (client)''' et l’'''ID d’annuaire (locataire / tenant)'''.
Voir [https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app l’inscription d’application] et [https://learn.microsoft.com/en-us/entra/identity-platform/how-to-add-redirect-uri les URI de redirection].
====2. Identifiant confidentiel de l’application====
Pour le fournisseur Dolibarr utilisant un secret client, ouvrir '''Certificats et secrets → Secrets client → Nouveau secret client'''. Copier sa '''valeur''', et non son identifiant. Noter sa date d’expiration et prévoir son remplacement dans Dolibarr. Cette valeur n’est plus affichée ensuite. Ne pas la publier dans le wiki, les journaux ou un courriel.
Voir [https://learn.microsoft.com/en-us/entra/identity-platform/how-to-add-credentials les identifiants de l’application].
====3. Autorisations et consentement====
Configurer les autorisations '''déléguées''' nécessaires au parcours choisi : <code>IMAP.AccessAsUser.All</code> et <code>offline_access</code>. Elles figurent notamment dans le catalogue Microsoft Graph des autorisations déléguées. '''Mail.Read seul ne remplace pas l’autorisation IMAP.'''
Faire accorder le consentement administrateur lorsque la politique du tenant l’exige, puis vérifier son état. Ajouter les permissions à l’inscription ne constitue pas, à lui seul, un consentement. L’approbation par l’administrateur ne dispense pas d’autoriser ensuite la boîte depuis Dolibarr.
Les filtres de collecte ne restreignent pas les droits du jeton sur la messagerie.
Voir [https://learn.microsoft.com/en-us/graph/permissions-reference#imapaccessasuserall la permission IMAP] et [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/app-integration/troubleshoot-consent-issues le diagnostic du consentement].
====4. Autoriser IMAP pour la boîte====
Dans le centre d’administration Exchange : '''Destinataires → Boîtes aux lettres → sélectionner la boîte → Applications de messagerie → Gérer''', puis activer IMAP si nécessaire.
Un administrateur Exchange peut aussi utiliser PowerShell, après connexion à Exchange Online :
<syntaxhighlight lang="powershell">
Get-CASMailbox -Identity "collecte@example.org" | Select-Object ImapEnabled
Set-CASMailbox -Identity "collecte@example.org" -ImapEnabled $true
</syntaxhighlight>
Les stratégies de sécurité et d’accès conditionnel doivent permettre ce parcours OAuth. Ne pas désactiver globalement la MFA ou les protections du tenant pour contourner un refus.
Voir [https://learn.microsoft.com/en-us/Exchange/recipients-in-exchange-online/manage-user-mailboxes/managing-email-apps-for-user-mailboxes la gestion des protocoles] et [https://learn.microsoft.com/en-us/powershell/module/exchangepowershell/set-casmailbox?view=exchange-ps Set-CASMailbox].
===Côté Dolibarr : terminer la connexion OAuth===
Dans le service OAuth créé précédemment :
{| class="wikitable"
!Champ!!Valeur
|-
|ID client||ID d’application Microsoft
|-
|Secret client||Valeur du secret
|-
|Tenant / annuaire||ID du locataire Microsoft
|-
|Portée IMAP||https://outlook.office.com/IMAP.AccessAsUser.All
|-
|Renouvellement||offline_access
|}
Pour cette réception seule, ne pas sélectionner SMTP.Send ni ajouter de portées Graph de lecture du courrier au jeton IMAP.
Enregistrer, puis utiliser l’action d’autorisation / génération du jeton. Se connecter avec le compte de la boîte à collecter, satisfaire la MFA et revenir dans Dolibarr. Vérifier que le jeton est enregistré et que le renouvellement est disponible. Un consentement obtenu avec le compte administrateur n’implique pas que le jeton de la boîte cible existe.
Le fournisseur Microsoft natif gère les points de terminaison. Pour identifier les paramètres d’un fournisseur personnalisable :
<pre>
Autorisation : https://login.microsoftonline.com/&lt;TENANT_ID&gt;/oauth2/v2.0/authorize
Jeton : https://login.microsoftonline.com/&lt;TENANT_ID&gt;/oauth2/v2.0/token
</pre>
Voir [https://learn.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth OAuth pour IMAP] et [https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow le flux d’autorisation].
===Paramétrer le collecteur===
Dans les versions où l’authentification OAuth du collecteur dépend de PHP-IMAP/Webklex, activer le moteur natif avec la constante <code>MAIN_IMAP_USE_PHPIMAP</code> à <code>1</code> dans Configuration → Divers. Vérifier que les composants nécessaires sont présents dans la distribution ; ne pas confondre ce moteur avec l’extension PHP ext-imap.
{| class="wikitable"
!Paramètre!!Valeur / choix
|-
|Serveur IMAP||outlook.office365.com
|-
|Port||993
|-
|Chiffrement||SSL/TLS implicite ; généralement libellé « SSL » dans Dolibarr
|-
|Authentification||Jeton OAuth / OAuth2
|-
|Identifiant||Adresse complète de la boîte
|-
|Service OAuth||Service autorisé pour cette boîte
|-
|Mot de passe de boîte||Non utilisé pour OAuth ; le secret client reste dans le service OAuth
|-
|Dossier source||INBOX, ou nom IMAP exact du dossier
|-
|Nombre maximal initial||1, pour limiter le premier essai
|}
La collecte utilise le port 993 ; SMTP 587 ne sert pas à lire les mails. Voir [https://learn.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/pop3-and-imap4/pop3-and-imap4 les paramètres Exchange Online].
Configurer ensuite les filtres et les opérations. Pour isoler un formulaire, combiner par exemple l’expéditeur attendu et le destinataire. Une opération de création métier et ses permissions restent distinctes de l’accès IMAP.
Sous Multicompany, configurer le collecteur, le service OAuth et les opérations dans l’entité attendue ; vérifier leurs droits et leur disponibilité. Une connexion Microsoft réussie ne valide pas la création métier.
===Tester, planifier et maintenir===
#Garder le collecteur inactif pendant le paramétrage. Contrôler d’abord la connexion et les dossiers.
#Tester la sélection sur un petit nombre de messages et lire le compte rendu.
#Le mode test standard évite les déplacements IMAP et annule les écritures SQL prévues. Les effets externes d’extensions, comme un envoi de courriel, ne sont pas nécessairement annulables : vérifier les opérations avant l’essai.
#Effectuer un essai réel maîtrisé, contrôler les objets créés et le traitement du message, puis activer le collecteur.
#Activer le travail natif correspondant dans '''Travaux planifiés''', et vérifier que le planificateur Dolibarr est réellement appelé par le serveur. Consulter le dernier résultat et les erreurs.
Prévoir le renouvellement du secret client, la surveillance des échecs et une nouvelle autorisation si le jeton de renouvellement est révoqué. Ne pas coller manuellement un jeton temporaire comme solution permanente. Voir [https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens les jetons de renouvellement].
===Dépannage===
{| class="wikitable"
!Symptôme!!Vérification
|-
|Consentement administrateur demandé, notamment AADSTS90094||Application, tenant, permissions déléguées réellement demandées et consentement
|-
|Erreur d’URI de redirection||URL HTTPS exacte, sous-répertoire et callback du fournisseur choisi
|-
|Jeton accepté, authentification IMAP refusée||Compte autorisé, login du collecteur, portée Exchange IMAP et protocole autorisé
|-
|Délai dépassé / port 993 inaccessible||DNS et pare-feu sortant du serveur d’hébergement, y compris les restrictions de l’hébergeur
|-
|Aucun message sélectionné||Dossier, expéditeur, destinataire, autres filtres et limite de collecte
|-
|Mails lus, aucun objet créé||Opérations, droits, entité et compatibilité du module métier
|-
|Collecte arrêtée après une période de fonctionnement||Secret expiré, révocation du jeton ou stratégie de connexion modifiée
|}
'''Boîtes partagées :''' ce guide vise une boîte utilisateur. Une boîte partagée utilise un utilisateur délégué disposant de droits sur cette boîte ; vérifier le support de ce cas par la version Dolibarr. Ne pas supposer une connexion interactive directe à la boîte partagée.
'''Envoi de courriels :''' l’envoi SMTP se configure séparément. SMTP.Send et les réglages SMTP AUTH ne sont à ajouter que si l’envoi est nécessaire.
===Références Dolibarr et portée de la vérification===
*[https://github.com/Dolibarr/dolibarr/blob/769c7db907099643558e77d7002c109cfda919e5/htdocs/core/lib/oauth.lib.php Fournisseurs OAuth, référence Dolibarr 24]
*[https://github.com/Dolibarr/dolibarr/blob/769c7db907099643558e77d7002c109cfda919e5/htdocs/emailcollector/class/emailcollector.class.php Champs et traitement du collecteur, même référence]
*[https://github.com/Dolibarr/dolibarr/blob/769c7db907099643558e77d7002c109cfda919e5/htdocs/admin/emailcollector_card.php Fiche et commandes du collecteur]
Texte préparé le 10 novembre 2026, sans captures d’écran. Lecture des sources et documentation Microsoft ; cela ne constitue pas une recette de toutes les versions ni de tous les tenants.


Pour déplacer un mail qui a été traité, il est nécessaire que le nom du dossier destination ne comporte pas de caractère spéciaux.
Pour déplacer un mail qui a été traité, il est nécessaire que le nom du dossier destination ne comporte pas de caractère spéciaux.
84

edits