‘Corrupted index file’

Jan 24 21:10:30 daboo imap(drazzib): Corrupted index file /home/drazzib/Maildir/.INBOX/.imap.index: index.next_uid (4360) > uid_rec.uid (4339)
Jan 24 21:40:30 daboo imap(drazzib): Corrupted index file /home/drazzib/Maildir/.INBOX/.imap.index: index.next_uid (4372) > uid_rec.uid (4367)

Le message d’erreur précédent apparaît dans vos fichiers de logs lorsque le serveur IMAP Dovecot essaye de reconstruire son fichier d’index et qu’il trouve un message dont l’identifiant lui est déjà connu.

Procmail

Ce problème a souvent pour origine un défaut dans la configuration de Procmail. En effet, votre fichier .procmailrc contient une directive DEFAULT qui permet d’indiquer la destination des mails qui ne correspondent à aucun filtre. Lorsque cette variable se termine par un slash, Procmail considère qu’il doit utiliser des fichiers de types Maildir. Si cette directive ne se termine pas par un slash mais que le répertoire existe, Procmail passe en mode MH. Si cette directive ne se termine par un slash et qu’il s’agit d’un fichier, Procmail passe en mode mbox (le mail est ajouté à la fin du fichier).

Exemple de configuration pour MH DEFAULT=$HOME/Maildir/new

Exemple de configuration ok pour Maildir DEFAULT=$HOME/Maildir/

MH ou Maildir ?

Exemples de noms de fichiers de type MH msg.984:2,S msg.XU3:2,S

Exemples de noms de fichiers de type Maildir 1138135746.5099_0.daboo:2,S 1138136063.5299_0.daboo:2,S

La différence entre les deux semble assez peu génante, sauf dans le cas où l’on utilise Dovecot qui construit un index d’après le nom du fichier. En effet, les noms de fichiers MH ne sont pas unique dans le temps mais à un instant t : c’est à dire qu’un même nom de fichier peut être utiliser par un mail complètement différent dans la même journée, le mois, etc…

Le problème ne se pose pas pour les fichiers de type Maildir, car les noms de fichier générés sont garantis comme étant unique dans le temps.

CQFD

Références

‘New Mail Notification’ sur la console

/etc/login.defs
1
2
3
4
QMAIL_DIR    Maildir/
#MAIL_DIR    /var/mail

MAIL_FILE    Maildir/

Permet de définir la variable MAIL=$HOME/$MAIL_FILE

/etc/pam.d/login
1
session    optional   pam_mail.so standard noenv dir=~/Maildir

On passe le paramètre noenv car la variable MAIL est définie par le fichier dans /etc/logins.defs

/etc/pam.d/ssh
1
session    optional   pam_mail.so standard dir=~/Maildir # [1]

Attention, il ne faut pas préciser noenv dans le cas de ssh, sinon la variable MAIL ne sera pas définie.

Références

Dovecot & Postgresql

Dovecot et le protocole Sieve