Senden von Mails mit PHP, LAMPP und PostFix

9

Ich habe es jetzt seit 2 Tagen versucht und ich kann einfach nicht das Einfachste zum Arbeiten bringen.

Das Problem: Das Senden von E-Mails von PHP an meine E-Mail-Adresse funktioniert nicht

Ich habe zuvor mit Windows und Sendmail gearbeitet (Sendmail war im XAMPP-Paket enthalten) und alles war in Ordnung. Im XAMPP-Paket (1.7.7) für Linux ist Sendmail jedoch nicht integriert. Nachdem ich ein wenig gegoogelt hatte, fand ich heraus, dass Postfix besser in eine LAMPP-Umgebung passt.


Was ich bisher versucht habe:

Ich habe Postfix installiert und wollte es so konfigurieren, dass es nur den SMTP-Server meines privaten E-Mail-Anbieters verwendet (wie unter Windows). Also habe ich meine php.ini so konfiguriert :

[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

Beachten Sie, dass ich das "Nur Win32" -Stuff auskommentiert habe. Die Datei /etc/postfix/main.cf sieht folgendermaßen aus:

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 ist unverändert:

# 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]

Was geschieht:

Also wenn ich es tue

> sudo /etc/init.d/postfix start

Alles scheint gut zu funktionieren und im /var/log/mail.log heißt es: "ubuntu postfix / master [9720]: Daemon gestartet - Version 2.8.5, Konfiguration / etc / postfix"

Aber wenn ich mein PHP-Skript ausführe (das mit Windows und Sendmail gut funktioniert hat), läuft es einfach durch und es passiert nichts, es wird nicht einmal ein Fehler protokolliert.


Was ich eigentlich erreichen möchte:

Ich arbeite lokal an einer E-Commerce-Website. Es läuft gut auf dem dedizierten Webserver, aber ich möchte, dass es aus offensichtlichen Gründen auch lokal ausgeführt wird. In einigen Fällen werden E-Mails gesendet, und ich möchte sie nur mit Thunderbird oder auf andere Weise empfangen können. Ist die Verwendung von Postfix Overkill hier? Ich muss keine E-Mails empfangen - ich möchte nur die gesendeten E-Mails irgendwie sichtbar machen. Ich konnte anscheinend keine hilfreichen Schritt-für-Schritt-Anleitungen für dieses Problem finden (weder in Bezug auf Senmail noch in Bezug auf Postfix - aber um ehrlich zu sein, ich bin sehr neu in Linux).

Quasdunk
quelle

Antworten:

13

In Ihrer php.ini ist dies:

sendmail_path = /etc/postfix

Sollte der Pfad zur sendmail (oder kompatiblen) Binärdatei sein.
Sie haben es auf das Konfigurationsverzeichnis von postfix gesetzt, das nicht richtig ist.

Aus historischen Gründen wird in der Regel /usr/bin/sendmailals Kompatibilitätslink gepflegt.
sendmailwar zuerst da (ich denke) und so ziemlich alles setzt einfach voraus, dass es im installierten MTA ist. Wenn dies nicht der Fall ist, erstellt der Ersatz einen Symlink, sodass nichts kaputt geht.

Cäsium
quelle
Vielen Dank! Auch wenn ich nicht ganz verstehe, warum und auf welche Weise Sendmail und Postfix zusammenarbeiten - es funktioniert jetzt! Ich kann mich nicht erinnern, wo ich über das Setzen auf Postfix gelesen habe, aber dies ist die richtige Einstellung in meinem Fall:sendmail_path = "/usr/sbin/sendmail -t -i"
Quasdunk
Ein bisschen mehr Info hinzugefügt - im Grunde arbeiten sie nicht als solche zusammen, Sie haben kein Sendmail, aber Postfix gibt vor, es zu sein, weil so viel Zeug erwartet, dass es da ist :) Sie könnten auch den sendmail_path so einstellen, dass er auf zeigt die Postfix-Binärdatei.
Caesium
1
Ich erinnere mich! sendmail hatte jahrelang Fehler nach Fehler nach Fehler nach Fehler. Zu einem bestimmten Zeitpunkt könnten Sie einen Nur-Root-Befehl in Ihre ~ / .forward aufnehmen, sich eine E-Mail senden und alles auf einem Unix / Linux-System tun. Es gab Massenexodus, und neue Mailserver enthielten ein sendmailähnliches Programm, das sich wie sendmail verhalten sollte, sodass alle anderen Programme, die sich um sendmail herum aufgebaut hatten, ohne zusätzlichen Aufwand funktionieren würden.
Vielen Dank für die zusätzlichen Informationen! Jetzt macht alles mehr Sinn;) Ich würde dir noch eine +1 geben, wenn ich könnte, aber ich hoffe, jemand anderes, der dies genauso hilfreich findet, wird es für mich tun :-D
Quasdunk
1

Um E-Mails von localhost (WAMP, XAMP oder LAMP) zu senden, können Sie das PHPMailer-Paket verwenden

Dies ist die gleiche Anweisung wie in der Readme-Datei.

WAMP (Fenster):

Zuerst müssen Sie die "php.ini" bearbeiten. Um diese Datei zu finden, zeigen Sie die phpinfo mit dem folgenden Code vom WAMP-Server an. Erstellen Sie eine PHP-Datei [settings.php] in C: / wamp / www / und fügen Sie der Datei den folgenden Inhalt hinzu.

<?php
     echo phpinfo();
?>

Geben Sie localhost / setting.php im Browser. Dort suchen Sie nach "Loaded Configuration File" . Dies ist der Pfad zu Ihrer php.ini .

In der php.ini - Datei entfernen; (Semikolon) gegeben `extension = php_openssl.dll. Jetzt ist die Servereinstellung vorbei ...

  • Nach dem Herunterladen des PHPMailer-Ordners von github
  • Extrahieren-> Kopieren Sie den vollständigen Ordner in Ihren Projektordner, dh C: / wamp / www /
  • Suchen Sie die Datei index.php.
  • Ändern Sie den Parameter nach Bedarf.
  • Geben Sie dann im Browser localhost / PHPMailer / index.php ein .
  • Dann wird eine erfolgreiche Nachricht angezeigt, wenn eine E-Mail gesendet wurde, andernfalls wird eine Fehlermeldung ausgegeben.

LAMPE (Linux):

  • Im Falle von Linux ist es nicht erforderlich, die Datei php.ini zu bearbeiten, wie ich im ersten Punkt unter WAMP erläutert habe.

  • Eine weitere Änderung ist, dass der Projekt- oder Dokumentstammordner anders ist.

  • Unter Linux lautet der Standarddokument-Stammordner / var / www
  • Sie können den Stammverzeichnis des Dokuments einfach ändern. Besuchen Sie dazu /programming//a/17612396/1925943
  • Kopieren Sie den PhpMailer in diesen Dokumentstammordner und bearbeiten Sie index.php nach Bedarf.
  • Geben Sie dann localhost / PhpMailer / index.php in den Browser ein.
Shashidhara
quelle