<?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>Marwan KHELIF &#187; Linux</title>
	<atom:link href="http://www.mkhelif.fr/tag/linux/feed" rel="self" type="application/rss+xml" />
	<link>http://www.mkhelif.fr</link>
	<description>Le blog d&#039;un développeur</description>
	<lastBuildDate>Sun, 07 Mar 2010 21:30:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Chrome OS : premi&#232;re pr&#233;sentation</title>
		<link>http://www.mkhelif.fr/2009/11/19/chrome-os-premire-prsentation.html</link>
		<comments>http://www.mkhelif.fr/2009/11/19/chrome-os-premire-prsentation.html#comments</comments>
		<pubDate>Thu, 19 Nov 2009 16:57:23 +0000</pubDate>
		<dc:creator>mkhelif</dc:creator>
				<category><![CDATA[Actualités]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.mkhelif.fr/?p=417</guid>
		<description><![CDATA[ 
Google avait annoncé, le 7 juillet 2009, le développement du système d’exploitation Chrome OS : un système orienté Web. Aujourd’hui a eu lieu à 19h une conférence de présentation du système d’exploitation OS. En attendant des articles plus techniques qui vont surement voir le jour d’ici peu sur la toile, voici une présentation du [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><a href="http://www.mkhelif.fr/wp-content/uploads/2009/11/sdres_0000_Basic.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sdres_0000_Basic" border="0" alt="sdres_0000_Basic" src="http://www.mkhelif.fr/wp-content/uploads/2009/11/sdres_0000_Basic_thumb.png" width="496" height="281" /></a> </p>
<p>Google avait annoncé, le 7 juillet 2009, le développement du système d’exploitation Chrome OS : un système orienté Web. Aujourd’hui a eu lieu à 19h une conférence de présentation du système d’exploitation OS. En attendant des articles plus techniques qui vont surement voir le jour d’ici peu sur la toile, voici une présentation du système d’exploitation vu par Google. Le <a href="http://sites.google.com/a/chromium.org/dev/chromium-os/building-chromium-os/getting-the-chromium-os-source-code">code source du système d’exploitation</a> est déjà disponible.</p>
<p>Voici la vidéo officielle de Google Chrome OS :</p>
<p style="text-align: center"><object width="425" height="349"><param name="movie" value="http://www.youtube.com/v/0QRO3gKj3qw&amp;border=1&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hl=fr_FR&amp;feature=player_embedded&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/0QRO3gKj3qw&amp;border=1&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hl=fr_FR&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="349"></embed></object></p>
</p>
<h1></h1>
<p>Le système d’exploitation est basé sur une distribution Debian allégée et est en fait un simple navigateur Web, Chrome bien entendu. L’objectif est clairement de faire un système d’exploitation rapide, on peut ainsi le voir démarrer en <a href="http://www.youtube.com/watch?v=mTFfl7AjNfI">3 secondes</a>…, et orienté pour le Web.</p>
<p>Ainsi après s’être connecté a votre compte utilisateur vous êtes directement sur Internet avec des onglet servant : de menu “Démarrer” avec la liste de vos applications Web, de client mail (GMail), … Chrome OS mise sur le développement des applications Web basées sur <a href="http://www.mkhelif.fr/2009/02/18/html-5-deux-nouveaux-documents.html">HTML 5</a> pour offrir toutes les nouveautés et améliorations de la nouvelle spécification (gestion de contenu hors-ligne particulièrement).</p>
<p align="center"><a href="http://www.mkhelif.fr/wp-content/uploads/2009/11/sdres_0001_AppMenu.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sdres_0001_App-Menu" border="0" alt="sdres_0001_App-Menu" src="http://www.mkhelif.fr/wp-content/uploads/2009/11/sdres_0001_AppMenu_thumb.png" width="496" height="281" /></a> </p>
<p>Au niveau de la sécurité, toutes les applications s’exécutent par défaut dans une sandbox n’ayant ainsi pas accès à l’ensemble des ressources de la machine. Étant basé sur Chrome, tous les onglets (donc les applications) s’exécutent dans des processus différents et sont donc indépendants les uns des autres.</p>
<p>L’authentification se fera soit grâce à votre compte Google si vous êtes connecté, soit grâce à des comptes configurés en local, soit grâce à un fournisseur supportant OpenID.</p>
<p>Lors de l’ouverture/téléchargement d’un fichier, si le type est reconnu et associé à une application celle ci s’ouvre pour afficher le fichier.</p>
<p align="center"><a href="http://www.mkhelif.fr/wp-content/uploads/2009/11/sdres_0002_Panels.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sdres_0002_Panels" border="0" alt="sdres_0002_Panels" src="http://www.mkhelif.fr/wp-content/uploads/2009/11/sdres_0002_Panels_thumb.png" width="496" height="281" /></a> </p>
<p>Annoncé pour 2010, le matériel devra être certifié par Google… Certes ce n’est pas un système d’exploitation fait pour un poste de travail, par contre la cible est clairement pour les mini-netbooks (EeePc ou autre).</p>
<p>Pensez-vous que Google va réussir à s’immiscer directement au cœur de nos machines maintenant?</p>
<h3>Pour suivre votre lecture</h3>
<ul class="related_post">
<li><a href="http://www.mkhelif.fr/2009/08/04/chrome-des-thmes-et-de-la-synchronisation.html" title="Chrome : des thèmes et de la synchronisation">Chrome : des thèmes et de la synchronisation</a></li>
<li><a href="http://www.mkhelif.fr/2009/07/08/google-annonce-chrome-os.html" title="Google annonce Chrome OS">Google annonce Chrome OS</a></li>
<li><a href="http://www.mkhelif.fr/2009/03/24/chrome-comment-crer-une-extension.html" title="Chrome : comment créer une extension ?">Chrome : comment créer une extension ?</a></li>
<li><a href="http://www.mkhelif.fr/2010/01/14/gwt-2-0-les-nouvelles-fonctionnalits.html" title="GWT 2.0 : les nouvelles fonctionnalités">GWT 2.0 : les nouvelles fonctionnalités</a></li>
<li><a href="http://www.mkhelif.fr/2009/12/15/goo-gl-le-raccourcisseur-durl-by-google.html" title="Goo.gl : le raccourcisseur d&rsquo;URL by Google">Goo.gl : le raccourcisseur d&rsquo;URL by Google</a></li>
<li><a href="http://www.mkhelif.fr/2009/09/12/cinq-moyens-pour-grer-son-identit-virtuelle.html" title="Cinq moyens pour g&eacute;rer son identit&eacute; virtuelle">Cinq moyens pour g&eacute;rer son identit&eacute; virtuelle</a></li>
<li><a href="http://www.mkhelif.fr/2009/09/07/ruby-on-rails-dployer-une-application-sur-tomcat-avec-jruby.html" title="Ruby on Rails : d&eacute;ployer une application sur Tomcat avec JRuby">Ruby on Rails : d&eacute;ployer une application sur Tomcat avec JRuby</a></li>
</ul>
       ]]></content:encoded>
			<wfw:commentRss>http://www.mkhelif.fr/2009/11/19/chrome-os-premire-prsentation.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails : d&#233;ployer une application sur Tomcat avec JRuby</title>
		<link>http://www.mkhelif.fr/2009/09/07/ruby-on-rails-dployer-une-application-sur-tomcat-avec-jruby.html</link>
		<comments>http://www.mkhelif.fr/2009/09/07/ruby-on-rails-dployer-une-application-sur-tomcat-avec-jruby.html#comments</comments>
		<pubDate>Mon, 07 Sep 2009 15:46:18 +0000</pubDate>
		<dc:creator>mkhelif</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.mkhelif.fr/?p=350</guid>
		<description><![CDATA[ Ruby on Rails est un framework qui permet de développer très rapidement des applications Web en suivant le modèle MVC.
Le problème de ce framework est qu’il se base sur le langage Ruby et qu’il embarque un serveur Web. Les applications ainsi créées ne peuvent pas être déployées comme des applications Web dans Tomcat ou [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mkhelif.fr/wp-content/uploads/2009/09/rails.png"><img style="border-right-width: 0px; margin: 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="rails" src="http://www.mkhelif.fr/wp-content/uploads/2009/09/rails_thumb.png" border="0" alt="rails" width="87" height="111" align="left" /></a> Ruby on Rails est un framework qui permet de développer très rapidement des applications Web en suivant le modèle MVC.</p>
<p>Le problème de ce framework est qu’il se base sur le langage Ruby et qu’il embarque un serveur Web. Les applications ainsi créées ne peuvent pas être déployées comme des applications Web dans Tomcat ou autres serveurs d’applications.</p>
<p>Le but de ce tutoriel est de vous permettre de déployer les applications Ruby on Rails (RoR) sur un serveur Tomcat en utilisant la librairie <a href="http://jruby.org/" target="_blank">JRuby</a>.</p>
<h3>Installation Tomcat</h3>
<p>On commence par <a href="http://mirror.mkhelif.fr/apache/tomcat/" target="_blank">télécharger la dernière version de Tomcat</a> (en ce moment c’est la version 6.0.20) :</p>

<div class="wp_codebox"><table><tr id="p3509"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p350code9"><pre class="sh" style="font-family:monospace;">wget http://mirror.mkhelif.fr/apache/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
tar –xzf apache-tomcat-6.0.20.tar.gz</pre></td></tr></table></div>

<p>Voilà Tomcat est installé, je passerai ici la configuration du serveur. Si vous souhaitez, suivez mon <a href="http://www.mkhelif.fr/2008/06/18/passerelle-entre-apache-et-tomcat.html">tutoriel pour connecter Apache avec Tomcat</a>.</p>
<h3>Installation JRuby</h3>
<p><a href="http://jruby.org/download">Télécharger JRuby</a> et placez le là où vous souhaitez :</p>

<div class="wp_codebox"><table><tr id="p35010"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p350code10"><pre class="sh" style="font-family:monospace;">wget http://dist.codehaus.org/jruby/1.3.1/jruby-bin-1.3.1.tar.gz
tar –xzf jruby-bin-1.3.1.tar.gz
mv jruby-1.3.1 /usr/local/jruby</pre></td></tr></table></div>

<p>Ajouter ensuite le chemin vers JRuby dans votre environnement en éditant votre fichier <em>~/.profile</em> :</p>

<div class="wp_codebox"><table><tr id="p35011"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p350code11"><pre class="sh" style="font-family:monospace;">export PATH=$PATH:/usr/local/jruby/bin</pre></td></tr></table></div>

<p>Vous pouvez vérifier l’installation de JRuby en exécutant la commande suivante :</p>

<div class="wp_codebox"><table><tr id="p35012"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p350code12"><pre class="sh" style="font-family:monospace;">$ jruby -v
jruby 1.3.1 (ruby 1.8.6p287) (2009-06-15 2fd6c3d) (Java HotSpot(TM) Client VM 1.5.0_16) [i386-java]</pre></td></tr></table></div>

<h3>Installation de Ruby on Rails</h3>
<p>À partir de là nous allons installer les gems pour : rails (le coeur de ROR), mysql et surtout warbler (qui crée un WAR à partir de l’application rails).</p>

<div class="wp_codebox"><table><tr id="p35013"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p350code13"><pre class="sh" style="font-family:monospace;">$ jruby -S gem install rails
$ jruby -S gem install activerecord-jdbcmysql-adapter
$ jruby -S gem install warbler</pre></td></tr></table></div>

<h3>Déploiement de votre application</h3>
<p>Pour déployer votre application dans Tomcat, il faut commencer par la convertir en WAR. Placez vous dans le dossier de votre application et lancez la commande suivante :</p>

<div class="wp_codebox"><table><tr id="p35014"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p350code14"><pre class="sh" style="font-family:monospace;">$ warble config</pre></td></tr></table></div>

<p>Cela va créer un fichier <em>&lt;application&gt;/config/warble.rb</em> pour configurer votre application pour la convertir en fichier WAR, ouvrez le fichier et dé-commentez la ligne :</p>

<div class="wp_codebox"><table><tr id="p35015"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p350code15"><pre class="sh" style="font-family:monospace;">config.gems += [&quot;activerecord-jdbcmysql-adapter&quot;]</pre></td></tr></table></div>

<p>Cela pour inclure dans votre fichiers WAR la gem MySQL (ajoutez les gems que votre application utilise ici).</p>
<p>Maintenant nous allons créer le fichier WAR de votre application, lancez simplement la commande :</p>

<div class="wp_codebox"><table><tr id="p35016"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p350code16"><pre class="sh" style="font-family:monospace;">$ warble</pre></td></tr></table></div>

<p>Et voilà votre fichier WAR est créé, vous pouvez alors le déployer sur Tomcat (je passerai sur cette étape).<br />
<h3>Pour suivre votre lecture</h3>
<ul class="related_post">
<li><a href="http://www.mkhelif.fr/2010/01/14/gwt-2-0-les-nouvelles-fonctionnalits.html" title="GWT 2.0 : les nouvelles fonctionnalités">GWT 2.0 : les nouvelles fonctionnalités</a></li>
<li><a href="http://www.mkhelif.fr/2009/04/08/google-gwt-version-16-et-consorts.html" title="Google : GWT version 1.6 et consorts">Google : GWT version 1.6 et consorts</a></li>
<li><a href="http://www.mkhelif.fr/2008/06/18/passerelle-entre-apache-et-tomcat.html" title="Passerelle entre Apache et Tomcat">Passerelle entre Apache et Tomcat</a></li>
<li><a href="http://www.mkhelif.fr/2009/11/19/chrome-os-premire-prsentation.html" title="Chrome OS : premi&egrave;re pr&eacute;sentation">Chrome OS : premi&egrave;re pr&eacute;sentation</a></li>
<li><a href="http://www.mkhelif.fr/2009/08/21/tests-en-charge-dec2-gae-et-azure.html" title="Tests en charge d&rsquo;EC2, GAE et Azure">Tests en charge d&rsquo;EC2, GAE et Azure</a></li>
<li><a href="http://www.mkhelif.fr/2008/10/21/gwt-16-tomcat-ou-jetty.html" title="GWT 1.6 : Tomcat ou Jetty ?">GWT 1.6 : Tomcat ou Jetty ?</a></li>
<li><a href="http://www.mkhelif.fr/2008/06/23/apache2-systeme-de-blacklist.html" title="Apache2 : système de blacklist">Apache2 : système de blacklist</a></li>
</ul>
       ]]></content:encoded>
			<wfw:commentRss>http://www.mkhelif.fr/2009/09/07/ruby-on-rails-dployer-une-application-sur-tomcat-avec-jruby.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google annonce Chrome OS</title>
		<link>http://www.mkhelif.fr/2009/07/08/google-annonce-chrome-os.html</link>
		<comments>http://www.mkhelif.fr/2009/07/08/google-annonce-chrome-os.html#comments</comments>
		<pubDate>Wed, 08 Jul 2009 15:08:29 +0000</pubDate>
		<dc:creator>mkhelif</dc:creator>
				<category><![CDATA[Actualités]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.mkhelif.fr/2009/07/08/google-annonce-chrome-os.html</guid>
		<description><![CDATA[Malgré mes vacances je ne peux pas rater cette annonce et j’écris donc ce billet.
Après le lancement il y à neuf mois du navigateur Google Chrome, Google annonce sur son blog officiel un système d’exploitation spécifique pour le Web : Google Chrome OS.
Basé sur un noyau Linux,&#160; la cible de cet OS sont les ordinateurs [...]]]></description>
			<content:encoded><![CDATA[<p>Malgré mes vacances je ne peux pas rater cette annonce et j’écris donc ce billet.</p>
<p>Après le lancement il y à neuf mois du navigateur Google Chrome, Google annonce sur <a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html">son blog officiel</a> un système d’exploitation spécifique pour le Web : Google Chrome OS.</p>
<p>Basé sur un noyau Linux,&#160; la cible de cet OS sont les ordinateurs portables. Le code source, Open-Source évidemment, devrait arriver d’ici à la fin de l’année et les premières machines directement vendues avec Chrome OS au cours du second semestre de 2010.</p>
<p>Les objectifs annoncés sont : la rapidité, la simplicité et la sécurité ; l’objectif est de réduire la durée d’accès au Web (démarrage de la machine et de l’OS puis lancement du navigateur). Le navigateur embarqué est évidemment Google Chrome qui a déjà fait ses preuves pour sa rapidité et sa légèreté.</p>
<p>Un nouveau gestionnaire de fenêtres sur le noyau Linux devrait voir le jour permettant d’utiliser des applications Web de la même façon que des applications standards. Android ayant déjà été utilisé avec succès sur un ordinateur portable, il y aura forcément un chevauchement entre les deux solutions, mais toujours selon Google, les cibles ne sont pas les mêmes.</p>
<p>On verra dans le courant de l’année avec la publication du code source comment va réagir la communauté.</p>
<h3>Pour suivre votre lecture</h3>
<ul class="related_post">
<li><a href="http://www.mkhelif.fr/2009/11/19/chrome-os-premire-prsentation.html" title="Chrome OS : premi&egrave;re pr&eacute;sentation">Chrome OS : premi&egrave;re pr&eacute;sentation</a></li>
<li><a href="http://www.mkhelif.fr/2009/08/04/chrome-des-thmes-et-de-la-synchronisation.html" title="Chrome : des thèmes et de la synchronisation">Chrome : des thèmes et de la synchronisation</a></li>
<li><a href="http://www.mkhelif.fr/2009/03/24/chrome-comment-crer-une-extension.html" title="Chrome : comment créer une extension ?">Chrome : comment créer une extension ?</a></li>
<li><a href="http://www.mkhelif.fr/2010/01/14/gwt-2-0-les-nouvelles-fonctionnalits.html" title="GWT 2.0 : les nouvelles fonctionnalités">GWT 2.0 : les nouvelles fonctionnalités</a></li>
<li><a href="http://www.mkhelif.fr/2009/12/15/goo-gl-le-raccourcisseur-durl-by-google.html" title="Goo.gl : le raccourcisseur d&rsquo;URL by Google">Goo.gl : le raccourcisseur d&rsquo;URL by Google</a></li>
<li><a href="http://www.mkhelif.fr/2009/09/12/cinq-moyens-pour-grer-son-identit-virtuelle.html" title="Cinq moyens pour g&eacute;rer son identit&eacute; virtuelle">Cinq moyens pour g&eacute;rer son identit&eacute; virtuelle</a></li>
<li><a href="http://www.mkhelif.fr/2009/09/07/ruby-on-rails-dployer-une-application-sur-tomcat-avec-jruby.html" title="Ruby on Rails : d&eacute;ployer une application sur Tomcat avec JRuby">Ruby on Rails : d&eacute;ployer une application sur Tomcat avec JRuby</a></li>
</ul>
       ]]></content:encoded>
			<wfw:commentRss>http://www.mkhelif.fr/2009/07/08/google-annonce-chrome-os.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Authentification SSH par clé privée/clé publique</title>
		<link>http://www.mkhelif.fr/2008/11/24/authentification-ssh-par-cl-privecl-publique.html</link>
		<comments>http://www.mkhelif.fr/2008/11/24/authentification-ssh-par-cl-privecl-publique.html#comments</comments>
		<pubDate>Mon, 24 Nov 2008 14:36:44 +0000</pubDate>
		<dc:creator>mkhelif</dc:creator>
				<category><![CDATA[Cryptographie]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Tutoriel]]></category>

		<guid isPermaLink="false">http://www.mkhelif.fr/2008/11/24/authentification-ssh-par-cl-privecl-publique.html</guid>
		<description><![CDATA[En voyant l&#8217;intérêt que les visiteurs de mon blog porte à l&#8217;installation d&#8217;un serveur de mail multi-domaines, j&#8217;ai décidé d&#8217;écrire un autre tutoriel sur la configuration d&#8217;un serveur SSH pour utiliser une connexion par clé publique/clé privée.

Fonctionnement
L&#8217;objectif d&#8217;une authentification par clés est de supprimer l&#8217;envoi de mots de passe par le réseau. Pour cela il [...]]]></description>
			<content:encoded><![CDATA[<p>En voyant l&#8217;intérêt que les visiteurs de mon blog porte à l&#8217;installation d&#8217;un serveur de mail multi-domaines, j&#8217;ai décidé d&#8217;écrire un autre tutoriel sur la configuration d&#8217;un serveur SSH pour utiliser une connexion par clé publique/clé privée.</p>
<p><span id="more-156"></span></p>
<p><strong>Fonctionnement</strong></p>
<p>L&#8217;objectif d&#8217;une authentification par clés est de supprimer l&#8217;envoi de mots de passe par le réseau. Pour cela il faut deux clés : une clé privée (seul l&#8217;utilisateur doit pouvoir y avoir accès) et une clé publique (doit être déployée sur toutes les machines où l&#8217;on souhaite se connecter).</p>
<p>La clé publique peut crypter les données et seule la clé privée peut les décrypter. Dans l&#8217;autre sens la clé privée <strong>signe</strong> les messages, la clé publique permet alors de s&#8217;assurer que le message vient bien du bon utilisateur. C&#8217;est le cryptage asymétrique.</p>
<p>Pour SSH, c&#8217;est exactement la même chose. Le serveur envoi un <em>challenge</em> au client : message crypté à partir de la clé publique. La connexion ne sera acceptée uniquement si le client répond correctement à ce message (c&#8217;est à dire qu&#8217;il a réussi à décrypter le message).</p>
<h3>Configuration du serveur SSH</h3>
<p>Par défaut le serveur SSH n&#8217;accepte pas les connections par clés mais uniquement par mot de passe. On va donc activer cette méthode d&#8217;authentification :</p>
<blockquote><p><span style="color: #333333;">Dans le fichier : <em>/etc/ssh/sshd_config</em></span></p>
<pre>RSAAuthentication    yes
PubkeyAuthentication yes
AuthorizedKeysFile   %h/.ssh/authorized_keys</pre>
</blockquote>
<p>Pour des questions de sécurité vous pouvez désactiver la connexion avec le login <strong>root</strong> :</p>
<blockquote>
<pre>PermitRootLogin no</pre>
</blockquote>
<p>Il suffit de redémarrer le serveur SSH : <em>/etc/init.d/ssh restart</em></p>
<p>Si vous souhaitez refuser l&#8217;authentification par mot de passe (pour éviter les attaques bruteforce et ainsi que les logs se remplissent pour rien) il faut positionner l&#8217;option suivante :</p>
<blockquote>
<pre>PasswordAuthentication no</pre>
</blockquote>
<h3>Création des clés</h3>
<p>Il y a deux manières pour créer les clés :</p>
<ol>
<li>Sur un poste Linux :
<ol>
<li>Lancer la commande suivante : <em>ssh-keygen -t rsa</em></li>
<li><em>Laisser les noms par défaut et entrer le mot de passe pour la clé privée.</em></li>
</ol>
</li>
<li>Sur un poste Windows :
<ol>
<li>Utiliser <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank">PuttyGen</a> pour générer les clés.</li>
</ol>
</li>
</ol>
<p>Ensuite il faut copier la clé publique <em>id_rsa.pub</em> sur le serveur auquel on souhaite se connecter et conserver la clé privée sur le poste client.</p>
<p>Dans le répertoire de l&#8217;utilisateur on crée un répertoire <em>.ssh </em>(répertoire par défaut où le serveur SSH va chercher les clés publiques) et on renomme le fichier en <em>authorized_keys</em>.</p>
<p>Ensuite il faut <strong>absolument</strong> que ce fichier ai les droits suivants : <em>chmod 600 authorized_keys.</em></p>
<p>À partir de ce moment toutes les personnes ayant la clé privée et le mot de passe ayant servi à la générer peuvent se connecter au serveur.</p>
<h3>Première connexion</h3>
<p>Afin de se connecter avec <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank">Putty</a> vous devez spécifier la clé privée : <em>Connection / SSH / Auth</em>.</p>
<p>Si vous avez créé votre paire de clés grâce à <em>ssh-keygen</em>, vous devez convertir votre clé privée au format Putty. Pour cela vous devez utiliser <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank">PuttyGen</a> : menu <em>Conversions / Import key</em>, entrer alors le mot de passe de la clé, puis <strong>Save private key</strong>.</p>
<p>Lors de chaque connexion Putty vous demande le mot de passe de la clé, quel intérêt alors de se connecter en utilisant une paire de clé si on doit rentrer à chaque fois le mot de passe de la clé privée. C&#8217;est là qu&#8217;intervient <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank">Pageant</a>, c&#8217;est un outils de la suite Putty qui permet de stocker pour une clé privée son mot de passe. L&#8217;utilisation de ce programme est extrêmement simple, je n&#8217;en parlerai donc pas ici. Pour Linux il suffit d&#8217;installer ssh-agent qui joue exactement le même rôle.<br />
<h3>Pour suivre votre lecture</h3>
<ul class="related_post">
<li><a href="http://www.mkhelif.fr/2008/06/23/apache2-systeme-de-blacklist.html" title="Apache2 : système de blacklist">Apache2 : système de blacklist</a></li>
<li><a href="http://www.mkhelif.fr/2008/05/23/serveur-de-mails-multi-domaines.html" title="Serveur de mails multi-domaines">Serveur de mails multi-domaines</a></li>
<li><a href="http://www.mkhelif.fr/2009/11/19/chrome-os-premire-prsentation.html" title="Chrome OS : premi&egrave;re pr&eacute;sentation">Chrome OS : premi&egrave;re pr&eacute;sentation</a></li>
<li><a href="http://www.mkhelif.fr/2009/09/07/ruby-on-rails-dployer-une-application-sur-tomcat-avec-jruby.html" title="Ruby on Rails : d&eacute;ployer une application sur Tomcat avec JRuby">Ruby on Rails : d&eacute;ployer une application sur Tomcat avec JRuby</a></li>
<li><a href="http://www.mkhelif.fr/2009/07/08/google-annonce-chrome-os.html" title="Google annonce Chrome OS">Google annonce Chrome OS</a></li>
<li><a href="http://www.mkhelif.fr/2008/07/30/oracle-faille-critique-dans-weblogic.html" title="Oracle : faille critique dans WebLogic [corrigé]">Oracle : faille critique dans WebLogic [corrigé]</a></li>
<li><a href="http://www.mkhelif.fr/2008/06/18/passerelle-entre-apache-et-tomcat.html" title="Passerelle entre Apache et Tomcat">Passerelle entre Apache et Tomcat</a></li>
</ul>
       ]]></content:encoded>
			<wfw:commentRss>http://www.mkhelif.fr/2008/11/24/authentification-ssh-par-cl-privecl-publique.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache2 : système de blacklist</title>
		<link>http://www.mkhelif.fr/2008/06/23/apache2-systeme-de-blacklist.html</link>
		<comments>http://www.mkhelif.fr/2008/06/23/apache2-systeme-de-blacklist.html#comments</comments>
		<pubDate>Mon, 23 Jun 2008 14:43:06 +0000</pubDate>
		<dc:creator>mkhelif</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.mkhelif.fr/?p=57</guid>
		<description><![CDATA[Après avoir installé mon serveur web (Apache) et un serveur d&#8217;applications J2EE (GlassFish) je me suis vite rendu compte, après une semaine d&#8217;exécution, que les logs du serveur prennaient de plus en plus de place.
En regardant rapidement les fichiers de logs on se rend très vite compte que le serveur se fait &#171;&#160;spammer&#160;&#187; des URL [...]]]></description>
			<content:encoded><![CDATA[<p>Après avoir installé mon serveur web (Apache) et un serveur d&#8217;applications J2EE (GlassFish) je me suis vite rendu compte, après une semaine d&#8217;exécution, que les logs du serveur prennaient de plus en plus de place.</p>
<p>En regardant rapidement les fichiers de logs on se rend très vite compte que le serveur se fait &laquo;&nbsp;spammer&nbsp;&raquo; des URL du type : <strong>phpmyadmin</strong>, <strong>admin</strong>, <strong>mysql</strong>, &#8230;</p>
<p>J&#8217;ai décidé de mettre en place un système de blacklistage instégré à Apache.</p>
<p><span id="more-57"></span></p>
<h3>Configuration de Apache</h3>
<p>Pour cela il faut installer le module mod_rewrite (inclus par défaut avec Apache2).</p>
<p>On ajoute donc les règles dans le fichier de configuration d&#8217;apache (<strong>/etc/apache2/sites-avaible/</strong>)</p>
<blockquote>
<pre>RewriteEngine On

RewriteMap hosts-deny txt:/etc/apache2/hosts.deny
RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND
RewriteRule ^/.* - [F]</pre>
</blockquote>
<p>Ainsi les adresses IP ou nom de domaine listés dans le fichier <strong>/etc/apache2/hosts.deny</strong> recevront le code réponse : <em>403 Forbidden</em>.</p>
<p>On crée le fichier <strong>/etc/apache2/hosts.deny</strong> :</p>
<blockquote>
<pre>adresse_ip -
nom_de_domaine -</pre>
</blockquote>
<p>Penser à ajouter le tiret &laquo;&nbsp;-&nbsp;&raquo; à la fin de chaque entrée dans ce fichier.</p>
<h3>Page d&#8217;erreur personnalisée</h3>
<p>Si vous voulez rediriger les adresses blacklilstées vers une page personnalisée il faut modifier les règles dans le fichier de configuration de Apache :</p>
<blockquote>
<pre>Remplacez :
RewriteRule ^/.* - [F]

Par :
RewriteRule ^/.* /blacklisted.html [L]</pre>
</blockquote>
<p>Créez alors le fichier <strong>blacklisted.html</strong>.</p>
<p><strong>Source :</strong> <a title="Apache.org" href="http://httpd.apache.org/docs/2.0/misc/rewriteguide.html">http://httpd.apache.org/docs/2.0/misc/rewriteguide.html</a></p>
<h3>Pour suivre votre lecture</h3>
<ul class="related_post">
<li><a href="http://www.mkhelif.fr/2008/05/23/serveur-de-mails-multi-domaines.html" title="Serveur de mails multi-domaines">Serveur de mails multi-domaines</a></li>
<li><a href="http://www.mkhelif.fr/2009/11/19/chrome-os-premire-prsentation.html" title="Chrome OS : premi&egrave;re pr&eacute;sentation">Chrome OS : premi&egrave;re pr&eacute;sentation</a></li>
<li><a href="http://www.mkhelif.fr/2009/09/07/ruby-on-rails-dployer-une-application-sur-tomcat-avec-jruby.html" title="Ruby on Rails : d&eacute;ployer une application sur Tomcat avec JRuby">Ruby on Rails : d&eacute;ployer une application sur Tomcat avec JRuby</a></li>
<li><a href="http://www.mkhelif.fr/2008/11/24/authentification-ssh-par-cl-privecl-publique.html" title="Authentification SSH par clé privée/clé publique">Authentification SSH par clé privée/clé publique</a></li>
<li><a href="http://www.mkhelif.fr/2008/06/18/passerelle-entre-apache-et-tomcat.html" title="Passerelle entre Apache et Tomcat">Passerelle entre Apache et Tomcat</a></li>
<li><a href="http://www.mkhelif.fr/2010/01/14/gwt-2-0-les-nouvelles-fonctionnalits.html" title="GWT 2.0 : les nouvelles fonctionnalités">GWT 2.0 : les nouvelles fonctionnalités</a></li>
<li><a href="http://www.mkhelif.fr/2009/12/15/goo-gl-le-raccourcisseur-durl-by-google.html" title="Goo.gl : le raccourcisseur d&rsquo;URL by Google">Goo.gl : le raccourcisseur d&rsquo;URL by Google</a></li>
</ul>
       ]]></content:encoded>
			<wfw:commentRss>http://www.mkhelif.fr/2008/06/23/apache2-systeme-de-blacklist.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Passerelle entre Apache et Tomcat</title>
		<link>http://www.mkhelif.fr/2008/06/18/passerelle-entre-apache-et-tomcat.html</link>
		<comments>http://www.mkhelif.fr/2008/06/18/passerelle-entre-apache-et-tomcat.html#comments</comments>
		<pubDate>Wed, 18 Jun 2008 09:53:04 +0000</pubDate>
		<dc:creator>mkhelif</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.mkhelif.fr/?p=55</guid>
		<description><![CDATA[Dans le but de déployer mes applications J2ee j&#8217;ai installé GlassFish (avec Tomcat). Je souhaitais pouvoir utiliser ce serveur sur le port 80 tout en ayant Apache qui écoute sur ce port.

Apache et Tomcat étant des produits développés par la même équipe il existe une solution très simple pour faire interagir les deux serveurs.
Configuration de [...]]]></description>
			<content:encoded><![CDATA[<p>Dans le but de déployer mes applications J2ee j&#8217;ai installé GlassFish (avec Tomcat). Je souhaitais pouvoir utiliser ce serveur sur le port 80 tout en ayant Apache qui écoute sur ce port.</p>
<p><span id="more-55"></span></p>
<p>Apache et Tomcat étant des produits développés par la même équipe il existe une solution très simple pour faire interagir les deux serveurs.</p>
<h4>Configuration de Apache</h4>
<p>Il faut installer le module <strong>Jk</strong> de Apache :</p>
<blockquote>
<pre>apt-get install libapache2-mod-jk
a2enmod mod_jk</pre>
</blockquote>
<p>On va ensuite créer un VirtualHost dans la configuration de Apache <em>/etc/apache2/sites-available/default</em> :</p>
<blockquote>
<pre>&lt;VirtualHost demo.mkhelif.fr:80&gt;
    ServerName demo.mkhelif.fr
    ServerAdmin webmaster@mkhelif.fr
    JkMount / worker1
    JkMount /* worker1
&lt;/VirtualHost&gt;</pre>
</blockquote>
<p>On configure le module <strong>Jk </strong><em>/etc/apache2/mods-available/jk.load</em> :</p>
<pre>LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so</pre>
<pre>JkWorkersFile /etc/apache2/workers.conf
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "</pre>
<p>On crée alors le fichier <em>/etc/apache2/workers.conf</em> :</p>
<blockquote>
<pre>workers.java_home=/path/to/jre/
ps=/
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactory=1</pre>
</blockquote>
<p>Apache est désormais configuré pour rediriger toutes les requêtes du domaine demo.mkhelif.fr vers Tomcat par AJP. Il faut configurer Tomcat pour écouter sur ce port.</p>
<h4>Tomcat en standalone</h4>
<p>Pour configurer Tomcat en version standalone (sans serveur d&#8217;applications), il suffit de modifier le fichier <em>server.xml</em> pour ajouter le connecteur AJP :</p>
<blockquote>
<pre>&lt;Connector port="8009" enableLookups="false" debug="0" redirectPort="8443"
           protocol="AJP/1.3" serverAdresse="127.0.0.1" /&gt;</pre>
</blockquote>
<p>Il suffit alors de redémarrer Tomcat et Apache. Lorsque vous accédez à la page : http://demo.mkhelif.fr/ vous arrivez sur la page d&#8217;accueil de Tomcat.</p>
<h4>Tomcat inclus dans GlassFish</h4>
<p>Lorsque Tomcat est inclus dans un serveur d&#8217;applications (comme GlassFish) il faut ajouter certaines librairies au serveur :</p>
<blockquote>
<pre>commons-logging.jar
commons-modeler.jar
commons-digester.jar</pre>
</blockquote>
<p>Ces librairies peuvent être téléchargées sur le site de Jakarta.</p>
<p>Il faut ensuite copier la librairie permettant d&#8217;activer le connecteur AJP pour Tomcat. Cette librairie est fournie avec Tomcat&#8230; il faut donc télécharger Tomcat&#8230; la version inclue avec GlassFish ne contient pas cette librairie.</p>
<pre><span style="color: #333333;">Tomcat 5.x et antérieur :</span>
&lt;Tomcat&gt;/server/lib/tomcat-ajp.jar</pre>
<pre><span style="color: #333333;">Tomcat 6.x :</span>
&lt;Tomcat&gt;/lib/tomcat-ajp.jar</pre>
<p>Copier toutes ces librairies dans le répertoire : <em>&lt;GlassFish&gt;/lib/</em></p>
<p>Il faut redémarrer GlassFish et la passerelle entre Apache et GlassFish est activée.</p>
<h3>Pour suivre votre lecture</h3>
<ul class="related_post">
<li><a href="http://www.mkhelif.fr/2009/09/07/ruby-on-rails-dployer-une-application-sur-tomcat-avec-jruby.html" title="Ruby on Rails : d&eacute;ployer une application sur Tomcat avec JRuby">Ruby on Rails : d&eacute;ployer une application sur Tomcat avec JRuby</a></li>
<li><a href="http://www.mkhelif.fr/2010/01/14/gwt-2-0-les-nouvelles-fonctionnalits.html" title="GWT 2.0 : les nouvelles fonctionnalités">GWT 2.0 : les nouvelles fonctionnalités</a></li>
<li><a href="http://www.mkhelif.fr/2009/11/19/chrome-os-premire-prsentation.html" title="Chrome OS : premi&egrave;re pr&eacute;sentation">Chrome OS : premi&egrave;re pr&eacute;sentation</a></li>
<li><a href="http://www.mkhelif.fr/2009/08/21/tests-en-charge-dec2-gae-et-azure.html" title="Tests en charge d&rsquo;EC2, GAE et Azure">Tests en charge d&rsquo;EC2, GAE et Azure</a></li>
<li><a href="http://www.mkhelif.fr/2009/04/08/google-gwt-version-16-et-consorts.html" title="Google : GWT version 1.6 et consorts">Google : GWT version 1.6 et consorts</a></li>
<li><a href="http://www.mkhelif.fr/2008/06/23/apache2-systeme-de-blacklist.html" title="Apache2 : système de blacklist">Apache2 : système de blacklist</a></li>
<li><a href="http://www.mkhelif.fr/2008/05/23/serveur-de-mails-multi-domaines.html" title="Serveur de mails multi-domaines">Serveur de mails multi-domaines</a></li>
</ul>
       ]]></content:encoded>
			<wfw:commentRss>http://www.mkhelif.fr/2008/06/18/passerelle-entre-apache-et-tomcat.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serveur de mails multi-domaines</title>
		<link>http://www.mkhelif.fr/2008/05/23/serveur-de-mails-multi-domaines.html</link>
		<comments>http://www.mkhelif.fr/2008/05/23/serveur-de-mails-multi-domaines.html#comments</comments>
		<pubDate>Fri, 23 May 2008 17:57:58 +0000</pubDate>
		<dc:creator>mkhelif</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.mkhelif.fr/?p=34</guid>
		<description><![CDATA[Ayant voulu créer un serveur de mail avec des comptes et des domaines virtuels je me suis très vite rendu compte que les différents tutoriels ne fonctionnaient pas dans ma configuration.
J&#8217;ai donc décidé de créer ce billet pour présenter le fonctionnement d&#8217;une telle infrastructure et comment la mettre en place.

Infrastructure du serveur
Le serveur va se [...]]]></description>
			<content:encoded><![CDATA[<p>Ayant voulu créer un serveur de mail avec des comptes et des domaines virtuels je me suis très vite rendu compte que les différents tutoriels ne fonctionnaient pas dans ma configuration.</p>
<p>J&#8217;ai donc décidé de créer ce billet pour présenter le fonctionnement d&#8217;une telle infrastructure et comment la mettre en place.</p>
<p><span id="more-51"></span></p>
<h3>Infrastructure du serveur</h3>
<p>Le serveur va se composer de quatre services : l&#8217;agent de livraison (<a href="http://www.postfix.org/" target="_blank">Postfix</a>), le serveur de mails IMAP (<a href="http://www.courier-mta.org/" target="_blank">Courier</a>) et le serveur web (<a href="http://www.apache.org/" target="_blank">Apache</a> + <a href="http://www.php.net/" target="_blank">PHP</a>) et la base de données (<a href="http://www.mysql.com/" target="_blank">MySQL</a>). Pour accéder au mails j&#8217;ai décidé d&#8217;utiliser <a title="RoundCube" href="http://www.roundcube.net/" target="_blank">RoundCube</a> et <a title="PostfixAdmin" href="http://postfixadmin.sourceforge.net/" target="_blank">PostfixAdmin</a> pour administrer les utilisateurs, les alias et les domaines.</p>
<p style="text-align: center"><a href="http://www.mkhelif.fr/wp-content/uploads/2008/06/infrastructure.png"><img class="alignnone size-full wp-image-61" title="infrastructure" src="http://www.mkhelif.fr/wp-content/uploads/2008/06/infrastructure.png" alt="Infrastructure serveur de mails multi-domaines" width="500" height="330" /></a></p>
<p style="text-align: left">
<h3>Création du compte virtuel</h3>
<p>On va d&#8217;abord créer un utilisateur sur le serveur qui stockera les mails des utilisateurs :</p>

<div class="wp_codebox"><table><tr id="p5144"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p51code44"><pre class="sh" style="font-family:monospace;">addgroup --gid 20001 virtual
adduser --uid 20001 --gid 20001 virtual</pre></td></tr></table></div>

<h3>Installation des services</h3>
<p>On va commencer par le plus simple : Apache et MySQL. On va tout simplement les récupérer dans les dépots :</p>

<div class="wp_codebox"><table><tr id="p5145"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p51code45"><pre class="sh" style="font-family:monospace;">apt-get install apache2 mysql-server-5.0 php5 php5-mysql php5-gd</pre></td></tr></table></div>

<p>Je n&#8217;aborderai pas ici la configuration d&#8217;Apache ni de PHP (penser juste à activer l&#8217;extension pour MySQL si ce n&#8217;est pas fait).</p>
<h4>Base de données</h4>
<p>Il faut créer la base de données que vont utiliser les autres services pour identifier les utilisateurs. Il suffit d&#8217;exécuter le script SQL suivant : <a href="http://www.mkhelif.fr/wp-content/uploads/2008/06/postfixmysql.sql">PostfixMySQL.sql</a>. Penser à modifier l&#8217;identifiant et le mot de passe pour le compte (ici : postfix / postfix).</p>

<div class="wp_codebox"><table><tr id="p5146"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p51code46"><pre class="sql" style="font-family:monospace;">mysql
<span style="color: #66cc66;">...</span>
mysql<span style="color: #66cc66;">&gt;</span>CREATE <span style="color: #993333; font-weight: bold;">DATABASE</span> postfix;
mysql<span style="color: #66cc66;">&gt;</span>GRANT <span style="color: #993333; font-weight: bold;">ALL</span> PRIVILEGES <span style="color: #993333; font-weight: bold;">ON</span> postfix<span style="color: #66cc66;">.*</span> <span style="color: #993333; font-weight: bold;">TO</span> <span style="color: #ff0000;">'postfix'</span>@<span style="color: #ff0000;">'localhost'</span> <span style="color: #993333; font-weight: bold;">IDENTIFIED</span> <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #ff0000;">'postfix'</span>;
mysql<span style="color: #66cc66;">&gt;</span>\<span style="color: #66cc66;">.</span> PostfixMySQL<span style="color: #66cc66;">.</span>sql</pre></td></tr></table></div>

<p>On ajoute l&#8217;administrateur de PostfixAdmin directement dans la base de données :</p>

<div class="wp_codebox"><table><tr id="p5147"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code" id="p51code47"><pre class="sql" style="font-family:monospace;">mysql<span style="color: #66cc66;">&gt;</span>INSERT <span style="color: #993333; font-weight: bold;">INTO</span> domain <span style="color: #66cc66;">&#40;</span>domain<span style="color: #66cc66;">,</span> description<span style="color: #66cc66;">&#41;</span>
      <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'mkhelif.fr'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'Domaine personnel'</span><span style="color: #66cc66;">&#41;</span>;
Query OK<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span> row affected <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.00</span> sec<span style="color: #66cc66;">&#41;</span>
&nbsp;
mysql<span style="color: #66cc66;">&gt;</span>INSERT <span style="color: #993333; font-weight: bold;">INTO</span> admin <span style="color: #66cc66;">&#40;</span>username<span style="color: #66cc66;">,</span> password<span style="color: #66cc66;">,</span> active<span style="color: #66cc66;">&#41;</span>
      <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'postmaster@mkhelif.fr'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'$1$CeeAzXb...J8njWAw1'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'1'</span><span style="color: #66cc66;">&#41;</span>;
Query OK<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span> row affected <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.00</span> sec<span style="color: #66cc66;">&#41;</span>
&nbsp;
mysql<span style="color: #66cc66;">&gt;</span>INSERT <span style="color: #993333; font-weight: bold;">INTO</span> domain_admins <span style="color: #66cc66;">&#40;</span>username<span style="color: #66cc66;">,</span> domain<span style="color: #66cc66;">,</span> active<span style="color: #66cc66;">&#41;</span>
      <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'postmaster@mkhelif.fr'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'ALL'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'1'</span><span style="color: #66cc66;">&#41;</span>;
Query OK<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span> row affected <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.00</span> sec<span style="color: #66cc66;">&#41;</span>
&nbsp;
mysql<span style="color: #66cc66;">&gt;</span>INSERT <span style="color: #993333; font-weight: bold;">INTO</span> mailbox <span style="color: #66cc66;">&#40;</span>username<span style="color: #66cc66;">,</span> password<span style="color: #66cc66;">,</span> name<span style="color: #66cc66;">,</span> maildir<span style="color: #66cc66;">,</span> domain<span style="color: #66cc66;">,</span> active<span style="color: #66cc66;">&#41;</span>
      <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'postmaster@mkhelif.fr'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'$1$ExhxBRG6$...qhF/unIwe0Kk1'</span><span style="color: #66cc66;">,</span>
              <span style="color: #ff0000;">'Marwan KHELIF'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'postaster@mkhelif.fr/'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'mkhelif.fr'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'1'</span><span style="color: #66cc66;">&#41;</span>;
Query OK<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span> row affected <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.00</span> sec<span style="color: #66cc66;">&#41;</span></pre></td></tr></table></div>

<p style="padding-left: 30px"><strong>Note</strong> : le mot de passe est hashé en MD5 avec du sel. Voici un script PHP pour encoder votre mot de passe :</p>

<div class="wp_codebox"><table><tr id="p5148"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p51code48"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #990000;">crypt</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>On vérifie que l&#8217;utilisateur que l&#8217;on vient de créer a bien accès à la base de données :</p>

<div class="wp_codebox"><table><tr id="p5149"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p51code49"><pre class="sql" style="font-family:monospace;">mysql postfix <span style="color: #66cc66;">-</span>u postfix <span style="color: #66cc66;">-</span>p
Enter password: postfix
<span style="color: #66cc66;">...</span>
mysql<span style="color: #66cc66;">&gt;</span></pre></td></tr></table></div>

<p>Voilà la base de données est prête à être utilisée par les différents services.</p>
<h4>Postfix</h4>
<p>On commence par installer Postfix et le module de connexion à la base de données. Attention lors de l&#8217;installation si Exim4 est installé il sera supprimé et remplacé par Postfix.</p>

<div class="wp_codebox"><table><tr id="p5150"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p51code50"><pre class="sh" style="font-family:monospace;">apt-get install postfix postfix-mysql</pre></td></tr></table></div>

<p style="padding-left: 30px">Note : pendant l&#8217;installation sélectionner <em>Site Internet</em>.</p>
<p>Une fois installé il faut modifier le fichier suivant : <strong>/etc/postfix/main.cf</strong>. Rajouter les propriétés suivantes à la fin du fichier :</p>

<div class="wp_codebox"><table><tr id="p5151"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p51code51"><pre class="properties" style="font-family:monospace;"><span style="color: #000080; font-weight:bold;">virtual_transport</span> <span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;"> maildrop</span>
<span style="color: #000080; font-weight:bold;">virtual_mailbox_base</span> <span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;"> /home/virtual</span>
<span style="color: #000080; font-weight:bold;">virtual_alias_maps</span> <span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;"> proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf</span>
<span style="color: #000080; font-weight:bold;">virtual_mailbox_domains</span> <span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;"> proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf</span>
<span style="color: #000080; font-weight:bold;">virtual_mailbox_maps</span> <span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;"> proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf</span>
<span style="color: #000080; font-weight:bold;">virtual_minimum_uid</span> <span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;"> 20001</span>
<span style="color: #000080; font-weight:bold;">virtual_uid_maps</span> <span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;"> static:20001</span>
<span style="color: #000080; font-weight:bold;">virtual_gid_maps</span> <span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;"> static:20001</span></pre></td></tr></table></div>

<p>On crée alors les fichiers de mapping avec la base de données :</p>

<div class="wp_codebox"><table><tr id="p5152"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p51code52"><pre class="text" style="font-family:monospace;">Fichier : /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address = '%s' and active = '1'</pre></td></tr></table></div>


<div class="wp_codebox"><table><tr id="p5153"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p51code53"><pre class="text" style="font-family:monospace;">Fichier : /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain = '%s' and active = '1'</pre></td></tr></table></div>


<div class="wp_codebox"><table><tr id="p5154"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p51code54"><pre class="text" style="font-family:monospace;">Fichier : /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username = '%s' and active = '1'</pre></td></tr></table></div>

<p>Modifier le fichier /etc/postfix/master.cf afin de modifier la livraison par maildrop :</p>

<div class="wp_codebox"><table><tr id="p5155"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p51code55"><pre class="text" style="font-family:monospace;">Remplacer la ligne :
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
&nbsp;
par :
maildrop  unix  -       n       n       -       -       pipe
   flags=DRhu user=virtual argv=/usr/bin/maildrop -w 90 -d ${user}@${nexthop}
   ${extension} ${recipient} ${user} ${nexthop} ${sender}</pre></td></tr></table></div>

<p>On redémarre alors le service :</p>

<div class="wp_codebox"><table><tr id="p5156"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p51code56"><pre class="sh" style="font-family:monospace;">/etc/init.d/postfix restart</pre></td></tr></table></div>

<h4>Maildrop</h4>
<p>On va alors installer le livreur de mails : maildrop.</p>

<div class="wp_codebox"><table><tr id="p5157"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p51code57"><pre class="sh" style="font-family:monospace;">apt-get install maildrop</pre></td></tr></table></div>

<p>On créer le fichier <em>/home/virtual/.mailfilter</em> de livraison, si vous souhaitez spécifier certaines règles de livraisons (mailinglists, spams, &#8230;) vous devez modifier ce fichier ou en créer un dans les dossiers de vos utilisateurs :</p>

<div class="wp_codebox"><table><tr id="p5158"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code" id="p51code58"><pre class="text" style="font-family:monospace;">Fichier : /home/virtual/.mailfilter
logfile &quot;/home/virtual/.maildrop.log&quot;
`[ -d $DEFAULT ] || (maildirmake $DEFAULT &amp;&amp; maildirmake -f Spam $DEFAULT &amp;&amp; maildirmake -f sent-mail $DEFAULT &amp;&amp; maildirmake -f SpamToLearn $DEFAULT &amp;&amp;
maildirmake -f SpamFalse $DEFAULT)`
&nbsp;
`test -r $HOME/$DEFAULT.mailfilter`
if( $RETURNCODE == 0 )
{
    log &quot;(==)  Including $HOME/$DEFAULT.mailfilter&quot;
    exception {
        include $HOME/$DEFAULT.mailfilter
    }
}</pre></td></tr></table></div>

<p>Une fois ce fichier créé il faut modifier les droits à ce fichier :</p>

<div class="wp_codebox"><table><tr id="p5159"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p51code59"><pre class="sh" style="font-family:monospace;">chmod 600 .mailfilter</pre></td></tr></table></div>

<h4>Courier</h4>
<p>On installe de la même façon Courier et le module de connexion à la base de données :</p>

<div class="wp_codebox"><table><tr id="p5160"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p51code60"><pre class="sh" style="font-family:monospace;">apt-get install courier-imap courier-authlib-mysql</pre></td></tr></table></div>

<p style="padding-left: 30px"><strong>Note</strong> : pendant l&#8217;installation choisissez <em>NON </em>lorsqu&#8217;il vous propose de créer les répertoires Web.</p>
<p>Modifier les paramètres dans les fichiers suivants :</p>

<div class="wp_codebox"><table><tr id="p5161"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code" id="p51code61"><pre class="properties" style="font-family:monospace;">Fichier : /etc/courier/authdaemonrc
<span style="color: #000080; font-weight:bold;">authmodulelist</span><span style="color: #000000;">=</span><span style="color: #933;">&quot;authmysql&quot;</span>
&nbsp;
Fichier : /etc/courier/authmysqlrc
MYSQL_SERVER	localhost
MYSQL_USERNAME	postfix
MYSQL_PASSWORD	postfix
MYSQL_SOCKET	/var/run/mysqld/mysqld.sock
MYSQL_PORT	<span style="">3306</span>
MYSQL_OPT	<span style="">0</span>
&nbsp;
MYSQL_DATABASE	postfix
MYSQL_USER_TABLE	mailbox
MYSQL_CRYPT_FIELD	password
MYSQL_LOGIN_FIELD	username
MYSQL_HOME_FIELD	'/home/virtual'
MYSQL_UID_FIELD		'<span style="">20001</span>'
MYSQL_GID_FIELD		'<span style="">20001</span>'
MYSQL_NAME_FIELD	name
MYSQL_MAILDIR_FIELD	maildir
MYSQL_WHERE_CLAUSE	active<span style="color: #000000;">=</span><span style="color: #008000; font-weight:bold;">'1'</span></pre></td></tr></table></div>

<p style="padding-left: 30px;"><strong>Note</strong> : vérifier qu&#8217;il n&#8217;y ai que des tabulations entre le nom et la valeur d&#8217;une propriété.</p>
<p>Il faut donner les accès à l&#8217;utilisateur virtual :</p>

<div class="wp_codebox"><table><tr id="p5162"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p51code62"><pre class="sh" style="font-family:monospace;">chown virtual /usr/lib/courier/authdaemon
chmod 750 /usr/lib/courier/authdaemon</pre></td></tr></table></div>

<p>On redémarre alors les services IMAP et AuthDaemon de Courier :</p>

<div class="wp_codebox"><table><tr id="p5163"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p51code63"><pre class="sh" style="font-family:monospace;">/etc/init.d/courier-imap restart
/etc/init.d/courier-authdaemon restart</pre></td></tr></table></div>

<p>Pour vérifier que le serveur IMAP arrive bien à se connecter à la base de données on exécute un test d&#8217;authentification :</p>

<div class="wp_codebox"><table><tr id="p5164"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code" id="p51code64"><pre class="sh" style="font-family:monospace;">authtest postmaster@mkhelif.fr
Authentication succeeded.
&nbsp;
     Authenticated: postmaster@mkhelif.fr  (uid 20001, gid 20001)
    Home Directory: /home/virtual
           Maildir: postmaster@mkhelif.fr/
             Quota: 0S
Encrypted Password: $1$CeeAzXb...J8njWAw1
Cleartext Password: (none)
           Options: (none)</pre></td></tr></table></div>

<p>Maintenant tous les services sont configurés et communiquent entre eux, on peut configurer les accès Web.</p>
<h4>PostfixAdmin et Roundcube</h4>
<p>Tout d&#8217;abord on récupère les archives (récupérer les dernières versions depuis <a title="RoundCube" href="http://www.roundcube.net/" target="_blank">RoundCube</a> et <a title="PostfixAdmin" href="http://postfixadmin.sourceforge.net/" target="_blank">PostfixAdmin</a>) :</p>

<div class="wp_codebox"><table><tr id="p5165"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p51code65"><pre class="sh" style="font-family:monospace;">wget http://garr.dl.sourceforge.net/sourceforge/roundcubemail/roundcubemail-0.1.1.tar.gz
wget http://dfn.dl.sourceforge.net/sourceforge/postfixadmin/postfixadmin_2.2.0.tar.gz</pre></td></tr></table></div>

<p>On extrait alors les sources :</p>

<div class="wp_codebox"><table><tr id="p5166"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p51code66"><pre class="sh" style="font-family:monospace;">tar -xzf roundcubemail-0.1.1.tar.gz
tar -xzf postfixadmin_2.2.0.tar.gz</pre></td></tr></table></div>

<h5>Configuration de PostfixAdmin</h5>
<p>Pour configurer PostfixAdmin il faut modifier les paramètres suivants du fichier <strong>config.inc.php</strong> et supprimer le fichier <strong>setup.php</strong> :</p>

<div class="wp_codebox"><table><tr id="p5167"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p51code67"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$CONF</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'configured'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$CONF</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'postfix_admin_url'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://www.mkhelif.fr/'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$CONF</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'create_default_folders'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$CONF</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'database_type'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'mysqli'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$CONF</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'database_host'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$CONF</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'database_user'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'postfix'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$CONF</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'database_password'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'postfix'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$CONF</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'database_name'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'postfix'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Vous pouvez modifier les autres propriétés selon vos besoins.</p>
<h5>Configuration de RoundCube</h5>
<p>On va tout d&#8217;abord créer la base de données que va utiliser RoundCube :</p>

<div class="wp_codebox"><table><tr id="p5168"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p51code68"><pre class="sql" style="font-family:monospace;">mysql
<span style="color: #66cc66;">...</span>
mysql<span style="color: #66cc66;">&gt;</span>CREATE <span style="color: #993333; font-weight: bold;">DATABASE</span> roundcube;
Query OK<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span> row affected <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.00</span> sec<span style="color: #66cc66;">&#41;</span>
&nbsp;
mysql<span style="color: #66cc66;">&gt;</span>GRANT <span style="color: #993333; font-weight: bold;">ALL</span> PRIVILEGES <span style="color: #993333; font-weight: bold;">ON</span> roundcube<span style="color: #66cc66;">.*</span> <span style="color: #993333; font-weight: bold;">TO</span> <span style="color: #ff0000;">'roundcube'</span>@<span style="color: #ff0000;">'localhost'</span> <span style="color: #993333; font-weight: bold;">IDENTIFIED</span> <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #ff0000;">'roundcube'</span>;
Query OK<span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">1</span> row affected <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.00</span> sec<span style="color: #66cc66;">&#41;</span></pre></td></tr></table></div>

<p>Pour configurer RoundCube il faut déplacer les fichiers :</p>

<div class="wp_codebox"><table><tr id="p5169"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p51code69"><pre class="sh" style="font-family:monospace;">mv ./config/db.inc.php.dist ./config/db.inc.php
mv ./config/main.inc.php.dist ./config/main.inc.php</pre></td></tr></table></div>

<p>Et modifier les paramètres :</p>

<div class="wp_codebox"><table><tr id="p5170"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p51code70"><pre class="php" style="font-family:monospace;">Fichier <span style="color: #339933;">:</span> config<span style="color: #339933;">/</span>db<span style="color: #339933;">.</span>inc<span style="color: #339933;">.</span>php
<span style="color: #000088;">$rcmail_config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'db_dsnw'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'mysqli://roundcube:roundcube@localhost/roundcube'</span><span style="color: #339933;">;</span>
&nbsp;
Fichier <span style="color: #339933;">:</span> config<span style="color: #339933;">/</span>main<span style="color: #339933;">.</span>inc<span style="color: #339933;">.</span>php
<span style="color: #000088;">$rcmail_config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'default_host'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h3>Problèmes rencontrés</h3>
<blockquote><p>La commande <em>authtest</em> échoue</p>
</blockquote>
<p>Cela signifie généralement que le serveur IMAP n&#8217;arrive pas à accéder à la base de données. Vérifier tous les paramètres du fichier <strong>/etc/courier/authmysqlrc</strong> et que le nom et la valeur des propriétés soient bien séparés par des tabulations et pas des espaces.</p>
<p>Pour activer les logs au niveau de Courier il faut modifier le fichier <strong>/etc/courier/authdaemonrc</strong> et positionner le paramètre <em>DEBUG_LOGIN</em> à 1.</p>
<blockquote><p>J&#8217;obtiens l&#8217;erreur suivante : <em>imapd: authentication error: Input/output error</em></p>
</blockquote>
<p>J&#8217;avais rencontré ce problème car IMAP n&#8217;arrivai pas à se connecter à la base de données (mauvais mot de passe). Il faut vérifier le fichier <strong>/etc/courier/authmysqlrc</strong>.</p>
<blockquote><p>RoundCube n&#8217;authentifie pas les utilisateurs</p>
</blockquote>
<p>J&#8217;ai rencontré ce problème dans le cas où Apache n&#8217;a pas accès pour créer les répertoire par défaut d&#8217;un utilisateur (<em>Inbox</em>, <em>Sent</em>, <em>Trash</em>, <em>Spam</em>, <em>Drafts</em>), vérifier bien que le dossier existe et que le propriétaire est bien <em>virtual</em>. Sinon créer les répertoires grâce à la commande : <em>maildirmake </em> en vérifiant les droits : <em>755</em>.<em><br />
</em></p>
<h3>Conclusion</h3>
<p>Voilà votre serveur de mails multi-domaines est prêt. Vous pouvez ajouter d&#8217;autres services : antispam (<a title="SpamAssassin" href="http://spamassassin.apache.org/" target="_blank">SpamAssassin</a>), antivirus (<a title="ClamAV" href="http://www.clamav.net/" target="_blank">ClamAV</a>), gestion de quotas, &#8230;Mais je n&#8217;aborderai pas ces points là dans ce tutoriel.</p>
<h3>Pour suivre votre lecture</h3>
<ul class="related_post">
<li><a href="http://www.mkhelif.fr/2008/06/23/apache2-systeme-de-blacklist.html" title="Apache2 : système de blacklist">Apache2 : système de blacklist</a></li>
<li><a href="http://www.mkhelif.fr/2009/11/19/chrome-os-premire-prsentation.html" title="Chrome OS : premi&egrave;re pr&eacute;sentation">Chrome OS : premi&egrave;re pr&eacute;sentation</a></li>
<li><a href="http://www.mkhelif.fr/2009/09/07/ruby-on-rails-dployer-une-application-sur-tomcat-avec-jruby.html" title="Ruby on Rails : d&eacute;ployer une application sur Tomcat avec JRuby">Ruby on Rails : d&eacute;ployer une application sur Tomcat avec JRuby</a></li>
<li><a href="http://www.mkhelif.fr/2008/11/24/authentification-ssh-par-cl-privecl-publique.html" title="Authentification SSH par clé privée/clé publique">Authentification SSH par clé privée/clé publique</a></li>
<li><a href="http://www.mkhelif.fr/2008/06/18/passerelle-entre-apache-et-tomcat.html" title="Passerelle entre Apache et Tomcat">Passerelle entre Apache et Tomcat</a></li>
<li><a href="http://www.mkhelif.fr/2010/01/14/gwt-2-0-les-nouvelles-fonctionnalits.html" title="GWT 2.0 : les nouvelles fonctionnalités">GWT 2.0 : les nouvelles fonctionnalités</a></li>
<li><a href="http://www.mkhelif.fr/2009/12/15/goo-gl-le-raccourcisseur-durl-by-google.html" title="Goo.gl : le raccourcisseur d&rsquo;URL by Google">Goo.gl : le raccourcisseur d&rsquo;URL by Google</a></li>
</ul>
       ]]></content:encoded>
			<wfw:commentRss>http://www.mkhelif.fr/2008/05/23/serveur-de-mails-multi-domaines.html/feed</wfw:commentRss>
		<slash:comments>57</slash:comments>
		</item>
	</channel>
</rss>
