p0f es un sistema de de identificación de sistemas operativos (O. S. fingerprinting) que actúa en modo pasivo. Este sistema es capaz de identificar la versión de un sistema operativo a partir de los paquetes TCP/IP que analiza, de manera similar a
Utilización de p0f en el filtrado de correo
Amavis-new puede utilizar p0f al momento de filtrar un nuevo correo entrante, para identificar la versión del sistema operativo del sistema remoto que envío el correo y de esta manera pueda utilizar esa información a la hora de evaluar si el correo entrante es spam o no.
Instalación de p0f
En Gentoo Linux solo basta con ejecutar el siguiente comando para instalar net-analyzer/p0f:
emerge --ask --verbose net-analyzer/p0f
Es necesario crear los archivos /etc/conf.d/p0f-analyzer y /etc/init.d/p0f-analyzer, para ello refierase a http://bugs.gentoo.org/show_bug.cgi?id=173603
Una vez instalado es necesario editar el archivo /etc/conf.d/p0f-analyzer para configurar el puerto en el que escuchará p0f-analizer y luego ejecutar los siguientes comandos para iniciar el servicio:
rc-update add p0f-analizer default /etc/init.d/p0f-analizer start
Configuración de Amavis-new
Para configurar Amavis-new para que funcione con p0f es necesario editar el archivo /etc/amavisd.conf y agregar la siguientes lineas:
$os_fingerprint_method = 'p0f:127.0.0.1:2345';
Luego es necesario reiniciar Amavis-new con el siguiente comando:
/etc/init.d/amavisd restart
Para verificar si la extensión "os_fingerprint_method" fue cargada correctamente debemos buscar la siguiente línea en el archivo /var/log/mail.log
Nov 8 15:20:42 localhost amavis[26316]: OS_Fingerprint code loaded
Configuración de Spamassassin
Para que el sistema trabaje evaluando la información obtenida con p0f es necesario configurar spamassassing. Amavis envía la información obtenida mediante p0f a spamassassin añadiendo la cabecera X-Amavis-OS-Fingerprint al correo. Esta cabecera se utiliza internamente, con lo cual es necesario configurar en el archivo /etc/spamassassin/local.cf las siguientes líneas:
# Set score for different client OS # Needs p0f-analyzer up and running header P0F_WindowsXP X-Amavis-OS-Fingerprint =~ /^Windows XP/ header P0F_Windows X-Amavis-OS-Fingerprint =~ /^Windows(?! XP)/ header P0F_Unknown X-Amavis-OS-Fingerprint =~ /^UNKNOWN/ header P0F_Unix X-Amavis-OS-Fingerprint =~ /^Linux|((Free|Open|Net)BSD)|Solaris|HP-UX|Tru64/ score P0F_WindowsXP 3.5 score P0F_Windows 1.7 score P0F_Unknown 0.8 score P0F_Unix -0.5