Envoie un e-mail avec ligne de commande. Attente indéfinie

Bonjour,
J’essaie désespérément d’envoyer un e-mail en ligne de commande.

Pour cela, j’ai installé les paquets ssmtp et bsd-mailx à l’aide de apt-get.

Je tape ma ligne de commande :

Ensuite je saisi le corps du message, puis je termine par un retour à la ligne (CR), un point (.) et un nouveau retour à la ligne (CR).
Du coups le programme me demande de saisir le champs Cc:
Là je tape un retour à la ligne.
Puis plus rien ne se passe.

J’ai beau taper un point un retour à la ligne, ou faire un CTRL-D ou CTRL-c, rien n’y fait.
Je suis obligé d’ouvrir une autre fenêtre terminal pour trouver le PID correspondant ps -aux et d’utiliser kill <numéro PID> pour terminer le processus.

Évidemment je reçois le message Can't send mail: sendmail process failed

J’ai lancé Wireshark pour voir ce qu’il se passe :
Effectivement, il y a des échanges de trames et notamment je reçois un message SMTP 220 (service ready) de la part du serveur de messagerie.
Mais c’est tout, le message n’est jamais envoyé.
Et lorsque je “kill” le processus, j’ai encore un échange de 5 trames avec la réponse du serveur :

Je précise que les e-mail sont cryptés avec TLS sur le port 587 chez le prestataire de service.
Mais c’est surtout que j’ai besoin de pouvoir utiliser une commande tel que mailx ou autre afin de l’intégrer dans un script.

Je suis un peu perdu.
Si qqun a une idée je suis preneur.

D’avance merci

salut

as tu essaye d’envoyer à partir d’un terminal ssh

ensuite regarde les logs pour avoir une idée plus précise

a+ gilles

Merci de ta réponse gilles974,
Je ne sais pas comment procéder pour me connecter en ssh à mon prestataire de service.
Comment dois-je procéder ?

Par contre je progresse. J’ai commis une erreur dans la config de mon ssmtp.conf
J’avais mis UseTLS=yes alors qu’en fait mon prestataire utilise STARTTLS. ^^

Ca expliquerait l’attente infinie :
D’après ce que j’ai trouvé sur Google, TLS et STARTTLS sont tous les deux basés sur SSL, mais dans le protocol de la version STARTTLS, le client doit envoyer un “STARTTLS” après un premier établissement de connexion. Alors qu’avec TLS, la connexion est chiffrée dés le début.
Du coup, comme le serveur est en mode STARTTLS il attendait une commande qui ne venait jamais.

J’ai donc remplacé UseTLS=yes par UseSTARTTLS=yes et là au moins le processus se termine.
Avec une erreur certes, mais quand même : Can't send mail: sendmail process failed with error code 1
Bon je continue de chercher.

Ca m’intéresse quand même de connaître la procédure avec SSH pour améliorer mon dépannage.

Je me demande si il y a pas une histoire de certificat à créer.

J’ai aussi essayé un telnet ip_de_mon_prestataire 587
Et je peux dialoguer en langage SSMTP.
Sauf que j’y connais que dale :confused:

Vu que j’arrive à envoyer des email avec Thunderbird via le même prestataire, j’ai effectué deux analyse avec Wireshark.

  • Une lors de l’envoi d’un e-mail avec Thunderbird
  • L’autre lors de l’envoi d’un e-mail avec bsd-xmail / ssmtp

J’ai comparé les deux et ils sont identiques jusqu’à un point où cela diverge :
Une fois que le serveur a envoyé son certificat et le “server key exchange”, dans le cas de Thunderbird, celui-ci répond avec un certificat et un échange de clé, alors que dans le cas de ssmtp, celui-ci balance directe les données de l’e-mail.
Du coup le serveur est pas content et répond TLSv1 Record Layer: Alert (Level: Fatal, Description: Unexpected Message).

La question est maintenant : qu’est ce qu’il me manque pour que ça fonctionne ?
J’ai pourtant bien installé le paquet openssl.

Merci de votre aide

Personne ne sait-il comment ça se passe avec les certificats ?

Si quelqu’un a le moindre indice ou référence je suis preneur :frowning:

Etant donné que le problème concernant l’attente infinie est résolu, je marque ce sujet comme résolu.
J’en ouvre un autre concernant le problème de certificats.