Google Hosted: PHP mail() en cPanel/WHM
Una de las novedades más recientes de Google es el servicio llamado Google Aps for Your Domain , una serie de herramientas para webmasters que incluye un excelente servicio, Google Hosted, que permite usar los servidores de Gmail como servidor de correo de un dominio en particular, es decir, un correo @tudominio.cl con 2 GB de espacio, acceso webmail, pop3, smtp y todas las cualidades de un Gmail, como son compatibilidad con Google Talk, Google Calendar, entre otros.
Tuve el privilegio de ser uno de los beta testers en los inicios del proyecto, a fines de julio, y realmente es una herramienta tremendamente poderosa, que libera a los servidores web de el engorroso trabajo ser servidor de correo, y libera también a los usuarios de gran parte del molesto spam, debido al excelente filtro con el que cuenta gmail.
Existen en internet numerosos manuales sobre este servicio, asi que me dedicaré exclusivamente a resolver el principal problema que existe con este servicio y el envio de emails por medio de la función 'mail()' de PHP. El problema ocurre porque, por defecto, la mayoría de los proveedores y administradores de webhosting crean para cada cuenta de hosting su correspondiente cuenta de correo para este dominio. Como PHP trabaja por defecto con el servidor de email local, este envía los emails de 'tudominio.cl' a la bandeja local y no a la de gmail, a pesar de tener perfectamente configuradas las entradas MX del DNS, dirigidas a los servidores de google.
He encontrado dos soluciones:
A pesar de que la primera opción es factible, esto se vuelve un problema cuando se tiene una cantidad considerable de dominios en el servidor. No todos los sistemas CMS en PHP tienen incorporada la opción de envio de emails por smtp, ni mucho menos la autentificación TSL, necesaria para loguearse en el servidor smtp de Gmail. Por esto, explicaré brevemente como llevar a cabo la segunda opción, reconfigurando dos de los servidores de correo más comunes: postfix y exim:
Deshabilitar dominio Gmail Hosted en postfix:
Simplemente, se edita el archivo /etc/postfix/main.cf y se remueve el dominio que esta trabajando con Google Hosted de la lista de dominios 'mydestination =' y luego se resetea el servidor postfix:
/etc/init.d/postfix restart
Deshabilitar dominio Gmail Hosted en exim (WHM/cPanel):
A pesa de que teóricamente es lo mismo que en el caso de postfix, la gracia que tiene exim cuando esta en un servidor con cPanel este asume como servidores virtuales de correo a todos los dominios y subdominios del servidor de forma automática, por lo que hay que tener un poco más de cuidado para así no afectar el normal funcionamiento de WHM/cPanel y del servidor de correo.
4. Ahora, asignar los permisos necesarios para el exim:
5. Para finalizar, resetear el servidor exim: /etc/init.d/exim restart
Con esto, hemos creado una lista especial llamada '/etc/mail-localdomains' que tendrá aquellos dominios y subdominios que el servidor exim proveerá el servicio de correo. Es importante recalcar que esta nueva lista de dominios NO es generada automáticamente por el servidor al crear un nuevo dominio por medio de WHM, por lo cual este debe ser ingresado manualmente si se quiere habilitar el servidor de correo para cualquier nuevo dominio. Aquellos dominios que no esten en esta lista, serán considerados externos, lo cual era justamente lo que necesitábamos, ya que ahora la funcion mail de PHP (perl, python, etc) enviará los correos a la bandeja de entrada de gmail y no a la bandeja local. :)
Eso sería todo. Espero haya servido la ayuda. Hasta la próxima.
Tuve el privilegio de ser uno de los beta testers en los inicios del proyecto, a fines de julio, y realmente es una herramienta tremendamente poderosa, que libera a los servidores web de el engorroso trabajo ser servidor de correo, y libera también a los usuarios de gran parte del molesto spam, debido al excelente filtro con el que cuenta gmail.
Existen en internet numerosos manuales sobre este servicio, asi que me dedicaré exclusivamente a resolver el principal problema que existe con este servicio y el envio de emails por medio de la función 'mail()' de PHP. El problema ocurre porque, por defecto, la mayoría de los proveedores y administradores de webhosting crean para cada cuenta de hosting su correspondiente cuenta de correo para este dominio. Como PHP trabaja por defecto con el servidor de email local, este envía los emails de 'tudominio.cl' a la bandeja local y no a la de gmail, a pesar de tener perfectamente configuradas las entradas MX del DNS, dirigidas a los servidores de google.
He encontrado dos soluciones:
- Hacer que PHP envie los correos por medio del smtp de Gmail. Esto implicaría modificar todos los formularios emails de tal forma de que el script PHP se autentifique al smtp de gmail y luego envíe el correo. Aquí se explica esta técnica.
- Deshabilitar del servidor de correo los dominios con correo Google Hosted. Esto actualmente no es posible realizarlo ni desde WHM ni menos aun desde cPanel de forma directa. La única forma que me ha resultado ha sido modificando el archivo de configuración del servidor de correo (postfix o exim). Esto tiene la gran ventaja que no hay que modificar los scripts PHP o cgi como en el caso anterior, pero lamentablemente para esto es necesario tener acceso root al servidor.
A pesar de que la primera opción es factible, esto se vuelve un problema cuando se tiene una cantidad considerable de dominios en el servidor. No todos los sistemas CMS en PHP tienen incorporada la opción de envio de emails por smtp, ni mucho menos la autentificación TSL, necesaria para loguearse en el servidor smtp de Gmail. Por esto, explicaré brevemente como llevar a cabo la segunda opción, reconfigurando dos de los servidores de correo más comunes: postfix y exim:
Deshabilitar dominio Gmail Hosted en postfix:
Simplemente, se edita el archivo /etc/postfix/main.cf y se remueve el dominio que esta trabajando con Google Hosted de la lista de dominios 'mydestination =' y luego se resetea el servidor postfix:
/etc/init.d/postfix restart
Deshabilitar dominio Gmail Hosted en exim (WHM/cPanel):
A pesa de que teóricamente es lo mismo que en el caso de postfix, la gracia que tiene exim cuando esta en un servidor con cPanel este asume como servidores virtuales de correo a todos los dominios y subdominios del servidor de forma automática, por lo que hay que tener un poco más de cuidado para así no afectar el normal funcionamiento de WHM/cPanel y del servidor de correo.
- La lista de dominios y subdominios del servidor es '/etc/localdomains' . Crear una copia de este archivo y asignarle el nombre '/etc/mail-localdomains'
cp /etc/localdomains /etc/mail-localdomains
- Editar el archivo '/etc/mail-localdomains' y retirar de él todos los dominios que van a utilizar Google Hosted como servidor de correo.
- Luego, editar el archivo '/etc/exim.conf' y reemplazar:
por:
domainlist local_domains = lsearch;/etc/localdomains
domainlist relay_domains = lsearch;/etc/localdomains : lsearch;/etc/secondarymx
domainlist local_domains = lsearch;/etc/mail-localdomains
domainlist relay_domains = lsearch;/etc/mail-localdomains : lsearch;/etc/secondarymx
4. Ahora, asignar los permisos necesarios para el exim:
chown root:mail mail-localdomains
5. Para finalizar, resetear el servidor exim: /etc/init.d/exim restart
Con esto, hemos creado una lista especial llamada '/etc/mail-localdomains' que tendrá aquellos dominios y subdominios que el servidor exim proveerá el servicio de correo. Es importante recalcar que esta nueva lista de dominios NO es generada automáticamente por el servidor al crear un nuevo dominio por medio de WHM, por lo cual este debe ser ingresado manualmente si se quiere habilitar el servidor de correo para cualquier nuevo dominio. Aquellos dominios que no esten en esta lista, serán considerados externos, lo cual era justamente lo que necesitábamos, ya que ahora la funcion mail de PHP (perl, python, etc) enviará los correos a la bandeja de entrada de gmail y no a la bandeja local. :)
Eso sería todo. Espero haya servido la ayuda. Hasta la próxima.



Links a este post:
Crear un vínculo
1 Comentarios:
Hola, esta bueno tu articulo. Te escribo porque quizas puedas ayudarme. Tengo un servidor dedicado con cpanel/Whm que usa exim como MTA, mi servidor esta siendo usado para enviar spam, y creeme que son como 3000 mensajes por hora... he probado de todo y no puedo solucionarlo... lo curioso es que tengo dos dedicados, el otro uso postfix y no tengo ese problema... por favor te pido que me ayudes si te es posible.. mi email es manolet en gmail punto com. cambias e l en por @y ya esta :P
Publicar un comentario en la entrada
<< Pagina Principal