Mostrando entradas con la etiqueta mail. Mostrar todas las entradas
Mostrando entradas con la etiqueta mail. Mostrar todas las entradas

jueves, 24 de abril de 2014

Nullmailer y Mandrill como alternativa a un servidor de mail local

Nunca me ha gustado la idea de tener un servidor de mail local instalado en producción, por dos motivos principales:

El primero es que según el uso (o mal uso) que le des al mail desde tu aplicación, puede que los usuarios te marquen como spam y que la IP de tu servidor se añada a una lista negra. En ese caso, tus mails salientes quedarán bloqueados y no se enviarán, y conseguir que te borren de una lista negra no es tarea fácil.

El segundo es que hay que configurarlo, he escuchado muchas historias de miedo de lo doloroso que es administrar un servidor de correo y prefiero no pasar por eso.

Hace un tiempo, la opción habitual era utilizar un servicio externo para las newsletters, como MailChimp y el resto de mails enviarlos desde la aplicación.

El siguiente paso natural fue enviar tambien el mail transaccional de la aplicación (bienvenida, olvido de password, ...) desde una plataforma externa, usando su SMTP o su API. Un ejemplo sería Mandrill y las diferentes integraciones que tiene.

Pero en nuestro caso queríamos ir un paso más y directamente no tener un servidor local para envío de los mails de sistema (p.e. los cron). Y aquí es donde aparece Nullmailer.

Nullmailer es un MTA que usa el mismo formato que sendmail y permite redirigir el mail saliente a un servidor externo, de forma que desde tu servidor nunca se enviará el mail.

En Ubuntu Trusty está disponible como paquete. La versión en Ubuntu Precise no soporta SSL, pero hay un backport que si lo soporta.

La configuración es bastante simple, solo hay que cambiar 4 ficheros en el directorio /etc/nullmailer:

  • adminaddr con el email del administrador
  • me con el nombre del servidor
  • defaultdomain con el dominio de tu servidor
  • remotes con la configuración del servidor de correo

La configuración completa la podeis encontrar perfectamente explicada en este post de OpenSourceHacker , escrito por el mismo que hizo el backport de Nullmailer a Precise


Por último, destacar que Nullmailer no escucha en el puerto 25 como cualquier SMTP, así que si algún servicio depende de SMTP, se debe configurar por separado.

Un ejemplo de este último caso es monit, donde se debe configurar un servidor para enviar las alertas. Así que lo que haremos, será que apunte directamente al SMTP de mandrill

  server {
  set mailserver smtp.mandrillapp.com port 587
    username "youremail@domain.com" password "your_password"
    using tlsv1
  }


viernes, 27 de junio de 2008

Error 501 Syntactically invalid HELO argument(s) en envío de mails

Enviando una newsletter me he encontrado con que un servidor rechazaba los mails con el mensaje de error:

Error 501 Syntactically invalid HELO argument(s) en envío de mails

Investigando un poco parece ser que el problema es que el nombre de servidor que tenía definido en /etc/hosts tenía un _ y tal y como cuentan aquí no cumple el estandar RFC2821

To promote interoperability and consistent with long-standing
guidance about conservative use of the DNS in naming and applications
(e.g., see section 2.3.1 of the base DNS document, RFC1035 [22]),
characters outside the set of alphas, digits, and hyphen MUST NOT
appear in domain name labels for SMTP clients or servers. In
particular, the underscore character is not permitted. SMTP servers
that receive a command in which invalid character codes have been
employed, and for which there are no other reasons for rejection,
MUST reject that command with a 501 response.


Lo curioso es que practicamente ningún servidor hace esa comprobación, ya que sólo me ha pasado con un dominio.

Y para acabar una demostración del problema:

telnet mailin.blueyonder.co.uk 25
Trying 195.188.53.99...
Connected to mailin.blueyonder.co.uk.
Escape character is '^]'.
220 exim9.blueyonder.co.uk ESMTP Exim 4.68 Tue, 17 Jun 2008 07:54:52 +0100
helo prueba_1
501 Syntactically invalid HELO argument(s)
8 Tue, 17 Jun 2008 07:46:24 +0100
helo prueba
250 exim13.blueyonder.co.uk Hello prueba