Envoi de mails avec PHP, LAMPP et PostFix

9

J'essaye depuis 2 jours entiers maintenant, et je n'arrive pas à faire fonctionner la chose la plus simple.

Le problème: l'envoi d'e-mails de PHP à mon adresse e-mail ne fonctionne pas

J'ai déjà travaillé avec Windows et Sendmail (Sendmail était dans le package XAMPP) auparavant et tout était OK. Le paquet XAMPP (1.7.7) pour Linux n'a pas encore intégré Sendmail. Donc, après avoir fait une petite recherche sur Google, j'ai découvert que Postfix s'intègre mieux dans un environnement LAMPP.


Ce que j'ai essayé jusqu'à présent:

J'ai installé Postfix et je voulais le configurer pour utiliser simplement le serveur smtp de mon fournisseur de messagerie électronique privé (comme c'était le cas sous Windows). J'ai donc configuré mon php.ini comme ceci:

[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25

; For Win32 only.
;sendmail_from = [email protected]

sendmail_path = /etc/postfix
mail.add_x_header = On

Notez que j'ai commenté la substance "Win32 uniquement". Le /etc/postfix/main.cf ressemble à ceci:

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
myhostname = ubuntu
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
sender_canonical_maps = hash:/etc/postfix/sender_canonical
mydestination = ubuntu, localhost.localdomain, localhost
relayhost = mail.gmx.net
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

/ etc / aliases est inchangé:

# Required aliases
postmaster: root
MAILER-DAEMON:  postmaster

# Common aliases
abuse:      postmaster
spam:       postmaster

/ etc / postfix / sasl_password :

my.providers.smtp my_login:my_password

/ etc / postfic / sender_canonical:

postmaster [email protected]

Ce qui se produit:

Alors quand je fais

> sudo /etc/init.d/postfix start

tout semble bien fonctionner et le /var/log/mail.log dit: "ubuntu postfix / master [9720]: démon démarré - version 2.8.5, configuration / etc / postfix"

Mais lorsque j'exécute mon script PHP (qui fonctionnait bien avec Windows et Sendmail), il ne fait que traverser et rien ne se passe, pas même une erreur n'est enregistrée.


Ce que je veux réellement réaliser:

Je travaille localement sur un site e-commerce. Il fonctionne très bien sur le serveur Web dédié, mais je veux également qu'il fonctionne localement pour des raisons évidentes. Dans certains cas, il envoie des e-mails, et je veux juste pouvoir les recevoir avec Thunderbird ou de toute autre manière. L'utilisation de Postfix est-elle excessive ici? Je n'ai pas besoin de recevoir de courriels - je veux juste rendre les courriers envoyés visibles d'une manière ou d'une autre. Je n'ai pas pu trouver de tutoriels étape par étape utiles pour ce problème (ni concernant Senmail ni Postfix - mais, pour être honnête, je suis très nouveau sur Linux).

Quasdunk
la source

Réponses:

13

Dans votre php.ini, ceci:

sendmail_path = /etc/postfix

Doit être le chemin vers le binaire sendmail (ou compatible).
Vous l'avez placé dans le répertoire de configuration de postfix qui n'est pas correct.

Pour des raisons historiques, il /usr/bin/sendmailest généralement conservé en tant que lien de compatibilité.
sendmailétait autour en premier (je suppose) et à peu près tout suppose que c'est dans le MTA installé. Alors quand ce n'est pas le cas, le remplaçant crée un lien symbolique pour que rien ne se casse.

Césium
la source
Merci beaucoup! Même si je ne comprends pas très bien pourquoi et de quelle manière Sendmail et Postfix fonctionnent ensemble - cela fonctionne maintenant! Je ne me souviens pas où j'ai lu sur le réglage de postfix, mais c'est le réglage correct dans mon cas:sendmail_path = "/usr/sbin/sendmail -t -i"
Quasdunk
Ajout d'un peu plus d'informations - fondamentalement, ils ne fonctionnent pas ensemble en tant que tels, vous n'avez pas de sendmail, mais postfix fait semblant d'être, car tant de choses s'attendent à ce qu'il soit là :) Vous pouvez également définir le sendmail_path pour pointer vers le binaire postfix.
Césium
1
Je me souviens! sendmail a eu bogue après bogue après bogue après bogue pendant des années. À un moment donné, vous pouvez inclure une commande root uniquement dans votre ~ / .forward, vous envoyer un courrier et faire n'importe quoi sur un système Unix / Linux. Il y avait Exodus de masse, et les nouveaux serveurs de messagerie comprenaient un programme semblable à sendmail conçu pour se comporter comme sendmail afin que tous les autres programmes qui s'étaient construits autour de sendmail fonctionnent toujours sans effort supplémentaire.
Merci beaucoup pour les informations supplémentaires! Tout cela a plus de sens maintenant;) Je vous donnerais un autre +1 si je le pouvais, mais j'espère que quelqu'un d'autre qui trouvera cela tout aussi utile le fera pour moi :-D
Quasdunk
1

Pour envoyer du courrier depuis localhost (WAMP, XAMP ou LAMP), vous pouvez utiliser le package PHPMailer

Ce sera la même instruction donnée dans le fichier readme.

WAMP (fenêtres):

Vous devez d'abord éditer le "php.ini". Pour trouver ce fichier, affichez le phpinfo en utilisant le code suivant du serveur WAMP. Créez un fichier php [setting.php] dans C: / wamp / www / et ajoutez le contenu suivant à ce fichier.

<?php
     echo phpinfo();
?>

Tapez localhost / setting.php dans le navigateur. Il recherche "Fichier de configuration chargé". Ce sera le chemin vers votre php.ini .

Dans le fichier php.ini , supprimez le; (point-virgule) attribué à `extension = php_openssl.dll. Maintenant, la configuration du serveur est terminée ...

  • Après avoir téléchargé le dossier PHPMailer depuis github,
  • Extraire-> Copiez le dossier complet dans votre dossier de projet, c'est-à-dire C: / wamp / www /
  • Recherchez le fichier index.php.
  • Modifiez le paramètre selon vos besoins.
  • Ensuite, dans le navigateur, tapez localhost / PHPMailer / index.php .
  • Ensuite, il affichera un message réussi si un e-mail est envoyé, sinon il donnera un message d'erreur.

LAMPE (Linux):

  • Dans le cas de Linux, il n'est pas nécessaire de modifier le fichier php.ini comme je l'ai expliqué au premier point sous WAMP.

  • Un autre changement est que le dossier racine du projet ou du document est différent.

  • Sous Linux, le dossier racine du document par défaut sera / var / www
  • Vous pouvez facilement changer le dossier racine du document. Pour cela, visitez https://stackoverflow.com/a/17612396/1925943
  • Copiez le PhpMailer dans ce dossier racine du document et modifiez index.php selon vos besoins.
  • Tapez ensuite localhost / PhpMailer / index.php dans le navigateur.
shashidhara
la source