19 de Noviembre, 2005

La portabilidad es frágil

He publicado la versión 1.8.1 de bogom para arreglar un problema de portabilidad muy tonto :(.

En la versión anterior implementé un sistema de cuarentena, que permitía guardar una copia de los mensajes clasificados como spam en formato maildir(5).

Ese formato recomienda tener en cuenta una serie de cosas para que cada mensaje se entregue en un fichero único, y que además soporte NFS de una tacada (distintas estaciones dejando mensajes en un disco compartido). Para ello el nombre del fichero debe tener más o menos esta forma (no incluyo el PID porque los milter son multi-hilo):

bogom_%lu.%lu.%s.XXXXXXXXXX

Donde los campos son:
%lu: segundos desde 01/01/1970
%lu: y sus microsegundos
%s: hostname
XXXXXXXXXX: caracteres aleatorios con mkstemp(3)

La clave es hostname, que hace que el nombre del fichero sea dependiente de la máquina y, por lo tanto, nos permite trabajar con NFS de forma segura.

Pues bien, resulta que empleo la constante MAXHOSTNAMELEN para saber qué espacio máximo debo reservar para guardar el nombre de la estación, y por confusión sobre dónde se encontraba definida, el programa no compilaba en varias plataformas. Desde luego en OpenBSD sí compilaba porque es mi plataforma de desarrollo, pero me había cargado el soporte de otros sistemas :'(.

Gracias a Victor me he enterado, y lo hemos arreglado indicando los include adecuados. Esta es la novedad de esta nueva versión, además del port para FreeBSD y OpenBSD, como se indica en el anuncio oficial de la versión.

Anotación por Juan J. Martínez.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.