Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/08/2011, à 14: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, à 17: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, à 11: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, à 12: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, à 12: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, à 10: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, à 10:24)

Hors ligne

#6 Le 03/09/2011, à 09: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, à 09:13)

Hors ligne

#7 Le 03/09/2011, à 10:03

alej

Re : Envoie de e-mail avec la ligne de commande. Attend indéfiniment

J'ai viré -temporairement big_smile - 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