Antecedentes: si ha configurado un servidor apache local para fines de desarrollo, es posible que se haya encontrado con el problema de que sendmail tarda mucho (al menos un minuto) en enviar correos electrónicos. Esto es extremadamente frustrante si está intentando depurar un problema con un correo electrónico que ha generado.
Hay varias publicaciones en el foro en Internet que analizan este problema. Sin embargo, ninguno de los temas describe qué hacer con suficiente detalle para mi conocimiento limitado. Estos son los pasos que me funcionaron:
1) encuentre su nombre de host (en caso de que lo haya olvidado) usando este comando:
:~$ cat /hosts/hostname
myhostname
2) edite el archivo /etc/hosts
y asegúrese de que la primera línea sea la siguiente:
127.0.0.1 localhost.localdomain localhost myhostname
3) edite el archivo de configuración de sendmail ( /etc/mail/sendmail.cf
en Ubuntu) y descomente la línea#O HostsFile=/etc/hosts
4) Reinicie la computadora. La computadora debería iniciarse mucho más rápido ahora y la función mail () debería regresar casi de inmediato. SIN EMBARGO, los correos electrónicos no se enviarán a menos que siga el paso 5.
5) Debe usar la opción sendmail '-f' siempre que use la función de correo. Por ejemplo:
mail('[email protected]', 'the subject', 'the message', null, '[email protected]');
Mi pregunta para mis compañeros servidoresfaulters es:
¿Qué cambios adicionales se pueden hacer para que no tenga que usar la opción sendmail -f? Aunque no es muy difícil agregar la opción -f, es un problema cuando su CMS (como Drupal) no usa la opción -f al enviar correo. Necesitaría hackear un módulo central para agregar esta opción.
cat /etc/hostname
Respuestas:
Bueno, sé que esto no es lo que estás preguntando, pero ¿por qué no pruebas Postfix o Exim? Ambos están disponibles para ubuntu (Postfix es incluso el mta predeterminado en los sistemas Ubuntu) y ambos proporcionan un comando compatible 'sendmail' que funciona muy bien. En mi humilde opinión, sendmail está un poco anticuado y tendrás mejores oportunidades de soporte con MTA más moderno.
fuente
sendmail
binario que acepta las mismas opciones que el sendmail original, por cuestiones de compatibilidad.Esto funcionó para mí:
Vea las instrucciones aquí sobre cómo hacer esto aquí: https://help.ubuntu.com/community/Postfix (Puede que ya esté instalado, y el binario 'sendmail' en realidad puede ser un alias para postfix)
http://lenss.nl/2009/01/making-php-mail-work-on-ubuntu-through-postfix/
Creo que puede establecer el parámetro 'myorigin' en cualquier nombre de dominio activo, como el nombre de dominio que posee.
fuente
Esto puede o no ser una solución para usted: agregue
mail.force_extra_parameters = "[email protected]"
a su archivo php.ini . Hace que PHP agregue automáticamente [email protected] como un quinto parámetro a la función mail () de PHP.Ese es un valor codificado y solo aplicable en php.ini, por lo que no será muy flexible, pero ¿tal vez funcione para usted en su caso de desarrollo?
fuente
Al observar el tráfico de la red (pensar
tcpdump
) o al ejecutar un procesostrace
en su sendmail o procesos de apache, debería poder hacerse una idea de por qué existe ese retraso para que pueda solucionar el problema raíz.Por lo general, los retrasos en ese rango se deben a fallas en las búsquedas de DNS, pero no lo sabrá hasta que lo vea. A menos que solucione el problema subyacente, probablemente terminará siendo un problema sin importar cómo intente solucionarlo.
fuente
Nunca me he encontrado con un problema al usar mail () en PHP que no fue resultado de un problema en el MTA.
En su archivo php.ini mostrará qué comando ejecuta para enviar un correo electrónico (predeterminado: "sendmail -t -i"). Intenta enviar un correo electrónico desde la línea de comando usando esto: apuesto a que es lento.
Lo habitual para verificar es si un servidor DNS está configurado correctamente en la máquina (y puede resolver todas las direcciones configuradas en el MTA) y que si se configura un relé inteligente, el nombre se puede resolver en una dirección a la que el sistema puede conectarse.
fuente