Para que las funciones de correo estén disponibles, PHP requiere un sistema de correo electrónico instalado y en funcionamiento. El programa que se utilizará está definido por la 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 un servidor de correo ya esté instalado allí. En ese caso, simplemente pruebe su sitio en línea en lugar de localmente.
Si necesita probarlo en su propio sistema o si desea alojarlo en su propio servidor doméstico, continúe con:
Instalación Postfix
Instalación: postfix / 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.
Smarthost : Mezcla entre los dos. El correo se almacena localmente pero se envía a través de un proveedor de correo externo.
Solo local : no te concierne. Es un servidor de correo interno del sistema. Solo puede enviar correo de un usuario a otro 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á utilizando un proveedor externo. Como servidor smtp (servidor de correo saliente), deberá especificar los proveedores smtp. El resto de las opciones se explica por sí mismo.
Configuración posterior a la instalación
La mayoría de los servidores smtp requieren una autenticación de contraseña para enviar correo. Entonces postfix necesitará saber esa contraseña. También hay cosas como el cifrado a tener en cuenta (que tendrás que buscar en Google). Así es como configuras postfix usando la autenticación de contraseña (sasl):
Instale
libsasl2-modules y
sasl2-bin
haciendo clic en los iconos del Centro de software o desde la terminal usando:
Sustituya la contraseña real, el nombre de usuario y la dirección smtp.
Actualizar postfix:
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 tenga que eludir el error 'permiso denegado' de chown postfix:postfix /etc/postfixantemano.
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: PEAR :: La interfaz de correo también puede ser de su interés.
Es posible que a Gmail (y quizás a otros servicios) no le guste que intentes enviar correo de esta manera, ya que podría considerarse inseguro según sus estándares, y bloquearía tu intento, es decir, no pasará nada en la pantalla o algún lugar del proceso completo bloqueará Su autenticación. Además, su POP3 debe estar habilitado.
Para contrarrestar eso, mira aquí. (Si desea estar seguro, cree una cuenta ficticia de Gmail)
Enviar correo desde Ubuntu (local) funciona. Pero, ¿qué pasa si quiero que mi Windows use esta máquina para enviar correo (PHP también)? ¿Cómo configuro eso?
JM en el trabajo
No estoy seguro de haber entendido la pregunta. Puedes lijar desde tu máquina Ubuntu. ¿Ahora lo que quieres hacer es enviar mal a través de esa máquina Ubuntu desde tu PC con Windows a través de php? ¿Es eso correcto?
con-f-use
2
Ahora el paquete libsasl2 no existe. Estoy usando 11.04. Su libsasl2-2 según el paquete actualizado ..
mythicalcoder
61
Como ya se señaló, postfix sería una exageración si solo necesita enviar correos electrónicos desde php mientras desarrolla aplicaciones en la computadora de su hogar.
Yo personalmente uso el paquete ssmtp muy simple y liviano. Utilizará cualquier servidor smtp para enviar correos electrónicos salientes. Instálelo ejecutando:
sudo apt-get install ssmtp
Luego edite el /etc/ssmtp/ssmtp.confarchivo, comente la línea existente de mailhub y agregue las siguientes líneas (este ejemplo es para el servidor gmail smtp):
(Proporcione su nombre de usuario y contraseña de gmail. Por supuesto, puede usar cualquier otro servidor SMTP).
Ahora asegúrese de que su php.ini tenga la correcta sendmail_path. Debería leerse como:
sendmail_path = /usr/sbin/sendmail -t
( De los comentarios de @ dima-l y @ omar-sabic : No tiene que especificar ssmtpaquí porque la instalación debería haber creado un enlace simbólico para /usr/sbin/sendmail, que apunta correctamente ssmtp. De lo contrario, debe especificar sendmail_path = /usr/sbin/ssmtp -t)
Vuelva a cargar apache y su php debería poder enviar correos electrónicos salientes ahora.
Creo que quisiste decir sendmail_path = /usr/sbin/ssmtp -t. Esto funcionó, gracias
Omer Sabic
1
ssmtp debería crear un enlace simbólico para /usr/sbin/sendmail, que apunta correctamente a ssmtp. Por lo tanto, el uso también sendmail_path = /usr/sbin/sendmail -tdebería funcionar
Dima L.
2
Más información sobre la configuración ssmtp(encontré algunas notas útiles): Cómo configurar el correo PHP en Debian : esta pregunta + este enlace ayudaron a configurar el programa.
gskema
1
Para gmail, tenga en cuenta que debe configurar su cuenta de Google para permitir que "aplicaciones inseguras" funcionen. Consulte support.google.com/accounts/answer/6010255
aesede el
1
También tuve que agregar la siguiente línea: FromLineOverride=YESpara evitar el siguiente error:550 5.7.60 SMTP; Client does not have permissions to send as this sender
Caumons
29
PHP requiere un cliente SMTP para enviar correo. Puede instalar un agente de transferencia de correo (MTA) con todas las funciones como Postfix para cumplir esta función, pero es excesivo si solo necesita enviar correo a través de PHP. En su lugar, instale msmtp . Es liviano y mucho más simple de configurar.
Instalar msmtp
sudo apt-get install msmtp-mta ca-certificates
Configurarlo
Cree un nuevo archivo de configuración:
sudo vi /etc/msmtprc
... con la siguiente información de configuración:
# Set defaults.
defaults
# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# Set up a default account's settings.
account default
host <smtp.example.net>
port 587
auth on
user <[email protected]>
password <password>
from <[email protected]>
syslog LOG_MAIL
Debe reemplazar los datos de configuración representados por todo dentro de "<" y ">" (inclusive, elimínelos). Para host / nombre de usuario / contraseña, use sus credenciales normales para enviar correo a través de su proveedor de correo.
Por supuesto, 'sudo vi /etc/php5/conf.d' sin php.ini no funcionará. En mi caso (Ubuntu), tuve que editar '/etc/php5/apache2/php.ini' y también reiniciar apache 'sudo /etc/init.d/apache2 reload' para que funcione.
Dejan
1
Por cierto, puedes probar tu configuración de msmtprc usando:cat <<EOF | msmtp <[email protected]> Subject: test This is a test! EOF
Dejan
Sería bueno, pero no funciona para mí. Nada aparece en su registro. Parece totalmente bien, pero sin dados.
James T Snell
2
Para que msmtp esté disponible en todo el sistema, instale "msmtp-mta".
colan
1
En caso de que sea demasiado literal como yo en las siguientes instrucciones, en realidad no mantiene los corchetes <> en el archivo de configuración. Me tomó unos buenos 20 minutos resolver eso
de Raad
4
Debería ser una solución simple. Solo necesita instalar Postfix que hace el correo electrónico real.
sudo apt-get install postfix
Desea ejecutarlo desde un terminal (y no desde el centro de software) porque necesita hacerle algunas preguntas de configuración. Debería encontrar que solo acepta todos los valores predeterminados (solo local, etc.).
Esta es una vieja pregunta y hay respuestas dignas arriba, pero que necesitaba eximpara mi entorno. Además, confirme que tiene sendmail instalado en primer lugar ( $ which sendmail- debería devolver algo como / usr / sbin / sendmail). Encontré una buena guía en linode.com , pero lo esencial es:
Tengo una cosa que agregar sobre la "cuenta ficticia de gmail":
Esto es muy recomendable porque debe configurar su cuenta de gmail para permitir aplicaciones menos seguras: https://www.google.com/settings/u/0/security/lesssecureapps
De lo contrario, obtendrá un "inicie sesión con su navegador web e intente nuevamente "error en su /var/log/mail.logarchivo.
También descubrí que recibo un error de tiempo de espera a menos que envíe el certificado raíz de gmail smtp. Para hacer esto:
sudo nano /etc/postfix/main.cf
agregue lo siguiente al final del archivo
smtp_tls_CAfile = /etc/postfix/cacert.pem
Luego copie el certificado raíz thawte en el cacert.pemarchivo:
cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem
Encontré que las soluciones proporcionadas por Dima L. son la forma más fácil y liviana de sistema.
Solo alguna adición para mayor claridad en la configuración. Deberías comentar hostnameen el /etc/ssmtp/ssmtp.confarchivo. El ssmtp.confarchivo de muestra es el siguiente:
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.yourdomain.com
UseSTARTTLS=YES
[email protected]
AuthPass=YOUREMAILPASSWORD
# Where will the mail seem to come from?
#rewriteDomain=
# The full hostname
#hostname=
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
Respuestas:
Del manual de correo de php:
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 un servidor de correo ya esté instalado allí. En ese caso, simplemente pruebe su sitio en línea en lugar de localmente.
Si necesita probarlo en su propio sistema o si desea alojarlo en su propio servidor doméstico, continúe con:
Instalación Postfix
Instalación: postfix /
sudo apt-get install postfix
Durante el proceso, se le preguntará en qué modo desea instalar postfix. Hay cuatro modos posibles: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á utilizando un proveedor externo. Como servidor smtp (servidor de correo saliente), deberá especificar los proveedores smtp. El resto de las opciones se explica por sí mismo.
Configuración posterior a la instalación
La mayoría de los servidores smtp requieren una autenticación de contraseña para enviar correo. Entonces postfix necesitará saber esa contraseña. También hay cosas como el cifrado a tener en cuenta (que tendrás que buscar en Google). Así es como configuras postfix usando la autenticación de contraseña (sasl):
Instale libsasl2-modules y sasl2-bin haciendo clic en los iconos del Centro de software o desde la terminal usando:
Habilite sasl-auth agregando estas líneas a
/etc/postfix/main.cf
Cree un archivo
/etc/postfix/sasl_password
con una línea como:Sustituya la contraseña real, el nombre de usuario y la dirección smtp.
Actualizar postfix:
Es posible que tenga que eludir el error 'permiso denegado' de
chown postfix:postfix /etc/postfix
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: PEAR :: La interfaz de correo también puede ser de su interés.
Es posible que a Gmail (y quizás a otros servicios) no le guste que intentes enviar correo de esta manera, ya que podría considerarse inseguro según sus estándares, y bloquearía tu intento, es decir, no pasará nada en la pantalla o algún lugar del proceso completo bloqueará Su autenticación. Además, su POP3 debe estar habilitado.
Para contrarrestar eso, mira aquí. (Si desea estar seguro, cree una cuenta ficticia de Gmail)
fuente
Como ya se señaló, postfix sería una exageración si solo necesita enviar correos electrónicos desde php mientras desarrolla aplicaciones en la computadora de su hogar.
Yo personalmente uso el paquete ssmtp muy simple y liviano. Utilizará cualquier servidor smtp para enviar correos electrónicos salientes. Instálelo ejecutando:
Luego edite el
/etc/ssmtp/ssmtp.conf
archivo, comente la línea existente de mailhub y agregue las siguientes líneas (este ejemplo es para el servidor gmail smtp):(Proporcione su nombre de usuario y contraseña de gmail. Por supuesto, puede usar cualquier otro servidor SMTP).
Ahora asegúrese de que su php.ini tenga la correcta
sendmail_path
. Debería leerse como:( De los comentarios de @ dima-l y @ omar-sabic : No tiene que especificar
ssmtp
aquí porque la instalación debería haber creado un enlace simbólico para/usr/sbin/sendmail
, que apunta correctamentessmtp
. De lo contrario, debe especificarsendmail_path = /usr/sbin/ssmtp -t
)Vuelva a cargar apache y su php debería poder enviar correos electrónicos salientes ahora.
fuente
sendmail_path = /usr/sbin/ssmtp -t
. Esto funcionó, gracias/usr/sbin/sendmail
, que apunta correctamente a ssmtp. Por lo tanto, el uso tambiénsendmail_path = /usr/sbin/sendmail -t
debería funcionarssmtp
(encontré algunas notas útiles): Cómo configurar el correo PHP en Debian : esta pregunta + este enlace ayudaron a configurar el programa.FromLineOverride=YES
para evitar el siguiente error:550 5.7.60 SMTP; Client does not have permissions to send as this sender
PHP requiere un cliente SMTP para enviar correo. Puede instalar un agente de transferencia de correo (MTA) con todas las funciones como Postfix para cumplir esta función, pero es excesivo si solo necesita enviar correo a través de PHP. En su lugar, instale msmtp . Es liviano y mucho más simple de configurar.
Instalar msmtp
Configurarlo
Cree un nuevo archivo de configuración:
... con la siguiente información de configuración:
Debe reemplazar los datos de configuración representados por todo dentro de "<" y ">" (inclusive, elimínelos). Para host / nombre de usuario / contraseña, use sus credenciales normales para enviar correo a través de su proveedor de correo.
Dile a PHP que lo use
Agregue esta sola línea:
fuente
cat <<EOF | msmtp <[email protected]> Subject: test This is a test! EOF
Debería ser una solución simple. Solo necesita instalar Postfix que hace el correo electrónico real.
Desea ejecutarlo desde un terminal (y no desde el centro de software) porque necesita hacerle algunas preguntas de configuración. Debería encontrar que solo acepta todos los valores predeterminados (solo local, etc.).
fuente
Esta es una vieja pregunta y hay respuestas dignas arriba, pero que necesitaba
exim
para mi entorno. Además, confirme que tiene sendmail instalado en primer lugar ($ which sendmail
- debería devolver algo como / usr / sbin / sendmail). Encontré una buena guía en linode.com , pero lo esencial es:seguido por:
que te llevará a un editor interactivo.
fuente
Gran respuesta , con-f-use.
Tengo una cosa que agregar sobre la "cuenta ficticia de gmail":
Esto es muy recomendable porque debe configurar su cuenta de gmail para permitir aplicaciones menos seguras: https://www.google.com/settings/u/0/security/lesssecureapps De lo contrario, obtendrá un "inicie sesión con su navegador web e intente nuevamente "error en su
/var/log/mail.log
archivo.También descubrí que recibo un error de tiempo de espera a menos que envíe el certificado raíz de gmail smtp. Para hacer esto:
agregue lo siguiente al final del archivo
Luego copie el certificado raíz thawte en el
cacert.pem
archivo:Aquí está el enlace que utilicé: Configurar Postfix para usar Gmail SMTP en Ubuntu | EasyEngine
Espero que esto le ahorre a alguien algunos folículos capilares ...
fuente
Encontré que las soluciones proporcionadas por Dima L. son la forma más fácil y liviana de sistema.
Solo alguna adición para mayor claridad en la configuración. Deberías comentar
hostname
en el/etc/ssmtp/ssmtp.conf
archivo. Elssmtp.conf
archivo de muestra es el siguiente:fuente