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
utilisateurs:enicar:tutos:mutt-msmtp-multi-comptes [24/06/2018 18:32]
enicar [Msmtp]
— (Version actuelle)
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 : [[doc:​reseau:​mutt]],​ [[http://​www.mutt.org/​doc/​manual/​]] 
-===== 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 ! 
- 
-<note tip> 
-Des commentaires sont présents dans les fichiers de configurations. Ils sont là à titre 
-d'​information et d'​explication. Lisez-les. ​ 
-</​note>​ 
-===== 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 : 
-<file config fichier .msmtprc>​ 
-defaults 
-# on demande un log des transactions smtp. Le répertoire 
-# ~/Mail doit exister ! 
-logfile ~/​Mail/​msmtp.log 
-tls_trust_file /​etc/​ssl/​certs/​ca-certificates.crt 
- 
-# 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 compte_nom1 
-# 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 en principe à la partie avant l'​@ ​ 
-# de l'​adresse mail, mais ce n'est pas toujours le cas. 
-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 
- 
-# ici on désigne ce premier compte comme étant celui par défaut. 
-# C'est celui-ci que msmtp utilisera quand aucun compte n'aura pas été  
-# demandé en particulier. (cf la suite). 
- 
-account default :​compte_nom1 
- 
-# on définit un second compte : 
-account compte_nom2 
-host smtp.machin.fr 
-from  nom2@machin.fr 
-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 
-</​file>​ 
-<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êtez le en appuyant sur ctrl-C. 
-Sinon, cela permet de voir les fonctionnalités acceptées par 
-le serveur mail. Vous pouvez tester les ports 465 et 25 avec 
-ou non le tls. 
-</​note>​ 
- 
-<note warning>​Les mots de passe doivent être stockés en clair dans le ficher **.msmtprc**. 
-Normalement **msmtp** est capable de demander le mot de passe quand nécessaire,​ mais 
-quand on l'​utilise depuis **mutt** ce n'est pas possible. Il faut pour 
-ce faire utiliser une autre option : passwordeval qui permet de lancer 
-une commande qui va afficher le mot de passe sur la sortie standard. 
-((Voir ​ 
-[[https://​wiki.archlinux.org/​index.php/​Msmtp#​Password_managemen|ici]] 
-pour savoir comment faire.)) 
-</​note>​ 
- 
-===== 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. 
- 
-<note important>​Lorsque vous modifiez des options dans le fichier de configuration 
-de **mutt** (**.muttrc**),​ pensez à quitter **mutt** et à le relancer. Sinon 
-ce sont les anciens réglages qui resteront effectifs. 
-</​note>​ 
- 
-==== 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 compte_nom1 » 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. 
-<file config extrait du .muttrc> 
-set sendmail='/​usr/​bin/​msmtp -a default'​ 
-set use_from='​yes'​ 
- 
-# On définit deux variables pour éviter les fautes de frappes. 
-# correspond au from de .msmtprc de  « account compte_nom1 » 
-set my_address_one='​nom1@truc.fr'​ 
- 
-# correspond au from de .msmtprc de « account compte_nom2 » 
-set my_address_two='​nom2@machin.fr'​ 
- 
-set realname='​Prénom Nom' 
- 
-# Correspond à  « account ​ default » dans .msmtprc, dans notre cas 
-# c'est aussi « account compte_nom1 » 
-set from=$my_address_one 
- 
-# On déclare les adresses mails qui sont les notres. Ça évite 
-# 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. 
-# Je pense qu'on ne peut pas utiliser des variables ici… 
-alternates ^nom1@truc.fr$ ^nom2@machin.fr$ 
- 
-# Pour répondre avec la bonne adresse (utilise alternates) 
-set reverse_name='​yes'​ 
- 
-# on utilise le send2-hook qui est évalué dès qu'on édite un nouveau mail 
-# ou que l'on change l'​adresse du  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 compte_nom2'"​ 
- 
-# 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>"​ 
-</​file>​ 
-Dans le **send2-hook** la première chaîne (**~f $my_address_one** par exemple) est 
-un motif de recherche. Le **~f** demande à **mutt** de faire une correspondance 
-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ù ils utilisaient 
-**~e** à la place de **~f**. Avec **~e** la correspondance est cherchée 
-par rapport à l'​expéditeur qui peut être différent du **from** du mail. Les essais 
-que j'ai réalisé avec **~e** se sont révélés infructueux,​ on utilisera donc **~f**. 
- 
- 
-==== Solution 2 ==== 
-Cette fois-ci on ne va pas modifier la variable **sendmail**. On va utiliser 
-de nouveau **send2-hook** pour modifier la variable **from** de 
-**mutt**. 
-Cela combiné avec l'​utilisation de l'​option de **mutt**, 
-**use_envelope_from** 
-va permettre d'​appeler **msmtp** avec les paramètres suivant : 
-<code user> 
-    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 compte, pour 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>​ 
-Les trois sont bien définis dans trois fichier différents. **Mutt** se 
-sert des variables **from** et **realname** definies dans son fichier 
-**.muttrc** pour remplir automatiquement le champ **from** du mail 
-lorsqu'​on demande de composer un nouveau message (avec la touche 
-<​key>​m</​key>​). Si l'on change la valeur de ce champ dans le mail 
-une fois que l'on quitte l'​éditeur,​ **mutt** n'est pas au courant 
-que l'on a changé cette valeur. Pour lui faire prendre en compte ce 
-changement on va utiliser **send2-hook**. ​ 
- 
-<note important>​ 
-Pour que cette méthode fonctionne il faut que le **from** de 
-**mutt** corresponde au **from** du mail et au **from** du 
-compte à utiliser dans le fichier de configuration de **msmtp** 
-(**.msmtprc**). Ce dernier point est très important, attention aux 
-fautes de frappe !</​note>​ 
- 
-Pour générer la commande : 
-<code user> 
-    msmtp -f adresse_expéditeur -- adresse_destinataire 
-</​code>​ 
-**mutt** se sert de sa variable **from** pour **adresse_expéditeur**,​ 
-et non du **from** du mail. 
- 
-Voici, l'​extrait du **.muttrc** que je propose : 
-<file config extrait du .muttrc> 
-set sendmail='/​usr/​bin/​msmtp'​ 
-set use_from='​yes'​ 
-set use_envelope_from='​yes'​ 
- 
-# On définit deux variables pour éviter les fautes de frappes. 
-# correspond au from de .msmtpcrc de « account compte_nom1 » 
-set my_address_one='​nom1@truc.fr'​ 
- 
-# correspond au from de .msmtprc de « account compte_nom2 » 
-set my_address_two='​nom2@machin.fr'​ 
- 
-set realname='​Prénom Nom' 
-# Correspond au « account default » dans .msmtprc, dans notre cas 
-# c'est aussi  « account compte_nom1 » 
-set from=$my_address_one 
- 
-# On déclare les adresses mails qui sont les notres. Ça évite 
-# 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. 
-# Je pense qu'on ne peut pas utiliser des variables ici… 
-alternates ^nom1@truc.fr$ ^nom2@machin.fr$ 
- 
-# Pour répondre avec la bonne adresse (utilise alternates) 
-set reverse_name='​yes'​ 
- 
- 
-# 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>"​ 
-</​file>​ 
- 
-Peu de choses ont changé par rapport à la première solution. 
-La variable **sendmail = /​usr/​bin/​msmtp** est sans options supplémentaires. 
-L'​option **use_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ù l'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ère, elle est plus légère. 
- 
-==== 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. 
- 
-===== Petites bidouilles pour débugger ===== 
-Je propose maintenant un petit truc qui permet de voir comment 
-**msmtp** est appelé. Pour cela nous allons faire un petit 
-script en shell que j'​appelle **mysendmail** : 
-<code bash> 
- 
-#! /bin/sh 
-if ! [ -d ~/tmp ]; then 
-    mkdir -m 0700 tmp 
-fi 
-echo $@ >​~/​tmp/​params.txt 
-cat >​~/​tmp/​message.txt ​ 
-</​code>​ 
- 
-Ce shell script peut être placé dans le **HOME**. 
-Voici ce qu'on y fait : 
-  * On crée un répertoire **~/tmp** s'il n'​existait pas. 
-  * On sauvegarde les paramètres passés dans le fichier **~/​tmp/​params.txt** 
-  * On sauvegarde le mail dans **~/​tmp/​message.txt** 
- 
- 
-Et c'est tout. Autant dire tout de suite qu'​avec ce script, vous 
-n'​enverrez aucun mail ! 
- 
- 
-Ensuite, pour l'​utiliser avec **mutt** on va rendre ce script exécutable : 
-<code user> 
-chmod u+x ~/​mysendmail ​ 
-</​code>​ 
-Puis on remplace toute les occurrences de **sendmail='/​usr/​bin/​msmtp'​** par 
-**sendmail='​~/​mysendmail** dans le fichier **.muttrc**. 
- 
- 
-À 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. 
- 
-<note important>​N'​oubliez pas de rétablir l'​option **sendmail** après 
-vos expériences. Sinon, plus aucuns mails ne seront envoyé, et vous 
-vous demanderez pourquoi personne ne vous répond :-D 
-</​note>​ 
- 
-Une autre chose que vous pouvez tester, c'est la valeur, de 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. 
- 
- 
-De cette façon vous pourrez vérifier la valeur des variables 
-**sendmail** et **from** (pour la //Solution 2//) facilement. 
- 
  
utilisateurs/enicar/tutos/mutt-msmtp-multi-comptes.1529857966.txt.gz · Dernière modification: 24/06/2018 18:32 par enicar

Pied de page des forums

Propulsé par FluxBB