Aujourd'hui, Marc Hampartzoumian a écrit :
> #!/bin/bash
>
> telnet smtp.quelque.part 25 << __EOF__
> helo passerelle.adsl
> mail from: alerte_passerelle_adsl@???
> rcpt to: marc@???
> data
> Reply-To: marc@???
> Subject: alerte log
> Une nouvelle alerte a été générée.
> .
> QUIT
> __EOF__
Je vois à priori deux problèmes dans ton script :
- il manque une ligne vide entre les en-têtes et le corps du
message ;
- les lignes doivent se terminer par CRLF dans le protocole SMTP.
Le dernier point n'est peut-être pas grave, sauf si on tombe sur un
serveur pointilleux sur les RFC.
Par ailleurs, je n'ai jamais réussi à faire marcher un script avec
telnet et je ne sais pas pourquoi. Mais ça marche bien avec netcat
(commande nc). Voici un exemple testé qui marche :
---------- Couper ici ----------
#!/bin/bash
mailhost=...
destinataire=...
recode ../crlf << EOF | nc -i 1 $mailhost smtp > /dev/null 2>&1
helo $HOSTNAME
mail from: $USER@$HOSTNAME
rcpt to: $destinataire
data
Date: $(date -R)
From: $USER@$HOSTNAME
To: $destinataire
Subject: Bonjour
Vous avez le bonjour du script bash.
A+.
.
quit
EOF
---------- Couper ici ----------
La commande recode sert à convertir les fins de lignes Unix en SMTP
(LF -> CRLF). L'option -i 1 dans netcat impose un délai de 1 s entre les
lignes. Sans ce délai ça marche mais le serveur renvoie plein d'erreurs
(il essaye d'interpréter les lignes du message comme des commandes SMTP,
je ne comprends pas pourquoi).
--
Edgar Bonet Tel : +33 476 881 096
Laboratoire Louis Néel -- CNRS Mobile : +33 663 384 906
25 av. des Martyrs, BP 166 Fax : +33 476 881 191
38042 Grenoble cedex 9, France e-mail : bonet@???