Instalé Ubuntu 11.04, LAMP usando tasksel.
Encuentro que PHP mail()
no funciona.
¿Supongo que necesito habilitarlo o algo así? ¿Cómo hago eso?
Mejor respuesta
Del manual de correo de php:
Requisitos
Para que las funciones de correo estén
disponibles, PHP requiere un sistema de correo electrónico
instalado y en funcionamiento. El programa
a utilizar está definido por los
ajustes de configuración en el archivo php.ini
.
Esto significa que debe instalar algún tipo de servidor de correo y configurar php para usarlo. Por lo general, este servidor de correo es postfix en Ubuntu. Sin embargo, si el lado php que está codificando eventualmente se almacenará en el lado de un servicio de alojamiento (por ejemplo, xmission), lo más probable es que ya esté instalado allí un servidor de correo. En ese caso, simplemente pruebe su sitio en línea en lugar de localmente.
Si necesita probarlo en su propio sistema o tiene la intención de alojarlo en su propio servidor doméstico, continúe con:
Instalación de Postfix
Instalación:posfijo / sudo apt-get install postfix
Durante el proceso, se le preguntará en qué modo desea instalar Postfix. Hay cuatro modos posibles:
- Internet :Su propio servidor de correo.
- Satélite :Se utilizará un proveedor de correo externo (por ejemplo, Google) para enviar y recibir correo. El servidor no recibirá ningún correo.
- Host inteligente :Mezcla entre los dos. El correo se almacena localmente pero se envía a través de un proveedor de correo externo.
- Solo locales :No te concierne. Ese es un servidor de correo interno del sistema. Solo puede enviar correo de usuario a usuario en el sistema.
El resto de las opciones de instalación dependen de su elección de esta configuración general.
Lo más probable es que elija una instalación satelital. Eso significa que el correo se enviará mediante un proveedor externo. Como servidor smtp (servidor de correo saliente), deberá especificar el smtp de su proveedor. El resto de las opciones se explican por sí mismas.
Configuración posterior a la instalación
La mayoría de los servidores smtp requieren una autenticación de contraseña para enviar correo. Así que postfix necesitará saber esa contraseña. También hay cosas como el cifrado a considerar (que tendrás que buscar en Google). Así es como configura Postfix usando la autenticación de contraseña (sasl):
-
Instalar módulos libsasl2 y sasl2-bin haciendo clic en los íconos del Centro de software o desde la terminal usando:
sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin
-
Habilite sasl-auth agregando estas líneas a
/etc/postfix/main.cf
# 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
-
Cree un archivo
/etc/postfix/sasl_password
con una línea como:smtp.gmail.com [email protected]:USERPASSWORD
Sustituya la contraseña, el nombre de usuario y la dirección smtp reales.
-
Actualizar sufijo:
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
Es posible que deba eludir el error de "permiso denegado" mediante
chown postfix:postfix /etc/postfix
de antemano.
Esto debería hacerlo en la mayoría de los casos. Sin embargo, algunos proveedores de smtp requieren una dirección específica como remitente o encriptación.
Relacionado:la interfaz PEAR::Mail también podría ser de su interés.
Es posible que a Gmail (y quizás a otros servicios) no les guste que intente enviar correo de esta manera, ya que podría considerarse inseguro según sus estándares y bloquearía su intento, es decir, no sucederá nada en la pantalla o algún lugar de todo el proceso bloquearía su autenticación. Además, su POP3 debe estar habilitado.
Para contrarrestar eso ver aquí. (Si quiere estar seguro, cree una cuenta ficticia de Gmail)