Envío de correos con PHP, LAMPP y PostFix


9

Lo he estado intentando durante 2 días completos ahora, y simplemente no puedo hacer que la cosa más simple funcione.

El problema: enviar correos electrónicos desde PHP a mi dirección de correo electrónico no funciona

He estado trabajando con Windows y Sendmail (Sendmail estaba dentro del paquete XAMPP) antes y todo estaba bien. Sin embargo, el paquete XAMPP (1.7.7) para Linux no tiene Sendmail integrado. Entonces, después de buscar en Google un poco, descubrí que Postfix se adapta mejor a un entorno LAMPP.


Lo que he probado hasta ahora:

He instalado Postfix y quería configurarlo para usar el servidor smtp de mi proveedor privado de correo electrónico (como lo hizo en Windows). Así que he configurado mi php.ini así:

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

; For Win32 only.
;sendmail_from = me@example.com

sendmail_path = /etc/postfix
mail.add_x_header = On

Tenga en cuenta que he comentado el material "Sólo Win32". El /etc/postfix/main.cf se ve así:

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 no ha cambiado:

# 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 my.email@ddress.com

Lo que pasa:

Entonces cuando lo hago

> sudo /etc/init.d/postfix start

todo parece funcionar bien y el /var/log/mail.log dice: "ubuntu postfix / master [9720]: comenzó el demonio - versión 2.8.5, configuración / etc / postfix"

Pero cuando ejecuto mi script PHP (que funcionó bien con Windows y Sendmail), simplemente se ejecuta y no sucede nada, ni siquiera se registra un error.


Lo que realmente quiero lograr:

Estoy trabajando localmente en un sitio web de comercio electrónico. Funciona bien en el servidor web dedicado, pero también quiero que se ejecute localmente por razones obvias. En algunos casos, envía correos electrónicos, y solo quiero poder recibirlos con Thunderbird o de cualquier otra manera. ¿Está usando Postfix overkill aquí? No necesito recibir correos electrónicos, solo quiero que los correos enviados sean visibles de alguna manera. Parece que no pude encontrar tutoriales paso a paso útiles para este problema (ni respecto a Senmail ni a Postfix, pero, para ser sincero, soy muy nuevo en Linux).

Respuestas:


13

En tu php.ini, esto:

sendmail_path = /etc/postfix

Debe ser la ruta al binario sendmail (o compatible).
Lo ha configurado en el directorio de configuración de postfix que no es correcto.

Por razones históricas, generalmente /usr/bin/sendmailse mantiene como un enlace de compatibilidad.
sendmailfue alrededor primero (supongo) y casi todo asume que está en el MTA instalado. Entonces, cuando no lo es, el reemplazo crea un enlace simbólico para que nada se rompa.


¡Muchísimas gracias! Aunque no entiendo bien por qué y de qué manera Sendmail y Postfix funcionan juntos, ¡funciona ahora! No recuerdo dónde leí sobre configurarlo para postfix, pero esta es la configuración correcta en mi caso:sendmail_path = "/usr/sbin/sendmail -t -i"
Quasdunk

Se agregó un poco más de información: básicamente, no están trabajando juntos como tales, no tienes sendmail, pero postfix finge estarlo, porque muchas cosas esperan que esté allí :) También puedes configurar sendmail_path para que apunte a el binario postfix.
Cesio

1
¡Recuerdo! sendmail tuvo error tras error tras error tras error durante años. En un momento, podría incluir un comando de solo root en su ~ / .forward, enviarse un correo y hacer lo que sea en un sistema Unix / Linux. Hubo un éxodo masivo, y los nuevos servidores de correo incluyeron un programa similar a sendmail diseñado para comportarse como sendmail para que todos los otros programas que se habían construido alrededor de sendmail siguieran funcionando sin ningún esfuerzo adicional.

Muchas gracias por la información adicional! Todo tiene más sentido ahora;) Te daría otro +1 si pudiera, pero espero que alguien más que encuentre esto tan útil lo haga por mí :-D
Quasdunk

1

Para enviar correo desde localhost (WAMP, XAMP o LAMP) puede usar el paquete PHPMailer

Esta será la misma instrucción dada en el archivo Léame.

WAMP (ventanas):

Primero tiene que editar el "php.ini". Para encontrar este archivo, visualice el phpinfo utilizando el siguiente código del servidor WAMP. Cree un archivo php [setting.php] dentro de C: / wamp / www / y agregue el siguiente contenido a ese archivo.

<?php
     echo phpinfo();
?>

Escriba localhost / setting.php en el navegador. Allí busque "Archivo de configuración cargado". Esa será la ruta a su php.ini .

En el archivo php.ini , elimine el; (punto y coma) dado a `extension = php_openssl.dll. Ahora la configuración del servidor ha terminado ...

  • Después de descargar la carpeta PHPMailer de github,
  • Extracto-> Copie la carpeta completa en la carpeta de su proyecto, es decir, C: / wamp / www /
  • Encuentra el archivo index.php.
  • Cambie el parámetro según su necesidad.
  • Luego, en el navegador, escriba localhost / PHPMailer / index.php .
  • Luego mostrará un mensaje exitoso si se envió un correo electrónico, de lo contrario, dará un mensaje de error.

LÁMPARA (Linux):

  • En el caso de Linux, no hay necesidad de editar el archivo php.ini como expliqué el primer punto en WAMP.

  • Un cambio más es el proyecto o la carpeta raíz del documento es diferente.

  • En Linux, la carpeta raíz de documentos predeterminada será / var / www
  • Puede cambiar la carpeta raíz del documento fácilmente. Para esa visita https://stackoverflow.com/a/17612396/1925943
  • Copie el PhpMailer a la carpeta raíz de este documento y edite index.php según lo necesite.
  • Luego escriba localhost / PhpMailer / index.php en el navegador.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.