logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
utilisateurs:enicar:tutos:mutt-msmtp-multi-comptes [17/08/2017 11:42]
enicar [Introduction]
utilisateurs:enicar:tutos:mutt-msmtp-multi-comptes [15/11/2019 21:48]
enicar [Mutt]
Ligne 1: Ligne 1:
-====== Mutt + msmtp multi-comptes ====== 
  
-  * Objet : Configuration de Mutt et de msmtp pour pouvoir gérer l'​envoie de plusieurs comptes depuis Mutt. 
-  * Niveau requis : avisé ​ 
-  * Voir aussi : 
  
-===== Introduction ===== 
-Comment paramétrer **mutt** et **msmtp** pour pouvoir envoyer des emails 
-provenant deux adresses mails différentes ? 
-C'est la question à laquelle je propose deux solutions. Mais je dois vous avertir, 
-je décris deux méthodes pour y arriver. C'est un peu alambiqué, car il faut que 
-les deux logiciels coopèrent. En plus certaines options portent le même nom 
-dans les deux… Donc soyez attentif ! 
  
-===== Msmtp ===== 
-Commençons par la configuration de **msmtp**. Je propose l'​exemple suivant 
-avec deux comptes hypothétiques. Le fichier de configuration de  
-**msmtp** doit se trouver dans le **HOME** de l'​utilisateur et 
-s'​appelle **.msmtprc**. Je propose la configuration suivante : 
-<​code>​ 
-defaults 
-# on demande un log des transactions smtp. Le répertoire 
-# ~/Mail doit exister ! 
-logfile ~/​Mail/​msmtp.log 
  
-# un premier compte, le nom qui suit le mot account est libre 
-# c'est juste la désignation du compte pour msmtp. On ne mettra, 
-# toutefois, pas d'​espaces dans ce nom ! 
-account user1 
-# host définit le relais smtp à utiliser. 
-host smtp.truc.fr 
-# from est l'​adresse email 
-from nom1@truc.fr 
-# ici on demande une authentification 
-auth on 
-# le user doit correspondre à la partie avant l'@ de l'​adresse mail. 
-user nom1 
-# on utilise tls. 
-tls on 
-# le port par défaut quand on utilise tls est 465 dans msmtp. 
-# ce n'est pas celui qui est tout le temps utilisé. Le port 
-# 587 est très courant aussi. 
-port 587 
-password XXXXXXX 
-tls_trust_file /​etc/​ssl/​certs/​ca-certificates.crt 
  
-# ici on désigne ce premier compte comme étant celui par défaut+===== Petites bidouilles pour débugger ===== 
-# C'est celui-ci ​que msmtp utilisera quand aucun compte n'aura pas été  +Je propose maintenant un petit truc qui permet de voir comment 
-# demandé en particulier. (cf la suite).+**msmtp** est appeléPour cela nous allons faire un petit 
 +script en shell que j'appelle **mysendmail** : 
 +<code bash>
  
-account default :user1 +#! /bin/sh 
- +if ! [ -d ~/tmp ]; then 
-# on définit un second compte : +    mkdir -m 0700 tmp 
-account user2 +fi 
-host smtp.machin.fr +echo $>​~/​tmp/​params.txt 
-from  nom2@machin.fr +cat >​~/​tmp/​message.txt 
-auth off +
-# Quand l'​athentification est désactivé l'​option user est inutilisée. +
-#user nom2 +
-# le port 25 est le port par défaut quand n'​utilise pas tls +
-port 25+
 </​code>​ </​code>​
-<note tip> 
-Pour connaître le port utiliser, on peut tester en lançant msmtp comme suit : 
-<code user>​msmtp --serverinfo --tls --tls-certcheck=off --host smtp.truc.fr --port 587</​code>​ 
  
-Si msmtp ne répond pas arrêter ​le en appuyant sur ctrl-C+Ce shell script peut être placé dans le **HOME**
-Sinon, cela permet de voir les fonctionnalités acceptées par +Voici ce qu'on y fait : 
-le serveur mailVous pouvez tester les ports 465 et 25 avec +  * On crée un répertoire **~/tmp** s'il n'​existait pas
-ou non le tls. +  * On sauvegarde les paramètres passés dans le fichier **~/tmp/​params.txt** 
-</note> +  ​On sauvegarde le mail dans **~/​tmp/​message.txt**
-===== Mutt ===== +
-Bon passons à la configuration de **mutt**. Je ne décris ici que les quelques +
-options qui nous intéressent pour l'​envoi des mails avec plusieurs comptes.+
  
-==== Solution 1 ==== 
-On va utiliser l'​option **-a** de **msmtp** qui permet de désigner le compte 
-à utiliser pour l'​envoi du mail. C'est le nom du compte désigner par 
-« account user1 » par exemple. Pour cela dans mutt nous allons 
-utiliser la variable **sendmail** ​ qui permet de demander à mutt 
-d'​utiliser un autre programme que **/​usr/​bin/​sendmail** 
-Donc voici l'​extrait du **.muttrc** qui nous intéresse. 
-<​code>​ 
-set sendmail='/​usr/​bin/​msmtp -a default'​ 
-set use_from='​yes'​ 
  
-# On définit deux variables pour éviter les fautes ​de frappes. +Et c'est tout. Autant dire tout de suite qu'​avec ce script, vous 
-# correspond au from du account user1 +n'enverrez aucun mail !
-set my_address_one='​nom1@truc.fr'+
  
-# correspond au from du account user2 
-set my_address_two='​nom2@machin.fr'​ 
  
-set realname='Prénom Nom' +Ensuite, pour l'utiliser ​avec **mutt** ​on va rendre ​ce script exécutable : 
-set from=$my_address_one +<code user> 
- +chmod u+x ~/mysendmail ​
-# On déclare les adresses mails qui sont les notres. Ça +
-# de s'​envoyer des emails à soi même quand on répond à tous +
-# aux mails avec plusieurs contacts. Cela permet aussi +
-# de faire des recherches sur nos propres mails ou l'​inverse. +
-alternates="​$my_address_one|$my_address_two"​ +
- +
-on utilise le send2-hook qui est évalué dès qu'on édite un nouveau mail +
-# ou que l'on change l'​adresse du from dans le menu compose ici +
-# grâce à ce hook on change la variable sendmail. On peut aussi +
-# changer plusieurs variables. +
-send2-hook "~f $my_address_one"​ "set sendmail='​/usr/​bin/​msmtp -a default'"​ +
-send2-hook "~f $my_address_two"​ "set '​sendmail=/​usr/​bin/​msmtp -a user2'"​ +
- +
-# Pour changer l'​adresse du from dans le menu compose on crée deux macros, +
-# de cette façon il suffit de taper « <esc> 1 » pour utiliser la première  +
-# adresse et « <esc> 2 » pour la seconde. +
-macro compose <​esc>​1 "<​esc>​f^U$realname <​$my_address_one>"​ +
-macro compose <​esc>​2 "<​esc>​f^U$realname <​$my_address_two>"​+
 </​code>​ </​code>​
-Dans le **send2-hook** la première chaîne (**~f $my_address_one** par exemple) est +Puis on remplace toute les occurrences de **sendmail='/​usr/​bin/​msmtp'​** par 
-un motif de recherche. Le **~f** demande à **mutt** de faire une correspondance +**sendmail='​~/mysendmail** dans le fichier ​**.muttrc**.
-avec le champ **from** du mail. Le reste est une expression rationnelle,​ +
-mais on utilisera une chaîne simple+
  
-J'ai lu une doc où il utilisait 
-**~e** à la place de **~f**. Avec **~e** la correspondance est cherchée 
-par rapport à l'​expéditeur (c'est à dire le champ **send**) qui peut 
-être différent de **from**. Mais on s'en contentera car les essais 
-que j'ai fait avec **~e** se sont révélés infructueux. 
  
 +À partir de là, chaque que vous enverrez un mail dans **mutt**, c'​est ​
 +le script **mysendmail** qui sera appelé. Vous pourrez voir ainsi
 +les paramètres passés au script ainsi que la façon dont mutt a 
 +formé le mail. Vous pourrez alors expérimenté ce que ça fait de
 +changé l'​option **use_envelope_from**. C'est sympa de le voir par
 +soi-même.
  
-==== Solution 2 ==== +<note important>​N'​oubliez ​pas de rétablir ​l'​option **sendmail** après 
-Cette fois-ci on ne va pas modifier la variable **sendmail**. On va utiliser +vos expériences. Sinonplus aucuns mails ne seront envoyéet vous 
-de nouveau **send2-hook** pour modifier la variable **from** de +vous demanderez pourquoi personne ​ne vous répond ​:-D
-**mutt**. +
-Cela combiné avec l'​utilisation ​de l'​option ​de **mutt**, +
-**envelope_from** +
-va permettre d'​appeler **msmtp** avec les paramètres suivant : +
-<​code>​ +
-    msmtp -f adresse_expéditeur -- adresse_destinataire +
-</​code>​ +
-Quand il est appelé comme cela**msmtp** va utiliser le **from** +
-qu'on a paramètré pour chaque comptepour déterminer comment +
-il va envoyer le mail. +
-<note important>​Faites attention à ne pas confondre, les différents **from**. +
-il y en a trois : +
-  * le **from** du mail. +
-  * celui du fichier dans le fichier **~/​.msmtprc** +
-  * et enfin celui dans le fichier **~/​.muttrc**+
 </​note>​ </​note>​
-Voici, l'​extrait du **.muttrc** que je propose : 
-<​code>​ 
-set sendmail='/​usr/​bin/​msmtp'​ 
-set use_from='​yes'​ 
-set envelope_from='​yes'​ 
- 
-# On définit deux variables pour éviter les fautes de frappes. 
-# correspond au from du account user1 
-set my_address_one='​nom1@truc.fr'​ 
- 
-# correspond au from du account user2 
-set my_address_two='​nom2@machin.fr'​ 
- 
-set realname='​Prénom Nom' 
-set from=$my_address_one 
- 
-# On déclare les adresses mails qui sont les notres. Ça 
-# de s'​envoyer des emails à soi même quand on répond à tous 
-# aux mails avec plusieurs contacts. Cela permet aussi 
-# de faire des recherches sur nos propres mails ou l'​inverse. 
-alternates="​$my_address_one|$my_address_two"​ 
- 
-# on utilise le send2-hook qui est évalué dès qu'on édite un nouveau mail 
-# ou que l'on change l'​adresse du from dans le menu compose ici 
-# grâce à ce hook on change la variable from. On peut aussi 
-# changer plusieurs variables. 
-send2-hook "~e $my_address_two"​ "set from=$my_address_two"​ 
- 
-# Pour changer l'​adresse du from dans le menu compose on crée deux macros, 
-# de cette façon il suffit de taper « <esc> 1 » pour utiliser la première ​ 
-# adresse et « <esc> 2 » pour la seconde. 
-macro compose <​esc>​1 "<​esc>​f^U$realname <​$my_address_one>"​ 
-macro compose <​esc>​2 "<​esc>​f^U$realname <​$my_address_two>"​ 
-</​code>​ 
- 
-Peu de choses ont changé par rapport à la première solution. 
-La variable **sendmail = /​usr/​bin/​msmtp** sans options supplémentaires. 
-L'​option **envelope_from** est positionnée à **yes** , c'est ce qui permet 
-d'​appeler **msmtp** ​ avec la commande **msmtp -f expéditeur -- 
-destinataire**. 
- 
-<note important>​ 
-**Mutt** utilise la variable **from** définit dans **.muttrc** (ou 
-dans ce cas la valeur que l'on donne dans **send2-hook**) et non le 
-champ **from** du mail pour fixer l'​expéditeur utiliser dans la commande ​ 
-**msmtp**.</​note>​ 
- 
-Et enfin, le  **send2-hook** où on utilise **~e** et non **~f**. 
-Aussi on fixe le **from** de mutt. 
- 
- 
-Ne me demander pas pourquoi, mais ici le **~e** fonctionne. Remarquez 
-que l'​avantage,​ c'est qu'on est pas obligé d'​avoir deux **send2-hook**. 
-Dans cette configuration,​ la variable **from** reprend sa valeur d'​origine 
-« toute seule », c'est un mystère supplémentaire car il est dit 
-dans la documentation que lorsqu'​on change une valeur avec un hook 
-sa valeur reste celle attribuée dans le hook. C'est pour cela 
-que quand on utilise les hook il faut en principe utiliser 
-un hook par défaut qui rétablit la ou les valeurs par défaut. 
-Ça fait deux mystères ! 
  
-C'est la méthode que je préfèreelle est plus légère.+Une autre chose que vous pouvez tester, c'est la valeurde la 
 +variable **sendmail** dans mutt lorsque vous utiliser la //Solution 1//. 
 +Dans mutt pour connaître la valeur d'une variable, il suffit  
 +de taper <​key>:</​key>​ pour passer en mode commande. Là une ligne 
 +apparaît en bas de l'​écran,​ puis vous tapez : 
 +<​code>​set ?​sendmail</​code>​ 
 +La commande **set** permet non seulement de fixer la valeur d'une variable 
 +mais aussi de connaître la valeur de cette variable. Pour obtenir la 
 +valeur d'une variable il suffit de précéder le nom de la variable par 
 +un point d'​interrogation.
  
-== Conclusion == 
-Bref, ces déboires avec le **~e** et **~f** sont peut-être un bug. 
-Je ne sais pas, je n'ai pas encore tout compris à ce sujet. Pour 
-info j'​utilise **NeoMutt** version 1.8.3 (du 09-06-2017). **NeoMutt** 
-est un Mutt amélioré avec notamment la possibilité d'​avoir une 
-barre latéralle pour naviguer entre les différentes BALs. 
-Peut-être que ces réglages sont spécifiques à la version de **mutt** 
-que j'​utilise. 
  
 +De cette façon vous pourrez vérifier la valeur des variables
 +**sendmail** et **from** (pour la //Solution 2//) facilement.
  
  

Pied de page des forums

Propulsé par FluxBB