Envoi de mail avec netcat

30/11/2008

On m’a demandé récemment comment envoyer un mail avec netcat (commade nc). En réalité, la question qu’on m’a posé venait d’un problème qui apparaît dés le moment où nous voulons envoyer toutes les commandes SMTP en bloc… Je vais vous montrer le problème et la solution.

D’abord, testons un envoi de mail en mode “interactif”, chose qui doit marcher. Utiliser le smtp de votre fournisseur d’accès, vous verrez que cela doit fonctionner.

$ nc smtp.provider.com 25
helo serveur.mail.org
mail from:<moi@serveur.mail.org>
rcpt to:<dest@domain.org>
data
Subject: Test de mail
Le contenu du mail...
.
quit

Ici, je me connecte au serveur smtp.provider.com (qui n’éxiste pas, c’est un exemple…) puis je donne mon identité de serveur via la commande “helo”. Je défini qui envoi le mail, puis à qui je l’envoi. Ensuite, je donne mes données, et je termine par un point suivit de la commande “quit” pour quitter.

Ca a fonctionné ? alors on va tenter de faire la même chose mais d’un seul bloc:

$ nc server.provider.com 25 <<EOF
helo serveur.mail.org
mail from:<moi@serveur.mail.org>
rcpt to:<dest@domain.org>
data
Subject: Test de mail
Le contenu du mail...
.
quit
EOF

Pour 8 personnes sur 10 cela ne va pas marcher. En fait, chaque commande smtp attend une réponse… mais en envoyant les commandes d’un seul bloc le serveur en face n’a pas le temps de répondre que les autres commandes sont envoyées.

Il suffit de dire à netcat d’attendre une seconde entre chaque commande pour que cela se passe bien, l’option est simplement **-i 1**, voici donc comment je m’y prend:

$ nc -i 1 server.provider.com 25 <<EOF
helo serveur.mail.org
mail from:<moi@serveur.mail.org>
rcpt to:<dest@domain.org>
data
Subject: Test de mail
Le contenu du mail...
.
quit
EOF

Alors effectivement, j’utilise l’envoi en bloc depuis l’entrée standard, mais rien ne vous empêche de mettre les commandes SMTP dans un fichier texte, puis de diriger la sortie dans netcat:

$ nc -i 1 server.provider.com 25 < mail_comands.txt
#ou 
$ cat mail_comands.txt | nc -i 1 server.provider.com 25

C’est simple et efficace !

Ça peut vous intéresser aussi


Netcat, créez votre serveur en BASH

Bash est puissant, très puissant. Les commandes et utilisations sont vastes ...


Un exemple Golang de résolution de tâche parallèle

J’ai participé aux BlendWebMix 2015 en tant que “...


Voip, encore un coup de gueule

Encore un coup de gueule, je sais que ces temps-ci ...


Rendre homogène une équipe de dev avec docker et docker-compose

Quand on veut bosser avec Docker sur des projets plus ...

Merci de m'aider à financer mes services

Si vous avez apprécié cet article, je vous serai reconnaissant de m'aider à me payer une petite bière :)

Si vous voulez en savoir plus sur l'utilisation de flattr sur mon blog, lisez cette page: Ayez pitié de moi

Commentaires

Ajouter un commentaire

Ajouter un commentaire

(*) Votre e-mail ne sera ni revendu, ni rendu public, ni utilisé pour vous proposer des mails commerciaux. Il n'est utilisé que pour vous contacter en cas de souci avec le contenu du commentaire, ou pour vous prévenir d'un nouveau commentaire si vous avez coché la case prévue à cet effet.