# Envoi de mail avec PJ via mailx

**URL:** <https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728>\
**Category:** Support Debian\
**Created:** [Décembre 2, 2019, 11:40 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728 "2019-12-02T11:40:53Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![tchup](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tchup/32/4415_2.png) [@tchup](https://www.debian-fr.org/u/tchup)\
**Post date:** [Décembre 2, 2019, 11:40 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/1 "2019-12-02T11:40:53Z")

</div>

Bonjour,  
j’utilisais sur des versions précédentes de Debian SSMTP + MUTT pour gérer l’envoi de mail (essentiellement des notifications après des tâches cron).  
Sous Debian 10.2 j’ai installé MSMTP (comme conseillé) et configuré /etc/msmtprc  
L’envoi de mail simple fonctionne mais d’après mes recherches il est nécessaire de passer par un MTA pour attacher des pièces jointes. J’ai donc installé MSMTP-MTA.  
Maintenant lorsque j’utilise la commande mail :

```
root@debian:~# echo "Bonjour" | mail -v -s "Sujet TEST" moi@entreprise.com
-bash: mail : commande introuvable

```

Qu’est ce qui manque ?  
Merci 😉

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Décembre 2, 2019, 12:00 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/2 "2019-12-02T12:00:38Z")

</div>

j’utilise exim4  
[https://www.debian.org/releases/jessie/amd64/ch08s05.html.fr](https://www.debian.org/releases/jessie/amd64/ch08s05.html.fr)  
mais sinon simplement regarder sur quoi pointe

```nohighlight
ls -alrt /usr/bin/mail

```

exemple

```nohighlight
ls -alrt /usr/bin/mail
lrwxrwxrwx 1 root root 22 avril 5 2016 /usr/bin/mail -> /etc/alternatives/mail

```

```nohighlight
ls -alrt /etc/alternatives/mail
lrwxrwxrwx 1 root root 18 avril 5 2016 /etc/alternatives/mail -> /usr/bin/bsd-mailx

```

```nohighlight
ls -alrt /usr/bin/bsd-mailx
-rwxr-xr-x 1 root root 112888 août 6 21:05 /usr/bin/bsd-mailx

```

[https://packages.debian.org/fr/buster/bsd-mailx](https://packages.debian.org/fr/buster/bsd-mailx)

---

<div class="post-metadata">

**Author:** ![tchup](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tchup/32/4415_2.png) [@tchup](https://www.debian-fr.org/u/tchup)\
**Post date:** [Décembre 2, 2019, 12:11 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/3 "2019-12-02T12:11:18Z")

</div>

> [@grandtoubab](#):
>
> ```plaintext
> ls -alrt /usr/bin/mail
> 
> ```

aucun fichier…

Je souhaite éviter l’utilisation de **exim4** et **mutt** qui me semble à présent «&nbsp;disproportionné&nbsp;»… non ?

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Décembre 2, 2019, 12:21 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/4 "2019-12-02T12:21:38Z")

</div>

Bonjour,

Pour avoir la commande mail, il faut installer le paquet _mailutils_ :

```nohighlight
apt install mailutils

```

ou au choix le paquets bsd-mailx, comme @grandtoubab.

---

<div class="post-metadata">

**Author:** ![anon93295908](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/b782af/32.png) [@anon93295908](https://www.debian-fr.org/u/anon93295908)\
**Post date:** [Décembre 2, 2019, 12:28 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/5 "2019-12-02T12:28:31Z")

</div>

J’utilise aussi exim.

Il fait du bon boulot et en plus il est suivi

---

<div class="post-metadata">

**Author:** ![tchup](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tchup/32/4415_2.png) [@tchup](https://www.debian-fr.org/u/tchup)\
**Post date:** [Décembre 2, 2019, 12:31 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/6 "2019-12-02T12:31:42Z")

</div>

ok je vais essayer mailx. Je pensais que **msmtp-mta** suffisé pour avoir la commande mail…

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Décembre 2, 2019, 12:56 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/7 "2019-12-02T12:56:02Z")

</div>

Non cela ne suffit pas pour avoir la commande _mail_. Par contre si tu ne veux rien installer de plus, tu peux utiliser [sendmail](https://manpages.debian.org/buster/msmtp-mta/sendmail.8.en.html).

---

<div class="post-metadata">

**Author:** ![tchup](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tchup/32/4415_2.png) [@tchup](https://www.debian-fr.org/u/tchup)\
**Post date:** [Décembre 2, 2019, 1:54 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/8 "2019-12-02T13:54:11Z")

</div>

Je ne vois pas comment attacher une PJ…

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Décembre 2, 2019, 2:15 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/9 "2019-12-02T14:15:19Z")

</div>

Dans mon script de mise à jour , je fais ceci

```plaintext
usr/bin/mailx -s "résul update-perso service" root@localhost < /tmp/resul-opt-update-perso.txt

```

Bien évidemment ceci est un exemple, le fichier resul-opt-update-perso.txt est sur mon ordinateur, pas sur celui du lecteur…

Bien comprendre l’utilité du caractère \<  
[https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/40444-les-flux-de-redirection](https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/40444-les-flux-de-redirection)

---

<div class="post-metadata">

**Author:** ![tchup](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tchup/32/4415_2.png) [@tchup](https://www.debian-fr.org/u/tchup)\
**Post date:** [Décembre 2, 2019, 3:21 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/10 "2019-12-02T15:21:42Z")

</div>

décidément… pas facile de mettre à jour ses méthodes.  
avec :

```nohighlight
echo "mon message" | mailx -s "mon sujet" -a "/var/log/backups/backup_20191128-173806.log" moi@entreprise.com

```

j’ai plusieurs soucis :  
1/ d’après mes recherches la ligne de commande “attend” CTRL+d mais ça ne fonctionne pas car rien ne se passe… obligé de faire CTRL+z =\> “Stoppé”

2/ j’ai l’erreur :

```nohighlight
send-mail: impossible d'écrire dans le journal /var/log/msmtp.log : erreur d'ouverture de fichier: Permission non accordée

```

alors que le fichier existe avec `777`

3/ impossible d’attacher une PJ… 😪

help

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Décembre 3, 2019, 8:59 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/11 "2019-12-03T08:59:46Z")

</div>

Attention à la syntaxe si tu utilises mailutils (cf. les pages de man).  
Retour de :

```auto
ls -l /etc/alternatives/mailx

```

pour savoir ce que tu utilises.

Pour envoyer une pièce jointe avec mail.mailutils, c’est avec un A majuscule:

```auto
echo "mon message" | mailx -s "mon sujet" -A "/var/log/backups/backup_20191128-173806.log" moi@entreprise.com

```

Attention aussi à Ctrl+Z, cela ne fait que placer le programme en arrière plan ( fg pour y revenir).  
Pour tuer le processus courant c’est Ctrl+C.

---

<div class="post-metadata">

**Author:** ![tchup](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tchup/32/4415_2.png) [@tchup](https://www.debian-fr.org/u/tchup)\
**Post date:** [Décembre 3, 2019, 1:23 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/12 "2019-12-03T13:23:53Z")

</div>

Merci Bruno1 pour ton aide

Après vérification mailx utilise bien “a” pour les pièces jointes et non pas “A” : [https://linux.die.net/man/1/mailx](https://linux.die.net/man/1/mailx)

1/ est-il possible d’exécuter la commande ? sans passer par CTRL+D… c’est quoi fg ?

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Décembre 3, 2019, 1:31 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/13 "2019-12-03T13:31:03Z")

</div>

Vérification de quoi ?  
Chez moi `/usr/bin/mailx` est un lien symbolique qui pointe indirectement vers `/usr/bin/mail.mailutils`  
Donne le retour de la commande que j’ai indiquée.

Ctrl+D n’est nécessaire que si tu tutilises le mode interactif, par exemple :

```auto
mail -s "Objet du message" toto@exemple.com

```

S’il s’agit de ta commande précédente, le courriel devrait être envoyé directement. À moins qu’elle ne bloque à cause d’une mauvaise configuration de msmtp. Il faut donc donner aussi ton fichier de configuration et notamment les lignes qui concerne les logs puisque c’est cela qui semble provoquer une erreur.

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Décembre 3, 2019, 3:28 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/14 "2019-12-03T15:28:10Z")

</div>

tu peux ajouter l’option -v pour avoir le mode bavard sur ton terminal

Dans mon exemple ça devient

```auto
/usr/bin/mailx -v -s "résul update-perso service" root@localhost < /tmp/resul-opt-update-perso.txt

```

Tout fonctionne et est lisible par Thunderbird

 ![Capture%20d%E2%80%99%C3%A9cran%20du%202019-12-03%2016-31-24](https://www.debian-fr.org/uploads/default/original/2X/c/cfcb63ca39d387ef7a05c4692d31f74f9ecebdd0.png)

---

<div class="post-metadata">

**Author:** ![tchup](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tchup/32/4415_2.png) [@tchup](https://www.debian-fr.org/u/tchup)\
**Post date:** [Décembre 4, 2019, 8:38 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/15 "2019-12-04T08:38:26Z")

</div>

> [@anon70622873](#):
>
> Vérification de quoi ?

bah de la fonctionnalité du paramètre «&nbsp;a&nbsp;» via un manpage 🙄

Comme demandé :

```
root@debian:~# ls -l /etc/alternatives/mailx
lrwxrwxrwx 1 root root 18 déc. 2 14:35 /etc/alternatives/mailx -> /usr/bin/bsd-mailx

```

ainsi que ma configuration MSMTP :

```
root@debian:~# cat /etc/msmtprc
account default
host smtp.office365.com
port 587
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
tls_certcheck on
auth on
user debian@monentreprise.fr
password *****************
from debian@monentreprise.fr
logfile /var/log/msmtp.log
aliases /etc/aliases

```

mon fichier log :

```
root@debian:~# ls -la /var/log/msmtp.log
-rw-rw-rw- 1 root root 0 nov. 29 16:53 /var/log/msmtp.log

```

et mon dernier test en mode verbose:

```
root@debian:~# echo "Message test" | mail moi@entreprise.fr -v -s "Sujet test" -a /home/moi/backup_20191128-173806.log
le fichier de configuration système /etc/msmtprc est chargé
le fichier de configuration utilisateur /root/.msmtprc est ignoré : Aucun fichier ou dossier de ce type
repli sur le compte par défaut
utilisation du compte default depuis /etc/msmtprc
host = smtp.office365.com
port = 587
source ip = (non défini)
proxy host = (non défini)
proxy port = 0
timeout = désactivé
protocol = smtp
domain = localhost
auth = automatique
user = debian@entreprise.fr
password = *
passwordeval = (non défini)
ntlmdomain = (non défini)
tls = activé
tls_starttls = activé
tls_trust_file = /etc/ssl/certs/ca-certificates.crt
tls_crl_file = (non défini)
tls_fingerprint = (non défini)
tls_key_file = (non défini)
tls_cert_file = (non défini)
tls_certcheck = activé
tls_min_dh_prime_bits = (non défini)
tls_priorities = (non défini)
auto_from = désactivé
maildomain = (non défini)
from = debian@entreprise.fr
add_missing_from_header = activé
add_missing_date_header = activé
remove_bcc_headers = activé
dsn_notify = (non défini)
dsn_return = (non défini)
logfile = /var/log/msmtp.log
logfile_time_format = (non défini)
syslog = (non défini)
aliases = /etc/aliases
lecture des destinataires depuis la ligne de commande et le courriel
<-- 220 PR0P264CA0176.outlook.office365.com Microsoft ESMTP MAIL Service ready at Wed, 4 Dec 2019 08:34:41 +0000
--> EHLO localhost
<-- 250-PR0P264CA0176.outlook.office365.com Hello [46.254.226.109]
<-- 250-SIZE 157286400
<-- 250-PIPELINING
<-- 250-DSN
<-- 250-ENHANCEDSTATUSCODES
<-- 250-STARTTLS
<-- 250-8BITMIME
<-- 250-BINARYMIME
<-- 250-CHUNKING
<-- 250 SMTPUTF8
--> STARTTLS
<-- 220 2.0.0 SMTP server ready
TLS session parameters:
    (TLS1.2)-(ECDHE-SECP256R1)-(RSA-SHA256)-(AES-256-GCM)
Information du certificat TLS :
    Propriétaire:
        Nom Usuel: outlook.com
        Organisation: Microsoft Corporation
        Localité: Redmond
        État ou Province: Washington
        Pays: US
    Émetteur:
        Nom Usuel: DigiCert Cloud Services CA-1
        Organisation: DigiCert Inc
        Pays: US
    Validité:
        Date d'activation: mer. 23 janv. 2019 01:00:00 CET
        Date d'expiration: sam. 23 janv. 2021 13:00:00 CET
    Empreintes:
        SHA256: C4:EE:30:EB:04:FB:7F:D9:BA:0E:F5:54:1E:B4:1E:05:CF:BF:F0:BA:85:14:59:DD:82:90:D8:A4:B7:40:3C:B5
        SHA1 (deprecated): 49:F5:30:34:C0:ED:45:07:CA:92:4F:15:74:2E:2C:2F:E5:22:37:B5
--> EHLO localhost
<-- 250-PR0P264CA0176.outlook.office365.com Hello [46.254.226.109]
<-- 250-SIZE 157286400
<-- 250-PIPELINING
<-- 250-DSN
<-- 250-ENHANCEDSTATUSCODES
<-- 250-AUTH LOGIN XOAUTH2
<-- 250-8BITMIME
<-- 250-BINARYMIME
<-- 250-CHUNKING
<-- 250 SMTPUTF8
--> AUTH LOGIN
<-- 334 VXNlcm5hbWU6
--> ZGViaWFuQGFwYWpoNDEuZnI=
<-- 334 UGFzc3dvcmQ6
--> OWVVM0czJU52
<-- 235 2.7.0 Authentication successful
--> MAIL FROM:<debian@entreprise.fr>
--> RCPT TO:<moi@entreprise.fr>
--> DATA
<-- 250 2.1.0 Sender OK
<-- 250 2.1.5 Recipient OK
<-- 354 Start mail input; end with <CRLF>.<CRLF>
--> From: debian@entreprise.fr
--> Date: Wed, 04 Dec 2019 09:34:41 +0100
--> To: moi@entreprise.fr
--> Subject: Sujet test
--> /home/moi/backup_20191128-173806.log
--> MIME-Version: 1.0
--> Content-Type: text/plain; charset="UTF-8"
--> Content-Transfer-Encoding: 8bit
-->
--> Message test
--> .
<-- 250 2.0.0 OK <PR1PR01MB49861E9E706390B35CF28C25B25D0@PR1PR01MB4986.eurprd01.prod.exchangelabs.com> [Hostname=PR1PR01MB4986.eurprd01.prod.exchangelabs.com]
--> QUIT
<-- 221 2.0.0 Service closing transmission channel
send-mail: impossible d'écrire dans le journal /var/log/msmtp.log : erreur d'ouverture de fichier: Permission non accordée
send-mail: l'entrée du journal était : host=smtp.office365.com tls=on auth=on user=debian@entreprise.fr from=debian@entreprise.fr recipients=moi@entreprise.fr mailsize=265 smtpstatus=250 smtpmsg='250 2.0.0 OK <PR1PR01MB49861E9E706390B35CF28C25B25D0@PR1PR01MB4986.eurprd01.prod.exchangelabs.com> [Hostname=PR1PR01MB4986.eurprd01.prod.exchangelabs.com]' exitcode=EX_OK

```

> [@grandtoubab](#):
>
> Tout fonctionne et est lisible par Thunderbird

Je ne vois pas de PJ

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Décembre 4, 2019, 9:33 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/16 "2019-12-04T09:33:36Z")

</div>

Ok donc tu utilises bien bsd-mailx 😉

Commence par virer la ligne concernant les logs dans `/etc/msmtprc` (je pense qu’il y a un bug dans msmtp pour les logs) :  
`logfile /var/log/msmtp.log` et ajoute :

```auto
maildomain monentreprise.fr

```

Et cela devrait fonctionner. D’ailleurs ton retour avec le mode _bavard_ (-v) montre que le message est bien envoyé.

Si tu ne vois pas la pièce jointe dans le courriel reçu, il faudra essayer avec la syntaxe porposée par @grandtoubab en mettant le corps du message dans un fichier texte :

```auto
mailx -a /emplacemen/piece/jointe -s "Objet du message" toto@example.com < /emplacement/texte/du/corps

```

---

<div class="post-metadata">

**Author:** ![tchup](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tchup/32/4415_2.png) [@tchup](https://www.debian-fr.org/u/tchup)\
**Post date:** [Décembre 4, 2019, 10:18 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/17 "2019-12-04T10:18:03Z")

</div>

Effectivement… j’ai toujours reçu le mail mais jamais la PJ.  
Je n’ai plus de message d’erreur concernant le log après suppression de la ligne logfile. Par contre je n’ai pas non plus de log… 🤨

J’ai essayé avec :  
`mailx moi@entreprise.fr -v -s "Sujet test" -a /home/moi/backup_20191128-173806.log < /home/moi/backup_20191128-173806.log`

pareil … le corps est bien le contenu de mon log mais pas de PJ

J’ai remarqué la ligne (après le “Subject” :

```
--> Subject: Sujet test
--> /home/moi/backup_20191128-173806.log

```

des idées ???

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Décembre 4, 2019, 10:25 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/18 "2019-12-04T10:25:48Z")

</div>

bof uns simple recherche m’indique

To make this more “scriptable”, you can send the message without a body with the following:

la suite ici  
[https://www.thegeekdiary.com/linux-unix-how-to-send-mails-with-attachments-using-mailx-command/](https://www.thegeekdiary.com/linux-unix-how-to-send-mails-with-attachments-using-mailx-command/)

---

<div class="post-metadata">

**Author:** ![tchup](https://www.debian-fr.org/user_avatar/www.debian-fr.org/tchup/32/4415_2.png) [@tchup](https://www.debian-fr.org/u/tchup)\
**Post date:** [Décembre 4, 2019, 3:56 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/19 "2019-12-04T15:56:53Z")

</div>

mail reçu sans PJ et sans message avec :

```nohighlight
mailx -a /home/moi/backup_20191128-173806.log -v -s "Sujet test" moi@entreprise.fr < /dev/null

```

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Décembre 4, 2019, 5:36 UTC](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728/20 "2019-12-04T17:36:43Z")

</div>

Je viens de vérifier sur une Debian où j’ai mailx installé. Il n’y a pas d’option pour envoyer une pièce jointe, et l’option -a sert à ajouter des en-têtes supplémentaires :

> ```
> -a Specify additional header fields on the command line such as "X-Loop: foo@bar" etc. It
> can be also used to override MIME headers mail adds by default to each outgoing mail,
> see Character sets and MIME below. You have to use quotes if the string contains spa‐
> ces. This argument may be specified more than once, the headers will then be concate‐
> nated.
> 
> ```

Donc soit tu utilises la première méthode décrite par le lien donné en #17 par @grandtoubab (avec uuencode), soit tu utilises mailutils ou mutt à la place de bsd-mailx.

[Page suivante](https://www.debian-fr.org/t/envoi-de-mail-avec-pj-via-mailx/80728.md?page=2)
