Archive for the 'AdminSys' Category

Blacklist de destinataire dans Postfix

Déjà pourquoi faire ça ? Nous avons eu un phishing assez méchant qui demande les identifiants / mots de passes au niveau de l’Université. Le truc est bien ficelé, très bien écrit et avec des domaines plausibles. Bon, le phishing est donc passé, que faire ? A part blacklister en sortie rien. On peut agir à deux niveaux : IP en blacklistant le MX du domaine de info.al au niveau du pare-feu. L’avantage est que c’est simple à faire et qu’en une seule manipulation on touche tout le réseau (du moins ce qui est dans le périmètre du pare-feu). L’inconvenient c’est qu’une requêtes MX sur le domaine sort un serveur hotmail donc il faut oublier cette méthode. Nous allons donc travailler au niveau applicatif SMTP en blacklistant le destinataire.

On génère une map de hash /etc/postfix/block_recipient :

notice@info.al  REJECT  mail bloque

Dans le main.cf :

smtpd_recipient_restrictions =
      check_recipient_access hash:/etc/postfix/block_recipient,
      ...

On recrée la map :
# postmap /etc/postfix/block_recipient

On relance Postfix :
# /etc/init.d/postfix reload

Le jail express

Ou comment monter un jail en 2 – 2. On commence par topper une ISO de FreeBSD sur le host (système de base). Supposons que nous voulions installer un jail nommé “jigar” dans /jail/dtc. On va y mettre deux chose : le système de base FreeBi et les pages de man (une fois loggué dans le jail, c’est pratique de les avoir sous la main). Commencons par monter l’ISO :

mdconfig -a -t vnode -f ./FreeBSD-8.1-RELEASE-amd64-disc1.iso

Qui doit renvoyer un device (chez moi md0)

mount -t cd9660 /dev/md0 /mnt/iso

Mon shell root par défaut est sh (j’aime pô csh, je sais pas m’en servir ^^). On doit se placer dans le “set” a installer (base et manpages pour nous) :

cd /mnt/iso/8.1-RELEASE/base
DESTDIR=/jail/dtc ./install.sh

cd /mnt/iso/8.1-RELEASE/manpages
DESTDIR=/jail/dtc ./install.sh

Après c’est du classique, configurons le rc.conf du host :

#Alias avec l'ip du jail sur l'interface
ifconfig_igb0_alias0="inet <ip_host>"
syslogd_flags="-s -s"
sendmail_enable="NO"
inetd_flags="-wW -a <ip_host>"
rpcbind_enable="NO"
 
jail_enable="YES"
jail_list="jigar"
jail_set_hostname_allow="NO"
jail_socket_unixiproute_only="YES"
jail_procfs_enable="NO"
jail_devfs_enable="YES"
jail_exec_start="/bin/sh /etc/rc"
jail_devfs_ruleset="devfsrules_jail"
 
jail_nausica_flags="-n jigar"
jail_nausica_rootdir="/jail/dtc"
jail_nausica_hostname="jigar.garnett.fr"
jail_nausica_ip="ip_jigar"

Celui de “jigar” (/jail/dtc/etc/rc.conf) :

hostname="jigar.garnett.fr"
network_interfaces=""
keymap="fr.iso.acc"
sshd_enable="YES"
syslogd_flags="-s -s"
rpcbind_enable="NO"

Quelques post-actions :

touch /jail/dtc/etc/fstab
cp /etc/resolv.conf /jail/dtc/etc/
cp /jail/dtc/usr/share/zoneinfo/Europe/Paris /jail/dtc/etc/localtime
chroot /jail/nausica /bin/sh
#passwd
#exit

Et voila, c’est prêt !

PIMP my Amavisd-new

Sur des serveurs de messagerie un peu chargés le message suivant est apparu dans les logs :

Jul 29 11:18:39 mailhost postfix/error[3799]: 10F9BC0318: to=<nico@garnett.fr>,
relay=none, delay=98766, delays=98761/4.9/0/0.08, dsn=4.4.1, status=deferred
(delivery temporarily suspended: connect to 127.0.0.1[127.0.0.1]:10024:
Connection refused)

La raison en est simple. Une autre erreur m’a mis sur la voie :

Jul 29 11:17:20 mailhost postfix/qmgr[1416]: warning: you may need to increase
the master.cf amavis process limit

Il faut donc tweaker un peu le Amavis pour faire ne sorte d’ajuster le nombre de consomateur (file d’attente de mails en attente de traitement) au producteur (service amavisd-new).
Dans le fichier /etc/postfix/master.cf :

amavis    unix  -       -       -       -       8       smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes
        -o max_use=20

On fixe le maxproc à 8 (cette valeur doit être synchronisé avec le nombre de processus Amavisd forkés au lancement du service). On en profite pour coller un max_use à 20. Le paramètre max_use étant le nombre de fois que Postfix peut réutiliser l’instance d’un service. Pour la valeur 20, un explication limpide est disponible ici.

En parallèle, on colle dans le /etc/amavis/conf.d/50-user :

$max_servers = 8;

Pour être cohérent avec le maxproc de Amavis dans le master.cf.

RC4-HMAC et cross-realm KDC Heimdal / AD

Voila un petit moment que j’essaie de mettre en place un cross-realm en virant le DES. Mon KDC de test est un KDC Heimdal installé par les paquets sur une Debian Squeeze. Windows 2003 SP2 gère le RC4-HMAC pour le principal d’approbation (le fameux krgtgt/NTDOMAIN@UNIXDOMAIN). Par défaut, Heimdal fait bien les choses. Un principal est crée avec trois enctypes : aes256, des3 et arcfour. Pas de simple DES : cool.

root@kdc:~# kadmin -l list -l nico

            Principal: nico@GARNETT.FR
    Principal expires: never
     Password expires: never
 Last password change: never
      Max ticket life: 1 day
   Max renewable life: 1 week
                 Kvno: 2
                Mkvno: unknown
Last successful login: never
    Last failed login: never
   Failed login count: 0
        Last modified: never
             Modifier: unknown
           Attributes: 
             Keytypes: aes256-cts-hmac-sha1-96(pw-salt),des3-cbc-sha1(pw-salt),
                            arcfour-hmac-md5(pw-salt)
          PK-INIT ACL: 
              Aliases:

Côté Windows 2003 SP2, on crée une relation d’approbation transitive unilatérale (clic clic dans l’interface) et on fixe un mot de passe pour le principal crée dans le KDC Active Directory. On déclare ensuite le realm UNIX via la commande ksetup :

ksetup /setdomain GARNETT.FR
ksetup /addkdc GARNETT.FR kdc.garnett.fr

On notera que l’on pourrait ajouter les informations de localisation du kdc directement dans la zone DNS, ca serait plus simple. Dernière étape, il faut spécifier au KDC AD que l’enctype par défaut pour l’approbation c’est du RC4 :

ktpass /MITRealmName GARNETT.FR /TrustEncryp RC4

Côté client XP, il faut évidemment l’ajouter au domaine AD. Ensuite de la même manière que sur le KDC AD, on doit déclarer le realm UNIX :

ksetup /setdomain GARNETT.FR
ksetup /addkdc GARNETT.FR kdc.garnett.fr

A l’authentification du client XP (avec son principal et son mot de passe UNIX sur le domaine Kerberos UNIX), on doit voir ça dans les logs :

2010-07-28T15:42:22 Client supported enctypes: arcfour-hmac-md5,
using arcfour-hmac-md5/aes256-cts-hmac-sha1-96

Et voila, l’algorithme minimal est bien RC4-HMAC ^^

Synchronisation LDAP/Kerberos (Heimdal)

Petit point sur la synchronisation LDAP/Kerberos (cad du champ userPassword et des clés du KDC). J’ai décidé de faire ça avec l’overlay smbk5pwd fourni dans les contribution d’OpenLDAP. Cet overlay met à jour les clés (et eventuellement les empreintes NTLM et LM) en même que le champs userPassword lors d’une requête de changment de mot de passe (par exemple via ldappasswd). Cependant il faut faire face à plusieurs contraintes :
- Cet overlay ne marche que avec un KDC Heimdal. Un autre overlay qui interagit avec kadmind nommé smbkrb5pwd est disponible. Il est donc utilisable avec MIT et Heimdal mais n’est pas encore prêt pour la production.
- Les attributs Kerberos pour LDAP doivent être accolés à la feuille. On ne peut pas avoir une OU kerberos ou on stock les principals dedans. En effet, l’overlay regarde pour quelle feuille on demande le changement de mot de passe, ensuite il regarde si c’est un objet de type krb5KDCEntry et alors il met à jour les clés.
- Le KDC maître doit être sur le même machine que slapd car la communication se fait via un socket local (ldapi).

1. Installation de l’over-laid

On récupere les sources de slapd (synchronisées avec la version courante su paquet que l’on a installé) :
cd /usr/local/src
aptitude build-dep slapd

On se place dans les sources :
cd openldap-2.4.17
./configure
make depends
make

On installe évidement pas slapd, on va juste compiler l’overlay :
cd contrib/slapd-modules/smbk5pwd
aptitude install heimdal-dev
make

Note : il faut faire quelques petits ‘ln’ pour que ça passe :
ln -s /usr/lib/libldap_r-2.4.so.2 /usr/lib/libldap_r.so
ln -s /usr/lib/liblber-2.4.so.2 /usr/lib/liblber.so
ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so

Enfin, on déplace le contenu de .libs vers /usr/lib/ldap (endroit contenant les modules / overlays de slapd, du moins sous Debian).
mv .libs/* /usr/lib/ldap/

2. Configuration de slapd

Hypothèses :
- Mes utilisateurs sont stockés dans la branche ou=people,dc=garnett,dc=fr.
- Ils sont identifiés par un attribut ‘uid’ contenant leur matricule.

Pour activer l’overlay :

include /etc/ldap/schema/hdb.schema
include /etc/ldap/schema/samba.schema
moduleload smbk5pwd
...
database hdb
...
overlay smbk5pwd

Et ensuite quelques ACLs l’idée est de permettre l’accés en écriture au clés (même pas aux attributs Kerberos car ils sont ajoutés par une autre moulinette) :

access to dn.base="ou=people,dc=garnett,dc=fr"
     by dn="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write
     by * read
 
access to dn.subtree="ou=people,dc=garnett,dc=fr"
     attrs=krb5KeyVersionNumber,krb5Key
     by dn="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write
     by * none 
 
access to dn.subtree="ou=people,dc=garnett,dc=fr"
     attrs=entry,objectclass,krb5PrincipalName,krb5MaxLife,\
     krb5MaxRenew,uid,krb5KDCFlags
     by dn="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
     by * none

Le DN de connexion bizarre est celui utilisé par la SASL lors de l’accès via ldapi. Avec ce jeu d’ACL (a ajuster selon vos besoins) on peut changer les clés des utilisateurs sans soucis et faire un dump du KDC. Je dois tester comment ça se comprote avec la réplication KDC maitre / esclave(s). pour voir si les ACLs merdouillent, slapd avec le loglevel à 128.

3. Configuration du KDC

On l’installe :
aptitude install heimdal-kdc

Il faut juste indiquer au KDC Heimdal d’utiliser un backend LDAP. dans le /etc/heimdal-kdc/kdc.conf :

[logging]
kdc = FILE:/var/log/heimdal-kdc.log
[kdc]
database = {
  dbname = ldap:ou=people,dc=garnett,dc=fr
  realm = UNIV-ORLEANS.FR
  mkey_file = /var/lib/heimdal-kdc/m-key
  acl_file = /etc/heimdal-kdc/kadmind.acl
}
[kadmin]
[password-quality]

Puis dans le /etc/krb5.conf :

database = {
    dbname = ldap:ou=people,dc=garnett,dc=fr
}

Un restart du KDC Heimdal. Et on peu créer les principals par défaut :
kadmin -l
> init GARNETT.FR

Les principals par défaut ont du être crées dans la branche people (attention aux ACLs slapd, dans notre configuration on ne pourra pas le faire si directement).

4. Ajout des informations Kerberos à une feuille

Je suis dans le cas ou les gens existent déjà et donc on ne peut pas casser le LDAP. Un simple ldapmodify permet de s’en sortir. Créons le fichier kerb.ldif :

dn: uid=matricule,ou=people,dc=garnett,dc=fr
changetype: modify
add: objectClass
objectClass: krb5Principal
-
add: objectClass
objectClass: krb5KDCEntry
-
add: krb5PrincipalName
krb5PrincipalName: p10613@UNIV-ORLEANS.FR
-
add: krb5KeyVersionNumber
krb5KeyVersionNumber: 1
-
add: krb5MaxLife
krb5MaxLife: 86400
-
add: krb5MaxRenew
krb5MaxRenew: 604800
-
add: krb5KDCFlags
krb5KDCFlags: 126
-

On fait un ldapmodify et un changment de mot de passe derrière et les attributs krb5Key seront ajoutés à la feuille. Fin de l’histoire. Derrière on peut faire un kinit pour topper son ticket.

Le rate de DRBD

Un petit post pour mémoire a propos du calcul du taux de transfert de DRBD (paramètre “rate”). Le premier point est de determiner le goulot d’étranglement (et non pas le Gourlot d’étranglement, le Gourlot à des moeurs assez étranges d’après des sources bien informées). Bref un test simple :
time dd if=/dev/zero of=/root/testfile bs=1024 count=2048000

2048000+0 enregistrements lus
2048000+0 enregistrements écrits
2097152000 octets (2,1 GB) copiés, 6,35973 s, 330 MB/s
 
real	0m6.372s
user	0m0.252s
sys	0m6.016s

Ensuite on test le réseau (avec un scp par exemple) en transferant un fichier sur le réseau (en utilisant les liens dediés à DRBD). On tombe a 73 Mb/s. Le goulot d’étranglement est donc le réseau et j’utilise la formule indiquée dans documentation de DRBD en prenant 1/3 du goulot soir 24M pour le “rate”.

Point de RDV SSH

Voila bien longtemps qu’il n y avait pas eu de nouveau post sur ce blog. Disons que ma vie personnelle a pas mal changée et ça a influé sur mes priorités. Enfin je tente de revenir au top avec un billet sur comment mettre en place un point de RDV SSH. Un point de RDV SSH implique trois protagonistes :
- Un service réseau ;
- Une passerelle SSH ;
- Un client.
Le principe est que le client doit pouvoir accéder à un service du réseau interne sur une machine type passerelle SSH.

Schéma :

1) On exporte la socket du service MySQL vers la passerelle SSH. L’administrateur réseau fait ça en tapant la commande suivante sur le serveur MySQL (le -R crée un tunnel inversé) :

ssh -N -f -R 4406:127.0.0.1:3306 admin@gw_ssh

Le service est joignable sur le loopback de la passerelle SSH.

2) Le client crée ensuite un tunnel SSH vers la socket fraichement crée sur le loopback de la passerelle :

ssh -N -f -L 5506:127.0.0.1:4406 client@gw_ssh

Et hop, le client peut joindre le service MySQL sur lo loopback port 5506 de son laptop.

Avantages :
- Le client n’a pas de compte système sur le serveur MySQL ;
- On n’est pas obligé d’autoriser des connexion de la passerelle vers le serveur de BD (uniquement l’inverse) ;
- A aucun moment le service MySQL est exposé sur un interface “réelle” (uniquement sur des loopback) ;
- Tout le trafic est chiffré (il passe dans des tunnels SSH).

Inconvénient :
- Le client doit savoir utiliser SSH.

Enlarge your pen1s … Heu non, LVM sous KVM

Intrigué par l’effervescence autour de KVM (libre, intégré au noyau, choisi par RedHat et compliant avec la libvirt), j’ai décidé de le tester. J’ai donc déployé une Squeeze 64 bits sur un R410 de test pour essayer d’installer une VM avec un montage ISCSI. Pas de problèmes particuliers sauf pour l’utilisation du LVM à l’installation de la VM. J’ai choisi de créer un LV sur l’hôte par partition demandé sur la VM qui seront partitionnés à l’installation de la VM. L’inconvénient de cette méthode est que l’on multiplie les vd*1 sur le guest, ce n’est pas cosmétique. La seconde de méthode est de faire du LVM sur LVM : on crée le PV de la VM sur un LV du système hôte et on enquille. Je suis un peu effrayé (peut être à mauvais titre) par la superposition de niveaux de LVM.

Je veux retailler le / hébergé sur le LV /dev/virtvol/vm et lui ajouter 4 Go. Tout va se passer sur le système hôte. Let’s go :

# lvextend -L+4G /dev/virtvol/vm

Extending logical volume vm to 26,00 GiB
Logical volume vm successfully resized

On ouvre ensuite la table des partitions avec kpartx. Cet outil recrée une arborescence sous /dev/mapper correspondant à la structure des partition du volume cible.

# kpartx -av /dev/virtvol/vm

add map virtvol-vm1 (254:1): 0 46122552 linear /dev/virtvol/vm 63

On recrée la table des partitions sur le volume mappé dans /dev/mapper. Cette opération consiste à supprimer la partition dans un premier temps et à la recréer à la taille maximum. Comme on a une seule partition par table, on se fait pas de noeuds au cerveau avec les offset de départ etc. Et dans un situation de crise genre mes logs sont pleins (ils ont de la chance) on est content d’agrandir sans se poser de questions.

# fdisk /dev/mapper/virtvol-vm

The number of cylinders for this disk is set to 3394.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
 
Command (m for help): <strong>p</strong>
 
Disk /dev/mapper/virtvol-vm: 27.9 GB, 27917287424 bytes
255 heads, 63 sectors/track, 3394 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0000aab8
 
                     Device Boot      Start         End      Blocks   Id  System
/dev/mapper/virtvol-vm1               1        2871    23061276   83  Linux
 
Command (m for help): d 1
Selected partition 1
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3394, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-3394, default 3394): 
Using default value 3394
 
Command (m for help): p
 
Disk /dev/mapper/virtvol-vm: 27.9 GB, 27917287424 bytes
255 heads, 63 sectors/track, 3394 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0000aab8
 
                     Device Boot      Start         End      Blocks   Id  System
/dev/mapper/virtvol-vm1               1        3394    27262273+  83  Linux
 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
 
WARNING: Re-reading the partition table failed with error 22: Argument invalide.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

On va pas faire les malins et actualiser au niveau du noyau la table de partitions :

# kpartx -d /dev/virtvol/vm
# kpartx -av /dev/virtvol/vm

add map virtvol-vm1 (254:1): 0 54524547 linear /dev/virtvol/vm 63

Un petit contrôle du système de fichier de la partition redimensionnée :

# e2fsck -f /dev/mapper/virtvol-vm1

e2fsck 1.41.10 (10-Feb-2009)
Passe 1 : vérification des i-noeuds, des blocs et des tailles
Passe 2 : vérification de la structure des répertoires
Passe 3 : vérification de la connectivité des répertoires
Passe 4 : vérification des compteurs de référence
Passe 5 : vérification de l'information du sommaire de groupe
/dev/mapper/virtvol-vm1 : 27849/1441792 fichiers (0.9% non contigus), 312705/5765319 blocs

Retaillage (dommage j’ai oublié ma pipe) :

# resize2fs /dev/mapper/virtvol-vm1

resize2fs 1.41.10 (10-Feb-2009)
En train de retailler le système de fichiers sur /dev/mapper/virtvol-vm1 à 6815568 (4k) blocs.
Le système de fichiers /dev/mapper/virtvol-vm1 a maintenant une taille de 6815568 blocs.

On démonte le /dev/mapper :

# kpartx -d /dev/virtvol/vm

Lancement de la VM :

# virsh start vm

Domain vm started

Sinon pour la partie KVM / libvirt ça m’a semblé pas mal du tout.

Intégration de Pyzor, Razor2 et DCC sous Spamassassin / Amavisd-new

Ce billet fait un point sur l’intégration des bases données distribuées d’empreinte de messages dans un environnement Spamassassin invoqué par Amavisd-new sous Debian. Ces systèmes sont uniquement basés sur les occurrences. C’est a dire qu’on va compter le nombre de fois que les serveurs centraux “voient” passer un message. Les empreintes interviennent dans le processus de normalisation des messages pour être présentés aux serveurs. On réalise plusieurs empreintes pour un message correspondants aux partie “intéressantes” du message (fuzzy checksums). Ces empreintes sont ensuite soumises sous forme de rapport aux serveurs. La différence entre DCC et Pyzor/Razor2 est dans le mécanisme de collecte : DCC collecte tout (ham et spam) tandis que Razor2 et Pyzor ne collectent que des spams. La partie qui nous intéresse est le client. Quand il voit passer un message, il interroge les serveurs pour avoir les statistiques relatives à ce message.

On va commencer par installer ce que l’on peut via les packages :
# apt-cache search razor

pyzor - spam-catcher using a collaborative filtering network
razor - spam-catcher using a collaborative filtering network

# apt-cache search dcc-client
Rien, il faudra se palucher DCC depuis les sources … La raison est que la version packagée par Debian est vulnérable à une faille non corrigée.

1. Razor2 et Pyzor

# apt-get install razor pyzor
On initialise un environnement par défaut Razor (création du .razor dans la home du root) :
# razor-admin -d -create
Ensuite en enregistre sa machine sur le réseau Razor :
# razor-admin -register
On y ajoute le fichier de configuration par défaut de l’agent :
# cp /etc/razor/razor-agent.conf /root/.razor/
On balance ça dans la home de l’utilisateur amavis :
# cp -r /root/.razor /var/lib/amavis
On effectue ensuite deux ou trois modifications dans /var/lib/amavis/.razor/razor-agent.conf :
- passer debug à 0 ;
- ajouter la ligne : “razorhome = /var/lib/amavis/.razor” pour que Razor2 trouve sa home.
On fixe le possesseur du répertoire fraichement ajouté :
# chown -R amavis:amavis /var/lib/amavis/.razor
Dans les préférences Spamassassin de l’utilisateur amavis (/var/lib/amavis/.spamassassin/user_prefs), on lui spécifie l’emplacement du fichier de configuration de Razor2 :

razor_config /var/lib/amavis/.razor/razor-agent.conf

Pour Pyzor, c’est plus simple, on définit le serveur auquel rattacher l’agent local :
# pyzor discover

downloading servers from http://pyzor.sourceforge.net/cgi-bin/inform-servers-0-3-x

Puis recopie de la configuration dans la home de amavis :
# cp -r /root/.pyzor /var/lib/amavis/
chown -R amavis:amavis /var/lib/amavis/.pyzor

On test Pyzor :
# su amavis -c 'pyzor ping'
Côté Spamassassin, on vérifie que dans /etc/mail/spamassassin/v310.pre on a bien les plugins activés :

loadplugin Mail::SpamAssassin::Plugin::Razor2
loadplugin Mail::SpamAssassin::Plugin::Pyzor

2. DCC

On va donc le compiler :
# cd /usr/local/src/
# wget http://www.rhyolite.com/dcc/source/dcc.tar.Z

--2010-02-24 11:06:08--  http://www.rhyolite.com/dcc/source/dcc.tar.Z
Resolving www.rhyolite.com... 192.188.61.3, 2001:4978:230::3
Connecting to www.rhyolite.com|192.188.61.3|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1630683 (1.6M) [application/x-compress]
Saving to: `dcc.tar.Z'
 
100%[======================================>] 1,630,683   84.2K/s   in 21s     
 
2010-02-24 11:06:29 (75.4 KB/s) - `dcc.tar.Z' saved [1630683/1630683]

# tar xzf dcc.tar.Z
# cd dcc-1.3.120

On va compiler DCC avec trois options : l’uid qui vaut amavis, on désactive le serveur et la partie dccm (interface Sendmail).
./configure --with-uid=amavis --disable-server --disable-dccm
# make
# make install

Dans /etc/mail/spamassassin/v310.pre, décommenter :

#loadplugin Mail::SpamAssassin::Plugin::DCC

Dans /etc/mail/spamassassin/local.cf, ajouter :

# dcc
use_dcc 1
dcc_path /usr/local/bin/dccproc
 
#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor
 
#razor
use_razor2 1

Effectivement dans le cadre d’une utilisation avec Amavis, ça sert pas a grand chose (les réglages de ce fichier sont écrasés par Amavis). Par contre si on décidait de dédier la machine à Spamassassin et d’interfacer la version optimisée (Spamd) directement avec Postfix, le local.cf serait utilisé.

On redémarre Amavis et on test :
# /etc/init.d/amavis restart
# wget http://svn.apache.org/repos/asf/spamassassin/branches/b2_4_0/sample-spam.txt
# su amavis -c 'spamassassin -D test-report.txt 2>&1
# egrep -i '(pyzor|razor|dcc)' test-report.txt

[11769] dbg: plugin: loading Mail::SpamAssassin::Plugin::DCC from @INC
[11769] dbg: dcc: network tests on, registering DCC
[11769] dbg: plugin: loading Mail::SpamAssassin::Plugin::Pyzor from @INC
[11769] dbg: pyzor: network tests on, attempting Pyzor
[11769] dbg: plugin: loading Mail::SpamAssassin::Plugin::Razor2 from @INC
[11769] dbg: razor2: razor2 is available, version 2.84
[11769] dbg: config: fixed relative path: /var/lib/spamassassin/3.002005/updates_spamassassin_org/25_dcc.cf
[11769] dbg: config: using "/var/lib/spamassassin/3.002005/updates_spamassassin_org/25_dcc.cf" for included file
[11769] dbg: config: read file /var/lib/spamassassin/3.002005/updates_spamassassin_org/25_dcc.cf
[11769] dbg: config: fixed relative path: /var/lib/spamassassin/3.002005/updates_spamassassin_org/25_pyzor.cf
[11769] dbg: config: using "/var/lib/spamassassin/3.002005/updates_spamassassin_org/25_pyzor.cf" for included file
[11769] dbg: config: read file /var/lib/spamassassin/3.002005/updates_spamassassin_org/25_pyzor.cf
[11769] dbg: config: fixed relative path: /var/lib/spamassassin/3.002005/updates_spamassassin_org/25_razor2.cf
[11769] dbg: config: using "/var/lib/spamassassin/3.002005/updates_spamassassin_org/25_razor2.cf" for included file
[11769] dbg: config: read file /var/lib/spamassassin/3.002005/updates_spamassassin_org/25_razor2.cf
[11769] dbg: razor2: part=0 engine=4 contested=0 confidence=0
[11769] dbg: razor2: results: spam? 0
[11769] dbg: razor2: results: engine 8, highest cf score: 0
[11769] dbg: razor2: results: engine 4, highest cf score: 0
[11769] dbg: pyzor: pyzor is available: /usr/bin/pyzor
[11769] dbg: pyzor: opening pipe: /usr/bin/pyzor check < /tmp/.spamassassin11769frgBiutmp
[11769] dbg: pyzor: [11771] finished: exit=0x0100
[11769] dbg: pyzor: got response: public.pyzor.org:24441 (200, 'OK') 0 0
[11769] dbg: dcc: dccifd is not available: no r/w dccifd socket found
[11769] dbg: dcc: dccproc is available: /usr/local/bin/dccproc
[11769] dbg: dcc: opening pipe: /usr/local/bin/dccproc -H -x 0 -a 212.17.35.15 < /tmp/.spamassassin11769frgBiutmp
[11769] dbg: dcc: got response: X-DCC-CollegeOfNewCaledonia-Metrics: sara 1189; Body=1 Fuz1=1 Fuz2=38

UnixGarden : Jail et OpenVZ

Juste un post pour indiquer la mise en ligne ce jour d’un article soumis sous “creative commons” à Linux Magazine. Je trouve ce principe particulièrement intéressant de publier l’article sur le web librement accessible quelques mois après sa parution. Il est disponible ici.