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 10:42] enicar [Msmtp] |
utilisateurs:enicar:tutos:mutt-msmtp-multi-comptes [17/08/2017 11:13] enicar [Mutt] |
||
---|---|---|---|
Ligne 60: | Ligne 60: | ||
port 25 | 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. | ||
+ | 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> | ||
===== Mutt ===== | ===== 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. | ||
+ | # 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 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> | ||
+ | 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ù 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. | ||
+ | |||
+ | |||
+ | ====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**, | ||
+ | **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 compte, pour déterminer comment | ||
+ | il va envoyer le mail. | ||
+ | |||
+ | 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**. | ||
+ | |||
+ | **Mutt** utilise la variable **from** définit dans **.muttrc** (ou | ||
+ | dans ce cas la valeur que l'on donner dans **send2-hook*) et non le | ||
+ | champ **from** du mail pour fixer l'expéditeur utiliser dans la commande | ||
+ | **msmtp**. | ||
+ | |||
+ | 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. En plus, | ||
+ | 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. | ||