<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le blog de Michauko &#187; imap</title>
	<atom:link href="http://michauko.org/blog/tag/imap/feed/" rel="self" type="application/rss+xml" />
	<link>http://michauko.org/blog</link>
	<description>Si tu ne comprends pas le titre de l&#039;article, passe ton chemin</description>
	<lastBuildDate>Tue, 29 Nov 2011 11:45:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>postfix : utilisateurs &#171;&#160;virtuels&#160;&#187; MySQL ; accès POP3[S], IMAP[S], SASL et TLS ; quota (bingo, j&#8217;ai tout mis dans le titre)</title>
		<link>http://michauko.org/blog/2009/10/20/postfix-utilisateurs-virtuels-mysql-acces-pop3s-imaps-sasl-et-tls-quota-bingo-jai-tout-mis-dans-le-titre/</link>
		<comments>http://michauko.org/blog/2009/10/20/postfix-utilisateurs-virtuels-mysql-acces-pop3s-imaps-sasl-et-tls-quota-bingo-jai-tout-mis-dans-le-titre/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 14:48:16 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[courier-authdaemon]]></category>
		<category><![CDATA[courier-imap]]></category>
		<category><![CDATA[courier-imap-ssl]]></category>
		<category><![CDATA[courier-pop]]></category>
		<category><![CDATA[courier-pop-ssl]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[IMAPS]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[POP3]]></category>
		<category><![CDATA[POP3s]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[postfix-mysql]]></category>
		<category><![CDATA[SASL]]></category>
		<category><![CDATA[TLS]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=829</guid>
		<description><![CDATA[Introduction Hop, Après ma doc d&#8217;initiation Debian, où un rapide chapitre est consacré au montage d&#8217;un serveur postfix, spamassassin, greylisting etc, dans une configuration simple, Après cet article sur le montage complet cette fois, en incluant amavisd-new, anti-virus etc, => Voici le complément idéal, par exemple en PME (et même plus gros) : Gestion d&#8217;utilisateurs [...]]]></description>
			<content:encoded><![CDATA[<h1>Introduction</h1>
<p>Hop,<br />
Après <a href="http://michauko.org/docs/debian_testing/">ma doc d&#8217;initiation Debian</a>, où un rapide chapitre est consacré au montage d&#8217;un serveur postfix, spamassassin, greylisting etc, dans une configuration simple,<br />
Après <a href="http://michauko.org/blog/2009/09/21/montage-dun-serveur-de-mail-complet-postfix-postgrey-amavisd-new-clamav-spamassassin-etc/">cet article sur le montage complet cette fois</a>, en incluant amavisd-new, anti-virus etc,<br />
=> Voici le complément idéal, par exemple en PME  (et même plus gros) :</p>
<ul>
<li>
Gestion d&#8217;utilisateurs virtuels, entendez par là  &laquo;&nbsp;utilisateurs définis en base de données et non pas utilisateurs réels de l&#8217;OS&nbsp;&raquo;.
</li>
<li>Mise en place de tout ce qu&#8217;il faut pour lire les mails (POP3, POP3S, IMAP, IMAPS) via les outils &laquo;&nbsp;courier-*&nbsp;&raquo;
</li>
<li>Authentification via SASL
</li>
<li>Mise en place d&#8217;authentification sécurisée plus forte pour l&#8217;envoi (TLS).
</li>
</ul>
<p>Pour le webmail, j&#8217;en ai parlé déjà  quelques fois sur mon blog et dernièrement, la version 0.3 de roundcubemail a fait de gros progrès par rapport à  la 0.1. Ca s&#8217;installe en 3 clics. Si j&#8217;ai le temps je ferai un article, mais c&#8217;est mal barré.<span id="more-829"></span></p>
<h2>Situation de départ</h2>
<p>Avoir un serveur postfix correctement monté, avec (ou pas) amavis, spamassassin, un anti-virus, du greylisting, un nom correct etc. Bref, un serveur qui fonctionne et qui accepte les mails correspondant à  des Maildir d&#8217;utilisateur de l&#8217;OS. En gros, ce qui est <a href="http://michauko.org/blog/2009/09/21/montage-dun-serveur-de-mail-complet-postfix-postgrey-amavisd-new-clamav-spamassassin-etc/">expliqué là </a>.<br />
Je ne parlerai pas d&#8217;ouverture de ports réseaux etc, mais ça tombe sous le sens. Ni du fait qu&#8217;il vous faudra une base MySQL en état de marche.</p>
<p>Je n&#8217;ai pas trouvé de doc officielle sur le sujet. En gros, on a <code>postfix-mysql</code> qui permet de faire le lien entre le serveur de mails et la base, mais rien dans un gros fichier README qu&#8217;on a habituellement avec ce genre de paquet. Ou alors je l&#8217;ai loupé.<br />
Le &laquo;&nbsp;<em>postfix mysql howto</em>&nbsp;&raquo; est juste résumé à  ça : <a href="http://www.postfix.org/MYSQL_README.html">http://www.postfix.org/MYSQL_README.html</a> et ça : <a href="http://www.postfix.org/mysql_table.5.html">http://www.postfix.org/mysql_table.5.html</a>. Et pour le coup, ce n&#8217;est pas très sexy.</p>
<p>J&#8217;ai donc compilé tout un tas de différents articles le sujet, parfois incomplet, parfois des articles décrivant des méthodes à grand coup de compilation-c-est-pénible-et-stupide-pour-suivre-les-mises-à -jour etc. Parfois sans gestion de quota, parfois avec. Et en général, en expliquant rien du tout. Donc dans mon cas, je tâche d&#8217;expliquer ce qu&#8217;on fait.</p>
<p>Alors, comme à  mon habitude, je laisserai trainer 2/3 bugs que j&#8217;ai pu rencontrer (de ma faute), ça peut permettre d&#8217;aider si vous faites les mêmes erreurs. Et on y apprend l&#8217;existence de quelques outils pour tester en ligne de commande.</p>
<p><strong>Remarque pour la partie quota qui ne fonctionne pas nativement dans postfix</strong>, je la passe sous silence volontairement au début et y consacre un chapitre à  la fin. En effet, c&#8217;est relativement dissocié de tout le reste et ça implique de recompiler postfix (ou d&#8217;utiliser un .deb fourni par je ne sais qui, mais vous êtes dépendant de lui pour les mises à  jour). Comme certains se moqueront des quotas, je le traite à  la fin. Beaucoup de guides de mise en place mélangent tout et prévoient des fonctions qu&#8217;ils n&#8217;exploitent pas. J&#8217;essaye pour ma part de faire des briques dissociables.</p>
<p>J&#8217;ai aussi tout installé sur un unique serveur. Ce n&#8217;est pas une nécessité, sur une grosse installation par exemple.</p>
<h2>Autres documentations</h2>
<p>A ce propos, j&#8217;ai lu à  peu près tout ce qui suit (et plein d&#8217;autres) pour monter le serveur, notamment les 2 premiers lien. J&#8217;ai même en gros simplement repompé, traduit et expliqué :</p>
<ul>
<li>
<a href="http://library.linode.com/email-guides/postfix/postfix-courier-mysql-debian-5-lenny" target="_blank">http://library.linode.com/email-guides/postfix/postfix-courier-mysql-debian-5-lenny</a>
</li>
<li>
<a href="http://www.howtoforge.com/virtual-users-domains-postfix-courier-mysql-squirrelmail-debian-lenny" target="_blank">http://www.howtoforge.com/virtual-users-domains-postfix-courier-mysql-squirrelmail-debian-lenny</a>
</li>
<li>
Quelques survols de docs ici : <a href="http://www.postfix.org/docs.html" target="_blank">http://www.postfix.org/docs.html</a>
</li>
</li>
<li>Un psycho de la recompilation : <a href="http://www.phparchitecture.com/howto_show.php?id=2">http://www.phparchitecture.com/howto_show.php?id=2</a>, mais y&#8217;a 2/3 trucs à  prendre
</ul>
<h2>Grandes étapes de la procédure</h2>
<p>En gros, on va :</p>
<ul>
<li>
1) Installer les applicatifs,
</li>
<li>
Créer la structure en base,
</li>
<li>
Décrire cette structure à  postfix pour qu&#8217;il sache l&#8217;interroger
</li>
<li>
2) Créer ce qu&#8217;il faut pour stocker les boites virtuelles
</li>
<li>
Faire quelques tests de livraison de mails pour valider la partie &laquo;&nbsp;utilisateurs définis en base&nbsp;&raquo;
</li>
<li>
3) Paramétrer les outils pour récupérer les mails (courier-POP, IMAP et versions sécurisées par SSL)
</li>
<li>
Tester ces protocoles pour la récupération des mails
</li>
<li>
Voir l&#8217;analyse de quelques erreurs sur la partie &laquo;&nbsp;courier&nbsp;&raquo;
</li>
<li>
4) Paramétrer les mécanismes d&#8217;authentification pour l&#8217;envoi (SASL, TLS)
</li>
<li>
Tester l&#8217;envoi, en TLS ou pas
</li>
<li>
Voir l&#8217;analyse de quelques erreurs sur la partie authentification pour l&#8217;envoi
</li>
<li>
5) Optionnel : activer les quotas
</li>
<li>
Et enfin, voir ce que je n&#8217;ai pas traité
</li>
</ul>
<h1>Installation des paquets</h1>
<p>Pour une fois, tout ne descend pas par dépendance, car les différents modules d&#8217;authentification (identification via une base MySQL) ne sont pas obligatoires, donc pas de dépendance. Donc pour une fois il faut absolument tout copier-coller. Pour illustrer, installer <code>courier-authlib</code> n&#8217;amène pas forcément <code>courier-authlib-mysql</code>.</p>
<p>On a donc :</p>
<pre>
aptitude install postfix-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl postfix-tls  libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-authdaemon courier-authlib-mysql</pre>
<p>Vous pouvez à  la limite zapper certains, comme le POP, si vous ne comptez pas l&#8217;utiliser. Notez que les webmails tapent en IMAP, si vous ne le saviez pas.</p>
<h1>Connexion postfix <-> MySQL</h1>
<h2>Création de la base de données</h2>
<p>J&#8217;ai vu des définitions de base hyper complète, pour désactiver le POP (ou je ne sais quoi d&#8217;autre) par utilisateur. Sachez qu&#8217;il sera toujours temps d&#8217;ajouter une colonne à  une table, de mettre des valeurs par défaut et d&#8217;ajouter une règle dans postfix pour prendre en compte une nouvelle fonctionnalité (c&#8217;est d&#8217;ailleurs ce qu&#8217;on fera pour les quotas de boîtes mails). Donc faisons simple au début.</p>
<p>On crée une base et un utilisateur dédié, avec des droits pas trop larges. Une fois connecté en root dans votre base (exemple : <code>mysql -u root -p</code>), on crée la base et donne des droits à cet utilisateur qu&#8217;on crée au passage :</p>
<pre>mysql> create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql> grant select,insert,update,delete on postfix.* TO 'mail_adm'@'localhost' identified by 'monpassadmin';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)</pre>
<blockquote><p>ATTENTION : dans toute la suite, le nom de la base, le nom des tables, les identifiants etc sont à  modifier pour refléter votre installation. Attention à  ne pas copier-coller trop vite.</p></blockquote>
<p>Ensuite, dans la base &laquo;&nbsp;postfix&nbsp;&raquo;, on crée quelques tables :</p>
<pre>use postfix;

CREATE TABLE domains (
        domain varchar(50) NOT NULL,
        PRIMARY KEY (domain)
);
CREATE TABLE forwardings (
        source varchar(80) NOT NULL,
        destination TEXT NOT NULL,
        PRIMARY KEY (source)
);
CREATE TABLE users (
        email varchar(80) NOT NULL,
        password varchar(20) NOT NULL,
        PRIMARY KEY (email)
);
CREATE TABLE transport (
        domain varchar(128) NOT NULL default '',
        transport varchar(128) NOT NULL default '',
        UNIQUE KEY domain (domain)
);</pre>
<p>Ces 4 tables permettront, dans l&#8217;ordre, de :</p>
<ul>
<li>
définir la liste des domaines qu&#8217;on gère
</li>
<li>
créer des alias (renvoyer toto@domaine.fr vers tata@blabla.com + titi@blibli.com)
</li>
<li>
définir nos comptes et leurs propriétés
</li>
<li>
définir une table de transport, au besoin
</ul>
<h2>Création des requêtes pour savoir comment interroger ces tables</h2>
<p>Le principe est le suivant : on a créé des tables avec des noms de colonnes et de tables libres (on aurait pu tout changer), on doit donc indiquer à  postfix comment vérifier un mot de passe, voir s&#8217;il y a un forward etc. Pour chaque action, on a une directive dans <code>/etc/postfix/main.cf</code> et un fichier de conf décrivant la base et la requête.<br />
Le truc énorme, c&#8217;est qu&#8217;on pourrait ajouter n&#8217;importe quelle colonne (attribut) pour ajouter un test. Exemple stupide : le password est OK entre 8h et 20h, sinon impossible de relever ses mails.<br />
On ajouterait une colonne et une clause supplémentaire dans le WHERE, tenant compte de l&#8217;heure et d&#8217;horaires autorisés pour tel utilisateur.</p>
<p>Voici les 4 fichiers de conf pour les 4 tables précédement créées :<br />
Fichier <code>/etc/postfix/mysql-virtual_domains.cf</code> :</p>
<pre>user = mail_adm
password = monpassadmin
dbname = postfix
query = SELECT domain AS virtual FROM domains WHERE domain=&apos;%s&apos;
hosts = 127.0.0.1</pre>
<p>Fichier <code>/etc/postfix/mysql-virtual_forwardings.cf</code> :</p>
<pre>user = mail_adm
password = monpassadmin
dbname = postfix
query = SELECT destination FROM forwardings WHERE source=&apos;%s&apos;
hosts = 127.0.0.1</pre>
<p>Fichier <code>/etc/postfix/mysql-virtual_mailboxes.cf</code> :</p>
<pre>user = mail_adm
password = monpassadmin
dbname = postfix
query = SELECT CONCAT(SUBSTRING_INDEX(email,&apos;@&apos;,-1),&apos;/&apos;,SUBSTRING_INDEX(email,&apos;@&apos;,1),&apos;/&apos;)
        FROM users WHERE email=&apos;%s&apos;
hosts = 127.0.0.1</pre>
<p>Fichier <code>/etc/postfix/mysql-virtual_transports.cf</code> :</p>
<pre>user = mail_adm
password = monpassadmin
dbname = postfix
query = SELECT transport FROM transport WHERE domain=&apos;%s&apos;
hosts = 127.0.0.1</pre>
<p>Ensuite on sécurise ces fichiers qui contiennent des infos sensibles sur la base d&#8217;authentification de mails :</p>
<pre>chown root:postfix /etc/postfix/mysql*cf
chmod 640 /etc/postfix/mysql*cf</pre>
<h2>Création de la structure de stockage des boîtes</h2>
<p>Le principe est le suivant : on indique un répertoire racine, avec un utilisateur dédié sous lequel tout est stocké.<br />
On aura une belle arborescence de ce type :</p>
<pre>/ma/racine/des/maildirs/
        - /mon.domaine.fr/
                - user1
                        - cur
                        - new
                        - tmp
                        + .autre.sous.rep.de.maildir.genre.Sent
                + user2
        - /autre.domaine.a.moi.fr/
                + userX</pre>
<p>Donc, disons que que le répertoire racine de stockage des boîtes mails sera <code>/vmailboxes</code>. On crée l&#8217;utilisateur avec un ID arbitraire :</p>
<pre>groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /vmailboxes -m</pre>
<p>Attention, vous allez aussi recopier le contenu de /etc/skel dans /vmailboxes, le home de &laquo;&nbsp;vmail&nbsp;&raquo;. Ce n&#8217;est pas forcément utile. Adaptez au besoin.</p>
<h2>On indique tout ça à  postfix</h2>
<p>Dans un premier temps, je n&#8217;ajoute pas toute la conf dans <code>/etc/postfix/main.cf</code>. On va y aller progressivement vu ce qu&#8217;on vient d&#8217;installer. On ajoute donc :</p>
<pre>virtual_alias_domains =
virtual_alias_maps = hash:/etc/postfix/virtual,proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /vmailboxes
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_create_maildirsize = yes
virtual_maildir_extended = yes
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps \
             $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains \
             $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps \
             $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks
</pre>
<p>Les fichiers de conf MySQL en &laquo;&nbsp;mode proxy&nbsp;&raquo; (si on peut dire) permettent d&#8217;optimiser les accès en conservant en mémoire le contenu. Pratique pour éviter une tonne d&#8217;accès disque inutile.</p>
<p><em>N&#8217;oubliez pas de générer le fichier virtual.db, la &laquo;&nbsp;version base de données&nbsp;&raquo; associée au fichier &laquo;&nbsp;virtual&nbsp;&raquo;. Il vous sert à faire suivre par exemple certains comptes locaux vers d&#8217;autres adresses e-mails. Pour centraliser vos remontées de serveur autre part.</em></p>
<p>Rechargez postfix, ça devrait bien se passer. Allez voir dans <code>/var/log/mail.info</code> ou <code>syslog</code> sinon.<br />
On va pouvoir tester.</p>
<h2>Quelques tests de livraison de mails</h2>
<p>Pour créer une boîte, il faudra au minimum :</p>
<ul>
<li>
Avoir déclaré le domaine qu&#8217;on gère
</li>
<li>
Avoir déclaré le compte
</li>
<li>
Avoir envoyé un mail de bienvenue, localement, pour forcer la création de boîte (arborescence
</li>
<li>
Eventuellement avoir ajouté des sous-répertoires pour que le webmail (si vous en mettez un) soit content : Sent, Trash, Drafts, Junk.<br />
</il></ul>
<h3>Ajout d&#8217;un domaine</h3>
<p>Tout comme en postfix &laquo;&nbsp;normal&nbsp;&raquo;, on indique dans &laquo;&nbsp;mydestination&nbsp;&raquo; la liste des noms de domaines gérés, il faut ici les indiquer dans la base. Et les supprimer de &laquo;&nbsp;mydestination&nbsp;&raquo; si vous les gériez localement jusqu&#8217;alors. On crée simplement un enregistrement en base :</p>
<pre>INSERT INTO domains (domain) VALUES (&apos;mxtest.mondomaine.fr&apos;);</pre>
<p>(Je suppose que <code>mxtest.mondomaine.fr</code> existe et que l&#8217;enregistrement MX existe aussi et pointe vers notre serveur.</p>
<h3>Création d&#8217;un utilisateur</h3>
<p>Simplissime, dans la base aussi :</p>
<pre>INSERT INTO users (email, password) VALUES (&apos;jacques@mxtest.mondomaine.fr&apos;, ENCRYPT(&apos;mon_pass_en_clair&apos;));</pre>
<h3>Initialisation de sa boîte mail</h3>
<p>Connecté localement, par exemple, sur la machine, envoyez un mail en ligne de commande, avec mailx, mutt. Ce que vous voulez.<br />
Là , ô magie, vous devriez voir l&#8217;arborescence /vmailboxes se peupler, par exemple avec /vmailboxes/mxtest.mondomaine.fr/jacques/<br />
C&#8217;est une arborescence &laquo;&nbsp;Maildir&nbsp;&raquo; classique, avec <code>cur</code>, <code>new</code>, <code>tmp</code>.<br />
Si le mail est arrivé, on peut pour l&#8217;instant le lire en ligne de commande en allant dans le répertoire, tout bêtement.</p>
<h3>Création des autres sous-répertoires</h3>
<p>Dans cette procédure de création d&#8217;un compte, je suggère d&#8217;ajouter, pour le webmail, la création des répertoires habituels d&#8217;un compte en IMAP. Si vous ne comptez livrer que des boîtes récupérables en POP, ne vous cassez pas la tête, c&#8217;est inutile.<br />
Sinon :</p>
<pre>su - vmail
cd /vmailboxes/mxtest.mondomaine.fr/jacques
for i in Sent Trash Drafts Junk
do
        maildirmake .$i #le . est important
done</pre>
<p>Vous devriez voir les sous-répertoires .Sent, .Junk etc avec à  chaque fois le cur/tmp/new et des permissions restreintes à  l&#8217;utilisateur vmail.</p>
<p>Voilà , la boîte sait recevoir et postfix sait gérer nos comptes virtuels, pour livrer le courier dans les boîtes virtuelles.</p>
<h3>Abonnement aux répertoires IMAP ; pour le webmail ou la consultation IMAP</h3>
<p>Si besoin, pensez à inclure la création du fichier suivant dans votre procédure de création de boîte mail :</p>
<pre>mxtest:/vmailboxes/mxtest.mondomaine.fr/jacques# cat courierimapsubscribed
INBOX
INBOX.Sent
INBOX.Drafts
INBOX.Trash
INBOX.Junk</pre>
<h3>Annexe : création d&#8217;un alias</h3>
<p>Dans la table forwardings, à base de :</p>
<pre>INSERT INTO forwardings VALUES (&apos;mon_alias@bla.fr&apos;, &apos;dest1@toto.fr&apos;, &apos;dest2@tata.fr&apos;);</pre>
<p>Actif immédiatement. Pas plus compliqué que ça <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<h1>Partie lecture des mails, via &laquo;&nbsp;courier-*&nbsp;&raquo; utilisant MySQL pour l&#8217;authentification</h1>
<p>Ici, on voit créer les services POP, IMAP et leurs versions sécurisées. Le tout sur fond d&#8217;authentification des utilisateurs définis en base MySQL.</p>
<h2>Indiquer au &laquo;&nbsp;daemon&nbsp;&raquo; courier d&#8217;utiliser MySQL</h2>
<p>Simplement, dans <code>/etc/courier/authdaemonrc</code>, changer la liste des modules utilisés pour l&#8217;authentification :</p>
<pre>#authmodulelist="authpam"
authmodulelist="authmysql"</pre>
<p>Dans <code>/etc/courier/authmysqlrc</code>, il faut positionner les variables suivantes :<br />
MYSQL_SERVER localhost<br />
MYSQL_USERNAME mail_adm<br />
MYSQL_PASSWORD monpassadmin<br />
MYSQL_PORT 0<br />
MYSQL_DATABASE postfix<br />
MYSQL_USER_TABLE users<br />
MYSQL_CRYPT_PWFIELD password<br />
MYSQL_UID_FIELD 5000<br />
MYSQL_GID_FIELD 5000<br />
MYSQL_LOGIN_FIELD email<br />
MYSQL_HOME_FIELD &laquo;&nbsp;/vmailboxes&nbsp;&raquo;<br />
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,&apos;@&apos;,-1),&#8217;/',SUBSTRING_INDEX(email,&apos;@&apos;,1),&#8217;/')<br />
#MYSQL_NAME_FIELD       name # NE PAS LAISSER CETTE VARIABLE, voir plus bas, cas d&#8217;erreur pour moi</p>
<p>Ici, bien évidemment, les valeurs indiquées reflètent les noms choisis en base.</p>
<h2>Générer les certificats pour le POP3S et IMAPS</h2>
<p>Cette partie est optionnelle, si vous ne voulez pas du POP3S et IMAPS. Dans ce cas vous pouvez aussi désinstaller <code>courier-*-ssl</code>.</p>
<p>On modifie les fichiers de conf de génération des certificats des daemon POP et IMAP sécurisés :</p>
<pre>mxtest:/etc/courier# cat pop3d.cnf

RANDFILE = /usr/lib/courier/pop3d.rand

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=FR
ST=France
L=PARIS
O=Courier Mail Server
OU=Automatically-generated POP3 SSL key
CN=mondomaine.fr
emailAddress=certif@mondomaine.fr

[ cert_type ]
nsCertType = server</pre>
<p>Et pour, l&#8217;IMAP :</p>
<pre>

mxtest:/etc/courier# cat imapd.cnf

RANDFILE = /usr/lib/courier/imapd.rand

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=FR
ST=France
L=PARIS
O=Courier Mail Server
OU=Automatically-generated IMAP SSL key
CN=mondomaine.fr
emailAddress=certif@mondomaine.fr

[ cert_type ]
nsCertType = server</pre>
<p>Et on génère les certificats à partir de ces modèles. Ca ne fait que connaître à l&#8217;avance certains paramètres :</p>
<pre>mxtest:/etc/courier# mkimapdcert
cp: not writing through dangling symlink `/usr/lib/courier/imapd.pem'
chmod: cannot operate on dangling symlink `/usr/lib/courier/imapd.pem'
chown: ne peut effectuer une déférence sur `/usr/lib/courier/imapd.pem': Aucun fichier ou répertoire de ce type
Generating a 1024 bit RSA private key
................++++++
....++++++
writing new private key to '/usr/lib/courier/imapd.pem'
-----
1024 semi-random bytes loaded
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
..............+.....................................................................................+..+.....................
.........+.............................+....+...+........+...................................................................
.............+..........+...........+..+...+..............................+....................+......................+......
........................+.....+.+......+..........................................................+..........................
.........................................................+...........+.........+.......................+.....................
..+..........++*++*++*++*++*++*
subject= /C=FR/ST=France/L=PARIS/O=Courier Mail Server/OU=Automatically-generated IMAP SSL 

key/CN=mondomaine.fr/emailAddress=certif@mondomaine.fr
notBefore=Oct  7 15:17:54 2009 GMT
notAfter=Oct  7 15:17:54 2010 GMT
SHA1 Fingerprint=9D:62:E6:CF:B7:39:80:C8:4E:F9:09:9C:61:36:14:8F:0B:EF:3C:6E
</pre>
<p>Et :</p>
<pre>
mxtest:/etc/courier# mkpop3dcert
cp: not writing through dangling symlink `/usr/lib/courier/pop3d.pem'
chmod: cannot operate on dangling symlink `/usr/lib/courier/pop3d.pem'
chown: ne peut effectuer une déférence sur `/usr/lib/courier/pop3d.pem': Aucun fichier ou répertoire de ce type
Generating a 1024 bit RSA private key
..++++++
..................++++++
writing new private key to '/usr/lib/courier/pop3d.pem'
-----
1024 semi-random bytes loaded
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
...............+..........................++*++*++*++*++*++*
subject= /C=FR/ST=France/L=PARIS/O=Courier Mail Server/OU=Automatically-generated POP3 SSL 

key/CN=mondomaine.fr/emailAddress=certif@mondomaine.fr
notBefore=Oct  7 15:18:10 2009 GMT
notAfter=Oct  7 15:18:10 2010 GMT
SHA1 Fingerprint=DD:8D:7C:0D:87:9D:19:9D:62:BE:5B:9A:B2:D8:43:80:CF:47:E2:14</pre>
<h2>Redémarrer tout ce bazar</h2>
<p>Ayé, tout est prêt, les certificats sont générés, on redémarre tout ce monde :</p>
<pre>/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart</pre>
<h2>Tests pour l&#8217;envoi, quelques erreurs analysées</h2>
<p>Déjà , faites un telnet sur chaque port, 143, 993, 110, 995 pour voir si ça répond bien.<br />
Ensuite, testez chaque protocole. Par exemple avec Thunderbird. Sur un poste Windows, pensez à  la version &laquo;&nbsp;portable&nbsp;&raquo; qui n&#8217;interfèrera pas avec votre actuel Thunderbird. Sous Linux, vous pouvez jouer avec vos ~/.mozilla-thunderbird (j&#8217;ai plus le nom précis en tête) pour ne pas abîmer votre conf actuelle.</p>
<h2>Erreurs rencontrées</h2>
<p>Ces erreurs m&#8217;ont permis de découvrir la commande authtest pour faire des tests d&#8217;aut</p>
<h3>Oubli de package</h3>
<p>J&#8217;ai commencé par tester l&#8217;authentification IMAP en local (depuis un webmail, roundcube, installé sur la même machine). Ca ne passait pas. J&#8217;ai testé depuis Thunderbird, pareil (pas étonnant), mais cette fois ça a généré un message dans les logs, genre <code>syslog</code> ou <code>mail.info</code> je ne sais plus :</p>
<pre>Oct  8 16:10:32 ns305192 authdaemond: libauthmysql.so: cannot open shared object file: No such file or directory</pre>
<p>Oops, il manquait le package <code>courier-authlib-mysql</code>.<br />
Heureusement, ce ne sera pas votre cas, c&#8217;est bien écrit dans le <code>aptitude install</code> du début.</p>
<h3>Erreur sur MYSQL_NAME_FIELD</h3>
<p>Ensuite, j&#8217;ai eu le droit à une vraie erreur :</p>
<pre>Oct  8 16:53:56 serveur imapd: authentication error: Input/output error</pre>
<p>C&#8217;est l&#8217;occasion de mentionner la commande <code>authtest</code> (faites <code>man authtest</code>. Ca peut aider :</p>
<pre>authtest ducon@lajoie.fr monpasswd
Authentication FAILED: Input/output error</pre>
<p>Activez le debug dans <code>/etc/courier/authdaemonrc</code> avec DEBUG_LOGIN=1, redémarrez le service et allez voir les logs. Ca m&#8217;a permis de voir les erreurs SQL :</p>
<pre>Oct  8 18:39:21 ns305192 authdaemond: mysql_query failed, reconnecting: Unknown column 'name' in 'field list'</pre>
<p>En cherchant un peu, j&#8217;ai vu qu&#8217;il restait le champ MYSQL_NAME_FIELD dans <code>/etc/courier/authdaemonrc</code>. Une fois modifié, ça passe :</p>
<pre>mxtest:/etc/courier# !auth
authtest bla@bla.fr monpassword
Authentication succeeded.

     Authenticated: bla@bla.fr (uid 5000, gid 5000)
    Home Directory: /vmailboxes
           Maildir: mondomaine.fr/jacques/
             Quota: (none)
Encrypted Password: OXXXXgfT0lXjI
Cleartext Password: monpassword
           Options: (none)</pre>
<p>A ce moment là, tout marche pour la récupération, webmail aussi (puisque IMAP aussi).</p>
<h1>Partie authentification des utilisateurs, pour l&#8217;envoi</h1>
<p>Pour bien comprendre, on va activer 2 modes : SASL et TLS &#8211; encore que le mode TLS reste optionnel. Vous pourriez dans ce cas désinstaller les paquets concernés.<br />
Le premier (SASL) pour avoir un mécanisme d&#8217;authentification pour le SMTP &laquo;&nbsp;normal&nbsp;&raquo;, port 25.<br />
Le deuxième (TLS) pour avoir un mécanisme plus sécurisé, avec certificat etc, en TLS (anciennement SMTPS, ou SMTP avec SSL). C&#8217;est aussi sur le port 25 (pas 465), et, de ce que j&#8217;en ai compris, ça tend à  remplacer le SMTPS, sur port 465. <a href="http://postfix.traduc.org/index.php/TLS_README.html">C&#8217;est expliqué là </a> et j&#8217;ai peut-être un peu abrégé l&#8217;explication violemment.</p>
<h2>Paramétrage de toute la chaîne postfix/sasl/pam/mysql</h2>
<p>Pour ne pas se perdre, il faut comprendre que postfix va déléguer l&#8217;authentification à  une couche d&#8217;abstraction, SASL. On va dire à  SASL de se baser sur le mécanisme PAM (Pluggable Authentication Module) et on va dire à  PAM de contrôler les logins/passwords dans une base MySQL, en lui décrivant cette base. Pigé ?</p>
<h3>Dire à  SASL d&#8217;utiliser PAM pour l&#8217;authentification</h3>
<p>SASL est chrooté (je ne me souviens plus bien, mais c&#8217;est le boxon, j&#8217;ai dû en parler dans des <a href="http://michauko.org/blog/?s=sasl">posts précédents</a>)<br />
On crée son environnement de &laquo;&nbsp;chroot&nbsp;&raquo; :</p>
<pre>mkdir --parents /var/spool/postfix/var/run/saslauthd</pre>
<p>Ensuite, on paramètre le daemon SASL correctement :<br />
Positionner <code>START=yes</code> dans <code>/etc/default/saslauthd</code><br />
et modifier la fin du fichier comme suite :</p>
<pre>#OPTIONS="-c -m /var/run/saslauthd"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"</pre>
<p>Le reste du fichier par défaut doit être bon (DESC=&nbsp;&raquo;SASL Authentication Daemon&nbsp;&raquo;, NAME=&nbsp;&raquo;saslauthd&nbsp;&raquo;, MECHANISMS=&nbsp;&raquo;pam&nbsp;&raquo;, MECH_OPTIONS=&nbsp;&raquo;", THREADS=5).</p>
<p>Vous pourrez voir au passage qu&#8217;on indique (via le paramètre MECHANISMS) à  SASL d&#8217;utiliser PAM.<br />
Maintenant, on va dire à PAM d&#8217;utiliser MySQL.</p>
<h3>Demander à  PAM d&#8217;utiliser MySQL en décrivant notre structure</h3>
<p>Dans <code>/etc/pam.d/smtp</code> (à  créer je crois), on indique qu&#8217;on va utiliser le module MySQL pour PAM :</p>
<pre>
mxtest:/etc/pam.d# cat smtp
auth    required   pam_mysql.so user=mail_adm passwd=monpassadmin host=127.0.0.1 db=postfix table=users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mail_adm passwd=monpassadmin host=127.0.0.1 db=postfix table=users usercolumn=email passwdcolumn=password crypt=1
</pre>
<h3>Ensuite, dire à  postfix de faire confiance à  SASL pour l&#8217;authentification</h3>
<p>Maintenant que SASL sait faire le boulot en base de données, on configure postfix pour authentifier les utilisateurs via SASL/PAM/MYSQL.<br />
Dans <code>/etc/postfix/sasl/</code>, s&#8217;assurer du contenu de <code>smtpd.conf</code> :</p>
<pre>pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: mysql
sql_hostnames: 127.0.0.1
sql_user: mail_adm
sql_passwd: monpassadmin
sql_database: postfix
sql_select: select password from users where email = &apos;%u&apos;</pre>
<p>Ajoutez l&#8217;utilisateur postfix au groupe sasl :</p>
<pre>adduser postfix sasl</pre>
<p>Enfin, expliquer à  postfix de bien vouloir relayer les envois d&#8217;utilisateurs authentifiés via SASL. Ce qui donne par exemple dans <code>/etc/postfix/main.cf</code> :</p>
<pre>smtpd_sender_restrictions = permit_sasl_authenticated
        reject_unauth_pipelining
        permit_mynetworks
        reject_unauth_destination
        reject_unknown_sender_domain
        reject_non_fqdn_sender
        check_policy_service inet:127.0.0.1:60000</pre>
<p>C&#8217;est surtout le &laquo;&nbsp;permit_sasl_authenticated&nbsp;&raquo; qui nous intéresse là.<br />
Voilà, postfix sait maintenant contrôler les expéditeurs avec l&#8217;aide de SASL. Ils doivent se signer et exister dans la base.<br />
Maintenant on met en place le TLS, si vous voulez utiliser du vrai cryptage SSL pour l&#8217;authentification.</p>
<h2>TLS : certificat et configuration</h3>
<p>Dans <code>/etc/postfix/</code>,on crée les clefs de cryptage :</p>
<pre>mxtest:/etc/postfix# openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 3650 -x509
Generating a 2048 bit RSA private key
................................................+++
................................................+++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:PARIS
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MASOCIETE
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:mondomaine.fr
Email Address []:certif@mondomaine.fr</pre>
<p><strong>IMPORTANT </strong>: le &laquo;&nbsp;Common Name&nbsp;&raquo; doit correspondonre à  votre <code>/etc/mailname</code><br />
Protégez la clef privée : <code>chmod 640 smtpd.key</code><br />
J&#8217;ai mis 10 ans, on aurait pu mettre plus ou moins, c&#8217;est le paramètre 3650 dans la ligne de commande.</p>
<p>On ajoute pour finir la conf suivante pour activer le TLS et indiquer le certificat à  utiliser. Dans <code>/etc/postfix/main.cf</code> toujours :</p>
<pre>smtpd_tls_cert_file=/etc/postfix/smtpd.cert
smtpd_tls_key_file=/etc/postfix/smtpd.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes # à  voir, ça peut interdire certains outlook buggés, je crois, de tête.
smtpd_sasl_authenticated_header = yes
</pre>
<h2>C&#8217;est fini, on relance tout ça</h2>
<p>Redémarrez postfix et saslauthd via les <code>/etc/init.d/saslauthd restart</code> et <code>/etc/init.d/postfix restart</code> qui vont bien.</p>
<h2>Tests pour l&#8217;envoi, quelques erreurs analysées</h2>
<p>Après un rapide telnet sur le port 25 (quand même), testez avec un &laquo;&nbsp;ehlo mailhost&nbsp;&raquo; puor voir si le TLS est activé :</p>
<pre>250-STARTTLS</pre>
<p>Ensuite, comme pour la réception des mails, testez avec un client mail correct, en mode SMTP normal et avec TLS.</p>
<h2>Erreurs rencontrées</h2>
<h3>Fausse manip dans /etc/pam.d/smtp</h3>
<p>Tous les tests SMTP, avec et sans TLS étaient KO. Dans les logs, simplement ça :</p>
<pre>Oct 14 13:52:39 ns305192 postfix/smtpd[6759]: connect from bla.fr[81.Y.67.X]
Oct 14 13:52:41 ns305192 postfix/smtpd[6759]: warning: SASL authentication failure: Password verification failed
Oct 14 13:52:41 ns305192 postfix/smtpd[6759]: warning: bla.fr[81.Y.67.X]: SASL PLAIN authentication failed: authentication failure
Oct 14 13:52:41 ns305192 postfix/smtpd[6759]: warning: bla.fr[81.Y.67.X]: SASL LOGIN authentication failed: authentication failure
Oct 14 13:52:43 ns305192 postfix/smtpd[6759]: disconnect from bla.fr[81.Y.67.X]</pre>
<p>Je me souviens avoir utilisé <code>saslfinger</code> pour tester et debugger. Essayez-le.<br />
Au final, je m&#8217;étais simplement trompé dans le mot de passe MySQL du fichier <code>/etc/pam.d/smtp</code></p>
<h1>Quotas</h1>
<p>Sujet totalement optionnel. J&#8217;ai besoin dans mon cas de pouvoir affecter des quotas par utilisateur.<br />
Postfix ne gère pas les quotas nativement, il faut appliquer un patch. Donc recompiler. Ou trouver une source, mais au niveau mise à jour de sécurité, vous dépendez alors du type qui maintient le dépôt.<br />
J&#8217;ai préféré appliquer moi-même le patch.<br />
Le patch est donné par ce projet : <a href="http://vda.sourceforge.net">http://vda.sourceforge.net</a>. Il est disponible pour toutes les versions postfix, notamment la 2.5.5, actuellement celle de Debian/Lenny. 32 ou 64 bits.</p>
<h2>Ajout du dépôt de sources</h2>
<p>D&#8217;abord, dans mon cas, j&#8217;ajoute un dépôt de sources, via la ligne suivante dans <code>/etc/apt/sources.list</code> :</p>
<pre>deb-src ftp://ftp2.fr.debian.org/debian/ lenny main</pre>
<p>Après un <code>aptitude update</code>, on va télécharger les sources et tout le bazar pour compiler.</p>
<h2>Récupération des sources</h2>
<pre>serv:/etc/postfix# apt-get build-dep postfix
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les NOUVEAUX paquets suivants seront installés :
  build-essential comerr-dev debhelper dpkg-dev g++ g++-4.3 gettext hardening-wrapper html2text intltool-debian libcdb-dev libcdb1 libdb-dev libdb4.6-dev libfile-remove-perl
  libkadm55 libkrb5-dev libldap2-dev libmail-box-perl libmail-sendmail-perl libmime-types-perl libmysqlclient15-dev libobject-realize-later-perl libpcre3-dev libpcrecpp0
  libpq-dev libsasl2-dev libssl-dev libstdc++6-4.3-dev libuser-identity-perl lsb-release po-debconf tinycdb zlib1g-dev
0 mis à jour, 34 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 22,7Mo dans les archives.
Après cette opération, 69,1Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ?</pre>
<p>Ensuite, on récupère les sources de postfix :</p>
<pre>serv:/etc/postfix# cd /usr/src
serv:/usr/src# apt-get source postfix</pre>
<p>Ca download et décompresse (et gueule car je n&#8217;ai pas mis la clef GPG blablabla pour vérifier la signature du paquet, tout ça).</p>
<h2>Récupération du patch, compilation</h2>
<p>On récupère le patch qui va bien pour notre version postfix et on génère les .deb</p>
<pre>cd /usr/src
wget http://vda.sourceforge.net/VDA/postfix-2.5.5-vda-ng.patch.gz
gunzip postfix-2.5.5-vda-ng.patch.gz
cd postfix-2.5.5
patch -p1 < ../postfix-2.5.5-vda-ng.patch
dpkg-buildpackage</pre>
<h2>Remplacement du postfix officiel</h2>
<p>Une fois placé dans /usr/src, un simple <code>dpkg -i postfix_2.5.5-1.1_i386.deb postfix-mysql_2.5.5-1.1_i386.deb</code> suffit à remplacer postfix et son extension mysql. Ca ne flingue même pas la conf actuelle. Bref, nickel.</p>
<h2>On ajoute le champ quota, on indique à postfix et courierauth</h2>
<p>Dans la base de données, on ajoute la colonne. J'ai choisi 20 Mo par défaut.</p>
<pre>mysql> alter table users add quota bigint (20) default '20971520' after password;
Query OK, 1 row affected (0.10 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> desc users;
+----------+-------------+------+-----+----------+-------+
| Field    | Type        | Null | Key | Default  | Extra |
+----------+-------------+------+-----+----------+-------+
| email    | varchar(80) | NO   | PRI | NULL     |       |
| password | varchar(20) | NO   |     | NULL     |       |
| quota    | bigint(20)  | YES  |     | 20971520 |       |
+----------+-------------+------+-----+----------+-------+
3 rows in set (0.00 sec)</pre>
<p>Le alter s'est occupé de mettre la valeur par défaut sur les comptes existants</p>
<p>On crée alors la requête qui vérifie les quotas :</p>
<pre>mxtest:~# cat /etc/postfix/mysql-virtual_mailbox_limit_maps.cf
user = mail_adm
password = monpassadmin
dbname = postfix
query = SELECT quota FROM users WHERE email=&apos;%s&apos;
hosts = 127.0.0.1</pre>
<p>Pensez à priver l'accès à ce fichier.</p>
<p>Et on ajoute cette notion de limite dans notre postfix-qui-sait-gérer-les-quotas, dans <code>/etc/postfix/main.fr</code> :</p>
<pre>virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "The user you are trying to reach is over quota - L'utilisateur que vous cherchez a contacter a depasse son quota de mails"
virtual_overquota_bounce = yes</pre>
<p>Sans oublier d'ajouter "<code>$virtual_mailbox_limit_maps</code>" dans la variable "<code>proxy_read_maps</code>".</p>
<h2>Indication des quotas à "courier"</h2>
<p>On précise à courier qu'il y a des quotas en créant ou décommentant la variable suivante :</p>
<pre>mxtest:~# grep quota /etc/courier/authmysqlrc
MYSQL_QUOTA_FIELD       quota</pre>
<p>On recharge le tout, on teste, on se congratule. Youpi, c'est fini.</p>
<h1>Ce que je n'ai pas traité</h1>
<h2>j'ai pas joué avec les transports</h2>
<p>Pas besoin dans mon cas.</p>
<h2>Avoir un procmailrc par utilisateur ?</h2>
<p>Aucune idée, je verrai plus tard.<br />
En effet, où doit-on stocker le .procmailrc ??? ou alors faire un /etc/procmailrc général qui éventuellement trie par destinataire... lourd.</p>
<h2>Désactivation de protocole par utilisateur</h2>
<p>Exemple, besoin de désactiver le webmail ou le POP pour un utilisateur ? A priori, avec les "critères supplémentaires" que l'on peut passer dans les fichiers .cf de description de requêtes, ça doit être jouable. Je n'ai pas cherché car pas encore eu besoin.<br />
Evidemment, il faudra ajouter une/des colonne dans la table, sûrement un booléen indiquant si le protocole est accepté pour l'utilisateur X.</p>
<h2>Alerte sur les dépassements de quota</h2>
<p>Pas eu encore le temps, mais il faudra y penser pour détecter les boulets qui ont des boîtes pleines et ne comprennent pas pourquoi ils ne reçoivent rien.<br />
Je n'ai pas encore regardé : chapitre 11 <a href="http://www.howtoforge.com/virtual-users-domains-postfix-courier-mysql-squirrelmail-debian-lenny-p3" target="_blank">dans cette page</a>.<br />
Voilà, j'espère que ça roulera pour votre installation et que vous aurez ainsi une belle plateforme de mails.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/10/20/postfix-utilisateurs-virtuels-mysql-acces-pop3s-imaps-sasl-et-tls-quota-bingo-jai-tout-mis-dans-le-titre/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Thunderbird : trier ses mails envoyés</title>
		<link>http://michauko.org/blog/2008/12/18/thunderbird-trier-ses-mails-envoyes/</link>
		<comments>http://michauko.org/blog/2008/12/18/thunderbird-trier-ses-mails-envoyes/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 23:25:01 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[bureautique]]></category>
		<category><![CDATA[coup de coeur]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[thunderbird]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=172</guid>
		<description><![CDATA[Si vous utilisez un compte en IMAP &#8211; donc messagerie synchrone entre vos PC clients et le serveur &#8211; vous êtes peut-être comme moi à tout garder. Notamment les mails envoyés. Avant, je les classais, quand j&#8217;avais le temps. Maintenant, j&#8217;ai découvert ce plug-in pour Thunderbird : &#171;&#160;Copy Sent to current&#171;&#160;. Ca permet de choisir [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous utilisez un compte en IMAP &#8211; donc messagerie synchrone entre vos PC clients et le serveur &#8211; vous êtes peut-être comme moi à tout garder. Notamment les mails envoyés.<br />
Avant, je les classais, quand j&#8217;avais le temps.</p>
<p>Maintenant, j&#8217;ai découvert ce plug-in pour Thunderbird : &laquo;&nbsp;<a href="https://addons.mozilla.org/fr/thunderbird/addon/2561">Copy Sent to current</a>&laquo;&nbsp;.</p>
<p>Ca permet de choisir à l&#8217;envoi (ou pendant la rédaction) dans quel répertoire conserver le mail envoyé : le même que le répertoire courant ? la poubelle ? le &laquo;&nbsp;Sent&nbsp;&raquo; normal ? ou un répertoire utilisé fréquemment et accessible en une touche de raccourci ?<br />
Sympa, indispensable.</p>
<p>Pour le paramétrer, pensez à 2 choses :<br />
1. Dans les propriétés du compte IMAP, menu &laquo;&nbsp;copies et dossiers&nbsp;&raquo;, il y aura un nouveau menu assez explicite<br />
2. Dans les options du module pour les raccourcis et le nombre de répertoires récents à se &laquo;&nbsp;souvenir&nbsp;&raquo;</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/12/18/thunderbird-trier-ses-mails-envoyes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>squirrelmail, beurk =&gt; IlohaMail, mieux</title>
		<link>http://michauko.org/blog/2008/07/18/squirrelmail-beurk-ilohamail-mieux/</link>
		<comments>http://michauko.org/blog/2008/07/18/squirrelmail-beurk-ilohamail-mieux/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 14:51:09 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[IlohaMail]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[squirrelmail]]></category>
		<category><![CDATA[webmail]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=138</guid>
		<description><![CDATA[P&#8217;tite intro J&#8217;utilise Squirrelmail comme client webmail pour les comptes en IMAP. C&#8217;est parfaitement fonctionnel, mais aussi très moche. On peut certes changer le look si on adore le CSS, ou en trouver d&#8217;autres sur le web (mais ça se cantonne à changer la palette de couleur), ou enfin, pour 100/150 € on peut en [...]]]></description>
			<content:encoded><![CDATA[<h1>P&#8217;tite intro</h1>
<p>J&#8217;utilise <a href="http://www.squirrelmail.org/">Squirrelmail</a> comme client webmail pour les comptes en IMAP. C&#8217;est parfaitement fonctionnel, mais aussi très moche.<br />
On peut certes changer le look si on adore le CSS, ou en trouver d&#8217;autres sur le web (mais ça se cantonne à changer la palette de couleur), ou enfin, pour 100/150 € on peut en payer un super-jouli avec des fleurs bleues dans les coins, au look de MS-LookOut.</p>
<p>Il y aussi <a href="http://www.horde.org/imp/">Horde/IMP</a>, très utilisé et complet. Et <a href="http://www.roundcube.net/">Roundcube</a>, qui monte : très très joli (en AJAX-qui-tâche) mais pas encore 100% fonctionnel (bal IMAP partagées KO par exemple).</p>
<p>Sinon il y a aussi <a href="http://blog.ilohamail.org/">IlohaMail</a>. C&#8217;est moins moche (sans être beau) et aussi simple à installer.<br />
Par contre, le développement semble bien arrêté (depuis 2006). Sur une debian testing, on est en 0.8.6-rc3sid là où la .0.8.6 est officiellement sortie et la 0.9 en beta depuis 2 ans. Pas un message depuis 2 ans sur le blog.<br />
Si vous êtes toujours en train de lire, c&#8217;est que cette vieillerie ne vous fait pas peur ; ça tombe bien vu que l&#8217;IMAP a pas du évoluer des masses depuis longtemps.<br />
Comme Squirrelmail, les &laquo;&nbsp;thèmes&nbsp;&raquo; sont en options, voire rares, voire moches, voire payants&#8230;.<br />
Bon je critique, mais pour le prix, j&#8217;en suis content.</p>
<p>Allez, mise en place de la chose (au besoin, la mise en place de squirrelmail est décrite dans ma doc <a href="http://michauko.org/docs/debian_testing/">Debian qu&#8217;il-faut-que-je-mette-à-jour-un-de-ces-quatre</a>).</p>
<h1>Pré-requis</h1>
<p>Idéalement, un serveur IMAP pour accéder à vos boîtes aux lettres, le PHP, un Apache2 et optionnellement une base de données (ex: MySQL). Regardez <a href="http://michauko.org/docs/debian_testing/">ma doc</a> si vous n&#8217;avez rien de tout ça, sauf une grosse envie de monter une Debian.</p>
<h1>Installation</h1>
<p>Ca commence sur un air connu :</p>
<pre>root@linux:~# sudo aptitude install ilohamail
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait
Les NOUVEAUX paquets suivants vont être installés :
  aspell{a} aspell-en{a} dictionaries-common{a} ilohamail libaspell15{a}
0 paquets mis à jour, 5 nouvellement installés, 0 à enlever et 4 non mis à jour.
Il est nécessaire de télécharger 1550ko/1799ko d'archives. Après dépaquetage, 8889ko seront utilisés.
Voulez-vous continuer ? [Y/n/?]</pre>
<p>Ensuite, vous aurez 2 questions :<br />
<a href='http://michauko.org/blog/wp-content/uploads/2008/07/20080718_112136.png'><img src="http://michauko.org/blog/wp-content/uploads/2008/07/20080718_112136.png" alt="Choix du serveur web pour l\&#039;autoconf" title="Choix du serveur web pour l\&#039;autoconf" width="499" height="309" class="alignnone size-full wp-image-139" /></a><br />
Si votre installation Apache2 n&#8217;est pas trop en ruine, alors ça fera ce qu&#8217;il faut tout seul.</p>
<p>La deuxième question &#8211; je n&#8217;ai pas gardé la photo &#8211; vous demande quel alias utiliser pour accéder à l&#8217;application, par défaut &laquo;&nbsp;/IlohaMail&nbsp;&raquo;. Ca se change plus tard.</p>
<h1>Utilisation</h1>
<p>Normalement, moyennant un rechargement Apache, vous devriez avoir l&#8217;application qui fonctionne en allant sur votre <code>http://votre.serveur/IlohaMail/</code> :<br />
<a href='http://michauko.org/blog/wp-content/uploads/2008/07/20080718_112850.png'><img src="http://michauko.org/blog/wp-content/uploads/2008/07/20080718_112850.png" alt="login ilohamail" title="login ilohamail" width="302" height="334" class="alignnone size-full wp-image-140" /></a><br />
A la première connexion, il y a un paramétrage des préférences. On peut choisir quel est le répertoire d&#8217;envoi et de poubelle, ça peut être bien :<br />
<a href='http://michauko.org/blog/wp-content/uploads/2008/07/20080718_113045.png'><img src="http://michauko.org/blog/wp-content/uploads/2008/07/20080718_113045.png" alt="Préférences" title="Préférences" width="500" height="133" class="alignnone size-full wp-image-141" /></a></p>
<h1>Paramétrage un peu plus avancé</h1>
<p>Dans <code>/etc/apache2/conf.d/ilohamail</code>, vous pourrez corriger l&#8217;alias si mal choisi, exemple :</p>
<pre>Alias /mail /usr/share/IlohaMail/source

< DirectoryMatch /usr/share/IlohaMail/source/>#sans espace avant DirectoryMatch
Options +FollowSymLinks
DirectoryIndex index.php
AllowOverride None
order allow,deny
allow from all
< /DirectoryMatch> # sans espace non plus</pre>
<p>Dans  <code>/etc/IlohaMail</code>, il y a plusieurs fichiers sympa. Tous les fichiers sont commentés, pratique pour comprendre les paramètres.</p>
<h2>/etc/IlohaMail/conf.php</h2>
<p><code>$backend="DB"</code> au lieu de &laquo;&nbsp;FS&nbsp;&raquo; si vous voulez stocker les données en base de données plutôt qu&#8217;en fichiers. Dans ce cas, il faudra aller dans le fichier db_conf.php pour finir la conf base de données (je ne l&#8217;ai pas fait).<br />
Notez ceux là :<br />
<code>$AUTH_MODE["imap"]</code> pour les méthodes d&#8217;authentification<br />
<code>$SMTP_SERVER défaut à localhost<br />
<code>$MAX_SESSION_TIME</code><br />
<code>$DISABLE_CALENDAR</code><br />
<code>$DISABLE_BOOKMARKS</code></p>
<h2>/etc/IlohaMail/login.php</h2>
<p><code>$default_host = "localhost"</code> par exemple, ça évitera de demander à l'utilisateur un nom de machine<br />
Comprenez aussi par là que IlohaMail, comme beaucoup de "webmail" configurables, peut aller lire vos messages IMAP d'un autre serveur. Si votre webmail IMAP au boulot ne vous plaît pas, par exemple.<br />
Vous pouvez aussi masquer la zone de saisie du serveur et ainsi éviter qu'on puisse utiliser ce webmail pour lire les messages d'un autre serveur.<br />
<code>$hide_host = 1;</code><br />
<code>$hide_protocol = 1;</code><br />
<code>$hide_rootdir = 1;</code><br />
<code>$hide_lang = 0;</code><br />
<code>$default_lang = "fr/" au lieu de "eng/"</code><br />
<code>$SSL_ENABLED = true</code>; si vous en avez besoin</p>
<h2>/etc/IlohaMail/login_title.inc</h2>
<p>Là, vous pourrez changer le message d'accueil du webmail en bidouillant un code HTML ultra-basique.</p>
<h1>The End</h1>
<p>Et voilà, c'est bon.<br />
Notez que les modifs des fichiers PHP ne nécessitent pas de rechargement d'Apache puisque ces fichiers sont lus à chaque utilisation.</p>
<p>Bon mail</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/07/18/squirrelmail-beurk-ilohamail-mieux/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Proxy POP[s]/IMAP[s] : pourquoi ? comment ?</title>
		<link>http://michauko.org/blog/2007/12/05/proxy-popsimaps-pourquoi-comment/</link>
		<comments>http://michauko.org/blog/2007/12/05/proxy-popsimaps-pourquoi-comment/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 14:04:33 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[reseau et sécu]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[perdition]]></category>
		<category><![CDATA[pop]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2007/12/05/proxy-popsimaps-pourquoi-comment/</guid>
		<description><![CDATA[Un proxy POP/IMAP est, comme son nom l&#8217;indique, un relai pour les 4 protocoles POP et IMAP, sécurisés ou non. Ca sert à placer un relai entre les clients mail et votre vrai serveur POP3 et/ou IMAP4 et/ou POP3s et/ou IMAP4s. Pourquoi donc ? par exemple pour ne rendre visible dans une DMZ que les [...]]]></description>
			<content:encoded><![CDATA[<p>Un proxy POP/IMAP est, comme son nom l&#8217;indique, un relai pour les 4 protocoles POP et IMAP, sécurisés ou non. Ca sert à placer un relai entre les clients mail et votre vrai serveur POP3 et/ou IMAP4 et/ou POP3s et/ou IMAP4s.</p>
<p>Pourquoi donc ? par exemple pour ne rendre visible dans une DMZ que les relais et non pas les serveurs POP/IMAP directement. Ca peut permettre aussi (dans le cas du logiciel <a href="http://www.vergenet.net/linux/perdition/">PERDITION</a> que je vais montrer ci-dessous) de faire une répartition par utilisateur (donc par exemple par origine) entre différents serveurs POP ou IMAP de votre infrastructure, pour de la répartition de charge ou toute autre raison qui vous semble intéressante.</p>
<p>Bon là, si ça ne vous parle pas, l&#8217;article ne vous servira à rien, revenez plus tard. Sinon, let&#8217;s go pour une introduction par un exemple de mise en place du logiciel <a href="http://www.vergenet.net/linux/perdition/">PERDITION</a>.<span id="more-89"></span></p>
<p>En deux mots, le principe d&#8217;un relai comme ça est de prendre les demandes d&#8217;authentification, de les relayer au vrai serveur de mail et suivant le résultat, de faire ou non un &laquo;&nbsp;pipe&nbsp;&raquo; vers le vrai serveur de mail (selon le protocole voulu).</p>
<p>Commencez donc par installer l&#8217;application. Sous Debian : <code>apt-get install perdition</code> par exemple.</p>
<p>Ensuite, allez dans <code>/etc/perdition/</code> et dupliquez votre fichier <code>perdition.conf</code> en <code>perdition.imap.conf</code> suivant vos besoins. Le manuel préconise en fait de créer un fichier par protocole utilisé. A la limite, le fichier d&#8217;origine <code>perdition.conf</code> ne sert plus à rien à la fin. Vous pouvez le conserver néanmoins si vous n&#8217;utiliserez dans votre proxy qu&#8217;un seul des 4 protocoles.</p>
<p>Il faut maintenant éditer ce(s) fichier(s) pour chaque protocole. Tous les paramètres sont par défaut en commentaire. A vous de choisir ce qu&#8217;il faut. Le minimum vital pour de l&#8217;IMAP4s par exemple est, (dans le fichier <code>/etc/perdition/perdition.imap4s.conf</code> du coup <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  :</p>
<pre>protocol IMAP4S
outgoing_port 993
outgoing_server imap.mondomaine.com # votre vrai serveur IMAP
ssl_mode ssl_listen # ou ssl_all, voyez la doc
ssl_ca_file /etc/ssl/certs/masociete.crt
ssl_cert_file /etc/ssl/certs/mon_imap.cert
ssl_key_file /etc/ssl/certs/mon_imap.key</pre>
<p>Quelques remarques :<br />
1) Vous n&#8217;êtes pas obligé d&#8217;utiliser une &laquo;&nbsp;Certification Authority&nbsp;&raquo;, donc dans ce cas, pas besoin de <code>"ssl_ca_file"</code>.<br />
2) Les chemins et noms de fichiers des certificats/clefs sont arbitraires.<br />
3) Pour de l&#8217;IMAP non sécurisé, vous n&#8217;auriez qu&#8217;à modifier les 3 premières lignes et laisser en commentaire celles commençant par <code>"ssl"</code>.<br />
4) Pour du POP ou POP3s, c&#8217;est le même principe.<br />
5) Enfin, le fichier de config <code>/etc/perdition/perdition*conf</code> contient pas mal d&#8217;aide sur chaque paramètre, et le <code>man perdition</code> aussi.</p>
<p>Enfin, dernière brique, préciser quels protocoles on prend en charge et vérifier que perdition est bien lancé par le système. Ca se passe dans le fichier <code>/etc/default/perdition</code> où vous irez contrôler ça :</p>
<pre>RUN_PERDITION=yes
POP3=no #ou yes
POP3S=no #ou yes
IMAP4=no #ou yes
IMAP4S=yes #ou no</pre>
<p>Pour chaque protocole que vous utilisez, vous aurez donc créé le <code>/etc/perdition/perdition.<em>protocole</em>.conf</code> qui va bien. Relancez le service via <code>"/etc/init.d/perdition restart"</code> et vérifiez que les processus <code>"perdition.<em>protocole</em>"</code> qui vous intéressent tournent.</p>
<p>Evidemment, vous vérifierez enfin que toute votre configuration firewall ressemble à quelque chose et permet notamment l&#8217;accès aux ports qui vont bien de votre proxy POP/IMAP.</p>
<p>J&#8217;oubliais, pour faire de la répartition par utilisateur (tel utilisateur sur tel serveur), il faut éditer le fichier <code>"/etc/perdition/popmap"</code>. Quelques exemples sont donnés, genre :</p>
<pre>horms:mailserver1
tymm:mailserver2
</pre>
<p>Puis créer une &laquo;&nbsp;base de données&nbsp;&raquo; (un fichier .db) via un <code>"make"</code> basé sur le Makefile disponible dans <code>/etc/perdition/Makefile</code>.<br />
(C&#8217;est un peu le même principe, en plus glauque, que le fichier /etc/aliases et sa version base de données générée par la commande postalias).<br />
Personnellement, je n&#8217;ai pas mis en place ce système de répartition, mais ça ne doit pas être bien plus compliqué que ça.</p>
<p>Voilou.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2007/12/05/proxy-popsimaps-pourquoi-comment/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Synchronisation des carnet d&#8217;adresses Thunderbird</title>
		<link>http://michauko.org/blog/2007/04/13/synchronisation-des-carnet-dadresses-thunderbird/</link>
		<comments>http://michauko.org/blog/2007/04/13/synchronisation-des-carnet-dadresses-thunderbird/#comments</comments>
		<pubDate>Fri, 13 Apr 2007 08:59:46 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[bureautique]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[abook]]></category>
		<category><![CDATA[addressbooks synchronizer]]></category>
		<category><![CDATA[adresses]]></category>
		<category><![CDATA[carnet]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[partage]]></category>
		<category><![CDATA[thunderbird]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2007/04/13/synchronisation-des-carnet-dadresses-thunderbird/</guid>
		<description><![CDATA[J&#8217;utilise Thunderbird à la maison, au boulot, en clef USB, sur plusieurs OS, sur plusieurs machines etc. Bref, pour synchroniser les mails, ça va, j&#8217;utilise de l&#8217;IMAP, mais pour synchroniser les carnets d&#8217;adresses, c&#8217;était la lutte, à grands coups de copies de fichier &#171;&#160;abook.mab&#160;&#187; ou de liens symboliques foireux. J&#8217;ai trouvé un plug-in sympa qui [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;utilise Thunderbird à la maison, au boulot, en clef USB, sur plusieurs OS, sur plusieurs machines etc. Bref, pour synchroniser les mails, ça va, j&#8217;utilise de l&#8217;IMAP, mais pour synchroniser les carnets d&#8217;adresses, c&#8217;était la lutte, à grands coups de copies de fichier &laquo;&nbsp;abook.mab&nbsp;&raquo; ou de liens symboliques foireux.<br />
J&#8217;ai trouvé un plug-in sympa qui permet de faire une &laquo;&nbsp;sorte&nbsp;&raquo; de synchro (cf. ci-dessous) par différentes méthodes (mise à dispo sur FTP, partage CIFS etc) et notamment via une boîte aux lettres partagée en IMAP.<span id="more-13"></span></p>
<p>Donc, avec ce présent article et <a href="http://michauko.org/blog/2007/04/12/partage-de-boite-mail-maildir-en-imap/">mon post précédent dans ce blog sur le partage de répertoire IMAP</a>, vous devriez avoir un carnet d&#8217;adresses unique, centralisé, tout ça&#8230;<br />
Ce n&#8217;est pas complètement rose car une limitation du plug-in en question (<a href="https://addons.mozilla.org/thunderbird/addon/2533">dispo ici</a>) est qu&#8217;il ne fait pas réellement de synchronisation, mais permet juste d&#8217;envoyer ou de récupérer un carnet d&#8217;adresses. C&#8217;est déjà ça.</p>
<p>Je décris ci-dessous la méthode via un répertoire partagé IMAP, c&#8217;est le plus polyvalent à mon avis si vous utilisez votre Thunderbird partout. Exemple : sur des réseaux différents, au boulot où le FTP ne passe pas simplement et où un partage CIFS / Samba avec votre machine chez vous n&#8217;est pas vraiment envisageable.</p>
<p>Personnellement, j&#8217;ai créé une boîte aux lettres partagées spécifique pour ça et je partage ça avec plusieurs utilisateurs (ma femme, mon chat ; les gosses sont trop petits). Ca donne ça :</p>
<p><img id="image16" src="http://michauko.org/blog/wp-content/uploads/2007/04/thunderbird_synchro1.png" alt="Boîte mail partagée dédiée" /></p>
<p>Ensuite, vous installez <a href="https://addons.mozilla.org/thunderbird/addon/2533">le plug-in AddressBooks Synchronizer</a> depuis Thunderbird et vous le configurez comme suit :</p>
<p><img id="image17" src="http://michauko.org/blog/wp-content/uploads/2007/04/thunderbird_synchro2.png" alt="Configuration AddressBooks Synchronizer" /></p>
<p>J&#8217;ai opté pour faire les mises à jour (envois du fichier) à la main et le téléchargement automatiquement.</p>
<p>Et wala</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2007/04/13/synchronisation-des-carnet-dadresses-thunderbird/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Partage de boîte mail (Maildir) en IMAP</title>
		<link>http://michauko.org/blog/2007/04/12/partage-de-boite-mail-maildir-en-imap/</link>
		<comments>http://michauko.org/blog/2007/04/12/partage-de-boite-mail-maildir-en-imap/#comments</comments>
		<pubDate>Thu, 12 Apr 2007 14:53:19 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[courier-imap]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[Maildir]]></category>
		<category><![CDATA[maildirmake]]></category>
		<category><![CDATA[partage]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2007/04/12/partage-de-boite-mail-maildir-en-imap/</guid>
		<description><![CDATA[J&#8217;utilise le serveur &#171;&#160;courier-imap&#160;&#187; comme serveur IMAP. J&#8217;ai eu besoin d&#8217;avoir des boîtes mails communes. C&#8217;est pratique comme tout : on défini les accès par utilisateur (consultation, écriture de nouveaux mails etc), puis roule, tout le monde patauge dans la même mare. C&#8217;est bien fait, exemple : un utilisateur qui lit un message voit ce [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;utilise le serveur &laquo;&nbsp;courier-imap&nbsp;&raquo; comme serveur IMAP. J&#8217;ai eu besoin d&#8217;avoir des boîtes mails communes. C&#8217;est pratique comme tout : on défini les accès par utilisateur (consultation, écriture de nouveaux mails etc), puis roule, tout le monde patauge dans la même mare.</p>
<p>C&#8217;est bien fait, exemple : un utilisateur qui lit un message voit ce message passer en statut &laquo;&nbsp;lu&nbsp;&raquo;, mais uniquement pour lui, pas pour ses petits copains.<span id="more-10"></span></p>
<p><strong>Le principe est le suivant :</strong></p>
<p>1) Je crée une arborescence &laquo;&nbsp;Maildir&nbsp;&raquo; spécifique pour les partages (surtout pas dans mon &laquo;&nbsp;Maildir&nbsp;&raquo; standard, c&#8217;est mal).</p>
<p>2) Je crée, dans cette arborescence, un ou plusieurs répertoires de mails auxquels je donnerai des droits propres, par utilisateur.</p>
<p>3) J&#8217;affecte les droits qui vont bien aux utilisateurs, pour chaque répertoires de mails.</p>
<p>4) Les utilisateurs qui ont ainsi des accès à des boîtes partagées (et moi le premier) déclarent ces partages en deux temps :<br />
a) Dans leur Maildir &laquo;&nbsp;normale&nbsp;&raquo;, ils indiquent des liens vers des &laquo;&nbsp;Shared-Maildir&nbsp;&raquo; où ils ont des répertoires partagés.<br />
b) Puis dans leur client IMAP (que ce soit du web genre Squirrelmail ou du lourd genre Thunderbird&#8230;), ils s&#8217;abonnent aux répertoires de mails qui les intéressent et pour lesquels ils ont des droits.</p>
<p>5) Enfin, c&#8217;est probablement optionnel mais néanmoins confortable, les utilisateurs se créent une seconde &laquo;&nbsp;identité&nbsp;&raquo; (terme dans Thunderbird) dans laquelle ils indiquent que les messages envoyés sous cette identité iront dans la boîte partagée. Sinon, un déplacement du INBOX.Sent standard vers le répertoire partagé doit fonctionner aussi je pense.</p>
<p><strong>Après la théorie, la pratique.</strong><br />
Dans l&#8217;exemple ci-dessous, je suis l&#8217;utilisateur &laquo;&nbsp;marcel&nbsp;&raquo; (qui n&#8217;est pas le root) et je veux partager un répertoire de mails &laquo;&nbsp;BoulotCommunAvecMarcel&nbsp;&raquo; avec l&#8217;utilisateur &laquo;&nbsp;dupont&nbsp;&raquo;.</p>
<p><strong>1) Je crée un &laquo;&nbsp;Maildir&nbsp;&raquo; &laquo;&nbsp;partageable&nbsp;&raquo; :</strong></p>
<pre>marcel:$ maildirmake -S /libre/SharedMaildirDeMarcel</pre>
<p>La notion de &laquo;&nbsp;partageable&nbsp;&raquo; (-S) se traduit simplement par quelques permissions. Ca fait quelque chose comme un
<pre>chmod go+rx</pre>
<p> qui va bien là où un &laquo;&nbsp;Maildir&nbsp;&raquo; normal est en permissions 700.</p>
<p><strong>2) Dans cette coquille vide, je crée un répertoire &laquo;&nbsp;BoulotCommunAvecMarcel&nbsp;&raquo;</strong> en spécifiant &laquo;&nbsp;qu&#8217;il y aura des droits d&#8217;écriture&nbsp;&raquo; (sans pour l&#8217;instant définir les droits par utilisateur) :</p>
<pre>marcel:$ maildirmake -f BoulotCommunAvecMarcel -s write /libre/SharedMaildirDeMarcel/</pre>
<p>On peut boucler sur cette étape pour créer d&#8217;autres répertoires partagé bien sûr : ProjetToto, MailsDebiles etc.</p>
<p><strong>3) Je donne les droits :</strong></p>
<pre>marcel:$ maildiracl -set /libre/SharedMaildirDeMarcel INBOX.BoulotCommunAvecMarcel user=marcel +aceilrstwx</pre>
<p>Je sais pas si c&#8217;est nécessaire, étant le proprio.<br />
Le détail des droits &laquo;&nbsp;aceilrstwx&nbsp;&raquo; est dans le
<pre>man maildiracl</pre>
<p>.<br />
Puis, pour mon utilisateur dupont, je lui donne le droits notamment d&#8217;écriture :</p>
<pre>marcel:$ maildiracl -set /libre/SharedMaildirDeMarcel INBOX.BoulotCommunAvecMarcel user=dupont +ilrs</pre>
<p>Vous pouvez contrôler le résultat grâce à la commande suivante :</p>
<pre>marcel:$ maildiracl -list /libre/SharedMaildirDeMarcel INBOX.BoulotCommunAvecMarcel</pre>
<p>Ce qui donne :</p>
<pre>owner   aceilrstwx
administrators  aceilrstwx
user=marcel    aceilrstwx
user=dupont  ilrs</pre>
<p>Enfin, vous pouvez itérer sur ces commandes pour partager d&#8217;autres répertoires avec d&#8217;autres utilisateurs.</p>
<p><strong>4) Les utilisateurs déclarent qu&#8217;il veut accéder à des shared-maildirs :</strong></p>
<pre>dupont:$ maildirmake --add mesbalpartagees=/libre/SharedMaildirDeMarcel ~/Maildir/</pre>
<p><em>(attention : &laquo;&nbsp;moins moins add&nbsp;&raquo;, wordpress me coupe un des &laquo;&nbsp;-&nbsp;&raquo;, excusez-moi)</em><br />
En gros, ça déclare dans votre ~/Maildir/shared-maildirs que vous pouvez vous abonner à des répertoires partagés dans /libre/Sharedblablabla et que vous donnez le petit nom &laquo;&nbsp;mesbalpartagees&nbsp;&raquo; à ce &laquo;&nbsp;lien&nbsp;&raquo;.</p>
<p>Ensuite il faut s&#8217;abonner à ces répertoires partagés. Exemple en quelques mots depuis Thunderbird : bouton droit depuis le &laquo;&nbsp;courrier entrant&nbsp;&raquo; de votre compte, puis &laquo;&nbsp;s&#8217;abonner&nbsp;&raquo;. En plus de &laquo;&nbsp;INBOX&nbsp;&raquo;, vous verrez &laquo;&nbsp;shared&nbsp;&raquo;, et dedans, comme par magie, les répertoires de mails où vous avez des droits (issus de &laquo;&nbsp;maildiracl&nbsp;&raquo;).</p>
<p>Notez que &laquo;&nbsp;marcel&nbsp;&raquo;, le propriétaire, devra le faire aussi. C&#8217;est pas parce-qu&#8217;il est proprio qu&#8217;il s&#8217;est abonné à ce répertoire.</p>
<p><strong>5) Gérer les identités (dans Thunderbird) :</strong><br />
Dans les &laquo;&nbsp;paramètres du compte&nbsp;&raquo;, bouton &laquo;&nbsp;gérer les identités&nbsp;&raquo;. L&#8217;idée est de paramétrer la chose pour dire : les éléments envoyés par cette identité seront stockés dans la boîte mail partagée.<br />
<img id="image11" src="http://michauko.org/blog/wp-content/uploads/2007/04/imap_identites_thunderbird.png" alt="Identité dans Thunderbird" /><br />
Enfin, à la composition d&#8217;un mail, vous choisirez la bonne identité pour que ça se comporte comme prévu.<br />
Sinon, sans jouer avec tout ça, vous déplacez le message à publier de &laquo;&nbsp;INBOX.Sent&nbsp;&raquo; à &laquo;&nbsp;shared.BoulotCommunAvecMarcel&nbsp;&raquo;. Pigé ?</p>
<p>Ca a l&#8217;air compliqué, mais c&#8217;est relativement simple en fait.</p>
<p>Dommage qu&#8217;il n&#8217;y ait pas &#8211; à ma connaissance &#8211; un plug-in qui va bien pour Thunderbird ou pour un webmail pour gérer tout ça avec des clics.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2007/04/12/partage-de-boite-mail-maildir-en-imap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

