Envoyer un mail à Redmine pour créer une issue
Aller à la navigation
Aller à la recherche
Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack
Envoyer un mail à Redmine pour créer une issue
Redmine permet l'envoi de mails de notification suite à la création de nouveaux tickets ou de mise à jour des tickets. Redmine permet également la réception de mails pour créer de nouveaux tickets et mettre à jour de nouveaux tickets.
Ce tutoriel permet d'établir une connexion IMAP avec un serveur de messagerie pour lire les mails avec un script qui va créer une nouvelle issue dans Redmine pour chaque mail lu. Les mails traités par Redmine ne seront pas supprimés du serveur de messagerie mais marqués comme lu.
Des paramètres incorrects dans un mail ne permettrons pas la création du ticket Redmine et vous ne recevrez aucun rebond ou information sur ce qui aura entraîné un dysfonctionnement. Il est facilement possible de connaître les mails qui n'auront pas entraînés la création d'une issue en les déplaçant vers un dossier "Ko".
Méthodologie
Trois méthodes permettent de récupérer les mails pour les transformer en issues.
Lire les mails à partir de l'entrée standard. Avantages : Suffisant pour des tests. Inconvénients : Lent car l'environnement est rechargé à chaque fois qu'un mail est lu, nécessite une configuration sur le MTA. (Par exemple, Postfix, Sendmail, ...)
Transférer des mails depuis votre serveur de messagerie. Avantages : Fonctionne avec un serveur de messagerie distant, les e-mails sont traités instantanément, rapidement. (Pas de rechargement de l'environnement.) Inconvénients : Nécessite une configuration sur l'agent de transfert de courrier.
Récupérer des mails depuis un serveur IMAP ou POP3. Avantages : Facile à installer, pas besoin de configurer votre MTA, fonctionne avec un serveur de messagerie distant. Inconvénients : Les mails ne sont pas synchronisés en continue. Les tickets ne sont donc pas créés instantanément. Une tâche cron doit être ajoutée pour lire les mails périodiquement.
Prérequis
Configurer Redmine pour recevoir des mails nécessite un accès à la ligne de commande du système et une connaissance du shell et de cron au niveau du système. Posséder les accès à un compte mail sur un serveur de mail IMAP.
Générer une clé depuis l'administration de Redmine
Générer une clé depuis l'administration / Configuration / Mail entrant
Configuration du Firewall
# Configurer le Firewall pour laisser sortir les connexions TCP sur le port IMAP 143. sudo iptables -A INPUT -p tcp -m multiport --dports 143 -m state --state NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp -m multiport --dports 143 -m state --state NEW,ESTABLISHED -j ACCEPT
Administration du serveur
Administrer redmine avec son utilisateur dédié
# Se connecter au serveur.
# S'identifier avec l'utilisateur en charge d'administrer Redmine : su - redmine Mot de passe
# Se positionner à la racine du projet Redmine : cd /opt/redmine
# Se positionner à la racine du projet Redmine dans le cas d'une multi-installation : cd /opt/redmine/projet-1
# Il semble inutile de sélectionner le Gemset : cd ~ rvm list gemsets rvm use gemset ruby-2.4.5@redmine-4.0-stable
Lister les scripts Redmine disponibles
# Lister les scripts Redmine disponibles : RAILS_ENV="production" rake -T redmine
# Affiche : rake redmine:attachments:move_to_subdirectories # Moves attachments stored at the root of the file directory (ie rake redmine:attachments:prune # Removes uploaded files left unattached after one day rake redmine:attachments:update_digests # Updates attachment digests to SHA256 rake redmine:email:read # Read an email from standard input rake redmine:email:receive_imap # Read emails from an IMAP server rake redmine:email:receive_pop3 # Read emails from an POP3 server rake redmine:email:test[login] # Send a test email to the user with the provided login name rake redmine:fetch_changesets # Fetch changesets from the repositories rake redmine:load_default_data # Load Redmine default configuration data rake redmine:migrate_dbms # FOR EXPERIMENTAL USE ONLY, Moves Redmine data from production database to the development database rake redmine:migrate_from_mantis # Mantis migration script rake redmine:migrate_from_trac # Trac migration script rake redmine:permissions # List all permissions and the actions registered with them rake redmine:plugins # Migrates and copies plugins assets rake redmine:plugins:assets # Copies plugins assets into the public directory rake redmine:plugins:migrate # Migrates installed plugins rake redmine:plugins:test # Runs the plugins tests rake redmine:plugins:test:functionals # Runs the plugins functional tests rake redmine:plugins:test:integration # Runs the plugins integration tests rake redmine:plugins:test:ui # Runs the plugins ui tests rake redmine:plugins:test:units # Runs the plugins unit tests rake redmine:send_reminders # Send reminders about issues due in the next days rake redmine:tokens:prune # Removes expired tokens rake redmine:watchers:prune # Removes watchers from what they can no longer view
Le script "redmine:email:receive_imap" nous permet une connexion à un serveur IMAP distant afin de lire les messages et de les convertir en une nouvelle issue Redmine.
Envoyer un mail de test
Envoyer un mail à l'aide d'un compte mail de test vers l'adresse mail qui sera relevée par Redmine.
Connexion STARTTLS avec le serveur IMAP
Il est possible d'utiliser la propriété starttls avec la valeur STARTTLS.
# Se positionner dans le projet contenant les fichiers de Redmine : cd /opt/redmine/projet-1
# Lancer la commande de lecture des mails : rake -f /opt/redmine/projet-1/Rakefile redmine:email:receive_imap RAILS_ENV="production" host=HOTE_SERVEUR_IMAP port=993 starttls=STARTTLS username=MAIL@DOMAIN.EXT password=LE_MOT_DE_PASSE --trace
# Affiche : ** Invoke redmine:email:receive_imap (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute redmine:email:receive_imap
# La tâche est en échec car la connexion au serveur n'a pas aboutie : rake aborted! Net::IMAP::Error: connection closed /opt/redmine/.rvm/rubies/ruby-2.4.5/lib/ruby/2.4.0/net/imap.rb:1100:in `initialize' ... /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/bin/ruby_executable_hooks:24:in `<main>' Tasks: TOP => redmine:email:receive_imap
Connexion SSL avec le serveur IMAP
# La commande suivante permet bien la connexion à la boîte mail en IMAP. # On observe que les messages non lu sont marqués comme lu. # Malgré tout, aucune issue n'est créée. rake -f Rakefile redmine:email:receive_imap RAILS_ENV="production" host=HOTE_SERVEUR_IMAP port=993 ssl=true username=MAIL@DOMAIN.EXT password=LE_MOT_DE_PASSE --trace
# Ajout de propriétés pour spécifier le projet, le tracker, autoriser l'override, spécifier un dossier pour y déplacer les messages qui ont pu créer une issue ou non. # Aucune issue n'est créée et tous les messages sont déplacés vers LUKO. rake -f Rakefile redmine:email:receive_imap RAILS_ENV="production" host=HOTE_SERVEUR_IMAP port=993 ssl=true username=MAIL@DOMAIN.EXT password=LE_MOT_DE_PASSE project=Support tracker=Assistance allow_override=tracker,priority move_on_success=LUOK move_on_failure=LUKO --trace
Autoriser les utilisateurs anonymes a créer une issue suite à un mail envoyé
# Dans le contexte d'un Redmine qui n'est pas public, j'ai retiré tous les droits du rôle Anonyme depuis Administration / Rôles et permissions / Anonyme. # Il sera tout de même possible de créer une issue avec un envoi de mail par un utilisateur anonymisé en utilisant les deux paramètres unknown_user=accept et no_permission_check=1.
# Autoriser les utilisateurs anonymes a créer une issue par envoi de mail en ajoutant les deux paramètres unknown_user=accept et no_permission_check=1 : rake -f Rakefile redmine:email:receive_imap RAILS_ENV="production" host=HOTE_SERVEUR_IMAP port=993 ssl=true username=MAIL@DOMAIN.EXT password=LE_MOT_DE_PASSE unknown_user=accept no_permission_check=1 project=Support tracker=Assistance allow_override=tracker,priority move_on_success=LUOK move_on_failure=LUKO --trace
Override des droits d'un utilisateur anonyme
# Pour autoriser un utilisateur anonyme a modifier le statut d'une issue suite à l'envoi d'un mail, adapter les droits dans Redmine depuis Administration / Rôles et permissions / Anonyme. # Il ne semble pas judicieux d'autoriser le changement de statut d'une issue par un utilisateur anonyme. # Le droit de fermer une issue devrait être réservé aux administrateurs et aux développeurs.
# Ajout de l'option ",status" dans l'override pour permettre la modification par mail du statut de l'issue. ( Ne devrait PAS fonctionner avec un rôle Anonyme limité. ) rake -f Rakefile redmine:email:receive_imap RAILS_ENV="production" host=HOTE_SERVEUR_IMAP port=993 ssl=true username=MAIL@DOMAIN.EXT password=LE_MOT_DE_PASSE unknown_user=accept no_permission_check=1 project=Support tracker=Assistance allow_override=tracker,priority,status move_on_success=LUOK move_on_failure=LUKO --trace
Utilisateur anonymisé tente de override les éléments d'une issue avec un rôle Anonyme autorisant uniquement la modification d'une issue. ( Ne fonctionne pas ! ) Utilisateur anonymisé tente de résoudre une issue. ( Ne fonctionnera pas ! Les droits par défaut ne permettent pas à Anonyme de fermer une issue. ) Idem pour les utilisateurs rapporteurs. Objet du mail : Re: [#136] Message Coucou. Tracker:Anomalie Priority:Bas Status:Résolu
Utilisateur administrateur tente de fermer une issue et de modifier les paramètres d'une issue. ( Fonctionnera ! Un administrateur peut fermer une issue. ) Objet du mail : Re: [#137] Message Résolution. Tracker:Assistance Priority:Normal Status:Résolu
Un rôle développeur peut également override les propriétés, réouvrir une issue ou fermer l'issue. J'ai ajouté au rôle l'option "Modifier la demande". Le workflow des droits semble être légèrement contradictoire en comparaison de ce que l'on observe en utilisant les rôles depuis Redmine directement. Testé sur Redmine 4.0.3.stable.
Bibliographie
Documentation officielle pour recevoir des mails avec Redmine : https://www.redmine.org/projects/redmine/wiki/FrRedmineReceivingEmails
Documentation Visionduweb
Envoyer un mail pour créer une issue : https://wiki.visionduweb.fr/index.php?title=Envoyer_un_mail_à_Redmine_pour_créer_une_issue
Plugin That email log pour afficher les journaux des mails sortants : https://wiki.visionduweb.fr/index.php?title=Installer_Redmine_sur_Debian#That_email_logs Plugin Email Fetcher pour utiliser un plugin afin de configurer la réception des mails : https://wiki.visionduweb.fr/index.php?title=Installer_Redmine_sur_Debian#redmine_email_fetcher
Documentation complémentaire
Configurer les mails sortants : https://www.redmine.org/projects/redmine/wiki/emailconfiguration Configurer les e-mails entrants : https://docs.openproject.org/installation-and-operations/configuration/incoming-emails/ Créer une issue dans un projet spécifique en fonction du filtrage appliqué : https://superuser.com/questions/1477948/redmine-create-issues-into-multiple-projects-from-multiple-email-addresses
Allow creating of issues in private projects by anonymous/non member via email : https://www.redmine.org/issues/3584
Problématiques pouvant être rencontrées
No e-mail notification for non-members who are watchers : https://www.redmine.org/issues/11888
NAVIGATION
PARTICIPER ET PARTAGERBienvenue sur le wiki de Amis SH. De nombreuses pages sont partagées sur ce wiki. Créer un compte utilisateur pour participer sur le wiki. Les pages présentées sur le wiki évoluent tous les jours. Certaines recherches sont peu abouties et incluent des erreurs. Utiliser la recherche interne du wiki pour trouver votre contenu. La page de discussion de Amis SH vous permet de poser vos questions. Consulter le site amis-sh.fr pour installer votre propre serveur web. Améliorer le contenu des pages avec vos retours depuis l'onglet discussion. Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique. Protéger votre système Linux ou Windows avec cette page dédiée à la sécurité. |
SOUTENIR CE WIKISoutenir le wiki avec un don en monnaie numérique : AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash OBTENIR DE LA MONNAIE NUMERIQUEObtenir gratuitement de la monnaie numérique : Miner de la cryptomonnaie. |