Archives auteur

Messagerie : exemple de filtre sieve

Voici un exemple de filtre sieve. Il inclut le filtre global spam.sieve ainsi que le filtre personnel vacation.sieve (dont la ligne sera à décommenter pour être actif). Il y a quelques règles pour flager les mails (TODO, monitoring, etc), les classer (cron, mailings) et les marquer automatiquement comme lus.

require "fileinto";
require "imap4flags";
require "include";
require "regex";

include :global "spam.sieve";
#include :personal "vacation.sieve";

# important
if anyof (
   address "from" "alert@hbis.fr",
   header :regex ["subject"][".*security alert.*"]) {
   addflag "$label1"; # important
}

# todo
if header :regex ["subject"] [".*TODO.*"] {
   addflag "$label4"; # todo
}

# mailings
if exists "List-Id" {
   fileinto "INBOX.mailings";
}

# backup
if header :regex ["subject"] [
   ".*backup.*"] {
   fileinto "INBOX.admin.backup";
}

# cron
if exists "X-Cron-Env" {
 fileinto "INBOX.admin.cron";
}

# periodic
if header :regex ["subject"] [
                    ".* security run output",
                    ".* monthly run output",
                    ".* daily run output",
                    ".* weekly run output"] {
 fileinto "INBOX.admin.periodic";
}

# awstats
if header :regex ["subject"] [
                    "awstats report"] {
 fileinto "INBOX.admin.awstats";
 setflag "\\seen";
}

Le script ci-dessous est un exemple de répondeur automatique, dont les notifications sont limitées à une seule notification par jour (pour un même expéditeur) :

require "vacation";

vacation
   :days 1
   :subject "Out of office"
   "I'm currently out of office.";

N’oubliez pas que les options disponibles dépendent de l’implémentation et des extensions de votre serveur SIEVE.

Thunderbird : afficher votre quota mail

Depuis sa version 3, Thunderbird ne nécessite plus d’extension pour afficher l’état d’occupation de votre de espace de stockage mail. Par défaut, il s’affiche au moment où 75 % du quota est atteint.

Pour l’afficher constamment, vous devez modifier sa configuration :
- dans la boîte de dialogue des options / préférences de votre client, sélectionnez l’onglet ‘Avancé’ puis ‘Général’.
- cliquez sur le bouton ‘Editeur de configuration’.
- saisissez ‘quota’ dans le filtre d’affichage.
- modifiez la variable mail.quota.mainwindow_threshold.show en fixant sa valeur à 0.

- Redémarrez votre client mail et la barre d’état affichera le statut de votre quota.

HBIS : mise à jour de la messagerie

Cette mise à jour apporte la gestion des quotas mail et des filtres sieve.

L’espace de stockage autorisé est à présent de 1 Go par mailbox. En cas de dépassement, les expéditeurs auront un message automatique de non-réception et votre client mail affichera un tel message d’erreur :

Les filtres sieve permettent de gérer vos messages côté serveur. Ils sont éditables à distance depuis votre client mail  (l’extension pour Thunderbird est disponible ici). Vous pouvez ainsi créer votre répondeur, classer vos mails, les rediriger ou les ignorer, les étiqueter selon vos propres critères. Par défaut, le filtre global assure le classement automatique des SPAM.

MacPorts : cleanup & upgrade

Quelques commandes d’utilisation de MacPorts …

- Nettoyer les fichiers objets et temporaires liés à la compilation de chaque port :

$ sudo port -f clean --all installed

- Désinstaller toutes les versions antérieures des ports installés :

$ sudo port -f uninstall inactive

- Effectuer une mise à jour avec nettoyage automatique :

$ sudo port selfupdate
$ sudo port -fuc upgrade outdated

Cherokee : le serveur web qui réconcilie administrateurs et développeurs

Un serveur web rapide, léger et facilement configurable ? C’est Cherokee !

Toutes les fonctions sont présentes : TLS, FastCGI, rewrite, proxy, cache, journalisation Apache, expiration, compression, limitation du trafic … et en plus une interface web de configuration dont la simplicité est déconcertante. Cette dernière prouve son réel intérêt avec le mécanisme des règles appliquées au contenu. Des assistants sont même présents pour configurer automatiquement le support PHP, créer un hôte pour WordPress, Mailman, etc …

Niveau performances, un benchmark prouve sa supériorité face à Nginx / Lighttpd (sans compter l’autre que je ne nommerai pas), mais il manque un test avec 100/200 clients simultanés pour être certain que les performances ne s’effondre pas à forte charge (ce qui est toujours le cas, OS oblige). L’interface de configuration fonctionne dans un processus séparé, son exécution est donc indépendante et peut être arrétée à tout moment.

Voici quelques screenshots de l’interface web :

PS : non, je n’ai pas acheté le dernier Linux Mag.

FreeBSD : RAID1 hotswap avec gestion AHCI

FreeBSD 8 gère par défaut vos disques par le driver ATA. Celui ne gère pas le hotswap disque. Si atacontrol permet bien de désactiver et débrancher un disque à chaud, la détection n’est effective qu’au prochain reboot. Pour permettre une détection à chaud, il est nécessaire d’utiliser le driver expérimental AHCI, tout en s’assurant que la gestion AHCI des disques est supportée et activée dans le BIOS.

La gestion AHCI s’appuie sur la couche CAM (déjà utilisée pour les périphériques SCSI et USB), ce qui implique un changement  de noms des disques durs. Ainsi /dev/ad0 devient /dev/ada0. La fstab est à modifier avant de redémarrer, d’autant qu’un LiveCD est nécessaire en cas d’erreur ou pour réactiver la gestion ATA. Pour éviter ces désagréments, GEOM propose comme solution les labels qui permettent de bénéficier de noms fixes pour les disques (quelque soit le mode en cours). Pour récupérer les labels de vos partitions UFS, activez l’option suivante :

# sysctl kern.geom.label.debug=1

Les labels seront alors listés au prochain boot, lesquels seront à récupérer et à placer dans la fstab. Pour la partition de swap, le label doit être créer par glabel :

# glabel label swap /dev/ad0s1b

Dans le cas d’un système déjà configuré en RAID par GEOM, les labels sont déjà configurés : GEOM les utilise implicitement. Ainsi, l’activation / désactivation de l’AHCI est transparente et un simple reboot permet de bénéficier de la gestion AHCI.

Pour rappel, voici la méthode de création d’un RAID1 sous GEOM :

# sysctl kern.geom.debugflags=16
# gmirror label -v -b round-robin gm0 /dev/ad8
# cat geom_mirror_load="YES" >> /boot/loader.conf
# ee /etc/fstab
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/mirror/gm0s1b      none            swap    sw              0       0
/dev/mirror/gm0s1a      /               ufs     rw              1       1
/dev/mirror/gm0s1f      /home           ufs     rw              2       2
/dev/mirror/gm0s1d      /usr            ufs     rw              2       2
/dev/mirror/gm0s1e      /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0
# shutdown -r now
# gmirror insert gm0 /dev/ad10
# gmirror status
 Name    Status  Components
mirror/gm0  DEGRADED  ada0
                      ada1 (48%)

A présent, la gestion des AHCI peut être activée :

# cat ahci_load="YES" >> /boot/loader.conf
# shutdown -r now
# camcontrol devlist
<WDC WD2502ABYS-02B7A0 02.03B03>   at scbus2 target 0 lun 0 (ada1,pass2)
<WDC WD2502ABYS-02B7A0 02.03B03>   at scbus3 target 0 lun 0 (pass0,ada0)
<Slimtype DVD A  DS8A2S 6P5D>      at scbus5 target 0 lun 0 (cd0,pass1)

Je débranche le second disque, la pile RAID se dégrade :

(ada1:ahcich3:0:0:0): lost device
(ada1:ahcich3:0:0:0): Invalidating pack
GEOM_MIRROR: Cannot write metadata on ada1 (device=gm0, error=6).
GEOM_MIRROR: Cannot update metadata on disk ada1 (error=6).
GEOM_MIRROR: Device gm0: provider ada1 disconnected.

Une fois le disque rebranché, une détection des périphériques de masse est nécessaire (ce n’est pas automatisé) :

# camcontrol devlist
<WDC WD2502ABYS-02B7A0 02.03B03>   at scbus2 target 0 lun 0 (pass0,ada0)
<Slimtype DVD A  DS8A2S 6P5D>      at scbus5 target 0 lun 0 (cd0,pass1)
# camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successful
Re-scan of bus 4 was successful
Re-scan of bus 5 was successful
# camcontrol devlist
<WDC WD2502ABYS-02B7A0 02.03B03>   at scbus2 target 0 lun 0 (pass0,ada0)
<WDC WD2502ABYS-02B7A0 02.03B03>   at scbus3 target 0 lun 0 (ada1,pass2)
<Slimtype DVD A  DS8A2S 6P5D>      at scbus5 target 0 lun 0 (cd0,pass1)

Le disque est à présent reconnu mais le RAID lui aussi ne se reconstruit pas automatiquement :

(ada1:ahcich3:0:0:0): Synchronize cache failed
(ada1:ahcich3:0:0:0): removing device entry
(aprobe0:ahcich3:0:0:0): SIGNATURE: 0000
ada1 at ahcich3 bus 0 target 0 lun 0
ada1: <WDC WD2502ABYS-02B7A0 02.03B03> ATA/ATAPI-8 SATA 2.x device
ada1: 300.000MB/s transfers
ada1: 239429MB (490350672 512 byte sectors: 16H 63S/T 16383C)
ada1: Native Command Queueing enabled
GEOM_MIRROR: Component ada1 (device gm0) broken, skipping.
GEOM_MIRROR: Cannot add disk ada1 to gm0 (error=22).
GEOM_MIRROR: Device gm0: rebuilding provider ada1.

Ce qui est entrepris de suite :

# gmirror forget gm0 /dev/ada1
gmirror: No such device: /dev/ada1.
# gmirror insert gm0 /dev/ada1
# gmirror status
 Name    Status  Components
mirror/gm0  DEGRADED  ada0
                      ada1 (1%)

La reconstruction RAID au final ne nécessite plus aucun redémarrage. Le driver AHCI apporte également d’autres fonctionnalités comme le support du NCQ, ce qui permet d’augmenter le débit en cas de forte charge. Pour le vérifier et obtenir des informations détaillées sur un disque, camcontrol est de rigueur :

# camcontrol identify ada0
pass0: <WDC WD2502ABYS-02B7A0 02.03B03> ATA/ATAPI-8 SATA 2.x device

protocol              ATA/ATAPI-8 SATA 2.x
device model          WDC WD2502ABYS-02B7A0
serial number         WD-WCAT1E308323
firmware revision     02.03B03
cylinders             16383
heads                 16
sectors/track         63
LBA supported         268435455 sectors
LBA48 supported       490350672 sectors
PIO supported         PIO4
DMA supported         WDMA2 UDMA6
overlap not supported

Feature                      Support  Enable    Value           Vendor
write cache                    yes    yes
read ahead                     yes    yes
Native Command Queuing (NCQ)   yes        31/0x1F
Tagged Command Queuing (TCQ)   no    no    31/0x1F
SMART                          yes    yes
microcode download             yes    yes
security                       yes    no
power management               yes    yes
advanced power management      no    no    0/0x00
automatic acoustic management  yes    yes    254/0xFE    128/0x80

Apache : empêcher l’interprétation des fichiers à extensions multiples

Pour éviter l’interprétation des fichiers à extensions multiples (par ex monimage.pl.gif) en tant que script, il est possible de forcer l’option AddHandler d’Apache à ne vérifier que la dernière extension, comme ceci :

AddHandler x-suphp-cgi   .cgi$ .pl$

La documentation ne le précise pas, mais l’extension semble bien être une regex. Ainsi le fichier monimage.pl.gif ne sera plus executé en tant que script Perl, mais affiché comme il se doit en image GIF.

Dans le cas où l’usage n’est valable que pour un seul vhost, il vaut peut être mieux se rabattre sur cette solution : http://httpd.apache.org/docs/2.2/mod/mod_mime.html#multipleext

L’effet sysadmin

Gentoo : mise à jour udev 146

Faites attention aux dernières versions d’udev car depuis la version 146, la compatibilité avec les noyaux antérieurs aux 2.6.25 est rompue. Si çà n’est pas le cas, le résultat est sans appel : votre système est incapable de booter et un joli « bloc » textuel va surgir prétextant une impossibilité de trouver le root device ! Heureusement, depuis le package udev-146-r1, un message explicite est affiché juste avant le plantage (cf le screenshot), ce qui n’était le cas du précédent … et lors de mon intervention.

On en parle ici : http://bugs.gentoo.org/292833

FreeBSD : coloriser la sortie de ls

Ajoutez dans votre fichier shell rc (~/.shrc ou autre) :

CLICOLOR="YES"
export CLICOLOR

Si vous souhaitez coloriser la sortie comme sous Linux, rajoutez celles-ci :

LSCOLORS="ExGxFxdxCxDxDxhbadExEx"
export LSCOLORS
Haut de page