Ce soir, je prends l’ascensceur. 3 jours dans cet etat.
Merci les voisins/locataires? Merci le gardien qui n’en rame pas une?
Sans commentaire!

Ce soir, je prends l’ascensceur. 3 jours dans cet etat.
Merci les voisins/locataires? Merci le gardien qui n’en rame pas une?
Sans commentaire!

Je suis allé voir cette pièce la semaine dernière, et c’était sympa comme tout.
Allez y les yeux fermés
http://www.au-theatre.com/bdd/PageT/moncolocataire.htm

Comment se connecter à un système distant sans taper sans cesse son mot de passe:
Je souhaite me connecter de mon portable vers mon serveur web rapidement:
$ ssh-copy-it -i ~/.ssh/id_dsa.pub monlogin@monserveurweb
je tape mon mot de passe
je peux maintenant taper ssh monlogin@monserveurweb et je suis directement connecté à mon serveur web.
Attention, la clé ssh est utilisable par toute personne ayant un accès physique au portable. Il faut donc la protéger par un mot de passe :
ssh-keygen -p -f ~/.ssh/id_dsa
On entre le mot de passe, la clé est alors protégée.
On peut utiliser un mécanisme d’agent SSH afin de n’avoir à taper la passphrase qu’une seule fois à l’ouverture de la session.
Comment préfixer certains mails par une chaine de caracteres arbitraire:
Je souhaite par exemple ajouter la date du jour au format JJ-MM-AAAA HH:MM devant tous les sujets de mes nouveaux mails:
dans mon ~/.procmailrc j’ajoute:
:0
*
{
SUBJECT=`formail -zxSubject:`
SUBDATE=`date +%d-%m-%Y\ %H:%M`
:0fhw
| formail -I”Subject: [$SUBDATE] $SUBJECT”
}
Avant un upgrade majeur, il est préférable de disposer d’une sauvegarde à jour de son système (et de ses données).
Comment faire simplement?
Prérequis:
Avoir soit une autre machine sous linux, soit un 2eme disque dur (et un live-CD au cas où…)
Sur la machine à sauvegarder (machine source, il nous faut disposer de rsync, et ssh)
Sur la machine qui recevra la sauvegarde, il nous faut disposer de place (équivalent de la place occupée sur le disque de la machine source), rsync, et ssh
Créons le répertoire accueillant les sauvegardes sur la machine destination:
# mkdir -p /backup/machinesource
Copions le systeme et les données à partir de la machine source:
# cd / && rsync -avP –numeric-ids –exclude=’/proc’ –exclude=’/sys’ \
–exclude=’/tmp’ / machinedestination:/backup/machinesource
machinedestination étant le nom DNS de la machine de destination (pouvant etre remplacé par son adresse IP).
Il nous faut disposer de la commande cp, ou de rsync.
on monte le 2eme disque dur sur le point de montage /sauvegarde par exemple
# cp -avux / /sauvegarde
ou encore
#rsync -avPx / /sauvegarde
Dans les exemples précédents nous avons considéré que / abritait tout le systeme (pas de montage séparé pour /var, /usr, /etc…).
Il vous sera ainsi très facile en cas de problème de récupérer un systeme fonctionnel en effectuant un transfert dans le sens inverse.
Pour réaliser des sauvegardes plus ciblées, plus simples… n’hésitez pas à jeter un oeil sur backup manager.
Hypothese:
Vous disposez de:
- Un systeme fonctionnel
- Un live-CD linux (Knoppix, GRML…)
- Suffisemment de disques durs pour faire ce que vous voulez faire.
- Un kernel supportant le raid
Comme d’habitude, faites des sauvegardes, si ça pétait c’est pas de ma faute
Commençons par le commencement:
Vous faites une sauvegarde de votre systeme sur un autre HD, un autre systeme…
Comment faire?
Monter un autre disque dur (ici sur /newdisk)
cp -avux / /newdisk
ou encore en root toujours:
rsync -avP –numeric-ids / autremachine:/backupmamachine
Passons aux choses sérieuses.
On va maintenant rebooter sur le live-CD
Création de l’array raid 1 (miroir)
- Supposition (raid 1 sur hda et hdb)
fdisk /dev/hda
on crée ses partitions avec comme type ‘fd’
mdadm -Cv /dev/md0 -l1 -n2 /dev/hda1 missing
mdadm -Cv /dev/md1 -l1 -n2 /dev/hda2 missing
autant de fois que vous avez créé de partitions
Créer le systeme de fichiers:
mkfs.ext3 /dev/md0
mkswap /dev/md1
On aurait aussi pu utiliser du XFS, ReiserFS….
on monte le disque de sauvegarde
mkdir /olddisk
mount /dev/hdb1 /olddisk
on monte le raid array
mkdir /newdisk
mount /dev/md0 /newdisk
on copie le systeme
cp -avux /olddisk /newdisk
on edite le fstab dans /newdisk/etc/fstab pour remplacer les /dev/hdx par des /dev/mdx
on oublie pas d’éditer /newdisk/etc/lilo.conf
boot=/dev/mdx
root=/dev/mdx
raid-extra-boot=mbr
on relance lilo dans un chroot
lilo -r /newdisk -v
on reboote la machine, youpi ça marche
il faut maintenant répliquer le miroir
on crée le meme partitionnement sur le 2eme disque que le 1er:meme tailles de partitions, meme type(fd)
Il est possible de le faire via sfdisk automatiquement (sfdisk -d /dev/hda | sfdisk /dev/hdb)
puis on fait
mdadm -a /dev/md0 /dev/hdb1
mdadm -a /dev/md1 /dev/hdb2
cat /proc/mdstat vous donnera l’avancement de la synchronisation du miroir
on oublie pas de lancer lilo pour que les 2 MBR soient mis à jour.
Pour convertir un système en RAID 5, il faut au minimum 3 disques et penser à créer une partition séparée qui servira de /boot (en raid 1 impérativement).
Depuis que j’ai mon portable (Inspiron 9300), j’essaye de temps en temps de faire fonctionner le suspend to RAM.
à l’occasion d’un dist-upgrade massif (Xorg7…), je me suis dit, pourquoi ne pas recompiler le noyau, les drivers nvidia… et réessayer le suspend to ram?
Et ça marche,
J’ai installé les sources du noyau 2.6.16, patché grâce aux patchs disponibles ici -> http://rtr.ca/dell_i9300/kernel/latest/ recompilé; et hop, un script plus tard, ça fonctionne.
Ci joint le .config de mon noyau ainsi que le script de suspend (à lier à l’acpi grace à /etc/acpi/actions/lm_lid.sh).
L’idée de ce post est de présenter un ~/.procmailrc commenté:
#BOF
#Constantes
DATE=`date +%Y-%m`
#Emplacement du dossier ou les mails seront délivrés
MAILDIR=$HOME/Maildir
#Emplacement ou le mail est sauvegardé en dernier ressort en cas de problème
ORGMAIL=$HOME/Maildir
#Mails sans importance (publicités…)
JUNKMAIL=.Junk/
#Répertoire dans lequel on stocke les .lock de formail, procmail…
HOMEMAIL=$HOME/Mail
#Log de procmail
LOGFILE=/tmp/$LOGNAME-procmail.log
#Mode volubile
VERBOSE=on
#Fichiers de white/black list permettant de whitelister/blacklister un domaine/expéditeur
WHITE_LIST=$HOME/.white-list
BLACK_LIST=$HOME/.black-list
#Fichier inclus (comme un include en PHP par exemple)
INCLUDERC=$HOME/.procmailinclude
#Permet de stopper le traitement si la machine ne s’appelle pas gw (utile en cas de montage de $HOME à travers NFS)
HOST=gw
########## Traitements procmail #########
#On déplace les mails ayant des “charset” très peu utilisés en europe de l’ouest dans le dossier Spam
UNREADABLE=’[^?"]*big5|iso-2022-jp|ISO-2022-KR|euc-kr|gb2312|ks_c_5601-1987′
:0:
* 10 $ ^Subject:.*=\?($UNREADABLE)
* 10 $ ^Content-Type:.*charset=”?($UNREADABLE)
.Spam/
:0:
* ^Content-Type:.*multipart
* B?? $ ^Content-Type:.*^?.*charset=”?($UNREADABLE)
.Spam/
#Si l’expéditeur est dans la whitelist, on ajoute un entete X-Whitelist positionné à Yes
:0
* ? formail -x”From” -x”From:” -x”Sender:” | egrep -is -f $WHITE_LIST
{
:0 fwh
| formail -a”X-Whitelist: Yes”
}
#Tag des mails grâce à bogofilter & Razor (On ne traite que les mails de moins de 128ko)
:0fw
* < 128000
| bogofilter -upelv
:0e
{ EXITCODE=75 HOST }
:0Wc
* < 128000
* ^X-Bogosity: Unsure.*
| razor-check
#On marque les spams reconnus par razor par un header X-Razor-Spam
:0af
| formail -A “X-Razor-Spam: YES”
#Tag des spams reconnus par razor par un sujet ****SPAM****
:0
* ^X-Razor-Spam: YES
{
SUBJECT=`formail -zxSubject:`
:0fhw
| formail -I”Subject: ****SPAM**** $SUBJECT”
}
#Si un mail a été détecté comme spam et que l’expéditeur est dans la liste blanche, alors le faire réapprendre comme courrier sollicité (Ham)
:0c
* ^X-Bogosity: Yes
* ^X-Whitelist: Yes
| bogofilter -Nl
#Si le mail a été détecté comme spam alors le déplacer dans le dossier adéquat.
:0
* ^X-Bogosity.*spamicity=1\.0
$JUNKMAIL
:0
* ^X-Bogosity.*spamicity=0\.9[56789]
$JUNKMAIL
:0
* ^X-(Spam-Flag|Razor-Spam): YES
$JUNKMAIL
#Emettre un bip si le mail est destiné à la boite principale
BEEP=`/usr/bin/beep -f 1000 -n -f 2000 -n -f 1500`
Dans le précédent article (bogofilter), nous avions vu comment tagguer les Spams après une phase d’apprentissage.Nous allons voir comment aller plus loin grâce à Razor (http://razor.sourceforge.net/), un réseau collaboratif de “détection de spams”.
Comment cela fonctionne?
Un utilisateur rapporte un spam. Une empreinte est alors générée (comme une empreinte digitale). Tout futur mail dont l’empreinte correspond à une empreinte de spam connue sera à 100% un SPAM. Il est donc possible, étant donné que les apsmmeurs envoient en masse des centaines de milliers de fois le même mail, de s’en protéger efficacement.
J’utilise cette solution conjointement à bogofilter.
Bogofilter fonctionne dans un mode à trois etats:
Ham, Unsure, et Spam.
Ham: Le mail est un mail souhaité
Unsure: Bogofilter est “indécis” sur la nature du mail (cas épineux)
Spam: Bogofilter a de grandes présomptions d’avoir découvert un spam.
Afin de limiter les traitements inutiles, j’ai décidé de n’utiliser razor que dans les cas ou bogofilter marque un mail comme unsure.
Comment faire techniquement?
Après avoir installé razor:
razor-admin -create && razor-admin -discover
Passons à l’édition du ~/.procmailrc
## Razor
:0Wc
* < 128000
* ^X-Bogosity: Unsure.*
| razor-check
#Ce bloc passe à razor les mails de taille inférieurs à 128ko pour lesquels bogofilter à renvoyé un etat incertain
:0af
| formail -A “X-Razor-Spam: YES”
#Si razor détecte un spam, alors on ajoute une entete X-Razor-Spam dans le mail
:0
* ^X-Razor-Spam: YES
{
SUBJECT=`formail -zxSubject:`
:0fhw
| formail -I”Subject: ****SPAM**** $SUBJECT”
}
#Razor n’ajoutant pas de chaine spécifique au sujet, nous l’ajoutons
:0
* ^X-Razor-Spam: YES
.Spam/
#Si le mail est marqué comme spam par razor, on le déplace dans le dossier Spam
Kezako?
Bogofilter est un puissant filtre bayésien permettant de tagguer le spam afin de pouvoir le repérer, trier, effacer… très facilement.
Quel intérêt? Remplacer SpamAssassin qui est, lui aussi très afficace, mais très consommateur de ressources (600 Mo en permanence sur mon modeste serveur mail).
Comment le mettre en place:
Il faut déja dans un premier temps “apprendre” au filtre ce que l’on considère comme courrier non sollicité (SPAM), et comme courrier souhaité (HAM).
Mes mails étant stockés au format maildir, nous nous rendons dans mon dossier de spams:
% cd ~/Maildir/.Spam/cur
for i in *; do bogofilter -s -I $i; done
Idem pour les mails sollicités (HAM)
% cd ~/Maildir/cur
for i in *; do bogofilter -n -I $i; done
Maintenant que bogofilter est “entrainé”, il faut modifier le ~/.procmailrc afin de filtrer les mails:
## BogoFilter
:0fw
* < 128000
| bogofilter -upelv
:0e
{ EXITCODE=75 HOST }
## BogoFilter
:0
* ^X-Bogosity.*spamicity=1\.0
.Spam/
:0
* ^X-Bogosity.*spamicity=0\.9[56789]
.Spam/
Ce code nous permet de déplacer dans un dossier Spam tous les mails considérés comme spam.
Que faire cas de détection d’un faux positif, ou d’un faux négatif?
Nous allons créer les dossiers Ham, Spam ainsi qu’un sous dossier Old pour chacun de ces dossiers dans notre boite mail nous permettant de faire réapprendre à bogofilter les mails concernés.
Le script suivant lancé périodiquement nous permettra de faire apprendre à bogofilter le Spam
#!/bin/sh
if [ $UID -eq 0 ]; then
echo “Lancement par les utilisateurs uniquement !” ;
exit
fi
if [ ! -d $1 ] || [ ! -d $2 ]
then
echo “Dossier manquant !” ;
exit 1
fi
SPAM=$1
OLDSPAM=$2
bogofilter=/usr/bin/bogofilter
# Reconnaissance du spam
echo “ANALYSE DU SPAM”
for f in $SPAM/*,S ; do
if [ -f $f ] ; then
echo $f ;
$bogofilter -s -I $f
fi
done
mv $SPAM/*,S $OLDSPAM/
echo “Done.”
Le script suivant lancé périodiquement nous permettra de faire apprendre à bogofilter le Ham
#!/bin/sh
if [ $UID -eq 0 ]; then
echo “Lancement par les utilisateurs uniquement !” ;
exit
fi
if [ ! -d $1 ] || [ ! -d $2 ]
then
echo “Dossier manquant !” ;
exit
fi
HAM=$1
OLDHAM=$2
bogofilter=/usr/bin/bogofilter
# Reconnaissance du ham
echo “ANALYSE DU FAUX SPAM”
for f in $HAM/* ; do
if [ -f $f ] ; then
echo $f;
$bogofilter -n -I $f
fi
done
mv $HAM/* $OLDHAM/
echo “Done.”
Ces scripts seront lancés par votre crontab grace aux lignes suivantes:
@daily /usr/local/bin/bogoaddspam.sh ~/Maildir/.Spam/cur ~/Maildir/.Spam.Old/cur
@daily /usr/local/bin/bogoaddham.sh ~/Maildir/.Ham/cur ~/Maildir/.Ham.Old/cur