Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/11/2006, à 22:45

chapi

[Résolu] Courier - demande d'explications sur Maildir

Bonjour,

j'ai mis en place un serveur de mail avec Postfix et Courier-pop en m'inspirant de la doc dans Wiki (http://doc.ubuntu-fr.org/serveur/mail).

J'ai cru comprendre en écumant le forum qu'il existe plusieurs façon se stocker les messages des utilisateurs : Maildir et Mbox.

Maildir utilise un dossier dans le répertoire personnel de chaque utilisateur.
Mbox utilise un fichier commun pour chaque utilisateur dans /var/spool/mail/.

J'ai bon jusqu'ici ?

J'ai lu que Maildir était plus souple que Mbox. Pourquoi ?

J'aimerai aussi savoir si Maildir est simplement un paramètre pour dire de stocker les messages dans les répertoires des utilisateurs ou s'il s'agit du nom du dossier dans lequel seront stockés les mails ?

S'il s'agit du nom du dossier (que chaque utilisateur doit posséder s'il veux recevoir des mails), si je veux renommer, je doit donc modifier Mailbox aux différent endroits ci-dessous :

la ligne home_mailbox = Mailbox/ du fichier main.cf
la ligne MAILDIRPATH=Maildir du fichier /etc/courier/pop3d
la ligne MAILDIR="Maildir" du fichier /etc/default/courier

Est-ce que j'ai toujours bon ?

Si je veux renommer mon dossier Maildir en Mail, je remplace l'occurrence dans les fichiers précédemment cités, et j'utilise ensuite la commande :

$ maildirmake Mail

afin de créer le dossier Mail est ses sous dossiers dans mon répertoire perso.

Ce dossier Maildir (ou Mail si je le renomme) doit être obligatoirement crée avant de pouvoir recevoir du courrier. Si j'ai 5 utilisateurs, c'est facile de créer le dossier manuellement avec la commande Maildirmake.

Mais si j'ai 100 utilisateurs, est-ce que c'est une bonne idée de créer un dossier /etc/skel/Maildir qui sera copié dans le répertoire personnel de chaque utilisateur lors de leur création ?


Je crois en avoir fini avec mes questions.
Merci beaucoup à ceux qui y répondront.

Dernière modification par chapi (Le 26/03/2007, à 16:06)

Hors ligne

#2 Le 20/11/2006, à 12:45

snapshot

Re : [Résolu] Courier - demande d'explications sur Maildir

Maildir utilise un dossier dans le répertoire personnel de chaque utilisateur.
Mbox utilise un fichier commun pour chaque utilisateur dans /var/spool/mail/.

Maildir utilise effectivement un dossier par boite (lui-même subdivisé) alors que mbox utilise un fichier. Mais l'emplacement du répertoire ou du fichier ne dépendent pas forcément du format : on peuy très bien mettre un maildir dans /var/spool/mail/...

J'ai lu que Maildir était plus souple que Mbox. Pourquoi ?

Avec mbox, tous les mails sont placés dans un seul et unique fichier, ce qui pose des problèmes quand plusieurs programmes accèdent simultanément à celui-ci (exemple : imapd peut supprimer un mail alors que smtpd veut en déposer un nouveau). Pour résoudre ce problème, il faut utiliser un verrouillage, il ne peut y avoir qu'un seul programme qui accède à la boite à la fois, ce qui n'est pas très pratique. De plus, la suppression d'un mail implique la ré-écriture complète de tout le fichier, ce qui est pénalisant question performance.
Avec maildir, on utilise un répertoire, subdivisé en trois sous-répertoires : cur, new et tmp.
Avec maildir, il n'y a pas besoin de verrouillage : quand un mail arrive, il prend la forme d'un fichier dont le nom est unique, et il est placé dans tmp. Une fois qu'il est complètement arrivé, il est déplacé par un mv dans new. Comme son nom est unique, il n'y a pas de collision et plusieurs programmes peuvent le faire simultanément (problème N°1 de mbox résolu).
Quand un client pop ou imap se connecte, il suffit de scanner new pour voir ses nouveau mails, qui sont ensuite déplacés dans cur.
Pour la suppression d'un mail, il suffit de faire un rm et le tour est joué (problème N°2 de mbox résolu).

Il n'y a donc pas à hésiter : il faut prendre le format Maildir pour stocker les mails. Il permet par la suite de créer des scripts de gestion. Exemple : détecter les boites jamais relevées (celles qui contiennent de vieux fichiers dans new), supprimer les mails lus et restant sur le serveur (idem, mais pour le répertoire cur)...

J'aimerai aussi savoir si Maildir est simplement un paramètre pour dire de stocker les messages dans les répertoires des utilisateurs ou s'il s'agit du nom du dossier dans lequel seront stockés les mails ?

heuu... c'est les deux !
Certains serveurs savent qu'on parle de maildir quand on termine le chemin de l'emplacement de stockage par un / (qui signifie sans ambiguïté : répertoire). D'autres utilisent un paramétrage explicite indiquant le format... Il faut consulter la doc !

S'il s'agit du nom du dossier (que chaque utilisateur doit posséder s'il veux recevoir des mails), si je veux renommer, je doit donc modifier Mailbox aux différent endroits ci-dessous :

la ligne home_mailbox = Mailbox/ du fichier main.cf
la ligne MAILDIRPATH=Maildir du fichier /etc/courier/pop3d
la ligne MAILDIR="Maildir" du fichier /etc/default/courier

Est-ce que j'ai toujours bon ?

Oui, ça semble pas mal mais il faut faire attention à un piège : il y a au minimum deux programmes à paramétrer.
Le premier, c'est le MDA (Mail Delivery Agent) : c'est lui qui stocke le mail dans le Maildir/Mbox. C'est par exemple procmail, postfix ou courier. Le deuxième, c'est le serveur POP ou IMAP...
Il faut que tous ces serveurs utilisent la même configuration. Si tu utilises courier, tu n'as pas de problème car cette suite emploie un fichier de configuration centralisé.
Mais si tu utilises postfix + courier Imap, il faudra paramétrer les deux.

Pour le reste de la config, il faut utiliser la bonne vieille méthode des essais et des erreurs ainsi que la consultation intensive des logs smile

Mais si j'ai 100 utilisateurs, est-ce que c'est une bonne idée de créer un dossier /etc/skel/Maildir qui sera copié dans le répertoire personnel de chaque utilisateur lors de leur création ?

Peut-être ? à voir...
Je préfère utiliser un script qui s'occupe de créer les boites et leur fichier.
Je lance le script autant de fois que je le souhaite. Il ne fait les mkdir/chown/chmod qu'en cas de besoin (si on le lance deux fois de suite, il ne fait rien la deuxième fois).
L'avantage est qu'en cas de changement de la configuration, le même script adapte les boites existantes avec la nouvelle config. Pas besoin d'en écrire un nouveau spécifique !


Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !

Hors ligne

#3 Le 20/11/2006, à 18:50

chapi

Re : [Résolu] Courier - demande d'explications sur Maildir

Un énorme MERCI, snapshot, pour ta réponse très complète et pour le temps que tu y as passé.

Juste une précision concernant la création du répertoire Maildir dans le dossier personnel des utilisateurs :

tu utilises un scipt qui automatise la création du dossier et des sous dossiers, mais il te créé automatiquement et en une seule fois les dossiers pour tous les utilisateur, ou est-ce que tu dois lancer le script pour chaque dossier dans /home ? (je serai éventuellement intéressé par ce script)

La technique que je propose fonctionne si les utilisateurs ne sont pas encore créés, la tienne au contraire doit nécessiter que le répertoire personnel soit déjà existant. Les solutions sont complémentaires alors ?

Le programme maildirmake ne créé un dossier que pour l'utilisateur courant, n'y a-t-il pas un moyen pour l'adapter afin qu'il le fasse pour un autre utilisateur ou pour tous les utilisateurs ?

Hors ligne

#4 Le 21/11/2006, à 01:56

snapshot

Re : [Résolu] Courier - demande d'explications sur Maildir

Ce script est écrit en python et lié à une application spécifique. Il se base sur une base SQL pour avoir la liste des boites gérées. Il gère aussi des alias de boites et des comptes FTP aussi... Je le lance une fois pour tous les comptes.
En fait, ce script est un programme de synchronisation : qu'on ajoute ou supprime une boite ou un alias, et le script se charge de faire le reste cool.
Si on supprime une Maildir par un rm, il suffit aussi de relancer le script pour recréer sa structure. C'est sans soucis. Si le script n'a rien à faire, et bien il ne fait rien big_smile

J'ai choisi de ne pas mettre les Maildir dans le home mais dans un répertoire spécifique. Les utilisateurs ne sont même pas dans le /etc/passwd. Donc, je ne me soucie pas du /home :-). Je crois que postfix appele cela des « virtual mailbox »

Je ne me sers pas de maildirmake car justement, il ne permet pas de changer l'utilisateur. En fait il ne fait pas grand chose : seulement quatre mkdir avec les chmod/chown qui vont bien !
Cette simple fonction fait la même chose mais en étant paramétrable : 1er paramètre = répertoire Maildir à créer, 2ème paramètre  = utilisateur (ex: mkmaildir /var/mail/boites/user1 user1)

function mkmaildir {
  for rep in "$1" "$1/cur" "$1/new" "$1/tmp"; do 
    mkdir $rep
    chmod u+rwx,go-rwx $rep
    chown $2 $rep
  done
}

Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !

Hors ligne