Ich habe Ubuntu 11.04, LAMP mit Tasksel installiert.
Ich finde, dass PHP mail()
funktioniert nicht.
Ich nehme an, ich muss es aktivieren oder so? Wie mache ich das?
Beste Antwort
Aus dem Mail-Handbuch von PHP:
Anforderungen
Damit die E-Mail-Funktionen
verfügbar sind, benötigt PHP ein installiertes
und funktionierendes E-Mail-System. Das zu verwendende Programm
wird durch die
Konfigurationseinstellungen in der Datei php.ini
definiert.
Das bedeutet, dass Sie eine Art Mailserver installieren und PHP konfigurieren müssen, um ihn zu verwenden. Normalerweise ist dieser Mailserver in Ubuntu postfix. Wenn die PHP-Seite, die Sie programmieren, jedoch irgendwann auf der Seite eines Hosting-Dienstes (z. B. xmission) gespeichert wird, ist dort höchstwahrscheinlich bereits ein Mailserver installiert. In diesem Fall testen Sie Ihre Website einfach online statt lokal.
Wenn Sie es auf Ihrem eigenen System testen müssen oder es auf Ihrem eigenen Home-Server hosten möchten, fahren Sie fort mit:
Postfix-Installation
Installation:postfix / sudo apt-get install postfix
Während des Vorgangs werden Sie gefragt, in welchem Modus Postfix installiert werden soll. Es gibt vier mögliche Modi:
- Internet :Ihr eigener Mailserver.
- Satellit :Zum Senden und Empfangen von E-Mails wird ein externer E-Mail-Anbieter (z. B. Google) verwendet. Der Server erhält keine Mail.
- Smarthost :Mischung zwischen den beiden. E-Mails werden lokal gespeichert, aber über einen externen E-Mail-Anbieter gesendet.
- Nur lokal :Betrifft Sie nicht. Das ist ein systeminterner Mailserver. Sie können auf dem System nur E-Mails von Benutzer zu Benutzer senden.
Die restlichen Installationsoptionen hängen von Ihrer Wahl dieser allgemeinen Konfiguration ab.
Höchstwahrscheinlich werden Sie sich für eine Satelliteninstallation entscheiden. Das bedeutet, dass die E-Mail über einen externen Anbieter gesendet wird. Als SMTP-Server (Postausgangsserver) müssen Sie dann den SMTP-Server Ihres Providers angeben. Der Rest der Optionen ist selbsterklärend.
Konfiguration nach der Installation
Die meisten SMTP-Server erfordern eine Passwortauthentifizierung, um E-Mails zu senden. Also muss Postfix dieses Passwort kennen. Auch gibt es Dinge wie Verschlüsselung zu beachten (die Sie googeln müssen). So konfigurieren Sie Postfix mit Passwortauthentifizierung (sasl):
-
Installieren Sie libsasl2-modules und sasl2-bin indem Sie auf die Software-Center-Symbole klicken oder über das Terminal:
sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin
-
Aktivieren Sie sasl-auth, indem Sie diese Zeilen zu
/etc/postfix/main.cf
hinzufügen# add to /etc/postfix/main.cf smtp_sasl_auth_enable = yes smtp_sasl_security_options = noplaintext noanonymous smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
-
Erstellen Sie eine Datei
/etc/postfix/sasl_password
mit einer Zeile wie:smtp.gmail.com [email protected]:USERPASSWORD
Ersetzen Sie das tatsächliche Passwort, den Benutzernamen und die SMTP-Adresse.
-
Postfix aktualisieren:
sudo chmod 600 /etc/postfix/sasl_password # for safety of your smtp password sudo postmap hash:/etc/postfix/sasl_password sudo postmap /etc/postfix/sender_canonical sudo /etc/init.d/postfix restart
Möglicherweise müssen Sie den Fehler „Zugriff verweigert“ durch
chown postfix:postfix /etc/postfix
umgehen vorher.
Damit sollte es in den meisten Fällen gehen. Einige SMTP-Anbieter verlangen jedoch eine bestimmte Adresse als Absender oder Verschlüsselung.
Verwandte:Das PEAR::Mail-Interface könnte Sie auch interessieren.
Google Mail (und vielleicht andere Dienste) mag es möglicherweise nicht, dass Sie versuchen, E-Mails auf diese Weise zu senden, da dies nach ihren Standards als unsicher angesehen werden könnte und Ihren Versuch blockieren würde, d. h. auf dem Bildschirm wird nichts passieren oder ein Teil des gesamten Prozesses würde blockiert Ihre Authentifizierung. Außerdem muss Ihr POP3 aktiviert sein.
Um dem entgegenzuwirken, siehe hier. (Wenn Sie auf Nummer sicher gehen wollen, erstellen Sie ein Dummy-Gmail-Konto)