S’interfacer et charger du contenu dans Alfresco

Classé dans : Alfresco | 0

Les deux articles précédents expliquaient comment installer Alfresco sur un NAS Synology et comment l’utiliser. Suite à cela, on dispose donc d’un Alfresco fonctionnel et on sait, dans les grandes lignes, comment implémenter une GED (Gestion Electronique des Documents) efficace. On peut dès lors s’intéresser aux différentes façons dont on dispose pour l’alimenter en contenu.

Alors, certes, il y a l’option de charger manuellement, dans l’interface d’Alfresco, chaque fichier un par un. C’est fonctionnel mais un peu long et fastidieux tout de même. Surtout qu’Alfresco propose plusieurs méthodes pour s’interfacer.

Cet article se concentrera sur quelques unes des ces méthodes, des plus simples à mettre en place aux plus compliquées : serveur de fichier webDAV, File Transfer Protocol (FTP), Internet Message Access Protocol (IMAP), Emails sortants et Emails entrants.

File Server et webDAV

L’idée est d’avoir accès, via l’explorateur Windows (ou via Finder sur MAC), à un répertoire réseau où l’on pourra déposer directement les fichiers. Dans les anciennes versions d’Alfresco, cela se faisait via les protocoles CIFS ou SMB. Mais, avec les versions plus récentes, ces protocoles ont été remplacés par un protocole plus récent: webDAV (Web-based Distributed Authoring and Versioning).

Pour bénéficier webDAV, il n’y a rien à configurer puisque c’est nativement disponible dans Alfresco. Il faut simplement connecter un disque réseau via une URL : http://(adresse_IP NAS Synology):8080/alfresco/webdav et fournir le nom d’utilisateur et le mot de passe correspondant.

On a de suite accès aux répertoires d’Alfresco et on peut y glisser-déposer ses fichiers. Ils seront automatiquement intégrés par Alfresco et accessibles via l’interface web d’Alfresco Share.

Alfresco webDAV

Accéder à Alfresco via File Transfer Protocol (FTP)

Une seconde façon simple d’accéder à Alfresco est d’utiliser le protocole FTP (File Transfer Protocol). Il est alors possible, avec un client FTP (comme FileZilla), de charger des documents dans les bons espaces documentaires des sites Alfresco.

La configuration FTP

A la différence de webDAV, il faut toutefois configurer Alfresco pour bénéficier de cette possibilité. Cela se fait en modifiant les paramètres par défaut via l’ajout de paramètres dans le fichier alfresco-global.properties (ce fichier se trouve dans le container Alfresco Services, qui s’appelle Docker_Alfresco_1 dans mon installation).

Docker Alfresco 1

Modifier un fichier qui se trouve dans un container Docker n’est pas la procédure la plus facile qui soit. Il y a plusieurs tutoriels sur internet qui explique comment faire. Pour ceux qui sont tentés par l’aventure, voici déjà comment trouver le fichier (une fois connecté en SSH sur le NAS Synology) et comment voir son contenu via la commande CAT :

XXX@SynologyNAS:~$ sudo docker exec -it docker_alfresco_1 /bin/bash

Password: 

[alfresco@8f94dc03af7a tomcat]$ cd /usr/local/tomcat/shared/classes

[alfresco@8f94dc03af7a classes]$ cat alfresco-global.properties

# Required to isolate logs folder

dir.root=/usr/local/tomcat/alf_data

Mais, il y a plus facile pour modifier ce fichier. On se souviendra que, lors de l’installation d’Alfresco sur le NAS Synology, on avait exposé le fichier dans un répertoire config sous le répertoire Docker du NAS Synology. On avait en effet mentionner ce mapping dans le fichier Docker-compose.yml:

Docker compose Alfresco

On peut donc, depuis le PC ou le MAC, directement ouvrir le fichier alfresco-global-properties et y ajouter les lignes de configuration du FTP:

# FTP configuration
ftp.enabled=true
ftp.port=32502

Le port 32502 est un port que j’ai choisi arbitrairement (après avoir vérifié qu’il était libre sur le NAS Synology). Le port standard, à savoir le port 21, était quand à lui déjà occupé (par le protocole FTP du NAS bien évidemment)..

Il faut ensuite configurer la communication entre le NAS Synology (sur lequel Docker est installé) et le container Docker d’Alfresco. Cela se fait toujours au niveau du fichier docker-compose.yml : on y mentionne la connexion FTP au travers du port 32502 en ajoutant ces lignes (en vert):

services:
alfresco:
image: alf_repo_fj:1.0
mem_limit: 1500m
depends_on:
– db
environment:

JAVA_OPTS: “……

Dftp.enabled=true
-Dftp.port=32502
……

ports:
– 32502:32502 #FTP Port

Enfin, dans le fichier Dockerfile (je vous renvoie vers cert article pour plus d’information sur ce fichier : installation d’Alfresco sur le NAS Synology), il faut exposer le port 32502 en ajoutant cette ligne de commande à la fin du fichier:

EXPOSE 32502

Puisque l’on a modifié le fichier Dockerfile, on termine la configuration FTP par la reconstruction de l’image via cette commande SSH sur le NAS Synology (je vous renvoie à nouveau vers cet article pour plus d’information : installation d’Alfresco sur le NAS Synology):

XXX@SynologyNAS:/volume1/docker$ sudo docker build -t alf_repo_fj:1.0 /volume1/docker

La connection à Alfresco en FTP

Maintenant que la configuration est faite, il convient d’arrêter tous les containers Docker d’Alfresco et puis de les redémarrer. Pour ce faire, je recommande l’utilisation de ces deux commandes SSH (une fois connecté sur le NAS Synology):

sudo docker-compose -f /volume1/docker/docker-compose.yml stop

sudo docker-compose -f /volume1/docker/docker-compose.yml up -d

De cette manière, on est sûr que l’ordre de redémarrage sera le bon et, si on a apporté entre temps d’autres modifications via le fichier Docker-compose.yml ou si l’on a reconstruit une image (comme c’est le cas ici), alors ces modifications seront embarquées dans la nouvelle installation.

Après avoir tout redémarré, on peut se connecter en FTP. Le “Host” est l’adresse IP du NAS Synology et le port est le 32502 (celui choisit précédemment). On voit alors les sites et espaces documentaires d’Alfesco dans lesquels on peut envoyer, en FTP par un simple glisser-déplacer, ses documents:

FTP Alfresco

L’ouverture vers l’extérieur

Si vous désirez ouvrir cette possibilité de connection en FTP depuis internet, il faudra alors ouvrir le port 32502 sur le routeur et rediriger ce port vers le port 32502 de l’adresse IP du NAS Synology.

Dans FileZilla, on se connectera alors en utilisant l’adresse IP publique de son routeur dans le champs Host et toujours le port 32502. Attention toutefois à bien sécuriser le tout. Je pense qu’il est plus prudent d’installer un VPN localement (comme on peut le faire facilement sur un routeur Ubiquiti ou bien sur son NAS Synology) et de se connecter au réseau via VPN pour utiliser, in-fine, FTP comme si on était chez soi connecté à son réseau local.

Le message d’erreur “Failed to retrieve directory listing”

Vous pourriez, le cas échéant, être confronté à ce message d’erreur : Failed to retrieve directory listing

Par exemple, dans FileZilla, ce soucis se présentait lors de la tentative de connexion à Alfresco:

Status:     Connecting to X.X.X.X:32502…

Status:     Connection established, waiting for welcome message…

Response: 220 FTP server ready

Command: USER XXXX

Response: 331 User name okay, need password for XXXX

Command: PASS *****

Response: 230 User logged in, proceed

Command: OPTS UTF8 ON

Response: 200 OPTS UTF8 ON

Status:     Connected

Status:     Retrieving directory listing…

Command: PWD

Response: 257 “/”

Command: TYPE I

Response: 200 Command OK

Command: PASV

Response: 227 Entering Passive Mode (172,18,0,12,193,85)

Command: MLSD

Response: 150 File status okay, about to open data connection

Error:        Connection timed out

Error:        Failed to retrieve directory listing

Le problème provient de la configuration de FileZilla et, pour le résoudre, voici les étapes:

  • Ouvrir FileZilla, Aller dans le menu “Settings”
  • Cliquer sur Connection -> FTP 
  • Sélectionner “Active” et cocher “Allow fall back to other transfer mode on failure”
  • Cliquer sur Connection -> FTP -> Active mode
  • Décocher “Limit local ports used by FileZilla”
  • Cliquer sur Connection -> FTP -> Passive mode
  • Sélectionner “Fall back to active mode”

S’intégrer avec Alfresco via Internet Message Access Protocol (IMAP)

IMAP (Internet Message Access Protocol) est une troisième façon de s’intégrer avec Alfresco. Cette solution repose sur des clients emails tels que Outlook, Thunderbird ou Apple Mail. IMAP permet d’afficher les dossiers Alfresco dans l’application email cliente et on peut dès lors y déposer facilement ses emails et fichier attachés par simple glisser-déplacer. C’est la solution idéale pour archiver ses emails.

La configuration IMAP

1. Dans le fichier alfresco-global.properties, que l’on accède comme décrit dans la procédure pour FTP, on active l’IMAP avec cette ligne:

imap.server.enabled=true

2. Juste en dessous, il faut configurer le serveur IMAP pour qu’il écoute sur la bonne interface et sur le bon port.

imap.server.host=0.0.0.0
imap.server.port=32501

Le port par défaut pour IMAP, à savoir le 143, était déjà réservé sur le NAS Synology. C’est donc le port 32501, libre quand à lui, qui a été choisi pour le remplacer.

La documentation précise qu’il faut indiquer l’adresse IP publique dans imap.server.hostMais, essayant de faire cela en indiquant notamment l’adresse IP publique du routeur, cette erreur apparaissait dans le log du container principal d’Alfresco:

java.net.BindException: Cannot assign requested address (Bind failed)

….

at com.icegreen.greenmail.imap.ImapServer.run(ImapServer.java:106)

Finalement c’est la valeur 0.0.0.0 qui fait en sorte que le container se mette à écouter sur toutes les interfaces IP au port spécifié 32501 et que cette erreur disparaisse.

3. Dans le fichier docker-compose.yml, indiquer l’ouverture du port choisi pour IMAP, à savoir le 32501 ici

services:
alfresco:
image: alf_repo_fj:1.0
mem_limit: 1500m
depends_on:
– db
environment:
……

ports:
– 32501:32501

4. Dans Dockerfile, ajouter cette ligne à la fin pour exposer le port IMAP:

EXPOSE 32501 

5. Puisqu’on a modifié le fichier Dockerfile, on termine par la reconstruction de l’image via SSH: 

XXX@SynologyNAS:/volume1/docker$ sudo docker build -t alf_repo_fj:1.0 /volume1/docker

6. Enfin, on arrête tous les containers Docker et on les redémarre (comme expliqué ci-dessus pour la configuration FTP).

Configurer le fichier Host

Le fichier host, que l’on soit sur un PC ou un MAC, est un fichier qui va lier les adresses IP et les noms de domaine. Ce lien est, sur internet, assuré par les serveurs DNS. Mais, avec le fichier host, on peut écraser les paramètres DNS publics avec ses propres paramètres. 

On va se servir de ce fichier afin de renvoyer vers le NAS Synology toutes les requêtes se rapportant au domaine alfresco.(mondomaine).ovh.  

On pourrait très bien se passer de cette étape et travailler avec des adresses IP (en supposant que ces dernières soient fixes bien entendu). Mais c’est l’occasion de mettre une couche d’abstraction et de travailler avec un nom de domaine. Et puis, si on a vocation à exposer son Alfresco, plus tard, sur internet, autant faire le travail maintenant avec le futur nom le domaine. Bien entendu, si vous avez déjà votre domaine sur internet, cette étape n’est pas vraiment nécessaire et il faut alors modifier sa zone DNS pour faire pointer le domaine vers l’adresse IP publique de son routeur (et puis rediriger sur le router les bons ports vers le NAS Synology).

On édite donc le fichier host et on y ajoute cette ligne (sur MAC, la procédure est décrite ici: https://setapp.com/how-to/edit-mac-hosts-file). X.X.X.X est l’adresse IP du NAS Synology sur lequel Alfresco est installé.

X.X.X.X     alfresco.(mondomaine).ovh

Grâce à cette ligne, dès que alfresco.(mondomaine).ovh sera présent dans une URL ou une URI, la requête sera redirigée vers l’adresse IP X.X.X.X, soit donc le NAS Synology qui héberge Alfresco. 

Activer les sites dans Alfresco

Dans Alfresco, à l’endroit où l’on voit les sites, on constate qu’un lien “IMAP” est apparu à côté de “Favorite”. Il faut cliquer sur ce lien pour chaque site où l’on souhaite pouvoir s’interfacer via IMAP.

Alfresco IMAP bouton

Microsoft Outlook et Alfresco via IMAP

On est maintenant prêt à se connecter à Alfresco via un client IMAP comme Microsoft Outlook.

Dans Outlook donc, on crée un compte pour se connecter à Alfresco. Les paramètres sont : 

Outlook Alfresco

On note que le port est celui configuré pour IMAP à savoir le 32501. Au niveau de “Incoming server” ou “Outgoing server”, on mentionne alfresco.(mondomaine).ovh (la même valeur que celle ajoutée dans le fichier host) ou bien simplement l’adresse IP du NAS Synology sur lequel Aflresco est installé (si on a choisi de ne pas modifié le fichier host). Le nom d’utilisateur et le mot de passe sont ceux que l’on utilise pour se connecter à Alfresco.

On voit maintenant les dossiers d’Alfresco directement dans Outlook et on peut y ranger ses emails par glisser-déplacer ou copier-coller.

Folders IMAP dans Outlook

Apple Mail et Alfresco via IMAP

Dans un autre client IMAP, comme Apple Mail, c’est le même principe. On crée un nouveau compte (IMAP) pour se connecter à Alfresco.

Comme on utilise un port IMAP non standard, il faut toutefois décocher “Automatically manage connection settings” et indiquer le port que l’on a configuré sur Alfresco, à savoir le 32501

Apple Mail Alfresco Configuration 1

Si vous avez un message d’erreur, essayer de cliquer sur “Advanced IMAP Settings” et cocher la case “Allow insecure authentication”

Apple Mail Alfresco Configuration 2

Les répertoires Alfresco sont alors visibles depuis Apple Mail.

Emails sortants (outbounds)

Les emails sortants (outbounds) sont pratiques notamment pour assigner une tâche via un workflow. C’est en effet intéressant qu’un email de notification soit envoyé à celui qui doit accomplir la tâche.

Alfresco Email sortant notification

Cela peut-être utile, aussi, pour recevoir des résumés de ce qui a été fait dans Alfresco durant la journée.

Pour bénéficier de ces avantages, il faut configurer Alfresco afin qu’il puisse envoyer des emails à un serveur SMTP externe. Il convient d’ajouter, pour ceux qui ont un compte gmail, ces paramètres au fichier alfresco-global-properties (en remplaçant les xxx par les bonnes valeurs) :

# Outbound email configuration
mail.host=smtp.gmail.com
mail.port=465
mail.username=xxx@gmail.com
mail.password=xxx
mail.protocol=smtps
mail.smtps.starttls.enable=true
mail.smtps.auth=true

La liste complète des paramètres se trouvent ici : https://docs.alfresco.com/community/concepts/email-outboundsmtp-props.html

Après avoir redémarré Alfresco, ce dernier sera capable d’envoyer des emails.

Emails entrants (inbounds)

Le but ici est que Alfresco réceptionne les emails qu’on lui enverrait comme étant du contenu et les traite en tant que tel  (en les rangeant, par exemple, directement dans le bon répertoire du bon site). Pour tout dire, cette façon de faire est compliquée à mettre en place pour un particulier ou un ménage et, au regard des autres possibilités décrites ci-dessous, sans doute peu utile.

Le problème du port 25

La fonctionnalité des emails entrants est compliquée à mettre en place car elle nécessite que le port 25 de la connexion internet soit ouvert, ce qui est rarement le cas sur les abonnements résidentiels de beaucoup d’opérateurs (notamment VOO et Proximus en Belgique).Voici d’ailleurs la réponse de VOO, interrogé à ce propos:

Le port 25 est bloqué dans toutes les offres d’abonnement résidentiel.
* https://www.powermail.fr/tech/le-port-25-pourquoi-est-il-bloque/
* Il vous est possible de trouver des pistes de solution via ce lien sur
  notre Forum : https://forum.voo.be/conversations/ma-connexion-internet/ouverture-du-port-tcp25-en-entree/5e53e4814cf00d702bf71bd9

Donc, par défaut, le fournisseur internet risque bien de ne rien envoyer sur le port 25. On peut soit passer à une solution professionnelle chez son fournisseur internet pour avoir l’ouverture du port 25 soit opter pour un service comme Email Reflector chez no-ip.com afin de rediriger le port 25. Mais, dans les deux cas, c’est payant.

Ensuite, il faudra créer un record MX dans la zone DNS de son domaine. Le record MX sert à indiquer où se trouve le serveur email qui gère les mails destinés à un son domaine. Si par exemple, le nom de domaine est alfresco.(mondomaine).ovh, il faudra insérer un record MX dans la zone DNS pour que d’autres serveurs mail sachent où adresser les emails envoyé à @alfresco.(mondomaine).ovh. Dans OVH, le record MX se crée comme ceci:

MX record Alfresco

La cible, “alfresco”, est un Dynhost qui pointe vers l’adresse IP publique du routeur (du réseau sur lequel est installé Alfresco).

Dynhost Alfresco

Un record MX fonctionne toujours sur le port 25 et on ne peut pas le changer, d’où la contrainte d’avoir ce port ouvert.

Pour vérifier si le port est ouvert, on peut commencer par ouvrir le port 25 sur le router et le rediriger vers le NAS Synology. On vérifie ensuite, via ce site par exemple https://www.canyouseeme.org, que le port 25 est bien ouvert.

Si le port 25 est fermé et que vous ne souhaitez ni souscrire à une solution professionnelle ni souscrire au service payant de Email Reflector, il reste une solution de contournement partiel via le fichier host. Le fichier host a été modifié, comme expliqué ci-dessus. Donc, même sans record MX, cela peut fonctionner à condition d’être connecté sur le réseau local pour envoyer des mails à son installation locale Alfresco. L’envoi depuis Gmail ou depuis internet ne fonctionneront en effet pas.

Le fichier de configuration alfresco-global.properties

Pour configurer les emails entrants, la procédure consiste à ajouter les paramètres suivant dans le fichier alfresco-global.properties, de la même façon qu’expliqué ci-dessus.

# Alfresco Email Service and Email Server
email.inbound.enabled=true

# Email Server properties
email.server.enabled=true
email.server.port=1025
email.server.domain=alfresco.(mondomaine).ovh
email.inbound.unknownUser=anonymous

Pour le port, puisque l’on tourne sur Docker, il est peu probable qu’un autre serveur email soit installé sur le container Docker d’Alfresco. Mais, par contre, Alfresco est installé sur un NAS Synology et il est probable que le NAS Synology utilise déjà le port 25. Si le port est déjà utilisé (j’avais expliqué comment le vérifier dans l’article sur l’installation d’Alfresco), il faut en choisir un autre qui lui est libre. Supposons, ici, le 1025.

Dans email.server.domain, il faut indiquer son propre domaine, celui qu’on a redirigé vers son routeur Alfresco au travers du record MX. Et, même si on n’a pas pu créer le record MX car le port 25 était bloqué, on a contourné localement le problème via le fichier host et c’est le nom du domaine utilisé dans le fichier host qu’il faut indiquer.

Le routage

Dans le cas où le record MX a été créé, il reste à configurer le routage. Les emails seront en effet envoyés vers l’adresse IP publique de son routeur mais encore faut-il que cela arrive jusqu’au container Docker qui contient Alfresco.

Cette configuration est bien entendu propre à chaque routeur (personnellement je suis ravi de mon routeur Dream Machine d’Ubiquiti). Le principe est de rediriger le port 25 du routeur vers le port du NAS Synology (à savoir le 1025). Si le port 25 était bloqué et qu’on n’a pas pu créer de record MX, alors cette étape est inutile.

Pour la partie entre le NAS Synology et le container Docker d’Alfresco, le routage se défini au niveau du fichier docker-compose.yml via l’ouverture du port 1025:

services:
alfresco:
image: alf_repo_fj:1.0
mem_limit: 1500m
depends_on:
– db
environment:
……

ports:
– 1025:1025

Comme toujours quand on modifie ce fichier, il faut redémarrer Alfresco ensuite.

Configurer son client de messagerie

Si vous avez créé un record MX, cette étape n’est pas nécessaire. Si pas, et que vous passez donc par l’astuce du fichier host, cette étape est nécessaire.

Dans l’installation via IMAP, on n’avait pas défini de serveur SMTP. C’est cette dernière étape qu’il faut mettre en place afin d’envoyer des emails à Alfresco. Sur Apple Mail:

  • Cliquer sur Mail / Preferences
  • Cliquer sur Accounts et choisir le compte créé lors de la configuration IMAP
  • Dans serveur settings, on configure alors les paramètres SMTP avec le bon port 1025 et “none” au niveau de “Authentication”

Alfresco SMTP

Régler les permissions dans le groupe Alfresco

On doit ensuite donner les permissions à l’utilisateur d’envoyer des emails à Alfresco. Cela se fait, dans l’interface Alfresco, en ajoutant l’utilisateur dans le groupe “EMAIL_CONTRIBUTORS”.

Email contributor group Alfresco

Régler les “aspects” dans Alfresco

Dans Alfresco, il faut associer une adresse email à un dossier. De cette manière, tous les emails envoyés à une adresse email bien précise seront automatiquement stockés dans le dossier associé. Cela se fait au travers de ce qu’Alfresco appelle les “Aspects”.

Dans l’espace documentaire, on sélectionne le dossier (appelé ici IncomeMail) et on choisit “Manage Aspects”

Manage aspects in Alfresco

Il faut ensuite ajouter le “Email Alias” et sauver.

Aspect alisable

Finalement, on édite le dossier “IncomeMail” et, au niveau du champs “Alias”, on indique quelle est l’adresse email associée (la partie devant le @)

Dossier Alias

Envoyer des emails

On peut maintenant envoyer des emails à Alfresco. Si vous avez créer le record MX, alors vous envoyez à Alfresco un email à IncomeMail@alfresco.(mondomaine).ovh depuis n’importe où.

Si vous n’avez pas créé de record MX et que vous avez utilisé la solution de contournement du fichier host, alors il faut absolument utiliser son client de messagerie local (Apple Mail ici), quand vous êtes connecté au réseau local et envoyer l’email à partir du compte IMAP/SMTP configuré précédemment comme ici:

Alfresco create email

Cet email, une fois envoyé, sera intégré par Alfresco automatiquement dans le bon dossier:

Alfresco email Pristine 1

Et le contenu, de la partie html donne ceci dans Alfresco:

Alfresco email Pristine 2

Conclusions

Alfresco propose toute une série d’interfaces pour lui communiquer du contenu. C’est finalement très puissant et chacun trouvera la façon qu’il préfère. En ce qui me concerne je penche pour le webDAV pour les fichiers scannés (avec configuration sur un scanner pour qu’il scanne et sauve les fichiers directement dans les bons répertoires) et IMAP par copier-coller pour archiver les contenus d’emails.

En tout cas, il y en aura assurément pour tous les goûts ! 

 

 

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.