#1 Le 31/08/2011, à 15:05
- Jacknight
Envoie de e-mail avec la ligne de commande. Attend indéfiniment
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 :
mailx -s "TEST" monemail@gmail.com
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 :
Response parameter: 5.5.1 Command unrecognized: ""
Je suis un peu perdu.
Si qqun a une idée je suis preneur.
D'avance merci
Hors ligne
#2 Le 31/08/2011, à 18:30
- jilucorg
Re : Envoie de e-mail avec la ligne de commande. Attend indéfiniment
Telnet ?
telnet smtp.mon_fournisseur_d'accès.fr 25
HELO mon_nom_de_domaine.extension
MAIL FROM: <moi@mon_nom_de_domaine.extension>
RCPT TO: <adresse_destinataire@fai.fr>
DATA
Subject: un petit coucou
coucou !
.
QUIT
Bien mettre le point au-dessus de QUIT.
jiluc.
––
Pour soutenir concrètement le logiciel libre : l'April ! http://www.april.org
Hors ligne
#3 Le 01/09/2011, à 12:20
- Jacknight
Re : Envoie de e-mail avec la ligne de commande. Attend indéfiniment
Bonjour,
Merci de votre réponse.
En fait, Telnet n'est pas autorisé par le prestataire de service.
Les e-mail sont cryptés avec TLS sur le port 587.
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.
Quelqu'un a-t-il une idée pourquoi le mailx attend sans rien faire ?
Merci d'avance
Hors ligne
#4 Le 01/09/2011, à 13:01
- toine42
Re : Envoie de e-mail avec la ligne de commande. Attend indéfiniment
Bonjour,
En fait, il faut taper ton message, aller à la ligne et faire control+d
Oups.... sujet mal lu...
Dernière modification par toine42 (Le 01/09/2011, à 13:03)
Au paradis, on est assis à la droite de Dieu. C'est normal, c'est la place du mort.
Pierre Desproges
Hors ligne
#5 Le 02/09/2011, à 11:23
- Jacknight
Re : Envoie de e-mail avec la ligne de commande. Attend indéfiniment
Merci de ta réponse toine42,
J'ai réalisé que j'avais commis une erreur dans la config de mon ssmtp.conf
J'avais saisi 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 au moins le processu ne reste plus bloqué :
Can't send mail: sendmail process failed with error code 1
... j'ai donc encore cherché ...
Vu que j'arrive à envoyer des email avec Thunderbird via le même prestataire, j'ai effectué deux analyses 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 elles 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. Faut-il générer un certificat pour ssmtp ?
Merci pour votre aide si vous avez des idées
Dernière modification par Jacknight (Le 02/09/2011, à 11:24)
Hors ligne
#6 Le 03/09/2011, à 10:12
- Jacknight
Re : Envoie de e-mail avec la ligne de commande. Attend indéfiniment
Personne ne sait comment ça se passe avec les certificats ?
Dernière modification par Jacknight (Le 03/09/2011, à 10:13)
Hors ligne
#7 Le 03/09/2011, à 11:03
- alej
Re : Envoie de e-mail avec la ligne de commande. Attend indéfiniment
J'ai viré -temporairement - exim et installé ssmtp pour essayer et ça fonctionne au poil chez moi© avec gmail...
$ echo "pour voir"|ssmtp -vv toto@machin.fr
[<-] 220 mx.google.com ESMTP s13sm880330fad.18
[->] EHLO NADA.home
[<-] 250 ENHANCEDSTATUSCODES
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO NADA.home
[<-] 250 ENHANCEDSTATUSCODES
[->] AUTH LOGIN
... etc. Et ça fonctionne aussi parfaitement avec ta commande mailx.
Par rapport à la conf par défaut de ssmtp, je n'ai rien fait d'autre que modifier/ajouter...
mailhub=smtp.gmail.com:587
FromLineOverride=YES
UseSTARTTLS=YES
AuthUser=moichezgmail
AuthPass=lemotdepassedemoncomptegmail
Hors ligne