Script shell mail
klawee
Messages postés
67
Statut
Membre
-
klawee Messages postés 67 Statut Membre -
klawee Messages postés 67 Statut Membre -
Bonjour à tous,
Alors voilà j'ai un soucis pour réaliser un script qui est supposé envoyé un mail.
En effet, je résume de A à Z.
J'i mis en place un serveur de messagerie de postfix.Tout fonctionne mais j'aimerai automatiser la création des adresses emails.
Pour cela j'ai crée une page web qui recueil auprès des visiteurs leurs adresse e mails et leur mot de passe. Ces données sont directement envoyé sur ma base mysql mais pour que la boite mail fonctionne,il faut réaliser une commande telnet avec l'adresse mail.
Mais je n'arrive pas a faire en sorte que les adresses emails soient envoyé direct au script telnet.
----------------------------------------------------------------------------------------------
Mon fichier PHP qui récupère les données rentrés sur la page html
-----------------------------------------------------------------------------------------------
<?php
//session('start');
//$_SESSION['mail']=$_POST['mail'];
try
{
$bdd=new PDO('mysql:host=localhost;dbname=postfix','root','azertyuiop');
// insertion
$req=$bdd->prepare('insert into comptes(email,password) values(?,?)');
$req->execute(array($_POST['email'],$_POST['password']));
$req=$bdd->prepare('insert into domaines(domaine) values(?)');
$req->execute(array($_POST['domaine']));
header('location:/roundcube');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<?php
exec('/usr/local/bin/essai.sh '.$_POST["Adresse email"].' '.$_POST["Domaine"]);
?>
-------------------------------------------------------------------------------------------------------------
Mon script essai.sh qui est censé envoyé le mail et récupérer la variable "adresse email"
----------------------------------------------------------------------------------------------------------------
#!/bin/bash
mail ($1);
$(ls /var/spool/vmail)
Alors voilà j'ai un soucis pour réaliser un script qui est supposé envoyé un mail.
En effet, je résume de A à Z.
J'i mis en place un serveur de messagerie de postfix.Tout fonctionne mais j'aimerai automatiser la création des adresses emails.
Pour cela j'ai crée une page web qui recueil auprès des visiteurs leurs adresse e mails et leur mot de passe. Ces données sont directement envoyé sur ma base mysql mais pour que la boite mail fonctionne,il faut réaliser une commande telnet avec l'adresse mail.
Mais je n'arrive pas a faire en sorte que les adresses emails soient envoyé direct au script telnet.
----------------------------------------------------------------------------------------------
Mon fichier PHP qui récupère les données rentrés sur la page html
-----------------------------------------------------------------------------------------------
<?php
//session('start');
//$_SESSION['mail']=$_POST['mail'];
try
{
$bdd=new PDO('mysql:host=localhost;dbname=postfix','root','azertyuiop');
// insertion
$req=$bdd->prepare('insert into comptes(email,password) values(?,?)');
$req->execute(array($_POST['email'],$_POST['password']));
$req=$bdd->prepare('insert into domaines(domaine) values(?)');
$req->execute(array($_POST['domaine']));
header('location:/roundcube');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<?php
exec('/usr/local/bin/essai.sh '.$_POST["Adresse email"].' '.$_POST["Domaine"]);
?>
-------------------------------------------------------------------------------------------------------------
Mon script essai.sh qui est censé envoyé le mail et récupérer la variable "adresse email"
----------------------------------------------------------------------------------------------------------------
#!/bin/bash
mail ($1);
$(ls /var/spool/vmail)
A voir également:
- Script shell mail
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Windows live mail - Télécharger - Mail
- Publipostage mail - Accueil - Word
- Mas script - Accueil - Windows
4 réponses
Bonsoir,
Postfix fait MTA ? Je ne suis pas sur donc j'ai demandé, possible.
Il y a un ou deux arguments ici ?
Postfix fait MTA ? Je ne suis pas sur donc j'ai demandé, possible.
exec('/usr/local/bin/essai.sh '.$_POST["Adresse email"].' '.$_POST["Domaine"]);
Il y a un ou deux arguments ici ?
Je n'avais pas fait attention à cette ligne... effectivement, il y semble que ça fasse deux arguments puisqu'il y a un espace.
Et pour la commande mail, s'il s'agit d'envoyer le résultat de :
$(ls /var/spool/vmail)
le script bash doit pouvoir s'écrire ainsi :
#!/bin/bash
mail $1@$2 < $(ls /var/spool/vmail)
Et pour la commande mail, s'il s'agit d'envoyer le résultat de :
$(ls /var/spool/vmail)
le script bash doit pouvoir s'écrire ainsi :
#!/bin/bash
mail $1@$2 < $(ls /var/spool/vmail)
Alors j'ai retiré la redirection au niveau var/spool/vmail et là quand je lance la commande essai.sh ca me met met "no mail for root" donc ca c'est normal.
Je voudrais changer la commande mail et la remplacer par une telnet ca ressemblerai à
#!bin/bash
telnet 127.0.0.1 25
Ehlo //là il me faudrait la variable domaine donc je pense que je vais mettre $2
mail from:<test@test.com
rcpt to:<$1> //pour la variable email
data
blalbla
.
quit
Qu'en pensez vous?
Je voudrais changer la commande mail et la remplacer par une telnet ca ressemblerai à
#!bin/bash
telnet 127.0.0.1 25
Ehlo //là il me faudrait la variable domaine donc je pense que je vais mettre $2
mail from:<test@test.com
rcpt to:<$1> //pour la variable email
data
blalbla
.
quit
Qu'en pensez vous?
Mon fichier ajout.php
try
{
$bdd=new PDO('mysql:host=localhost;dbname=postfix','root','azertyuiop');
// insertion
$req=$bdd->prepare('insert into comptes(email,password) values(?,?)');
$req->execute(array($_POST['email'],$_POST['password']));
$req=$bdd->prepare('insert into domaines(domaine) values(?)');
$req->execute(array($_POST['domaine']));
header('location:/roundcube');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<?php
exec('/usr/local/bin/essai.sh '.$_POST["Adresse email"].' '.$_POST["Domaine"]);
?>
try
{
$bdd=new PDO('mysql:host=localhost;dbname=postfix','root','azertyuiop');
// insertion
$req=$bdd->prepare('insert into comptes(email,password) values(?,?)');
$req->execute(array($_POST['email'],$_POST['password']));
$req=$bdd->prepare('insert into domaines(domaine) values(?)');
$req->execute(array($_POST['domaine']));
header('location:/roundcube');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<?php
exec('/usr/local/bin/essai.sh '.$_POST["Adresse email"].' '.$_POST["Domaine"]);
?>
Mon fichier HTML: peut etre qu'un prolème peut venir d'ici pour l'appel des variables non?
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<title>Accueil
</title>
<link rel="stylesheet" href="modele11.css">
</head>
<body
style="color: rgb(0, 0, 0); background-color: rgb(198, 198, 197);"
alink="#000099" link="#000099" vlink="#990099">
<div id="global">
<div style="text-align: center;"></div>
<div style="text-align: center;">
<div style="text-align: center;"></div>
<h1></h1>
<div style="text-align: center; font-weight: bold;"><big><big><big><big><span>Inscription<br>
<br>
</span></big></big></big></big></div>
</div>
<!-- #entete -->
<div id="centre">
<div id="centre-bis">
<div style="text-align: center;"><img src="bb.jpeg">
<div id="principal"><span style="font-weight: bold;"><br>
</span>
<form method="post" action="ajout.php" id="myForm">
<div style="text-align: center;"><label
class="form_col" for="pseudo">Adresse email :</label>
<input name="email" id="email" type="text"><span
caracteres=""></span><br>
<br>
</div>
<div style="text-align: center;"><label
class="form_col" for="password">Mot de
passe :</label>
<input name="password" id="password" type="password"><span
class="tooltip"></span><br>
<input name="password" id="password" type="password"><span
class="tooltip"></span><br>
<br>
<label class="form_col" for="domaine"> Domaine :</label>
<input name="domaine" id="domaine"><span
<br>
</div>
<div style="text-align: center;">
<br>
<br>
<span class="form_col"></span><input
value="M'inscrire" type="submit"> <input
value="Reinitialiser le formulaire" type="reset"></div>
<p></p>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<title>Accueil
</title>
<link rel="stylesheet" href="modele11.css">
</head>
<body
style="color: rgb(0, 0, 0); background-color: rgb(198, 198, 197);"
alink="#000099" link="#000099" vlink="#990099">
<div id="global">
<div style="text-align: center;"></div>
<div style="text-align: center;">
<div style="text-align: center;"></div>
<h1></h1>
<div style="text-align: center; font-weight: bold;"><big><big><big><big><span>Inscription<br>
<br>
</span></big></big></big></big></div>
</div>
<!-- #entete -->
<div id="centre">
<div id="centre-bis">
<div style="text-align: center;"><img src="bb.jpeg">
<div id="principal"><span style="font-weight: bold;"><br>
</span>
<form method="post" action="ajout.php" id="myForm">
<div style="text-align: center;"><label
class="form_col" for="pseudo">Adresse email :</label>
<input name="email" id="email" type="text"><span
caracteres=""></span><br>
<br>
</div>
<div style="text-align: center;"><label
class="form_col" for="password">Mot de
passe :</label>
<input name="password" id="password" type="password"><span
class="tooltip"></span><br>
<input name="password" id="password" type="password"><span
class="tooltip"></span><br>
<br>
<label class="form_col" for="domaine"> Domaine :</label>
<input name="domaine" id="domaine"><span
<br>
</div>
<div style="text-align: center;">
<br>
<br>
<span class="form_col"></span><input
value="M'inscrire" type="submit"> <input
value="Reinitialiser le formulaire" type="reset"></div>
<p></p>
C bon g galéré mais g trouvé comment faire fonctionné le machin g modifié le script
telnet 127.0.0.1 25 <<EOF
$(sleep 2)
HELO $2
MAIL FROM: test@test.com
RCPT TO: $1
data
blablabla
.
QUIT
EOF
là ca fonctionne me manque plus qu'a savoir comment faire pour cryper automatiquement les mots de passes sur mysql
telnet 127.0.0.1 25 <<EOF
$(sleep 2)
HELO $2
MAIL FROM: test@test.com
RCPT TO: $1
data
blablabla
.
QUIT
EOF
là ca fonctionne me manque plus qu'a savoir comment faire pour cryper automatiquement les mots de passes sur mysql
Désolé de revenir si tard,
Pour crypter automatiquement les mots de passe dans mysql, avec les outils de mysql, tu dois pouvoir reprendre tes instructions php ainsi :
$req=$bdd->prepare('insert into comptes(email,password) values(?,PASSWORD(?))');
$req->execute(array($_POST['email'],$_POST['password']));
PASSWORD("le mot de passe"), permet de crypter le mot de passe d'une manière qui (théoriquement au moins) ne permet pas de retrouver le mot de passe à partir des données cryptées.
Pour tester le mot de passe d'un utilisateur, il faudra à nouveau crypter le mot de passe entré par l'utilisateur. Ce qui se fait de la même manière.
Mais je ne sais pas comment ça passe en php... et il y a probablement d'autres moyens d'arriver au même résultat.
Bon courage,
Pour crypter automatiquement les mots de passe dans mysql, avec les outils de mysql, tu dois pouvoir reprendre tes instructions php ainsi :
$req=$bdd->prepare('insert into comptes(email,password) values(?,PASSWORD(?))');
$req->execute(array($_POST['email'],$_POST['password']));
PASSWORD("le mot de passe"), permet de crypter le mot de passe d'une manière qui (théoriquement au moins) ne permet pas de retrouver le mot de passe à partir des données cryptées.
Pour tester le mot de passe d'un utilisateur, il faudra à nouveau crypter le mot de passe entré par l'utilisateur. Ce qui se fait de la même manière.
Mais je ne sais pas comment ça passe en php... et il y a probablement d'autres moyens d'arriver au même résultat.
Bon courage,
Non je n'en ai pas installé qu'est ce qu'il est supposé faire?
Normalement, postfix est un MTA, ou alors on m'a menti...
mail ($1); ## je ne suis pas sur de cette ligne... j'aurais tendance à écrire :
mail $1
Mais je n'ai pas forcément raison.
Ensuite pour que $1 ait une valeur, il faut que le script bash soit appelé avec un argument, je ne sais pas si c'est le cas dans ce que tu as fais jusqu'ici.
Enfin, je ne sais pas si tu as configurer postfix (et tes serveurs pop/imap) pour utiliser mysql...
Bonne chance
Oui tu as raison la commande exact est mail $1 j'ai juste fait de modif en pensant qu'il y avait des erreurs de syntax et que c'etait pour cela que ca ne marchait pas.
Dans le fichier php je fait appel au script shell avec la commande exec('/usr/local/bin/essai.sh
Oui tout est bien configuré au niveau postfix j'arrive a envoyer et recevoiur des mails donc pas de soucis là dessus.