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 08/08/2007, à 18:08

eomer212

[Résolu] envoi email purement par bash

le contexte. j'ai un script bash sur un serveur sur lequel bien sur, je n'ai pas de serveur mail.
j'aimerais envoyer le resultat de l'operation sur mon email.
hors, je ne sais pas configurer les services mail, ni d'aillerus lesquels installer.

question: peut on, en bash,  envoyer un mail simple, (sujet, origine, destinataire, 1 ligne de texte, smtp=....) sans avoir à configurer toute une tuyauterie(en particulier les comptes user, les smtp ou pop..)
en bref, un script d'envoi mail 4*4 executable partout.

Dernière modification par eomer212 (Le 08/08/2007, à 23:22)

Hors ligne

#2 Le 08/08/2007, à 20:02

eomer212

Re : [Résolu] envoi email purement par bash

bon, j'ai repotassé mes docs telnet, et on peut envoyer un mail via une session telnet.
mais hic, comment automatiser cela.??
via un script, ce serait bien..

exemple type session smtp via telnet..

telnet smtp.wanadoo.fr 25
EHLO domaine_expediteur
MAIL FROM:<admin@expediteur.com>
RCPT TO:<mail destinataire>
DATA
Subject: envoi mail telnet 
corps du message
.

quit

bon, en telnet session interactive, ca le fait bien, mais j'arrive pas à le mettre en bash.. une idée..???

Hors ligne

#3 Le 08/08/2007, à 21:16

fanch317

Re : [Résolu] envoi email purement par bash

eomer212 a écrit :

peut on, en bash,  envoyer un mail simple

Perso, j'utilise cela pour surveiller les nouvelles connexions par ssh :

mail -s "Login de $SSH_CLIENT sur serveur-truc" mon@email < ~/.ssh/mailnewlogin.txt

Ce qui reviens au meme en tappant :

echo "Mon corps de message" | mail -s "Mon sujet" mon@adresse

Fanch

Dernière modification par fanch317 (Le 08/08/2007, à 21:23)

Hors ligne

#4 Le 08/08/2007, à 22:38

eomer212

Re : [Résolu] envoi email purement par bash

ehu, oui, mais la ou est la configuration du smtp par exemple.? tu utilises un service mail preconfiguré..
si je lance la meme ligne de commande, avec mon identifiant d'email, pour le premier exemple, ca me bloque le terminal, pour le deuxieme, ca ne fait rien..
sad

Dernière modification par eomer212 (Le 08/08/2007, à 22:39)

Hors ligne

#5 Le 08/08/2007, à 22:49

Mmaathieu

Re : [Résolu] envoi email purement par bash

pour le message de fanch, ça ne marche que si tu as un serveur de mail en local.

la solution d'eomer212 fonctionnera, mais pour cela tu dois faire la connexion telnet sur ton serveur smtp, or tu voulais un truc indépendant de tout smtp... donc il faudrait modifier  le script en fonction de la connexion sur laquelle il est utilisée. pour un script "vraiment" universel, et qui ne nécessite de serveur de mail local, l'idée, en fait, c'est de faire un pseudo relais smtp dans le script bash... j'ai essayer de faire un truc qui récupère directement le MX de destination en fonction du domaine de l'adresse, et qui se connecte en telnet direct dessus, mais pour le serveur d'hotmail, je me fais jeter directement après la commande "MAIL FROM"; probablement la politique antispam... faudrait sniffer les échanges entre 2 serveurs SMTP pour voir ce qu'il se passe pour de vrai...


Athlon II X3 450
NVidia GT218
4Go DDR3

Hors ligne

#6 Le 08/08/2007, à 22:58

fanch317

Re : [Résolu] envoi email purement par bash

Oui et non, postfix est installé mais non configuré. Il n'y a pas de compte à configurer avec cette commande, cela envoi directement au serveur mail destinataire du domaine.

Je te proposais ça car J'ai lu :

sans avoir à configurer toute une tuyauterie

Il arrive que ça ne fonctionne pas pour certain domaines et pour de multiples raisons :
- controles de ports / services
- filtrages d'ip (bannies, sensible aux spam...)
- blocage par ton fai pour les mails sortant vers d'autres serveur que free (le cas de free il me semble par defaut (désactivable) )

EDIT: j'avais pas vuu ta réponse Mmaathieu. J'ai reussi à lancer quelques email par ce biais là il y a une heure, mais depuis je suis bloqué par le serveur mail de destination : host mx01.1and1.fr[212.227.15.150] refused to talk to me: 550 RBL rejection: http://www.spamhaus.org/query/bl?ip=88.137.XX.XX

Donc même ça c'est bancal je pense.

eomer212, Une autre solution serait d'utiliser un site comme passerelle (par feignantise). Simplement en appelant (avec wget ou curl..) une page php qui elle relayerait l'email.

Fanch

Dernière modification par fanch317 (Le 08/08/2007, à 23:03)

Hors ligne

#7 Le 08/08/2007, à 23:07

HymnToLife

Re : [Résolu] envoi email purement par bash

La commande mail marche très bien chez moi, pour envoyer partout. Et pourtant, je suis chez Orange derrière une Liveboîte donc pas le genre d'environnement idéal pour un serveur de mail big_smile Il suffit de dire à ton serveur mail local de passer par le SMTP de ton FAI pour tous les mails sortants plutôt que d'essayer d'envoyer directement. Par contre, je ne sais pas comment on configure ça sous Postfix, j'utilise sendmail.

Dernière modification par HymnToLife (Le 08/08/2007, à 23:14)


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#8 Le 08/08/2007, à 23:21

eomer212

Re : [Résolu] envoi email purement par bash

tongue
bon, comme j'ai finalement trouvé ce que je cherchais, je poste pour les autres..

la solution actuelle comporte deux fichiers batch.
l'avantage c'est que vous pouvez les triturer comme vous le voulez avant.

premier fichier: send_myemail.sh

#!/bin/bash
FROM="$1"
TO="$2"
SUBJECT="$3"
BODY="$4"
echo HELO 'hostname'
sleep 1
echo "MAIL FROM:<"$FROM">"
sleep 1
echo "RCPT TO:<"$TO">"
sleep 1
echo DATA
echo Subject: $SUBJECT
echo $BODY
echo .
sleep 1
echo quit

deuxiéme fichier qui lance le premier: send_emailtest.sh

#!/bin/bash
./send_myemail.sh admin@myservice.com destinataire@fai.fr "test email sujet" "corps du test email" | telnet smtp.fai.fr 25

voila, reste plus qu'a faire:   sh send_emailtest.sh
ca envoie le mail sur l'adresse spécifiée.. et ca marche..
par precaution, on peut aussi mettre des sleep de 2 secondes, dans le premier script, au cas ou le smtp serait un poil longuet à répondre..
aprés, le debut est là, prometteur, on peut imaginer plein de variations.

cool

Hors ligne

#9 Le 08/08/2007, à 23:25

NooP

Re : [Résolu] envoi email purement par bash

Juste pour l'info :

Il suffit d'ajouter :

relayhost = smtp.fournisseur.com

à la configuration de postfix pour qu'il fasse suivre les mails.


Votez Macron, vous l'aurez dans le fion !

Hors ligne

#10 Le 08/08/2007, à 23:26

HymnToLife

Re : [Résolu] envoi email purement par bash

Pas très élégant mais si ça marche... smile


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#11 Le 08/08/2007, à 23:26

eomer212

Re : [Résolu] envoi email purement par bash

oui, il reste quand meme une petite chose à faire, qui serait pas mal.
c'est de detecter un service smtp disponible pour le serveur à partir duquel l'envoi de mail est requis.
actuellement, il doit être fixé à la main, mais ca serait vraiment le TOP cool  si on pouvait le résoudre automatiquement.
la, le script serait assuré de fonctionner vraiment n'importe ou.

Hors ligne

#12 Le 09/08/2007, à 00:00

Mmaathieu

Re : [Résolu] envoi email purement par bash

hop, un petit script pour la route, qui marche pas pour tous les domaines (les mêmes que ceux avec lesquels le solution avec la commande "mail" ne marche pas...), mais qui n'a pas besoin de serveur de mail:

il prend comme premier argument l'expéditeur, en 2e le destinaire, en 3e le sujet et en 4e le message

#!/bin/sh


from=$1
to=$2
subject=$3
data=$4

domaine=`echo $to | cut -d '@' -f2`

mx_princ=`dig MX $domaine | grep -v "^;" | grep MX | awk {'print $5,$6'} | sort | head -n 1 | awk {'print $2'}`



(
        echo "EHLO"
        echo "MAIL FROM:<$from>"
        echo "RCPT TO:$to"
        echo "data"
        echo "subject:$subject"
        echo "$data"
        echo "."
) | telnet $mx_princ 25

Athlon II X3 450
NVidia GT218
4Go DDR3

Hors ligne

#13 Le 09/08/2007, à 02:00

eomer212

Re : [Résolu] envoi email purement par bash

mathieu:
houla!! suis pas encore arrivé la moi..!!
un peu d'explications????

Hors ligne

#14 Le 09/08/2007, à 02:26

HymnToLife

Re : [Résolu] envoi email purement par bash

Bah au lieu de devoir entrer l'adresse du SMTP à la main, ça la récupère en utilisant le domaine auquel appartient l'adresse du destinataire et le MX correspondant.


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#15 Le 09/08/2007, à 11:17

fanch317

Re : [Résolu] envoi email purement par bash

Dans le cas général, on envoie son email à son fournisseur d'accès internet. Ce dernier s'occuper de le relayer vers le serveur de destination. (le cas de ton script)

Comme tout le monde peut retrouver l'adresse de ce serveur de destination, (avec digg par exemple) le script de Mmaathieu s'occupe de communiquer directement avec ce dernier.

Hors ligne

#16 Le 09/08/2007, à 11:31

eomer212

Re : [Résolu] envoi email purement par bash

Mmatthieuuu.
j'ai juste un petit probleme.
ton script d'extraction, , il marche avec quel serveur= ?

parceque j'ai essayé sur mon smtp.wanadoo.fr
et cela ne me sort rien.. je vois pas trop ce que tu fais, ni d'ailleurs, le plus important, pourquoi..
bon, le coup du 'dig MX', j'ai regardé la doc, ok, c'est une spécificité serveur de mail.
mais le reste, je comprends pas...
tu as un serveur ou des parametres avec lesquels ta fonction marche.??


Mmaathieu a écrit :

hop, un petit script pour la route, qui marche pas pour tous les domaines (les mêmes que ceux avec lesquels le solution avec la commande "mail" ne marche pas...), mais qui n'a pas besoin de serveur de mail:

il prend comme premier argument l'expéditeur, en 2e le destinaire, en 3e le sujet et en 4e le message

#!/bin/sh


from=$1
to=$2
subject=$3
data=$4

domaine=`echo $to | cut -d '@' -f2`

mx_princ=`dig MX $domaine | grep -v "^;" | grep MX | awk {'print $5,$6'} | sort | head -n 1 | awk {'print $2'}`



(
        echo "EHLO"
        echo "MAIL FROM:<$from>"
        echo "RCPT TO:$to"
        echo "data"
        echo "subject:$subject"
        echo "$data"
        echo "."
) | telnet $mx_princ 25

Dernière modification par eomer212 (Le 09/08/2007, à 11:35)

Hors ligne

#17 Le 09/08/2007, à 13:33

Mmaathieu

Re : [Résolu] envoi email purement par bash

hello,


le coup du "dig ...", c'est pour interroger le dns du domaine dee l'adresse de destination, pour trouver le MX de plus forte priorité (ce qui permet d'envoyer le mail directement au serveur du destinataire, et de s'affranchir d'un smtp)

j'avais testé avec le serveur de l'asso des anciens de mon école, et ça marchait. maintenant,j 'ai testé avec celui  d'orange, ça ne marchait pas, donc j'ai fait quelques petites modifs:

#!/bin/sh


ehlo=$1
from=$2
to=$3
subject=$4
data=$5

domaine=`echo $to | cut -d '@' -f2`

mx_princ=`dig MX $domaine | grep -v "^;" | grep MX | awk {'print $5,$6'} | sort | head -n 1 | awk {'print $2'}`



(
        echo "EHLO $ehlo"
        echo "MAIL FROM:<$from>"
        echo "RCPT TO:<$to>"
        echo "data"
        echo "subject:$subject"
        echo "$data"
        echo "."
) | telnet $mx_princ 25

le premier argument est maintenant la chaine à passer après le EHLO. Pour le domaine orange.fr, tu peux mettre à peu près n'importe quoi, mais je crois pour être conforme au protocole, il faudrait mettre le FQDN de l'expéditeur...


par contre, ça marche toujours pas pour le domaine hotmail.fr, qui doit être plus restrictif...


Athlon II X3 450
NVidia GT218
4Go DDR3

Hors ligne

#18 Le 26/12/2007, à 00:10

Daëavelwyn

Re : [Résolu] envoi email purement par bash

bonjours à  tous,

Alors, j'essaye de pigé ce script, mais il me manque quelques connaissances, et je n'ai pas trouvé de définition très claire sur le net, c'est quoi le champ EHLO  ou HELO? ça sert à  quoi? un exemple??

Merci d'avance pour les réponses smile

Dernière modification par Daëavelwyn (Le 04/01/2008, à 03:37)


La connaissance est le droit de tous, et le devoir de chacun.

Hors ligne

#19 Le 27/11/2008, à 23:40

wifix

Re : [Résolu] envoi email purement par bash

Une reponse tardive ( et tres simpliste! A hauteur de mes competances quoi! )...

Alors HELO,  sert a initier une conversation avec le serveur.
Le protocole (dont je n'ai plus le numero ) qui utilise HELO est anterieur au protocole qui utilise EHLO.

Voila, voila...


There's no place like 127.0.0.1 !
Pas d'adsl? Internet haut-debit c'est possible quand-meme! me contacter en mp

#519089

Hors ligne

#20 Le 28/11/2008, à 09:56

Daëavelwyn

Re : [Résolu] envoi email purement par bash

mieux vaut tard que jamais, j'avais laissé ce script de coté et installé une solution postfix complète, mais je pense que je vais y revenir maintenant wink merci smile


La connaissance est le droit de tous, et le devoir de chacun.

Hors ligne

#21 Le 13/01/2011, à 21:23

metos

Re : [Résolu] envoi email purement par bash

juste pour dire merci
c'est exactement ce que je cherchais smile

Hors ligne

#22 Le 14/01/2011, à 11:23

eomer212

Re : [Résolu] envoi email purement par bash

petite precision sur orange.
si vous faites une  resolution pour smtp.orange.fr depuis une ligne non orange, vous tombez sur un serveur de mail extremement restrictif. par contre, si vous le faites à partir d'une ligne orange, vous etes pas redirigé vers le meme serveur. difference?  pour envoyer un email il faut s'identifier.
merci à tous ces connards de spammeurs.
donc, de toute facon, le script doit etre validé en fonction du smtp du FAI auquel le serveur sera raccordé.
mais je confirme qu'il marche encore sur les smtp orange.fr

Hors ligne

#23 Le 05/03/2011, à 11:36

lingtalfi

Re : [Résolu] envoi email purement par bash

Est-ce que quelqu'un peut m'éclairer sur le sujet please ?

Je viens d'essayer d'envoyer un mail via telnet manuellement
depuis mon poste local.
avec smtp.neuf.fr (mon fai), pas de problèmes.
mais avec smtp.wanadoo.fr je me fais jeter, considéré comme spammeur,
confirmant ce qu'eomer vient de préciser,

mais alors comment je fais pour envoyer des mails depuis mon siteweb par exemple
à des gens qui redemandent leurs mots de passe et qui sont chez orange ?

Là en local je suis en train de me mettre à postfix, mais il y a un truc que je pige
pas (j'dois vous avouer que je chui particulièrement mauvais dans la matière) :

si on configure postfix avec relayhost = smtp.neuf.fr
est-ce qu'il ne va pas également se faire jeter par wanadoo ?
hmm

Dernière modification par lingtalfi (Le 05/03/2011, à 11:37)

Hors ligne

#24 Le 06/03/2011, à 01:38

eomer212

Re : [Résolu] envoi email purement par bash

heureusement que tu n'es pas obligé de te connecter à chaque serveur d'email de chaque destinataire.
tu te connectes à un seul serveur, celui de ton fai,  sur lequel tu peux t'enregistrer, et tu envoie tes emails à tous tes destinataires via cette connexion.
c'est le serveur du fai qui va faire le relais et rediriger les emails vers les serveurs des destinataires.
tu as une connexion et un compte sur smtp.neuf.fr, tu utilises cette connexion pour envoyer tes message.

Dernière modification par eomer212 (Le 06/03/2011, à 01:41)

Hors ligne

#25 Le 06/03/2011, à 09:28

lingtalfi

Re : [Résolu] envoi email purement par bash

Ben oui,
je viens de me faire une série d'envois chez les fai suivants :
yahoo.fr, gmail.com, hotmail.fr, live.fr, sfr.fr, aol.fr.
(J'ai pas de compte orange)
et j'ai bien reçu tous les messages avec juste un plouf dans les spams pour aol.
J'ai utiliser la classe ZendMail pour ces tests, et j'ai bien vu en sniffant le réseau qu'elle n'utilise
pas du tout postfix (certainement des fonctions php internes qui permettent un dialogue smtp direct).

Mais alors quel est l'avantage d'utiliser postfix ?
(j'aurais ptet du faire un autre sujet)

Dernière modification par lingtalfi (Le 06/03/2011, à 09:29)

Hors ligne