Social Icons

twitter facebook google plus linkedin

viernes, 17 de mayo de 2013

IIS, PHP, SMTP en Windows Server

Hola Galaxia:

En el post de ayer  les contaba que estaba trabajando en la instalacion de un servidor para un cliente sobre Windows Server. Ayer dejé todo instalado y para hoy tenía planificada la configuración de cada uno de los componentes.

Todo bien, hasta que probé enviar correos desde PHP usando la funcion mail() y me arrojaba error. Abrí el log de errores de php (C:WindowsTempphp53_errors) y me encontré con los siguientes errores y cómo los fui resolviendo.

PHP Warning:  mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in mail.php
Este error hace referencia a que no se configura ninguna dirección de emisor en la función o en el archivo php.ini. Si se configura en la función, se establece un emisor por cada función y se se configura desde el archivo php.ini, se configura una dirección por defecto para todas las funciones mail.
Abrí el archivo php.ini y busqué la linea sendmail_form = y le agregué una dirección de correo electrónico. Realicé de nuevo la prueba y en el log me apareció el siguiente mensaje.

PHP Warning:  mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in mail.php
Esto no me hacía tanto sentido, porque estaba seguro que el Firewall estaba configurado y que el php.ini estaba configurado para usar el puerto 25. Lo que no estaba seguro era si el servicio de SMTP estaba funcionando. Abrí la consola de administración de IIS 6 (Si, IIS 8 usa la consola de IIS 6 para administrar el SMTP. Sabrá el diablo por qué es así). Me aparecía que SMTP Virtual Server #1 estaba abajo. Lo hice arrancar. Probé nuevamente y encontré el siguiente mensaje de error.

PHP Warning:  mail(): SMTP server response: 550 5.7.1 Unable to relay for [mi direccion de correo personal] on mail.php
Esto menos sentido me hacía si se supone que todo estaba andando. El problema estaba en que en el SMTP no había configurado para que hiciera relay. Para solucionarlo, en la misma ventana de administración de IIS6, abrí las propiedades del servidor de SMTP, en la pestaña de "Access" abrí la configuración de los permisos del Relay y agregué la dirección 127.0.0.1 para que usara ese servidor SMTP. Revisar la imagen de referencia:

[caption id="attachment_1634" align="aligncenter" width="146"]Relay SMTP IIS Relay SMTP IIS[/caption]

 

Con eso el servidor ya fue capaz de enviar un correo y recibirlo en mi gmail :)

Espero que a ustedes les sirva también.