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 →
Ci-dessous, les différences entre deux révisions de la page.
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 12:07] enicar [Petites bidouilles pour débugger] |
utilisateurs:enicar:tutos:mutt-msmtp-multi-comptes [18/08/2017 10:24] enicar [Petites bidouilles pour débugger] |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
* Objet : Configuration de Mutt et de msmtp pour pouvoir gérer l'envoie de plusieurs comptes depuis Mutt. | * Objet : Configuration de Mutt et de msmtp pour pouvoir gérer l'envoie de plusieurs comptes depuis Mutt. | ||
* Niveau requis : avisé | * Niveau requis : avisé | ||
- | * Voir aussi : [[doc:reseau:mutt]] | + | * Voir aussi : [[doc:reseau:mutt]], [[http://www.mutt.org/doc/manual/]] |
===== Introduction ===== | ===== Introduction ===== | ||
Comment paramétrer **mutt** et **msmtp** pour pouvoir envoyer des emails | Comment paramétrer **mutt** et **msmtp** pour pouvoir envoyer des emails | ||
Ligne 12: | Ligne 12: | ||
dans les deux… Donc soyez attentif ! | 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 ===== | ===== Msmtp ===== | ||
Commençons par la configuration de **msmtp**. Je propose l'exemple suivant | Commençons par la configuration de **msmtp**. Je propose l'exemple suivant | ||
Ligne 17: | Ligne 21: | ||
**msmtp** doit se trouver dans le **HOME** de l'utilisateur et | **msmtp** doit se trouver dans le **HOME** de l'utilisateur et | ||
s'appelle **.msmtprc**. Je propose la configuration suivante : | s'appelle **.msmtprc**. Je propose la configuration suivante : | ||
- | <code> | + | <file config fichier .msmtprc> |
defaults | defaults | ||
# on demande un log des transactions smtp. Le répertoire | # on demande un log des transactions smtp. Le répertoire | ||
Ligne 26: | Ligne 30: | ||
# c'est juste la désignation du compte pour msmtp. On ne mettra, | # c'est juste la désignation du compte pour msmtp. On ne mettra, | ||
# toutefois, pas d'espaces dans ce nom ! | # toutefois, pas d'espaces dans ce nom ! | ||
- | account user1 | + | account compte_nom1 |
# host définit le relais smtp à utiliser. | # host définit le relais smtp à utiliser. | ||
host smtp.truc.fr | host smtp.truc.fr | ||
Ligne 48: | Ligne 52: | ||
# demandé en particulier. (cf la suite). | # demandé en particulier. (cf la suite). | ||
- | account default :user1 | + | account default :compte_nom1 |
# on définit un second compte : | # on définit un second compte : | ||
- | account user2 | + | account compte_nom2 |
host smtp.machin.fr | host smtp.machin.fr | ||
from nom2@machin.fr | from nom2@machin.fr | ||
Ligne 59: | Ligne 63: | ||
# le port 25 est le port par défaut quand n'utilise pas tls | # le port 25 est le port par défaut quand n'utilise pas tls | ||
port 25 | port 25 | ||
- | </code> | + | </file> |
<note tip> | <note tip> | ||
Pour connaître le port utiliser, on peut tester en lançant msmtp comme suit : | Pour connaître le port utiliser, on peut tester en lançant msmtp comme suit : | ||
Ligne 69: | Ligne 73: | ||
ou non le tls. | ou non le tls. | ||
</note> | </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. Je ne connais pas de solution à | ||
+ | ce problème.</note> | ||
+ | |||
===== Mutt ===== | ===== Mutt ===== | ||
Bon passons à la configuration de **mutt**. Je ne décris ici que les quelques | Bon passons à la configuration de **mutt**. Je ne décris ici que les quelques | ||
Ligne 76: | Ligne 86: | ||
On va utiliser l'option **-a** de **msmtp** qui permet de désigner le compte | 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 | à 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 | + | « account compte_nom1 » par exemple. Pour cela dans mutt nous allons |
utiliser la variable **sendmail** qui permet de demander à mutt | utiliser la variable **sendmail** qui permet de demander à mutt | ||
d'utiliser un autre programme que **/usr/bin/sendmail** | d'utiliser un autre programme que **/usr/bin/sendmail** | ||
Donc voici l'extrait du **.muttrc** qui nous intéresse. | Donc voici l'extrait du **.muttrc** qui nous intéresse. | ||
- | <code> | + | <file config extrait du .muttrc> |
set sendmail='/usr/bin/msmtp -a default' | set sendmail='/usr/bin/msmtp -a default' | ||
set use_from='yes' | set use_from='yes' | ||
# On définit deux variables pour éviter les fautes de frappes. | # On définit deux variables pour éviter les fautes de frappes. | ||
- | # correspond au from du account user1 | + | # correspond au from de .msmtprc de « account compte_nom1 » |
set my_address_one='nom1@truc.fr' | set my_address_one='nom1@truc.fr' | ||
- | # correspond au from du account user2 | + | # correspond au from de .msmtprc de « account compte_nom2 » |
set my_address_two='nom2@machin.fr' | set my_address_two='nom2@machin.fr' | ||
set realname='Prénom Nom' | set realname='Prénom Nom' | ||
+ | |||
+ | # Correspond à « account default » dans .msmtprc, dans notre cas | ||
+ | # c'est aussi « account compte_nom1 » | ||
set from=$my_address_one | set from=$my_address_one | ||
- | # On déclare les adresses mails qui sont les notres. Ça | + | # 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 | # de s'envoyer des emails à soi même quand on répond à tous | ||
# aux mails avec plusieurs contacts. Cela permet aussi | # aux mails avec plusieurs contacts. Cela permet aussi | ||
Ligne 105: | Ligne 118: | ||
# changer plusieurs variables. | # changer plusieurs variables. | ||
send2-hook "~f $my_address_one" "set sendmail='/usr/bin/msmtp -a default'" | 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'" | + | 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, | # Pour changer l'adresse du from dans le menu compose on crée deux macros, | ||
Ligne 112: | Ligne 125: | ||
macro compose <esc>1 "<esc>f^U$realname <$my_address_one>" | macro compose <esc>1 "<esc>f^U$realname <$my_address_one>" | ||
macro compose <esc>2 "<esc>f^U$realname <$my_address_two>" | macro compose <esc>2 "<esc>f^U$realname <$my_address_two>" | ||
- | </code> | + | </file> |
Dans le **send2-hook** la première chaîne (**~f $my_address_one** par exemple) est | 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 | un motif de recherche. Le **~f** demande à **mutt** de faire une correspondance | ||
Ligne 132: | Ligne 145: | ||
**envelope_from** | **envelope_from** | ||
va permettre d'appeler **msmtp** avec les paramètres suivant : | va permettre d'appeler **msmtp** avec les paramètres suivant : | ||
- | <code> | + | <code user> |
msmtp -f adresse_expéditeur -- adresse_destinataire | msmtp -f adresse_expéditeur -- adresse_destinataire | ||
</code> | </code> | ||
Ligne 144: | Ligne 157: | ||
* et enfin celui dans le fichier **~/.muttrc** | * et enfin celui dans le fichier **~/.muttrc** | ||
</note> | </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 : | Voici, l'extrait du **.muttrc** que je propose : | ||
- | <code> | + | <file config extrait du .muttrc> |
set sendmail='/usr/bin/msmtp' | set sendmail='/usr/bin/msmtp' | ||
set use_from='yes' | set use_from='yes' | ||
Ligne 151: | Ligne 187: | ||
# On définit deux variables pour éviter les fautes de frappes. | # On définit deux variables pour éviter les fautes de frappes. | ||
- | # correspond au from du account user1 | + | # correspond au from de .msmtpcrc de « account compte_nom1 » |
set my_address_one='nom1@truc.fr' | set my_address_one='nom1@truc.fr' | ||
- | # correspond au from du account user2 | + | # correspond au from de .msmtprc de « account compte_nom2 » |
set my_address_two='nom2@machin.fr' | set my_address_two='nom2@machin.fr' | ||
set realname='Prénom Nom' | 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 | set from=$my_address_one | ||
- | # On déclare les adresses mails qui sont les notres. Ça | + | # 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 | # de s'envoyer des emails à soi même quand on répond à tous | ||
# aux mails avec plusieurs contacts. Cela permet aussi | # aux mails avec plusieurs contacts. Cela permet aussi | ||
Ligne 177: | Ligne 215: | ||
macro compose <esc>1 "<esc>f^U$realname <$my_address_one>" | macro compose <esc>1 "<esc>f^U$realname <$my_address_one>" | ||
macro compose <esc>2 "<esc>f^U$realname <$my_address_two>" | macro compose <esc>2 "<esc>f^U$realname <$my_address_two>" | ||
- | </code> | + | </file> |
Peu de choses ont changé par rapport à la première solution. | Peu de choses ont changé par rapport à la première solution. | ||
- | La variable **sendmail = /usr/bin/msmtp** sans options supplémentaires. | + | La variable **sendmail = /usr/bin/msmtp** est sans options supplémentaires. |
L'option **envelope_from** est positionnée à **yes** , c'est ce qui permet | L'option **envelope_from** est positionnée à **yes** , c'est ce qui permet | ||
d'appeler **msmtp** avec la commande **msmtp -f expéditeur -- | d'appeler **msmtp** avec la commande **msmtp -f expéditeur -- | ||
Ligne 191: | Ligne 229: | ||
**msmtp**.</note> | **msmtp**.</note> | ||
- | Et enfin, le **send2-hook** où on utilise **~e** et non **~f**. | + | Et enfin, le **send2-hook** où l'on utilise **~e** et non **~f**. |
Aussi on fixe le **from** de mutt. | Aussi on fixe le **from** de mutt. | ||
Ligne 198: | Ligne 236: | ||
que l'avantage, c'est qu'on est pas obligé d'avoir deux **send2-hook**. | 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 | Dans cette configuration, la variable **from** reprend sa valeur d'origine | ||
- | « toute seule », c'est un mystère supplémentaire car il est dit | + | « 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 | 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 | sa valeur reste celle attribuée dans le hook. C'est pour cela | ||
Ligne 231: | Ligne 269: | ||
Ce shell script peut être placé dans le **HOME**. | Ce shell script peut être placé dans le **HOME**. | ||
- | Voci ce qu'on y fait : | + | Voici ce qu'on y fait : |
* On crée un répertoire **~/tmp** s'il n'existait pas. | * 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 les paramètres passés dans le fichier **~/tmp/params.txt** |
- | * On sauvegarde le mail dans ~/tmp/message.txt | + | * On sauvegarde le mail dans **~/tmp/message.txt** |
Ligne 250: | Ligne 288: | ||
les paramètres passés au script ainsi que la façon dont mutt a | 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 | formé le mail. Vous pourrez alors expérimenté ce que ça fait de | ||
+ | changé l'option **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 | ||
+ | et 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. | ||