envoyer un mail avec php et compte gmail

Vous avez réalisé ou vous voulez réaliser un truc impensable avec votre Raspberry Pi ? Cet endroit est pour vous...

Modérateur : Francois

Répondre
noscollections
Messages : 14
Enregistré le : lun. 8 mai 2017 12:15

envoyer un mail avec php et compte gmail

Message par noscollections » lun. 8 mai 2017 14:26

Bonjour,

J'ai un raspberry pi 3 avec pixel.
J'ai installé php-mysql et mis wordpress.
Le RPi3 est sur mon réseau, pour y accéder de l'extérieure, j'ai paramétré ma box et j'utilise un service de dns dynamique gratuit.
Tout va bien je suis content.

J'aimerai que le RPi3 puissent envoyer des emails, notamment par l'intermédiaire de php et wordpress.

J'ai trouvé des infos sur le sujet. Elles datent un peu :
http://www.sbprojects.com/projects/rasp ... /exim4.php
http://www.pihomeserver.fr/2015/08/13/e ... pberry-pi/

Doit-on passé obligatoirement par un compte mail existant pour envoyer un email ?
est-ce le meilleur moyen d'atteindre mon objectif ?
il y a t il quelque que chose à faire dans php ?
Si vous avez quelques bons tuyaux, je suis preneur.

Vous remerciant par avance pour vos précieux conseils

Noscollections

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: envoyer un mail avec php et compte gmail

Message par spourre » lun. 8 mai 2017 17:35

noscollections a écrit : ...
Doit-on passé obligatoirement par un compte mail existant pour envoyer un email ?
est-ce le meilleur moyen d'atteindre mon objectif ?
....
Si vous avez quelques bons tuyaux, je suis preneur.
...

Noscollections
Bonjour,

Ce n'est pas une obligation absolue mais c'est certainement la manière la plus simple pour y arriver.
Avoir son propre serveur mail (protocole SMTP), totalement autonome, peut se révéler problématique.
Une plaie d'Internet est le spam (mails non désirés). Pour limiter les risques de serveur mail "pirate", installé par un cheval de Troie, les FAI mettent en œuvre un certain nombre de mesures:

- Ils bloquent l'utilisation, en sortie, du port 25 (port par défaut du SMTP) . Ce blocage peut , parfois, être levé dans l'interface de gestion de la box (Free par exemple).

-Les serveurs SMTP peuvent vérifier que le domaine du serveur qui les contacte appartient à un domaine valide (reverse DNS).
Là encore, à ma connaissance, Free est le seul FAI qui permet de personnaliser, gratuitement, le reverse DNS de son adresse@IP (qui de plus est fixe et gratuite).

Dans ces conditions, sauf à détenir un nom de domaine, il est plus simple de passer par le serveur de son FAI.

Sylvain

noscollections
Messages : 14
Enregistré le : lun. 8 mai 2017 12:15

Re: envoyer un mail avec php et compte gmail

Message par noscollections » lun. 8 mai 2017 22:12

Effectivement passer par une messagerie existante semble une bonne idée.
Merci pour ces précisions Sylvain.

Sur les tuto, ils parlent de 2 outils au choix:
-Exim4
-SSMTP

mon choix, j'aime bien le nom ssmtp.
Les 2 sont-ils équivalent ? y'en a t il un plus conviviale ou mieux ?

Merci

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: envoyer un mail avec php et compte gmail

Message par spourre » mer. 10 mai 2017 00:29

noscollections a écrit : Sur les tuto, ils parlent de 2 outils au choix:
-Exim4
-SSMTP

mon choix, j'aime bien le nom ssmtp.
Les 2 sont-ils équivalent ? y'en a t il un plus conviviale ou mieux ?

Merci
Pour des raisons historiques, j'aime bien la commande mail(x), native du monde UNIX et facile à incorporer dans un script (bash pour moi).
Si vous tentez un apt-get mailx sur le Raspberry, vous verrez que c'est ce qu'on nomme un métat-package et qu'en fait, il y a au moins trois paquets réels qui peuvent fournir cette commande:

Code : Tout sélectionner

pi@RaspiFHEM:~ $ sudo apt-get install mailx
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Package mailx is a virtual package provided by:
  mailutils 1:2.99.98-2
  heirloom-mailx 12.5-4
  bsd-mailx 8.1.2-0.20141216cvs-2
You should explicitly select one to install.

E: Package 'mailx' has no installation candidate
mailutils impose mysql dont je ne veux pas sur mon pauvre Pi1 B+ (j'utilise sqlite3, plus léger):

Code : Tout sélectionner

pi@RaspiFHEM:~ $ sudo apt-get install mailutils
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés :
  guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16 libltdl7 liblzo2-2 libmailutils4 libmysqlclient18 libntlm0 libunistring0
  mailutils-common mysql-common
Paquets suggérés :
  mailutils-mh mailutils-doc
Les NOUVEAUX paquets suivants seront installés :
  guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16 libltdl7 liblzo2-2 libmailutils4 libmysqlclient18 libntlm0 libunistring0
  mailutils mailutils-common mysql-common
0 mis à jour, 14 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 5 747 ko dans les archives.
Après cette opération, 22,8 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] n
Annulation.
Pour heirloom-mailx, il y a moins (pas) de dépendances à installer mais c'est peut-être parce qu’elles sont déjà en place sur mon Raspberry. Il faudrait tester sur une installation vierge:

Code : Tout sélectionner

sudo apt-get install heirloom-mailx
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les NOUVEAUX paquets suivants seront installés :
  heirloom-mailx
0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 0 o/222 ko dans les archives.
Après cette opération, 431 ko d'espace disque supplémentaires seront utilisés.
Sélection du paquet heirloom-mailx précédemment désélectionné.
(Lecture de la base de données... 36450 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../heirloom-mailx_12.5-4_armhf.deb ...
Dépaquetage de heirloom-mailx (12.5-4) ...
Traitement des actions différées (« triggers ») pour man-db (2.7.0.2-5) ...
Paramétrage de heirloom-mailx (12.5-4) ...
update-alternatives: utilisation de « /usr/bin/heirloom-mailx » pour fournir « /usr/bin/mailx » (mailx) en mode automatique
Pour bsd-mailx, il y a des dépendances qui seront installées:

Code : Tout sélectionner

pi@RaspiFHEM:~ $ sudo apt-get install bsd-mailx
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés :
  liblockfile-bin liblockfile1
Les NOUVEAUX paquets suivants seront installés :
  bsd-mailx liblockfile-bin liblockfile1
0 mis à jour, 3 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 0 o/107 ko dans les archives.
Après cette opération, 170 ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] n
Annulation.
Pour votre choix entre SSMTP et exim, il semble que SSMTP supprime exim quand il est présent:

Code : Tout sélectionner

pi@RaspiFHEM:~ $ sudo apt-get install ssmtp
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  exim4-base exim4-config exim4-daemon-light
Les NOUVEAUX paquets suivants seront installés :
  ssmtp
0 mis à jour, 1 nouvellement installés, 3 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 54,2 ko dans les archives.
Après cette opération, 3 767 ko d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n] n
Annulation.
Les 2 plus légers , pour disposer de la commande mail(x), sont donc heirloom-mailx et bsd-mailx .
SSMTP est très léger puisqu'il ne "pèse" que 55 ko et, dans mon cas, libère presque 4 Mo (en désinstallant exim).
AMHA, ça vaut le coup de le tester mais, comme je ne veux pas ruiner ma configuration (mon Raspberry domotique) mais que j'aime bien répondre concrètement aux questions, je vais préparer une carte SD pour tester et voir celle qui me semble la plus légère

N'hésitez pas à communiquer vos résultats si vous testez l'un de ces logiciels.

Sylvain

noscollections
Messages : 14
Enregistré le : lun. 8 mai 2017 12:15

Re: envoyer un mail avec php et compte gmail

Message par noscollections » mer. 10 mai 2017 10:01

Bonjour,

Hier soir, je me suis lancé.
Je rappel mon objectif, faire que Php envoie des mails.
J'ai regarder les tuto sur internet.

http://www.sbprojects.com/projects/rasp ... /exim4.php
J'ai suivi celui-ci en faisant la partie ssmtp puis un autre tuto qui explique que faire coté php

https://androus.wordpress.com/2009/10/1 ... -function/

Et cela fonctionne ! C'est super :D

Bon ce matin petite surprise dans ma messagerie, j'ai des mails d'erreur car le pi envoie des choses avec cron

sujet : Cron <root@raspberrypi> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
texte :Address not found
Your message wasn't delivered to postmaster@raspberrypi because the domain raspberrypi couldn't be found. Check for typos or unnecessary spaces and try again.

Mais ceci est une autre affaire, je regardé du coté de chez M. Google si il n'y a pas la cause de ces messages. Dans mes recherches j'ai vu un tuto avec les mails du système que l'on pouvait router.

zeverybest
Raspinaute
Messages : 136
Enregistré le : sam. 18 oct. 2014 19:09

Re: envoyer un mail avec php et compte gmail

Message par zeverybest » jeu. 11 mai 2017 15:17

Je suis confronté a un probleme de mail similaire

J'utilise la fonction "mail" de php

Je peux envoyer des mail a mes adresses free.fr ou autres, mais pas aux destinataire de mon boulot (les adresses mail sont gerées par office 365 et c'est lui qui bloque
Meme probleme lorsque j'envoie un mail a une adresse Gmail

Il parait que c'est une config de Sendmail a modifier pour cacher le nom du serveur d'envoi, mais je n'ai rien trouvé

si quelqu'un a une idée ...

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: envoyer un mail avec php et compte gmail

Message par spourre » ven. 12 mai 2017 01:19

Bonsoir,

Je ne réponds à aucun de vous deux directement mais je crois que mon post peut vous donner des pistes de recherches.
Comme souligné par le PO, l'objectif est de pouvoir envoyer des mails à partir d'un script (php en particulier)depuis un Raspberry.

Comme le Raspberry n'est pas un foudre de guerre (surtout mon P1 B+, j'ai recherché le maximum de légèreté.
Dans mon cas, il s'agit de recevoir un mail d'alerte de mon serveur domotique pour être avisé en cas de batterie vide sur un des capteurs ou de proche saturation de la carte SD .
Il n'est ABSOLUMENT pas question d'installer des monstres comme Sendmail ou Postfix dont la complexité et la charge CPU sont disproportionnées par rapport à cet objectif (sans parler des écritures sur la carte SD).
Je ne souhaite pas recevoir de mail sur mon Raspberry puisque le but est d'oublier son existence. Qui enverrait des mails au système embarqué de son ascenseur ou de sa voiture ?.

J'avais déjà effectué des essais fructueux sur la Machine Virtuelle CENTOS qui m'a servi à paramétrer la domotique. Je viens de refaire des essais concluants sur le Raspberry B+ sous Jessie- lite (pas de GUI, commande par SSH).
Comme je suis abonné chez Orange (choix imposé par la fibre), je passe par le serveur SMTP d'orange (relire mon premier post sur le pourquoi). Je n'ai pas de nom de domaine (FDQN) ni de reverse DNS ni de MX déclaré. Mon choix c'est porté sur bsd-mailx (amélioration de Heirloom-mailx) qui ne requiert que peu de dépendances (liblockfile-bin liblockfile1) et ne pèsera que 170 ko (plus la qualité BSD).

Après installation, il faut adapter le fichier /etc/nail.rc (dans d'autres distributions, il peut avoir pour nom mail.rc).. Je ne vous donne que la fin du fichier, qu'il faudra adopter à votre cas et ajouter au fichier d'origine:

Code : Tout sélectionner

# Only include selected header fields when forwarding messages.
fwdretain subject date from to
# For Linux and BSD, this should be set.
set bsdcompat
# set smtp=smtp://smtp.server.tld:port_number
set smtp=smtp://smtp.orange.fr:587
# nécessaire pour activer l'authentification
set smtp-auth=login
# Le login de votre compte smtp
set smtp-auth-user=nom.prenom@orange.fr
# Le mot de passe de votre compte smtp
set smtp-auth-password=PASSWD
On teste avec la commande mail -v pour avoir le mode verbeux:

Code : Tout sélectionner

$ mail -v nom.prenom@orange.fr
Subject: test raspi
test

EOT
Resolving host smtp.orange.fr . . . done.
Connecting to 193.252.22.64:587 . . . connected.
220 mwinf5d52 ME ESMTP server ready[code]
>>> EHLO RaspiFHEM.nom.fr
250-mwinf5d52 hello [XX.XXX.XXX.XX], pleased to meet you
250-HELP
250-AUTH LOGIN PLAIN
250-SIZE 44000000
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 OK
>>> AUTH LOGIN
334 VXNlcm5hbWU6
>>> cG91cnJlLnN5bHZhaW5Ab3JhbmdlLmZy
334 UGFzc3dvcmQ6
>>> aGJnNHpkMw==
235 2.7.0 ... authentication succeeded
>>> MAIL FROM:<pi@RaspiFHEM.nom.fr>
501 5.1.0 Emetteur invalide. Invalid Sender. OFR303_405 [405]
smtp-server: 501 5.1.0 Emetteur invalide. Invalid Sender. OFR303_405 [405]
"/home/pi/dead.letter" 12/319
. . . message not sent.
[/code]

Refus car le FDQN n'est pas valide comme permet de le vérifier la commande hostnamre.
Un petit passage par raspi-config pour lui donner un nom "convenable": fhem.domotique.fr (normalement la RFC recommande de mettre un nom non valide en terminant le FDQN par .invalid mais je n'ai pas testé).
Un nouvel essais vers mon adresse chez Orange me donne:

à l'émission, côté Raspberry

Code : Tout sélectionner

$ mail -v nom.prenom@orange.fr
Subject: tests
raspi
EOT
Resolving host smtp.orange.fr . . . done.
Connecting to 193.252.22.64:587 . . . connected.
220 mwinf5d52 ME ESMTP server ready
>>> EHLO fhem.domotique.fr
250-mwinf5d52 hello [XX.XXX.XXX.XX], pleased to meet you
250-HELP
250-AUTH LOGIN PLAIN
250-SIZE 44000000
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 OK
>>> AUTH LOGIN
334 VXNlcm5hbWU6
>>> cG91cnJlLnN5bHZhaW5Ab3JhbmdlLmZy
334 UGFzc3dvcmQ6
>>> aGJnNHpkMw==
235 2.7.0 ... authentication succeeded
>>> MAIL FROM:<pi@fhem.domotique.fr>
250 2.1.0 <pi@fhem.domotique.fr> sender ok
>>> RCPT TO:<nom.prenom@orange.fr>
250 2.1.5 <nom.prenom@orange.fr> recipient ok
>>> DATA
354 enter mail, end with "." on a line by itself
>>> .
250 2.0.0 KA4s1v00u0pBAEj03A4s34 mail accepted for delivery
>>> QUIT
221 2.0.0 mwinf5d52 ME closing connection
.

Du côté réception, dans ma messagerie Orange, l'entête m'indique clairement que le mail vient de mon Raspberry avec son FDQN:

Code : Tout sélectionner

from fhem.domotique.fr ([XX.XXX.XXX.XX]) by mwinf5d52 with ME id KA4s1v00u0pBAEj03A4s34; Fri, 12 May 2017 00:04:53 +0200
Cela fonctionne aussi vers mon adresse Gmail, avec un contrôle supplémentaire visible dans l'entête:

Code : Tout sélectionner

i=1; mx.google.com;       spf=neutral (google.com: 80.12.242.127 is neither permitted nor denied by best guess record for domain of pi@fhem.domotique.fr) smtp.mailfrom=pi@fhem.domotique.fr
CQFD

Sylvain

Répondre

Retourner vers « Utilisateurs avancés »