Envoyer des mails depuis debian

Bonjour, est ce que quelqu’un aurait un article traitant des bases de l’envois de mail?

j’aimerais pouvoir envoyer des notifications par mail en utilisant php sur mon serveur mais je vois des terme smtp, exim, MUA, j’aimerais comprendre avec des termes simple. C’est embêtant de trouver des articles qui supposent que vous connaissez déjà les bases.

Donc pour simplifier j’ai un serveur dédié et un registrar qui me fourni gratuitement des boite mail (parait que ca compte dans l’équation), comment se passe l’envoi de mail depuis un serveur web (je ne souhaite pas héberger de boite mail sur mon serveur) et avez vous des liens sur le sujet?

je vous remercie.

up?

pas besoin de te fatiguer avec tous ces termes si tu as deja un founisseur de mail…

Pour envoyer des mails, il suffit de passer par un serveur smtp.
Ton fournisseur de mail en met un à disposition pour envoyer des mails depuis ton compte enregistré chez eux.

pour envoyer des mails en php via le serveur smtp externe (celui de ton founrisseur) il suffit de suivre ce qui est indiqué ici:http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm
à partir du passage “Send Email from a PHP Script Using SMTP Authentication

sinon pour ta culture générale,tu peux chercher sur wikipedia SMTP,MTA,MDA,IMAP,POP

mais en gros (et par un non expert) :

  1. ton logiciel de mail (mua) - par example icedove - envoie ton message via le protocole smtp à un serveur mta qui est un serveur d’envoi (par exemple postfix).

  2. de l’autre côté, un mda (par exemple dovecot) recoit le mail, qui est consultable par un logiciel de messagerie via les protocoles imap ou pop. (imap si le logiciel laisse les messages sur le mda et se synchronise avec celui-ci et pop si le logiciel de messagerie télécharge les messages du mda et ne les laisse pas sur le serveur)

attention c’est juste un exemple générique…je te laisse découvrir les detail mais ca doit te permettre de commencer à comprendre.

dans ton cas, la fonction php que tu va créer avec PEAR va être le “mua” qui enverra ton message via le serveur smtp de ton fournisseur de mails.
tu renseigneras les données de ton fournisseur de mail ici :

$host = "mail.example.com"; $username = "smtp_username"; $password = "smtp_password";

je te remercie mais perso j’y arrive pas.
J’ai installé php-pear, et j’ai copié collé l’exemple avec authentification smtp, j’essais d’envoyer via le smtp gandi puisque c’est mon registrar et que j’ai mes mails chez eux. ca donne ssl://mail.gandi.net en host
avec en smtp login, mon adresse mail
et password smtp le mot de passe de mon mail,
ca marche sur thunderbird ca devrait fonctionner sur debian…

[quote=“vger”]je te remercie mais perso j’y arrive pas.
J’ai installé php-pear, et j’ai copié collé l’exemple avec authentification smtp, j’essais d’envoyer via le smtp gandi puisque c’est mon registrar et que j’ai mes mails chez eux. ca donne ssl://mail.gandi.net en host
avec en smtp login, mon adresse mail
et password smtp le mot de passe de mon mail,
ca marche sur thunderbird ca devrait fonctionner sur debian…[/quote]

pourquoi ssl:// ?
si tu suis l’exemple tu dois mettre seulement mail.gandi.net

ensuite regarde les logs de ton serveur web…il te dira ce qui se passe (ou pas)

dans l’exemple il y est marqué

il faut enlever ssl: ?
sinon je me rend compte que j’ai juste fait apt-get install php-pear
ca suffit pour avoir le package pear mail?

ok pour ssl…je m’etais arreté a l’exemple d’avant.

pour php-pear, aucune idée…à priori oui…teste : https://pear.php.net/manual/en/installation.checking.php

et tes logs apache?

[:error] [pid 16658] [client...] PHP notice: undefined variable.. blabla 
[:error] [pid 16658] [client...] PHP Warning: include_once(Net/SMTP.php): failed to open stream: no such file or directory in /usr/share/php/mail/smtp.php on line 348
[:error] [pid 16658] [client...] PHP Warning: include_once(): Failde opening 'Net/SMTP.php' for inclusion (include_path='./usr/share/php:/usr/share/pear') in /usr/share/php/Mail/smtp.php on line 348
[:error] [pid 16658] [client...] PHP Fatal error: Class 'Net_SMTP' not found in /........../smtp.php on line 349

l’undefined variable renvoi étrangement à la ligne du index.php qui précise le mot de passe smtp…

edit, j’ai réglé l’undefined variable, me reste plus que le reste.

j’ai installé pear net_SMTP donc je n’ai plus de message d’erreur dans le log apache par contre j’obtiens :

sur la page php sur laquelle j’ai mis le code

quel est ton code php? (et cache le mot de passe…)

celui de l’exemple

[quote]

Site perso

Site perso, le forum est par ici : Forum privé

<?php require_once "Mail.php"; $from = "Sandra Sender "; $to = "Ramona Recipient "; $subject = "Hi!"; $body = "Hi,\n\nHow are you?"; $host = "mail.gandi.net"; $port = "465"; $username = "mail gandi"; $password = "mdp"; $headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject); $smtp = Mail::factory('smtp', array ('host' => $host, 'port' => $port, 'auth' => true, 'username' => $username, 'password' => $password)); $mail = $smtp->send($to, $headers, $body); if (PEAR::isError($mail)) { echo("

na" . $mail->getMessage() . "

"); } else { echo("

Message successfully sent!

"); } ?> [/quote]

En installant les librairies nécessaires par le biais de composer, j’ai utilisé le code dont voici un extrait :

[code]#!/usr/bin/env php5

<?php require('vendor/autoload.php'); // utf-8 mb_internal_encoding('utf-8'); [...] error_reporting(E_ALL & ~E_STRICT); $smtp = Mail::factory('smtp', array( 'host' => 'ssl://serveur.mondomaine.com', 'socket_options' => array( 'ssl' => array( 'allow_self_signed' => true ) ), 'port' => 465, 'auth' => true, 'username' => 'login', 'password' => 'motdepasse' )); $mail = $smtp->send(array($recipient), $headers, $message); if (PEAR::isError($mail)) { echo "Message could not be sent.\n"; echo "Mailer Error: " . $mail->getMessage() . "\n"; } else { echo("Message has been sent\n"); } ?>[/code]

Et quelques emails ont pu être envoyés sans problème. (Pensez à supprimer le paramètre socket_options, si votre serveur SMTP n’utilise pas de certificat SSL auto-signé)

Et non, il ne faut pas enlever le [mono]ssl://[/mono] pour le nom d’hôte.


AnonymousCoward

PS - Il faudrait demander à ce que le sujet soit déplacé dans la rubrique programmation, non ?

il s’agit de quelles librairies? je ne sais pas ce qu’est composer…

Remets ssl://

ce qui s’affiche après chargement de la page qui contient le code après avoir remis ssl://

regarde ici :http://ubuntuforums.org/archive/index.php/t-1511036.html

apparement il faut installer des scripts supplementaires dans PEAR :

sudo pear install -o Mail sudo pear install -o Net_SMTP

sinon tu peux aussi essayer le port 587.https://wiki.gandi.net/en/mail/standard-settings#smtp_account

j’avais déjà installé ca, même en changeant sur 587 c’est le même message d’erreur, je sèche complètement…

[quote=“vger”]j’avais déjà installé ca, même en changeant sur 587 c’est le même message d’erreur, je sèche complètement…[/quote]Mais sur le port 587 c’est une communication différente !

De nos jours, il y a trois manières de causer avec un serveur SMTP :

  • D’un logiciel de messagerie (MUA) à un serveur SMTP, avec le port de destination 587 et un chiffrement STARTTLS en option, mis en place au milieu de la communication. Souvent avant l’authentification, évidemment.

  • D’un serveur SMTP à un autre serveur SMTP, avec le port de destination 25 et un chiffrement STARTTLS en option. Un cas qui ne te concerne pas actuellement.

  • D’un logiciel de messagerie (MUA) à un serveur SMTP, avec le port de destination 465. Le protocole SMTP utilise une connexion SSL/TLS (obligatoire) comme tunnel. C’est du SMTP over SSL, du SMTPS.

Tu peux probablement utiliser le SMTP avec STARTTLS ou le SMTPS pour causer avec le serveur SMTP de Gandi. Mais les deux manières se programment de façons différentes avec chacune un port de destination différent.

Et si tu veux vérifier que tu arrives bien à te faire comprendre d’un serveur SMTP, il y a le paquet swaks, sous debian. Swaks étant immensément plus pratique que l’infâme bricolage avec telnet.

Et si swaks te dit qu’il n’arrive pas à joindre le serveur SMTP distant, tu commences par vérifier que ton parefeu (ou celui de ton hébergeur) laisse passer la communication.


AnonymousCoward

alors pour l’instant je me suis pas embêter niveau parefeu, tout est autorisé. juste installé fail2ban pour le ssh.

par contre je me suis aperçu d’un truc, tout en obtenant les messages d’erreur ci-dessus en essayant d’envoyer des mail via un script php, mes membre recoivent les mails envoyé avec phpbb avec postfix réglé automatiquement comme "site web"
ils recoivent les “mails de masse” et les notification.
Le problème la dedans c’est qu’avec toutes mes boites mail sur différents services je ne recois aucun mail de la part de phpbb…

j’étudie la mise en place d’un serveur SMTP, mais j’aimerais savoir si en faisant ca je serais automatiquement blacklisté?
deuxième question, je peux installer un SMTP pour deux domaines à la fois sur le même serveur?