Servidor de correo con dominios virtuales

correo_virtual

Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre GNU, Versión 1.3 o cualquier versión posterior publicada por la Fundación de Software Libre (FSF); sin Secciones Invariantes, con los Textos de Tapa listados debajo, y sin Textos de Contra-tapa.


Servidor de correo con dominios virtuales
(C) 2009 - 2013 Martin Andres Gomez Gimenez

Taxonomy upgrade extras: 

Introducción

Este documento explica cómo configurar un sistema que utilizando Gentoo Linux posea capacidad para manejar múltiples dominios de correo electrónico, soporte de cuentas virtuales sin necesidad de recurrir al uso de cuentas de shell, autenticación vía Web, IMAP, SMTP, y POP3, utilización de SSL (Secure Socket Layer), administración de cuentas centralizada por medio de una interfaz web y el empleo de una base de datos MySQL y manejo de listas de correo, entre otras cosas.

Aunque existe una gran variedad de aplicaciones para tener un sistema de correo virtual, nos centraremos en los siguientes paquetes:

  • dev-db/mysql
  • dev-db/phpmyadmin
  • dev-lang/php
  • dev-libs/cyrus-sasl
  • mail-filter/amavisd-new
  • mail-mta/postfix
  • net-analyzer/p0f
  • net-libs/courier-authlib
  • net-mail/courier-imap
  • net-mail/mailman
  • www-servers/apache
  • www-apps/postfixadmin
  • mail-client/roundcube

Instalación de Gentoo Linux

Acerca de Gentoo Linux

Gentoo es un sistema operativo libre que puede estar basado tanto en Linux como en FreeBSD y tiene la capacidad de ser optimizado y personalizado automáticamente para cualquier aplicación o necesidad. La configurabilidad extrema, el rendimiento y una comunidad de usuarios y desarrolladores de primerísima son todas características de la experiencia Gentoo.

Gracias a una tecnología denominada Portage, Gentoo Linux puede emplearse como un servidor seguro, una estación de trabajo para desarrollo, un escritorio profesional, un sistema para juegos, una solución encastrada y mucho más. Dada su casi ilimitada adaptabilidad, Gentoo Linux es denominado como una metadistribución.

Para más información acerca de Gentoo Linux refiérase a la siguiente URL:

http://www.gentoo.org

Recursos relacionados con la instalación de Gentoo Linux

El documento titulado “Manual Gentoo” abarca la instalación utilizando un CD de instalación de Gentoo o, en algunos casos, instalación por red. La instalación asume que usted quiere instalar la última versión de cada paquete. El mismo puede consultarse desde:

http://www.gentoo.org/doc/es/handbook/index.xml

Configuración del sistema

A continuación se definen algunos lineamientos acerca de como debe configurarse Gentoo Linux para funcionar como servidor de correo.

Parámetros USE

Cada parámetro USE es una palabra clave que incorpora información de soporte y dependencias para un paquete o grupo de paquetes en particular. Si define un determinado parámetro USE, Portage sabrá que el usuario desea soporte para la palabra clave escogida, incidiendo en las dependencias de un paquete. A continuación se listan los parámetros USE a utilizar en el archivo /etc/make.conf:

USE = "7zip acl apache2 atm authdaemond authfile bash-completion big-tables 
       bzip2 calendar caps cgi clamdtop courier ctype curl custom-cflags 
       device-mapper diskio dkim doc elf exif extensions extra-tools 
       extraengine fam fastcgi filter fontconfig fpx ftp gd gdbm glep 
       glibc-compat20 glibc-omitfp gnutls graphviz gs guile hardened 
       hardenedphp hash hdri idn imagemagick imap ipv6 jadetex jbig jpeg 
       jpeg2k json lcms ldap libssh2 linuxthreads-tls logrotate lzma lzo 
       max-idx-128 maxsysuid md5sum mfd-rewrites mhash mime multilib multiuser 
       mysql nagios-dns nagios-game nagios-ntp nagios-ping nagios-ssh ncurses 
       netboot nethack network-cron networking nptl nptlonly nss openct 
       openntpd overlays pcsc-lite perl pic plugins png posix profile python 
       resolvconf rrdcgi sasl sendmail sensord sharedext slang smux snmp 
       sockets softquota spamassassin spell spoof-source srp sse sse2 sse3 ssh 
       suexec syslog sysvipc targrey threads tidy tiff tokenizer tools 
       truetype underscores unicode urandom usb utf8 vda xattr xml xmlreader 
       xmlrpc xmlwriter xsl yaz zip -cracklib -cups" 

Particiones

El particionado debe hacerse en forma manual desde la utilidad cfdisk. La configuración del servidor de correo requiere la creación de las siguientes particiones:

  1. / (raíz): al menos 2048 Mb
  2. swap: al menos 2048 Mb
  3. /home: el espacio requerido por las cuentas de correo a almacenar en /home/vmailbox.
  4. /tmp: aproximandamente 768 Mb
  5. /usr: al menos 10240 Mb
  6. /var: al menos 20480 Mb

Recomendaciones a la hora de crear las particiones

Se recomienda crear una partición primaria y el resto particiones lógicas. Por ejemplo si la unidad o array de discos es reconocida como /dev/sda, las particiones deberían ser:

 /dev/sda1 	/ 
 /dev/sda5 	swap 
 /dev/sda6 	/home 
 /dev/sda7 	/tmp 
 /dev/sda8 	/usr 
 /dev/sda9 	/var

Formato

Se recomienda el uso del sistema de archivos EXT4 en todas las particiones, a excepción de la partición swap. Para mas información refiérase al tutorial titulado Sistema de archivos ext4

Si la unidad o array de disco es reconocida como /dev/sda, esto puede hacerse mediante los siguientes comandos:

 mkfs.ext4 /dev/sda1
 mkswap	/dev/sda5
 mkfs.ext4 /dev/sda6 
 mkfs.ext4 /dev/sda7 
 mkfs.ext4 /dev/sda8
 mkfs.ext4 /dev/sda9

Contenido del archivo /etc/fstab

El archivo /etc/fstab, una vez instalado el sistema debe ser editado de la siguiente manera:

# /etc/fstab - configuration file for mount filesystems 
/dev/sda1 	/ 		ext4 	noatime 				1 1 
/dev/sda5 	swap 		swap 	defaults 				0 2 
/dev/sda6 	/home		ext4 	noatime,nodev,nosuid 			0 2 
/dev/sda7 	/tmp 		ext4 	noatime,nodev,nosuid,noexec 		0 2 
/dev/sda8 	/usr 		ext4 	noatime 				0 2 
/dev/sda9 	/var 		ext4 	noatime 				0 2 

# Unidades extraibles 
/dev/cdrom0	/mnt/cdrom	iso9660	noauto,nouser,ro,noatime		0 0 

# Montajes críticos para iniciar el sistema 
none		/proc		proc	defaults				0 0 
none		/dev/shm	tmpfs	defaults				0 0 

# Optional mount points for chroots 
/var/log 	/var/chroot/dhcp/var/log	auto 	nodev,bind		0 0 
/var/log/named 	/var/chroot/dns/var/log/named	auto 	nodev,bind		0 0

MySQL

Acerca de MySQL

MySQL es un sistema de gestión de bases de datos relacional, multihilo y multiusuario que es desarrollado como Software Libre y se encuentra disponible bajo la licencia GPL.

Parámetros USE necesarios

Para compilar e instalar MySQL en Gentoo y utilizar el esquema propuesto por este documento son necesarios los siguientes parámetros USE:

USE="berkdb big-tables community pbxt perl ssl xtradb"

Instalación

Para instalar MySQL es necesario ejecutar el siguiente comando:

emerge dev-db/mysql

Inicialización del motor de bases de datos

Una vez instalado mysql es necesario inicializar el motor de base de datos con el comando y seguir los pasos:

/usr/bin/mysql_install_db

También es recomendable ejecutar:

/usr/bin/mysql_secure_installation

Ejecución del servicio

Para iniciar el servicio y agregarlo al listado de servicios que deben ejecutarse por defecto es necesario ejecutar los siguientes comandos:

/etc/init.d/mysql start
rc-update add mysql default

Creación de la base de datos para gestionar cuentas de correo

Para gestionar las cuentas y dominios de correo electrónico mediante la interfaz denominada PostfixAdmin es necesario crear en el motor de bases de datos MySQL una base de datos y un usuario con privilegios para modificar esa base de datos:

  • El nombre de la base de datos, por ejemplo “postfix”.
  • El nombre del usuario que tendrá privilegios sobre esa base de datos, por ejemplo “postfix”.

La base de datos puede crearse desde el shell de MySQL de la siguiente manera:

Conectarse como root al motor de base de datos MySQL:

shell> mysql –user=root mysql

Crear un el usuario “postfix” y asignarle privilegios globales:

mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'password'
mysql> GRANT USAGE ON *.* TO 'postfix'@'localhost';

Crear la base de datos “postfix”:

mysql> CREATE DATABASE postfix;

Asignar privilegios al usuario “postfix” sobre la base de datos “postfix”:

mysql> GRANT ALL ON postfix.* TO 'postfix@'localhost';

Apache

Para gestionar los dominios y usuarios de correo vía interfaz web mediante PostfixAdmin es necesario instalar el servidor web Apache.

Instalación

La instalación de Apache se realiza mediante el siguiente comando:

emerge www-servers/apache

Acceso vía HTTP y redireccionamiento a HTTPS

La configuración del servidor de correo exige el uso de conexiones seguras y debido a estos los accesos mediante HTTP son redireccionados a HTTPS. Para configurar esta característica deberá crearse el archivo /etc/apache2/vhosts.d/hostname.conf con el siguiente contenido:

<VirtualHost *:80>
ServerName hostname.com.ar
CustomLog /var/log/apache2/hostname.com.ar-access_log vhost
Include /etc/apache2/vhosts.d/hostname.com.ar.include
Redirect permanent / https://hostname.com.ar/
</VirtualHost>

Acceso vía HTTPS

Para configurar el acceso mediante HTTPS es necesario crear el archivo /etc/apache2/vhosts.d/hostname_ssl.conf con el siguiente contenido:

<IfDefine SSL>
<IfModule ssl_module>

<VirtualHost *:443>
ServerName hostname.com.ar
UseCanonicalName On
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/hostname_cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/hostname_privatekey.pem
SSLCipherSuite HIGH
SSLProtocol all -SSLv2
CustomLog /var/log/apache2/hostname.com.ar-access_log vhost
Include /etc/apache2/vhosts.d/hostname.com.ar.include
</VirtualHost>

</IfModule>
</IfDefine>

Archivo de configuraciones comunes

El archivo /etc/apache2/vhosts.d/hostname.include contiene configuraciones en común utilizadas por los archivos /etc/apache2/vhosts.d/hostname.conf y /etc/apache2/vhosts.d/hostname_ssl.conf:

# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
ServerAdmin administrador@hostname.com.ar

# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations
#
# If you change this to something that isn't under /var/www then suexec
# will no longer work.
DocumentRoot "/var/www/localhost/htdocs"

# This should be changed to whatever you set DocumentRoot to.

<Directory "/var/www/localhost/htdocs">
  Options Indexes FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

Alias /phpmyadmin /var/www/localhost/htdocs/phpmyadmin
Alias /postfixadmin /var/www/localhost/htdocs/postfixadmin
Alias /webmail /var/www/localhost/htdocs/squirrelmail

<Directory "/var/www/localhost/htdocs/phpmyadmin">
  Options Indexes
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

<Directory "/var/www/localhost/htdocs/postfixadmin/admin">
  Options Indexes
  AllowOverride AuthConfig
  Order allow,deny
  Allow from all
</Directory>

<Directory "/var/www/localhost/htdocs/squirrelmail">
  Options All
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

<Location "/horde/admin/setup/config.php">
  <IfModule security2_module>
    SecRuleRemoveById 950005
  </IfModule>
</Location>

Puertos utilizados por Apache: 80 y 443

El archivo /etc/apache2/vhosts.d/ports.conf se utiliza para configurar los puerto y direcciones en los que Apache debe escuchar:

ServerName hostname.com.ar
Listen 80
NameVirtualHost *:80

<IfDefine SSL>
<IfModule ssl_module>
  Listen 443
  NameVirtualHost *:443
</IfModule>
</IfDefine>

Habilitar módulos necesarios

La habilitación de los módulos de Apache se realiza desde el archivo /etc/conf.d/apache2, el cual deberá tener la siguiente línea:

APACHE2_OPTS="-D INFO -D LANGUAGE -D SSL -D ERRORDOCS -D MANUAL -D PHP5 -D MAILMAN -D SUEXEC -D CACHE -D MEM_CACHE -D SECURITY"

Postfix Admin

Acerca de Postfix Admin

Postfix Admin es una interfaz web para administrar casillas de correo electrónico, dominios virtuales y aliases. También soporta mensajes para vacaciones / fuera de la oficina.

Para más detalles vea: http://postfixadmin.sourceforge.net

Parámetros USE necesarios

Para instalar Postfix Admin en Gentoo y utilizar el esquema propuesto por este documento son necesarios los siguientes parámetros USE:

USE="mysql vacation xmlrpc"

Instalación

Para instalar PostfixAdmin es necesario ejecutar el siguiente comando:

emerge www-apps/postfixadmin

Configuración

Suponiendo que se usó el parámetro USE="-vhost" con el cual el paquete se instala en el directorio:

/var/www/localhost/htdocs/postfixadmin

es necesario editar el archivo:

/var/www/localhost/htdocs/postfixadmin/config.inc.php

para configurar los parámetros de conexión a la base de datos antes creada, de la siguiente manera:

// Database Config
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'password';
$CONF['database_name'] = 'postfix';

Una vez configurado los parámetros de conexión con la base de datos, se debe acceder a la insterfaz de instalación desde cualquier navegador web en la siguiente URL:

http://localhost/postfixadmin/install.php

Se deben completar los datos solicitados por el instalador para generar una cuenta de administrador. Una vez hecho esto la base de datos para Postfix estará configurada y lista para ser usada.

Directorio para los buzones

Para alojar los buzones de correo es necesario crear el directorio "/home/vmailbox" de la siguiente manera:

mkdir /home/vmailbox
chown postfix:postfix /home/vmailbox
chmod 700 /home/vmailbox

Postfix

Parámetros USE necesarios

Para compilar e instalar Postfix en Gentoo y utilizar el esquema propuesto por este documento son necesarios los siguientes parámetros USE:

USE="berkdb cdb hardened memcached mysql pam sasl sqlite ssl vda"

Instalación

Para instalar Postfix es necesario ejecutar el siguiente comando:

emerge mail-mta/postfix

Configuración básica

Las siguientes opciones deben configurarse en el archivo /etc/postfix/main.cf. Recuerde reemplazar el dominio "i-nis.com.ar" por el dominio del servidor que se está configurando.

myhostname = mail.i-nis.com.ar
mydomain = i-nis.com.ar
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, $virtual_mailbox_maps
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10

Extensiones para direcciones

Extensiones para direcciones permiten codificar información adicional aparte del destinatario en una dirección de correo electrónico válida. El receptor se separa de la información adicional por lo general con un carácter +, pero es esto es configurable. Para habilitar el soporte para las extensiones de direcciones, edite el archivo /etc/postfix/main.cf con el siguiente contenido:

# ADDRESS EXTENSIONS
recipient_delimiter = +
owner_request_special = no

Conexión a la base de datos MySQL

A continuación se describe la manera de configurar Postfix para realizar búsquedas y consultas utilizando la base de datos MySQL creada por la instalación de Postfix Admin. Las siguientes entradas deben agregars al la configuración del archivo /etc/postfix/main.cf:

virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf

virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
    proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,
    proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
    proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

Para habilitar el soporte de cuotas para las cuentas de correo es necesario agregar la siguiente configuración al archivo /etc/postfix/main.cf:

virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Su casilla de correo ya no dispone de espacio, por favor elimine algunos mensajes.
virtual_overquota_bounce = yes

Adicionalmente deben crearse los siguientes archivos:

/etc/postfix/sql/mysql_virtual_alias_maps.cf :

user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
#expansion_limit = 100

mysql_virtual_alias_domain_maps.cf:

user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

mysql_virtual_alias_domain_catchall_maps.cf:

user = postfix
password = password
hosts = localhost
dbname = postfix
query  = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

mysql_virtual_domains_maps.cf:

user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
#expansion_limit = 100

mysql_virtual_mailbox_maps.cf:

user = postfix
password = password
hosts = localhost
dbname = postfix
query           = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
#expansion_limit = 100

mysql_virtual_alias_domain_mailbox_maps.cf:

user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'

mysql_virtual_mailbox_limit_maps.cf:

user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'

Iniciar el servicio

Para iniciar por primera vez Postfix debe ejecutarse los siguientes comandos:

rc-update add postfix default
rc-service postfix start

Certificados SSL

Los certificados SSL se utilizan para las conexiones seguras por TLS y SASL.

Certificados SSL para postfix

A continuación se describe como generar certificados para Postix.

Es necesario editar el archivo /etc/ssl/openssl.cnf, para ello desde una terminal o consola haremos lo siguiente:

# cd /etc/ssl/
# nano -w openssl.cnf

Hay que ajustar los siguientes valores por defecto para nuestro dominio:

countryName_default
stateOrProvinceName_default
localityName_default
0.organizationName_default
commonName_default
emailAddress_default

En el caso de que las variables anteriores no estén presentes, habrá que añadirlas.

# cd misc
# ./CA.pl -newreq-nodes
# ./CA.pl -newca
# ./CA.pl -sign
# cp newcert.pem /etc/postfix
# cp newkey.pem /etc/postfix
# cp demoCA/cacert.pem /etc/postfix

Certificados para Apache

A continuación se describe como generar certificados para Apache.

# openssl req -new > new.cert.csr
# openssl rsa -in privkey.pem -out new.cert.key
# openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 365

Capa de seguridad y autenticación simple

Acerca de SASL

SASL, cuyas siglas en inglés representa "Simple Authentication and Security Layer", es una capa que ofrece un servicio para autenticación y autorización en protocolos de Internet, separando los mecanismos de autenticación de los protocolos de la aplicación permitiendo. Esta funcionalidad es ofrecida mediante el paquete dev-libs/cyrus-sasl.

Parámetros USE necesarios

Para compilar e instalar dev-libs/cyrus-sasl en Gentoo y utilizar el esquema propuesto por este documento son necesarios los siguientes parámetros USE:

USE="authdaemond gdbm mysql pam sqlite ssl urandom"

Instalación

Para instalar dev-libs/cyrus-sasl es necesario ejecutar el siguiente comando:

emerge dev-libs/cyrus-sasl

Configuración del servicio

Para configurar el servicio es necesario editar el archivo /etc/conf.d/saslauthd con el siguiente contenido:

SASLAUTHD_OPTS="${SASLAUTH_MECH} -a rimap -r"
SASLAUTHD_OPTS="${SASLAUTHD_OPTS} -O localhost"

Inicio del servicio

Para agregar el servicio en el nivel de ejecusión por defecto e iniciarlo se deben ejecutar los siguientes comandos:

rc-update add saslauthd default
rc-service saslauthd start

Autenticación por medio de SASL

Para habilitar la autenticación en el servicio SMTP mediante SASL es necesario editar el archivo /etc/sasl2/smtpd.conf con el siguiente contenido:

mech_list: PLAIN LOGIN
pwcheck_method: saslauthd

Filtrado para el correo no deseado

A continuación se describe como configurar cada componente para el filtrado del correo electrónico.

p0f

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