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
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 :
send-mail: impossible d'écrire dans le journal /var/log/msmtp.log : erreur d'ouverture de fichier: Permission non accordée
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 :
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.
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
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 :
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 :
mailx -a /emplacemen/piece/jointe -s "Objet du message" toto@example.com < /emplacement/texte/du/corps
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
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.