<?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>®om&#039;s blog &#187; réseau</title>
	<atom:link href="http://blog.rom1v.com/tag/reseau/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rom1v.com</link>
	<description>Un blog libre</description>
	<lastBuildDate>Thu, 02 Feb 2012 20:03:59 +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>Héberger un serveur Jabber simplement (prosody)</title>
		<link>http://blog.rom1v.com/2012/01/heberger-un-serveur-jabber-simplement-prosody/</link>
		<comments>http://blog.rom1v.com/2012/01/heberger-un-serveur-jabber-simplement-prosody/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 22:12:58 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[auto-hébergement]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[serveur]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/?p=3696</guid>
		<description><![CDATA[J&#8217;ai enfin décidé d&#8217;héberger mon propre serveur Jabber, pour plusieurs raisons&#160;: la liste de mes contacts est mieux sur mon serveur que sur un autre&#160;; le serveur que j&#8217;utilisais (jabber.fr) rencontre parfois quelques difficultés&#160;; mon adresse Jabber sera ainsi la même que mon adresse mail (rom suivi de @rom1v.com). Et c&#8217;est simple&#160;! Installation et configuration [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.rom1v.com/wp-content/uploads/2012/01/jabber.png"><img src="http://blog.rom1v.com/wp-content/uploads/2012/01/jabber.png" alt="" title="jabber" width="133" height="200" class="alignright size-full wp-image-3707" /></a></p>
<p>J&#8217;ai enfin décidé d&#8217;héberger mon propre serveur <a href="http://www.jabberfr.org/">Jabber</a>, pour plusieurs raisons&nbsp;:</p>
<ul>
<li>la liste de mes contacts est mieux sur mon serveur que sur un autre&nbsp;;</li>
<li>le serveur que j&#8217;utilisais (<a href="http://jabber.apinc.org/">jabber.fr</a>) rencontre parfois quelques difficultés&nbsp;;</li>
<li>mon adresse <em>Jabber</em> sera ainsi la même que <a href="http://blog.rom1v.com/2009/08/hebergez-vos-mails-sur-ubuntu-server-et-liberez-vous/">mon adresse mail</a> (<code>rom</code> suivi de <code>@rom1v.com</code>).</li>
</ul>
<p>Et c&#8217;est simple&nbsp;!</p>
<h3>Installation et configuration</h3>
<p>Tout d&#8217;abord, installer le paquet <code>prosody</code>&nbsp;:</p>
<pre>apt-get install prosody</pre>
<p>Puis ajouter à la fin du fichier <code>/etc/prosody/prosody.cfg.lua</code>&nbsp;:</p>
<pre>Host "<em>nom.de.domaine</em>"</pre>
<p>Pour moi&nbsp;:</p>
<pre>Host "rom1v.com"</pre>
<p>Créer un utilisateur en ligne de commandes et choisir un mot de passe&nbsp;:</p>
<pre>prosodyctl adduser <em>user</em>@<em>nom.de.domaine</em></pre>
<h3>Certificat</h3>
<p>Un <a href="http://fr.wikipedia.org/wiki/Certificat_%C3%A9lectronique#Certificat">certificat</a> TLS/SSL est créé par défaut, mais les champs sont renseignés avec des valeurs non pertinentes (<em>localhost</em> au lieu de <em>nom.de.domaine</em> par exemple). Il est donc préférable d&#8217;en <a href="http://prosody.im/doc/advanced_ssl_tls">générer un nouveau</a>.</p>
<p>Dans le répertoire <code>/etc/prosody/certs</code>, exécuter&nbsp;:</p>
<pre>openssl req -new -x509 -nodes -out <em>nom.de.domaine</em>.cert -keyout <em>nom.de.domaine</em>.key</pre>
<p>Renseigner les champs demandés <em>(«&nbsp;<code>.</code>&nbsp;» pour laisser un champ vide)</em>.</p>
<p>Remplacer le certificat dans le fichier de configuration&nbsp;:</p>
<pre>ssl = {
        key = "/etc/prosody/certs/<em>nom.de.domaine</em>.key";
        certificate = "/etc/prosody/certs/<em>nom.de.domaine</em>.cert";
}</pre>
<h4>Empreinte</h4>
<p>Comme c&#8217;est un certificat auto-signé, les clients <em>Jabber</em> ne lui feront pas confiance&nbsp;: ils demanderont une confirmation, en présentant son empreinte. Il faudra alors vérifier que le certificat présenté est bien le bon, c&#8217;est-à-dire que l&#8217;empreinte est la même.</p>
<p>Pour la connaître&nbsp;:</p>
<pre>openssl x509 -fingerprint -noout -in <em>nom.de.domaine</em>.cert</pre>
<p>Par exemple&nbsp;:</p>
<pre>$ openssl x509 -fingerprint -noout -in rom1v.com.cert
SHA1 Fingerprint=C3:6D:9B:65:06:55:C4:84:B4:A5:8D:4B:12:68:2F:08:71:7E:AC:DD</pre>
<h3>Ports</h3>
<p>Les <a href="http://fr.wikipedia.org/wiki/Liste_des_ports_logiciels">ports</a> TCP 5222 et 5269 <a href="http://www.accessgrid.org/agdp/guide/ports/1.03/x112.html">doivent être ouverts</a>.</p>
<h3>Démarrer</h3>
<p>Il ne reste plus qu&#8217;à démarrer le service.</p>
<pre>service prosody start</pre>
<h3>Clients</h3>
<p>Il est maintenant possible de se connecter en utilisant le nom d&#8217;utilisateur et le mot de passe créés&nbsp;:</p>
<p><a href="http://blog.rom1v.com/wp-content/uploads/2012/01/empathy.png"><img src="http://blog.rom1v.com/wp-content/uploads/2012/01/empathy-300x179.png" alt="" title="empathy" width="300" height="179" class="aligncenter size-medium wp-image-3697" /></a></p>
<h3>Backup</h3>
<p>Les données du serveur sont stockées dans <code>/var/lib/prosody</code>. Il est donc important de ne pas oublier ce répertoire dans le processus de <a href="http://fr.wikipedia.org/wiki/Sauvegarde">sauvegarde</a>.</p>
<p><em>Merci à <a href="http://www.cyrille-borne.com/index.php?post/2011/01/13/Faire-son-serveur-jabber-personnel-en-moins-de-5-minutes">Cyrille Borne</a> et <a href="http://blog.nicolargo.com/2011/01/un-serveur-jabber-en-5-minutes-chronos-sous-debianubuntu.html">nicolargo</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2012/01/heberger-un-serveur-jabber-simplement-prosody/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Authentification automatique à un réseau WiFi avec NetworkManager</title>
		<link>http://blog.rom1v.com/2011/07/authentification-automatique-a-un-reseau-wifi-avec-networkmanager/</link>
		<comments>http://blog.rom1v.com/2011/07/authentification-automatique-a-un-reseau-wifi-avec-networkmanager/#comments</comments>
		<pubDate>Sun, 31 Jul 2011 11:43:34 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/?p=2766</guid>
		<description><![CDATA[Certains réseaux WiFi sont ouverts (sans clé de sécurité) mais nécessitent une authentification. C&#8217;est souvent le cas des points d&#8217;accès dans les gares, les hôtels, les campings… Cela concerne également les réseaux ouverts tels que FreeWifi. Une fois connecté à un tel réseau, lorsqu&#8217;avec votre navigateur vous tentez d&#8217;accéder à n&#8217;importe quel site, vous êtes [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.rom1v.com/wp-content/uploads/2011/07/wifi.png"><img src="http://blog.rom1v.com/wp-content/uploads/2011/07/wifi.png" alt="" title="wifi" width="128" height="128" class="alignright size-full wp-image-2788" /></a><br />
Certains réseaux WiFi sont ouverts (sans clé de sécurité) mais nécessitent une authentification. C&#8217;est souvent le cas des points d&#8217;accès dans les gares, les hôtels, les campings… Cela concerne également les réseaux ouverts tels que <em>FreeWifi</em>.</p>
<p>Une fois connecté à un tel réseau, lorsqu&#8217;avec votre navigateur vous tentez d&#8217;accéder à n&#8217;importe quel site, vous êtes redirigé vers une page d&#8217;authentification demandant votre identifiant et votre mot de passe (parfois il ne s&#8217;agit que d&#8217;accepter des conditions d&#8217;utilisation). Après avoir renseigné ces informations, vous êtes authentifié et pouvez accéder à Internet normalement.</p>
<p>Mais il faut avouer que s&#8217;authentifier manuellement à chaque connexion est pénible. D&#8217;autant plus que la redirection HTTP vers la page d&#8217;authentification ne fonctionne… que pour HTTP. Ainsi, alors que vous êtes connecté au réseau Wifi, votre client mail ne parviendra à récupérer les mails, votre client XMPP n&#8217;arrivera pas à se connecter au serveur… mais sans message indiquant la cause du problème.</p>
<p>Le but de ce billet est de mettre en place une authentification automatique lors de la connexion au réseau.</p>
<h3>Authentification en ligne de commande</h3>
<p>La première étape est de pouvoir réaliser cette authentification en ligne de commande, à partir de l&#8217;identifiant et du mot de passe. C&#8217;est très simple, il suffit d&#8217;imiter ce que fait le navigateur lors du clic sur le bouton <em>Valider</em>.</p>
<p>Pour cela, deux choses sont nécessaires&nbsp;: l&#8217;URL de la page de validation d&#8217;authentification et les champs de formulaire qu&#8217;elle utilise.</p>
<p>Pour les connaître, il faut regarder le code source de la page sur laquelle vous êtes redirigés, en particulier la balise <code>form</code>. Voici un exemple de ce que vous pouvez obtenir <em>(le HTML n&#8217;est pas toujours super propre sur ce genre de pages)</em>&nbsp;:</p>
<pre>&lt;form method="post" action="<strong>http://10.9.0.1:8000/</strong>"&gt;
Login &lt;input name="<strong>auth_user</strong>" type="text"&gt;
Password &lt;input name="<strong>auth_pass</strong>" type="password"&gt;
&lt;input type="checkbox" name="regagree" value="valeur" onClick="ChangeStatut(this.form)"&gt; J'accepte le règlement
&lt;input name="redirurl" type="hidden" value="http://www.google.com/search?ie=UTF-8"&gt;
&lt;input type="submit" name="<strong>accept</strong>" value="<strong>Continuer</strong>" disabled&gt;
&lt;/form&gt;</pre>
<p>Tout y est. La valeur de l&#8217;attribut <code>action</code> est l&#8217;URL de validation, et le nom des champs utilisés est dans l&#8217;attribut <code>name</code> de chaque balise <code>input</code>.</p>
<p>Dans cet exemple, seuls <code>auth_user</code> et <code>auth_pass</code> semblent utiles, mais parfois le serveur effectue des vérifications (étranges) supplémentaires. Ici, il vérifie qu&#8217;il y a bien un attribut <code>accept</code> qui vaut <code>Continuer</code> (allez savoir pourquoi).</p>
<p>À partir de ces champs, nous allons construire la chaîne des paramètres sous la forme&nbsp;:</p>
<pre>champ1=valeur1&amp;champ2=valeur2&amp;champ3=valeur3</pre>
<p>et l&#8217;envoyer au serveur en <a href="http://fr.wikipedia.org/wiki/HTTP#M.C3.A9thodes"><code>POST</code></a>, par exemple grâce à la commande <code>POST</code> <em>(en majuscules, ça surprend un peu pour une commande shell)</em>&nbsp;: </p>
<pre>POST http://10.9.0.1:8000/ &lt;&lt;&lt; 'auth_user=<em>IDENTIFIANT</em>&amp;auth_pass=<em>MOT_DE_PASSE</em>&amp;accept=Continuer'</pre>
<p>Si la page d&#8217;authentification est en HTTPS, il faudra installer le paquet <a href="apt://libcrypt-ssleay-perl">libcrypt-ssleay-perl</a>, ou alors utiliser <code>wget</code>&nbsp;:</p>
<pre>wget -qO- https://10.9.0.1:8000/ --post-data='auth_user=<em>IDENTIFIANT</em>&amp;auth_pass=<em>MOT_DE_PASSE</em>&amp;accept=Continuer'</pre>
<p>Voilà, nous avons reproduit en ligne de commande le comportement du navigateur pour l&#8217;authentification.<br />
Nous devons maintenant faire en sorte que cette commande soit exécutée dès la connexion au réseau WiFi.</p>
<h3>Exécuter un script lors de la connexion</h3>
<p><em>NetworkManager</em> (le gestionnaire de connexion par défaut d&#8217;<em>Ubuntu</em>) permet d&#8217;exécuter des scripts lors de la connexion ou la déconnexion. Pour cela, il suffit de placer le script dans <code>/etc/NetworkManager/dispatcher.d/</code> et de le rendre exécutable.</p>
<p>Le script est appelé avec deux paramètres&nbsp;:</p>
<ul>
<li><code>$1</code>&nbsp;: l&#8217;interface réseau concernée par la connexion ou la déconnexion (<code>wlan0</code> par exemple)&nbsp;;</li>
<li><code>$2</code> ayant pour valeur soit <code>up</code> (pour la connexion), soit <code>down</code> (pour la déconnection).</li>
</ul>
<p>Nous voulons exécuter la commande <code>POST</code> uniquement lors de la connexion de <code>wlan0</code>, et seulement pour le réseau concerné (par exemple celui ayant le nom <code>MonLieuDeVacances</code>).</p>
<p>Il est possible de récupérer le nom du réseau (l&#8217;ESSID) auquel nous sommes connectés grâce à <code>iwconfig</code>&nbsp;:</p>
<pre>iwconfig wlan0 | grep -o 'ESSID:".*$' | sed 's/^ESSID:"\(.*\)".*$/\1/'</pre>
<p>Il faut donc créer un script dans <code>/etc/NetworkManager/dispatcher.d/10auth</code>&nbsp;:</p>
<pre>gksudo gedit /etc/NetworkManager/dispatcher.d/10auth</pre>
<p>ayant cette structure&nbsp;:</p>
<pre>#!/bin/bash
if [ "$1 $2" = 'wlan0 up' ]
then
    essid=$(iwconfig wlan0 | grep -o 'ESSID:".*$' | sed 's/^ESSID:"\(.*\)".*$/\1/')
    case "$essid" in
        'MonLieuDeVacances')
            POST http://10.9.0.1:8000/ &lt;&lt;&lt; 'auth_user=<em>IDENTIFIANT</em>&amp;auth_pass=<em>MOT_DE_PASSE</em>&amp;accept=Continuer' ;;
        'MaGare')
            POST http://192.168.0.1 &lt;&lt;&lt; 'accept_cgu=1' ;;
    esac
fi</pre>
<p>Et le rendre exécutable&nbsp;:</p>
<pre>sudo chmod +x /etc/NetworkManager/dispatcher.d/10auth</pre>
<h3>Script pour FreeWifi</h3>
<p>Les pages d&#8217;authentification varient d&#8217;un réseau à l&#8217;autre, il faut donc adapter les paramètres de connexion selon le service utilisé.</p>
<p>Voici le script à utiliser (en adaptant votre identifiant et votre mot de passe) pour le réseau <em>FreeWifi</em> (très connu)&nbsp;:</p>
<pre>#!/bin/bash
if [ "$1 $2" = 'wlan0 up' ]
then
    essid=$(iwconfig wlan0 | grep -o 'ESSID:".*$' | sed 's/^ESSID:"\(.*\)".*$/\1/')
    case "$essid" in
        'FreeWifi')
            wget -qO- https://wifi.free.fr/Auth --post-data='login=<em>IDENTIFIANT</em>&amp;password=<em>MOT_DE_PASSE</em>' ;;
    esac
fi</pre>
<h3>Tunnel SSH</h3>
<p><a href="http://blog.rom1v.com/wp-content/uploads/2011/07/openssh.png"><img src="http://blog.rom1v.com/wp-content/uploads/2011/07/openssh.png" alt="" title="openssh" width="150" height="148" class="alignright size-full wp-image-2792" /></a><br />
Ces réseaux ouverts, gérant éventuellement une authentification HTTP, ne sont pas chiffrés&nbsp;: n&#8217;importe qui écoutant ce qui transite dans les airs pourra récupérer tout le contenu de votre trafic.<br />
Si vous avez un ordinateur allumé chez vous (sur un réseau &laquo;&nbsp;sûr&nbsp;&raquo;) accessible en SSH, je vous conseille de faire passer toutes les connexions dans un tunnel chiffré.</p>
<p>Le principe est simple&nbsp;: dès que vous accédez à un serveur (par exemple en tapant l&#8217;URL dans un navigateur web), l&#8217;ordinateur ne va pas s&#8217;y connecter directement, il va transmettre les informations en passant par un tunnel chiffré à votre serveur SSH, qui lui va s&#8217;y connecter, et vous renvoyer la page à travers le tunnel. Techniquement, le tunnel est un <a href="http://fr.wikipedia.org/wiki/SOCKS">proxy SOCKS</a> écoutant sur un port local (par exemple <code>localhost:3128</code>).</p>
<p>Pour démarrer le tunnel&nbsp;:</p>
<pre>ssh monserveur -CND3128</pre>
<p>Pour configurer le système afin qu&#8217;il utilise le tunnel SSH, Système → Préférences → Serveur mandataire (<code>gnome-network-properties</code>), puis configurer comme sur la capture d&#8217;écran&nbsp;:<br />
<a href="http://blog.rom1v.com/wp-content/uploads/2011/07/proxy.png"><img src="http://blog.rom1v.com/wp-content/uploads/2011/07/proxy-300x238.png" alt="" title="proxy" width="300" height="238" class="aligncenter size-medium wp-image-2794" /></a><br />
Dans l&#8217;onglet <em>Hôtes à ignorer</em>, rajouter l&#8217;adresse de la page d&#8217;authentification.</p>
<p>Ainsi, toutes les connexions des logiciels utilisant les paramètres proxy du système passeront par le tunnel. Il est également possible de configurer ceci dans chaque logiciel individuellement (s&#8217;ils le proposent).</p>
<p>Pour <em>Firefox</em>, il est également recommandé dans <a href="about:config">about:config</a> de passer la variable <code>network.proxy.socks_remote_dns</code> à <code>true</code>, afin que les DNS soient résolus également de l&#8217;autre côté du tunnel (sur le réseau &laquo;&nbsp;sûr&nbsp;&raquo;).</p>
<p>Vous trouverez plus d&#8217;infos sur mon <a href="http://blog.rom1v.com/2008/08/presentation-de-ssh/">billet concernant SSH</a>.</p>
<h3>Conclusion</h3>
<p>La connexion à des points d&#8217;accès WiFi publics demandant à chaque fois une authentification ou une acceptation des conditions d&#8217;utilisation devient rapidement insupportable. Il est donc appréciable de l&#8217;automatiser.</p>
<p>De plus, ces réseaux ne sont pas &laquo;&nbsp;sûrs&nbsp;&raquo;, n&#8217;importe qui peut écouter le trafic. Il est donc nécessaire de le chiffrer en passant par un réseau de confiance, par exemple avec un tunnel SSH.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2011/07/authentification-automatique-a-un-reseau-wifi-avec-networkmanager/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Tiny Tiny RSS : auto-hébergement des flux RSS</title>
		<link>http://blog.rom1v.com/2011/06/tiny-tiny-rss-auto-hebergement-des-flux-rss/</link>
		<comments>http://blog.rom1v.com/2011/06/tiny-tiny-rss-auto-hebergement-des-flux-rss/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 12:11:41 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[auto-hébergement]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/?p=2592</guid>
		<description><![CDATA[Je vais expliquer dans ce billet pourquoi et comment installer Tiny Tiny RSS, un gestionnaire de flux RSS sur son serveur. Motivations Pourquoi un serveur ? Il existe de nombreux clients d&#8217;agrégateurs de flux, tels que Liferea sous Gnome ou NewsFox dans Firefox. Cependant, un tel client pose principalement deux problèmes. Le premier, c&#8217;est le [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.rom1v.com/wp-content/uploads/2011/06/rss.png"><img src="http://blog.rom1v.com/wp-content/uploads/2011/06/rss-150x150.png" alt="" title="rss" width="150" height="150" class="alignright size-thumbnail wp-image-2603" /></a><br />
Je vais expliquer dans ce billet pourquoi et comment installer <a href="http://tt-rss.org/">Tiny Tiny RSS</a>, un gestionnaire de <a href="http://fr.wikipedia.org/wiki/Flux_RSS">flux RSS</a> sur son serveur.</p>
<h3>Motivations</h3>
<h4>Pourquoi un serveur ?</h4>
<p>Il existe de nombreux clients d&#8217;agrégateurs de flux, tels que <a href="http://liferea.sourceforge.net/">Liferea</a> sous <em>Gnome</em> ou <a href="http://blog.rom1v.com/2008/12/newsfox-plug-in-firefox-agregateur-de-flux-rss/">NewsFox</a> dans <em>Firefox</em>.</p>
<p>Cependant, un tel client pose principalement <strong>deux problèmes</strong>.</p>
<ul>
<li>Le premier, c&#8217;est <strong>le temps d&#8217;attente de mise à jour des flux</strong>. Lors du démarrage, les flux ne sont pas disponibles immédiatement&nbsp;: il faut patienter le temps qu&#8217;il mette à jour chacun des flux auxquels nous sommes abonnés, ce qui peux prendre plusieurs minutes.</li>
<li>Le second, c&#8217;est <strong>la synchronisation</strong>&nbsp;: nous ne pouvons pas lire nos flux à plusieurs endroits (maison, travail, mobile…) en gardant la synchronisation (les flux que nous avons lu sont marqués comme lus sur un ordinateur, mais pas sur un autre).</li>
</ul>
<p>Un gestionnaire de flux doit donc, d&#8217;après moi, forcément être <strong>hébergé sur un serveur</strong>.</p>
<h4>Pourquoi son serveur ?</h4>
<p>De nombreux services en ligne proposent la gestion de  flux RSS (<em>Google Reader</em>, <em>NetVibes</em>, etc.).</p>
<p><strong>Pourquoi donc héberger un tel service sur son propre serveur&nbsp;?</strong></p>
<ul>
<li><strong>Par principe.</strong> Comme pour le <a href="http://blog.rom1v.com/2009/01/nouveau-blog-100-libre/">blog</a> ou les <a href="http://blog.rom1v.com/2009/08/hebergez-vos-mails-sur-ubuntu-server-et-liberez-vous/">mails</a>, autant auto-héberger son propre contenu, qui n&#8217;a rien à faire ailleurs.</li>
<li><strong>Filtrage en entreprise.</strong> Les agrégateurs de flux connus sont souvent bloqués par les proxies d&#8217;entreprise. Un service perso sur son propre serveur aura beaucoup moins de risque d&#8217;être filtré.</li>
<li><strong>Données personnelles.</strong> Les flux auxquels chacun est abonné et les articles lus sont une information importante pour quiconque souhaite renseigner un profil d&#8217;utilisateur. Par exemple, pour <a href="http://www.internetactu.net/2011/06/13/le-risque-de-lindividualisation-de-linternet/">modifier les résultats d&#8217;un moteur de recherche</a> (ou bien d&#8217;autres choses).</li>
<li><strong>Censure.</strong> Les flux RSS peuvent être une source d&#8217;information essentielle (c&#8217;est ma source d&#8217;information principale). Si nous en laissons la gestion à un hébergeur, comment nous assurer qu&#8217;il ne supprimera pas des flux les informations qui le dérangent&nbsp;? Par exemple, s&#8217;il décide malencontreusement de supprimer tous les articles qui parlent de <em>Wikileaks</em>&nbsp;? Je sais que ce n&#8217;est pas imaginable dans un pays démocratique.<br />
Mais regardons quand même (au hasard) l&#8217;exemple de <em>Google</em>, qui <a href="http://www.numerama.com/magazine/18993-google-etend-l-auto-censure-de-son-moteur-de-recherche.html">continue d&#8217;étendre l&#8217;auto-censure de son moteur de recherche</a>, dans un pays exerçant des <a href="http://www.numerama.com/magazine/17507-amazon-n-heberge-plus-wikileaks-apres-des-pressions-politiques-et-commerciales.html">pressions politiques et commerciales</a> pour retirer des contenus dérangeants hors de toute décision judiciaire (parfois en <a href="http://www.numerama.com/magazine/17519-wikileaks-inaccessible-apres-la-perte-de-son-dns.html">supprimant des entrées DNS</a>, même pour <a href="http://www.numerama.com/magazine/17946-rojadirecta-juge-legal-en-espagne-saisi-par-les-usa-maj.html">un contenu légal dans le pays concerné</a>), pressions auxquelles <a href="http://www.pcinpact.com/actu/news/60765-twitter-paypal-blocage-julian-assange.htm">peu d&#8217;entreprises résistent</a>, y compris lorsqu&#8217;il s&#8217;agit d&#8217;<a href="http://www.pcinpact.com/actu/news/61265-wikileaks-twitter-injonction-cablegate-notification.htm">obtenir des informations politiques</a>… et ils ne <a href="http://www.pcinpact.com/actu/news/64023-pipa-protect-ip-act-us.htm">comptent pas s&#8217;arrêter en si bon chemin</a>, pour lutter contre ce qu&#8217;ils appellent &laquo;&nbsp;piratage&nbsp;&raquo;. Mais non, censurer certains flux pour des raisons politiques est inimaginable dans un pays démocratique.</li>
</ul>
<h3>Installation</h3>
<p>Je vais expliquer l&#8217;installation de <em>Tiny Tiny RSS</em> pour ma configuration, à savoir <em>Ubuntu Server 11.04</em>, avec <em>Apache</em> et <em>MySQL</em>.<br />
Je vais l&#8217;installer dans <code>~/flux</code> (le répertoire <code>flux</code> de mon home), avec un lien symbolique <code>/var/www/flux</code>. L&#8217;application sera accessible à partir de <code>flux.rom1v.com</code>. Adaptez ces valeurs selon vos besoins.</p>
<h4>Dépendances</h4>
<p><em>Tiny Tiny RSS</em> a besoin de <code>php5-curl</code>&nbsp;:</p>
<pre>sudo apt-get install php5-curl</pre>
<h4>Téléchargement</h4>
<p>Télécharger la dernière version en bas de <a href="http://tt-rss.org/redmine/">la page officielle</a> (actuellement la 1.5.4).</p>
<p>Extraire l&#8217;archive dans <code>~/</code>&nbsp;:</p>
<pre>tar xzf tt-rss-1.5.4.tar.gz</pre>
<p>Et renommer le répertoire&nbsp;:</p>
<pre>mv tt-rss-1.5.4 flux</pre>
<h4>Base de données</h4>
<p>Il faut ensuite initialiser la base de données, grâce aux scripts fournis. Pour cela, aller dans le répertoire des scripts&nbsp;:</p>
<pre>cd flux/schema</pre>
<p>Puis se connecter à <em>MySQL</em>&nbsp;:</p>
<pre>$ mysql -uroot -p
Enter password:</pre>
<p>Une fois connecté, créer la base de données <code>flux</code>&nbsp;:</p>
<pre>mysql> CREATE DATABASE flux;
Query OK, 1 row affected (0,00 sec)</pre>
<p>Puis créer un utilisateur <code>flux</code> avec les droits sur cette base (on pourra générer son mot de passe grâce à <a href="http://blog.rom1v.com/2009/11/generer-des-mots-de-passe-aleatoires/">pwgen</a>)&nbsp;:</p>
<pre>mysql> GRANT ALL PRIVILEGES ON flux.* TO flux@localhost IDENTIFIED BY 'unmotdepasse';
Query OK, 0 rows affected (0.04 sec)</pre>
<p>Initialiser la base de données&nbsp;:</p>
<pre>mysql> USE flux
Database changed

mysql> \. ttrss_schema_mysql.sql</pre>
<p>La base de données est prête.</p>
<h4>Configuration</h4>
<p>Retourner dans le répertoire <code>~/flux</code>&nbsp;:</p>
<pre>cd ..</pre>
<p>Copier le modèle du fichier de configuration&nbsp;:</p>
<pre>cp config.php-dist config.php</pre>
<p>Puis l&#8217;éditer, par exemple&nbsp;:</p>
<pre>nano config.php</pre>
<p>Modifier les informations de connexion à la base de données&nbsp;:</p>
<pre>        define('DB_TYPE', "mysql");
        define('DB_HOST', "localhost");
        define('DB_USER', "flux");
        define('DB_NAME', "flux");
        define('DB_PASS', "unmotdepasse");</pre>
<p>Modifier l&#8217;URL d&#8217;accès à l&#8217;application, pour moi&nbsp;:</p>
<pre>        define('SELF_URL_PATH', 'http://flux.rom1v.com');</pre>
<p>Désactiver le mode <em>utilisateur unique</em> (sans quoi l&#8217;accès à l&#8217;application sera public sans authentification)&nbsp;:</p>
<pre>        define('SINGLE_USER_MODE', false);</pre>
<p>Si <em>Tiny Tiny RSS</em> est installé à la racine du site (c&#8217;est mon cas&nbsp;: <code>flux.rom1v.com/</code>), il faut modifier le répertoire d&#8217;icônes, car <code>/icons</code> est réservé par <em>Apache</em>&nbsp;:</p>
<pre>        define('ICONS_DIR', "tt-icons");
        define('ICONS_URL', "tt-icons");</pre>
<p>Je conseille de désactiver la vérification des nouvelles versions, car lorsque le site de <em>Tiny Tiny RSS</em> ne répond plus, l&#8217;application rencontre des difficultés&nbsp;:</p>
<pre>        define('CHECK_FOR_NEW_VERSION', false);</pre>
<p>Pour les performances, activer la compression&nbsp;:</p>
<pre>        define('ENABLE_GZIP_OUTPUT', true);</pre>
<p>Enfin, une fois que la configuration est terminée, modifier la ligne&nbsp;:</p>
<pre>        define('ISCONFIGURED', true);</pre>
<p>Les modifications du fichier de configuration sont terminés.</p>
<p>Maintenant, renommer le répetoire <code>icons</code> (comme dans le fichier de configuration)&nbsp;:</p>
<pre>mv icons tt-icons</pre>
<h4>Serveur web</h4>
<p>Il faut maintenant héberger l&#8217;application sur <em>Apache</em>.</p>
<p>Tout d&#8217;abord, donner les droits à <code>www-data</code> sur les répertoires où il a besoin d&#8217;écrire&nbsp;:</p>
<pre>sudo chown -R www-data: cache tt-icons lock</pre>
<p>Puis faire un lien symbolique vers le répertoire <code>/var/www/</code>&nbsp;:</p>
<pre>sudo ln -s ~/flux /var/www/</pre>
<p>Créer (au besoin) un nouveau <em>VirtualHost</em> pour le site, dans le répertoire <code>/etc/apache2/sites-available</code> (pour moi dans un fichier nommé <code>flux.rom1v.com</code>)&nbsp;:</p>
<pre>&lt;VirtualHost *:80&gt;
	DocumentRoot	/var/www/flux
	ServerName	flux.rom1v.com

	&lt;Directory /var/www/flux/&gt;
		Options FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	&lt;/Directory&gt;

	ErrorLog	/var/log/apache2/flux_error.log
	CustomLog	/var/log/apache2/flux_access.log combined

&lt;/VirtualHost&gt;</pre>
<p>Activer le site&nbsp;:</p>
<pre>sudo a2ensite flux.rom1v.com</pre>
<p>Redémarrer <em>Apache</em> (un simple <code>reload</code> aurait suffit si nous n&#8217;avions pas installé <code>php5-curl</code> tout à l&#8217;heure)&nbsp;:</p>
<pre>sudo service apache2 restart</pre>
<h3>Configuration utilisateur</h3>
<h4>Compte utilisateur</h4>
<p>L&#8217;application doit maintenant fonctionner. S&#8217;y connecter, avec l&#8217;utilisateur <code>admin</code> et le mot de passe <code>password</code> (l&#8217;utilisateur par défaut), puis aller dans la configuration et changer le mot de passe.</p>
<h4>Importation et exportation</h4>
<p><em>Tiny Tiny RSS</em> permet l&#8217;importation et l&#8217;exportation d&#8217;un fichier <a href="http://fr.wikipedia.org/wiki/OPML">OPML</a>. Il est ainsi possible de migrer facilement d&#8217;un gestionnaire de flux à un autre.</p>
<h4>Intégration à Firefox</h4>
<p>Il est possible d&#8217;associer son instance de <em>Tiny Tiny RSS</em> à <em>Firefox</em>&nbsp;: toujours dans la configuration, dans l&#8217;onglet <em>Flux</em>, <em>Intégration à Firefox</em>, cliquer sur le bouton.</p>
<p>Pour tester, se rendre sur un site, et afficher la liste des flux disponibles. Pour cela, cliquer sur le petit icône à gauche de l&#8217;adresse, puis sur <em>Plus d&#8217;informations…</em>, sur l&#8217;onglet <em>Flux</em> (s&#8217;il y en a un), et enfin sur le flux désiré. Par exemple, pour <a href="http://blog.rom1v.com/feed">ce blog</a>&nbsp;:<br />
<a href="http://blog.rom1v.com/wp-content/uploads/2011/06/blog-rss.png"><img src="http://blog.rom1v.com/wp-content/uploads/2011/06/blog-rss-300x247.png" alt="" title="blog-rss" width="300" height="247" class="aligncenter size-medium wp-image-2593" /></a></p>
<p>En cliquant sur <em>S&#8217;abonner maintenant</em>, <em>Firefox</em> devrait proposer d&#8217;utiliser <em>Tiny Tiny RSS</em>.</p>
<h3>Programmation de la mise à jour des flux</h3>
<p>Il reste encore une étape importante&nbsp;: le serveur doit régulièrement mettre à jour le contenu de chacun des flux auxquels nous sommes abonnés.</p>
<p>Plusieurs méthodes sont décrites sur <a href="http://tt-rss.org/redmine/wiki/tt-rss/UpdatingFeeds">cette page</a>. Certaines chargent les flux séquentiellement (par <em>cron</em> notamment), ce qui peut poser problème&nbsp;: supposons que nous soyons abonnés à 300 flux, avec une mise à jour toutes les 30 minutes, ça donne une moyenne de 6 secondes par flux. Si certains sites sont long à répondre, la mise à jour risque de dépasser le temps imparti, et <em>cron</em> va lancer une nouvelle tâche avant que la précédente soit terminée (heureusement <em>Tiny Tiny RSS</em> pose un verrou, donc il ne fera rien la seconde fois, mais du coup nous perdons une mise à jour). Ceci est d&#8217;autant plus dommage que l&#8217;essentiel de la durée nécessaire est le temps de connexion à chacun des sites&nbsp;: mieux vaut donc paralléliser le chargement.</p>
<p>C&#8217;est la raison pour laquelle je préfère la dernière méthode&nbsp;: <strong>lancer un <em>démon</em> multi-processus au démarrage du serveur</strong>. Par contre, étant donné le fonctionnement du <em>démon</em> proposé, il ne semble pas possible d&#8217;en faire un script <em>init.d</em> propre. Le plus simple est donc de rajouter dans <code>/etc/rc.local</code>&nbsp;:</p>
<pre>start-stop-daemon -c www-data -Sbx /var/www/flux/update_daemon2.php</pre>
<p><em>Vous pouvez exécuter cette commande maintenant pour charger les flux la première fois.</em></p>
<p>Ce <em>démon</em> utilise plusieurs processus (par défaut 2), qui mettent à jour les flux par blocs (par défaut, de 100). Pour changer ces variables (par exemple pour avoir 5 processus qui chargent des blocs de 50), dans <code>config.php</code>&nbsp;:</p>
<pre>        define('DAEMON_FEED_LIMIT', 50);</pre>
<p>et dans <code>update_daemon2.php</code>&nbsp;:</p>
<pre>        define('MAX_JOBS', 5);</pre>
<h3>Autres interfaces</h3>
<p>Une interface mobile en HTML est intégrée. Pour y accéder, il suffit d&#8217;ajouter à l&#8217;URL <code>/mobile</code>.</p>
<p>Pour <em>Android</em>, il existe également une application&nbsp;: <a href="http://code.google.com/p/ttrss-reader-fork/">ttrss-reader-fork</a> (à tester, mais je la trouve assez buggée). Pour lui permettre l&#8217;accès, il est nécessaire de sélectionner <em>&laquo;&nbsp;Activer les API externes&nbsp;&raquo;</em> dans la page de configuration de <em>Tiny Tiny RSS</em>.</p>
<h3>Conclusion</h3>
<p>Vous n&#8217;avez plus de raison de laisser traîner vos flux RSS n&#8217;importe où <img src='http://blog.rom1v.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2011/06/tiny-tiny-rss-auto-hebergement-des-flux-rss/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Agréger différentes sources de VOD en OGG/Theora</title>
		<link>http://blog.rom1v.com/2010/04/aggreger-differentes-sources-de-vod-en-oggtheora/</link>
		<comments>http://blog.rom1v.com/2010/04/aggreger-differentes-sources-de-vod-en-oggtheora/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 18:58:08 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[auto-hébergement]]></category>
		<category><![CDATA[développement]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/?p=1341</guid>
		<description><![CDATA[Pour mes flux RSS, j&#8217;utilise l&#8217;outil tt-rss installé sur mon serveur, qui récupère régulièrement tous les flux auxquels je suis abonné. Le but de ce billet est de mettre en place un mécanisme similaire qui s&#8217;applique aux sources de vidéo à la demande (pas forcément prévues pour être agrégées), et qui les convertit dans le [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.rom1v.com/wp-content/uploads/2010/03/oggtheora.png"><img src="http://blog.rom1v.com/wp-content/uploads/2010/03/oggtheora.png" alt="" title="oggtheora" width="150" height="100" class="alignright size-full wp-image-1317" /></a></p>
<p>Pour mes flux RSS, j&#8217;utilise l&#8217;outil <a href="http://tt-rss.org">tt-rss</a> installé sur mon serveur, qui récupère régulièrement tous les flux auxquels je suis abonné.</p>
<p>Le but de ce billet est de mettre en place un mécanisme similaire qui s&#8217;applique aux sources de vidéo à la demande (pas forcément prévues pour être agrégées), et qui les convertit dans le format ouvert OGG/Theora (dans un répertoire rendu accessible par un serveur web tel qu&#8217;<em>Apache</em>), tout en parallélisant au maximum les différentes actions afin que le temps total de récupération soit minimal.</p>
<p>En particulier, il faut éviter de télécharger la première vidéo, puis de l&#8217;encoder, d&#8217;attendre que l&#8217;encodage soit terminé pour télécharger la seconde vidéo… Et si plusieurs CPU sont disponibles sur la machine, il faut donner un encodage à chaque processeur (l&#8217;encodeur <em>theora</em> ne sachant pas paralléliser l&#8217;encodage d&#8217;une seule vidéo).</p>
<h3>Architecture</h3>
<p>Pour cela, il y a donc 2 parties bien distinctes&nbsp;:</p>
<ul>
<li>un <strong>serveur d&#8217;encodage</strong>, qui s&#8217;occupe du démarrage et de la parallélisation des encodages&nbsp;;</li>
<li>des <strong>programmes de récupération</strong> <em>brute</em> pour chaque source de flux, qui demandent au serveur d&#8217;encodage de s&#8217;occuper de la conversion des fichiers récupérés.</li>
</ul>
<h3>Serveur d&#8217;encodage</h3>
<h4>Principe</h4>
<p>Le serveur d&#8217;encodage gère plusieurs processus <em>ouvriers</em> (dans l&#8217;idéal, il faut configurer pour avoir autant de processus que de CPU sur la machine). Il attend de nouvelles tâches, et les transmet aux ouvriers disponibles, qui s&#8217;occupent de l&#8217;encodage. Si aucun ouvrier n&#8217;est disponible, il attend qu&#8217;un se libère.</p>
<h4>Implémentation</h4>
<p>Les demandes d&#8217;encodage se font grâce à un <em>named pipe</em> (aussi appelé FIFO), un fichier un peu spécial créé avec <code>mkfifo</code>. Chaque ligne représente une tâche. Concrètement, une tâche est décrite par les paramètres à passer à <code>ffmpeg2theora</code> (l&#8217;encodeur <em>theora</em>), séparés par un séparateur (j&#8217;ai choisi «&nbsp;<code>|</code>&nbsp;», qui a peu de chance d&#8217;être utilisé dans un nom de fichier). <em>Pour les puristes, je vous mets au défi d&#8217;utiliser comme séparateur <code>\0</code>, tout en conservant le mécanisme de file d&#8217;attente dans un fichier.</em></p>
<p>Un démon récupère les nouvelles lignes ajoutées au fichier, et les transmet une à une aux ouvriers. Chaque ouvrier recrée le tableau des arguments en redécoupant la ligne suivant le séparateur choisi, et le passe en paramètre de <code>ffmpeg2theora</code> (en y ajoutant toujours <code>--nice 19</code> pour n&#8217;utiliser que le CPU disponible, sans ralentir d&#8217;autres programmes en cours d&#8217;exécution).</p>
<h5>Démon</h5>
<p>Voici le programme démon (adapter le nombre de CPU)&nbsp;:<br />
<code>/usr/sbin/ffmpeg2theora-laterd</code></p>
<pre>#!/bin/bash
CPU=2
TASKS=/tmp/ffmpeg2theora-tasks
[ -p "$TASKS" ] || mkfifo "$TASKS" -m 666
tail -f "$TASKS" | xargs -I{} -P "$CPU" ffmpeg2theora-later-job {}</pre>
<p>Ce script fait donc exécuter par les ouvriers le programme <code>ffmpeg2theora-later-job</code> pour chacune des tâches, dont voici le code&nbsp;:<br />
<code>/usr/sbin/ffmpeg2theora-later-job</code></p>
<pre>#!/bin/bash
IFS='|' read -a args &lt;&lt;&lt; "$1"
echo "executing: ffmpeg2theora ${args[@]} --nice 19"
ffmpeg2theora "${args[@]}" --nice 19</pre>
<p><em>Je vous conseille de prendre la dernière version de <a href="http://v2v.cc/~j/ffmpeg2theora/">ffmpeg2theora</a>, actuellement celle des dépôts est assez ancienne.</em></p>
<p>Le démon est à lancer une fois (et une seule&nbsp;!), au démarrage du système par exemple (une solution est de l&#8217;ajouter dans <code>/etc/rc.local</code>).</p>
<h5>Client</h5>
<p>Les clients (les programmes qui veulent demander un encodage) doivent appeler <code>ffmpeg2theora-later</code>, qui s&#8217;occupe d&#8217;écrire les paramètres séparés par «&nbsp;<code>|</code>&nbsp;» dans le FIFO&nbsp;:<br />
<code>/usr/bin/ffmpeg2theora-later</code></p>
<pre>#!/bin/bash
printf '|%s' "$@" | cut -c2- > /tmp/ffmpeg2theora-tasks</pre>
<p>Son utilisation est extrêmement proche de <code>ffmpeg2theora</code> (évidemment, puisqu&#8217;il se contente de lui transmettre ses paramètres), à ceci près que les chemins doivent être absolus (puisque le démon ne sait pas à partir de quel répertoire la demande d&#8217;encodage a été effectuée).</p>
<p>Ainsi, là où on aurait utilisé, à partir de <code>/tmp</code>&nbsp;:</p>
<pre>ffmpeg2theora file.avi -o file.ogv -x 400 -y 300 -v 8 -a 3</pre>
<p>on peut appeler&nbsp;:</p>
<pre>ffmpeg2theora-later /tmp/file.avi -o /tmp/file.ogv -x 400 -y 300 -v 8 -a 3</pre>
<h3>Programmes de récupération</h3>
<h4>Principe</h4>
<p>Les programmes de récupération font ce qui est nécessaire pour récupérer les vidéo à télécharger. Plusieurs outils sont bien utiles pour cela&nbsp;:</p>
<ul>
<li><code>wget</code> si le fichier est disponible en <em>HTTP</em> (mais c&#8217;est rare)&nbsp;;</li>
<li><code>flvstreamer</code> pour récupérer les vidéos diffusées en <em>Flash</em> avec des liens en <code>rtmp://</code> (anciennement <code>rtmpdump</code>, je vous recommande <a href="http://lkcl.net/rtmp/">le message</a> adressé à <em>Adobe</em> de la part du développeur originel)&nbsp;;</li>
<li><code>mimms</code> pour récupérer les vidéos diffusées en <em>WMV</em> avec des liens en <code>mms://</code>.</li>
</ul>
<p>Pensez bien à ouvrir les ports nécessaires pour récupérer les vidéos (1935 par défaut pour les liens RTMP, 1755 pour MMS…).</p>
<h4>Implémentation</h4>
<p>Afin de rendre un peu indépendants les répertoires manipulés, j&#8217;ai décidé de créer un script <code>vodget</code> qui appelle les programmes de récupération avec 2 paramètres&nbsp;:</p>
<ol>
<li>le répertoire de téléchargement&nbsp;;</li>
<li>le répertoire destination.</li>
</ol>
<p><code>/usr/bin/vodget</code></p>
<pre>#!/bin/bash
scripts_dir=/var/lib/vodget
script="$scripts_dir/$1"
download_dir=/tmp/vodget
target_dir=/var/www/vod
$script "$download_dir" "$target_dir"</pre>
<p>Les programmes de récupération sont stockés dans <code>/var/lib/vodget</code>.</p>
<h5>Exemple</h5>
<p>Voici un exemple qui récupère les guignols de l&#8217;info (Canal+)&nbsp;:<br />
<code>/var/lib/vodget/guignols</code></p>
<pre>#!/bin/bash
category=guignols
download_dir="$1/$category"
target_dir="$2/$category"
mkdir -p "$download_dir"
mkdir -p "$target_dir"
wget -O- http://www.canalplus.fr/rest/bootstrap.php?/bigplayer/search/guignols | grep -o 'rtmp://[^&lt;]\+.mp4' | while read url
do
    filename="$(echo "$url" | sed 's/.*\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\).*/20\1-\2-\3/')"
    if [ ! -f "$target_dir/$filename.ogv" ]
    then
        flvstreamer -r "$url" -o "$download_dir/$filename.mp4"
        touch "$target_dir/$filename.ogv"
        ffmpeg2theora-later "$download_dir/$filename.mp4" -o "$target_dir/$filename.ogv" -v8 -a3
    fi
done</pre>
<p>Cet exemple est une implémentation qui a l&#8217;avantage d&#8217;être très courte, vous pouvez aussi adapter <a href="http://forum.ubuntu-fr.org/viewtopic.php?id=346586">des versions plus évoluées</a> pour qu&#8217;elles utilisent <code>ffmpeg2theora-later</code>.</p>
<p>Un simple appel à&nbsp;:</p>
<pre>vodget guignols</pre>
<p>récupèrera les nouveaux épisodes et les encodera en OGG/Theora.</p>
<p>Il ne restera plus qu&#8217;à se rendre sur la page HTTP pointant sur le répertoire des vidéos avec <a href="http://mozilla-europe.org/fr/firefox/">un navigateur</a> qui supporte le HTML5 et le codec OGG/Theora, pour pouvoir regarder les vidéos ainsi récupérées&nbsp;:</p>
<p><a href="http://blog.rom1v.com/wp-content/uploads/2010/04/vod-guignols.png"><img src="http://blog.rom1v.com/wp-content/uploads/2010/04/vod-guignols-300x193.png" alt="" title="vod-guignols" width="300" height="193" class="aligncenter size-medium wp-image-1375" /></a></p>
<p><em>Bien sûr, les vidéos récupérées qui ne sont pas sous licence libre sont à usage personnel. Cela permet de regarder en VOD les épisodes dans un format ouvert, qui ne nécessite pas de programme propriétaire, ces vidéos ne doivent pas être placées sur un serveur public.</em></p>
<h4>Démarrage programmé</h4>
<p>Pour automatiser tout cela, il est possible de programmer périodiquement la récupération des nouvelles vidéos grâce à <a href="http://doc.ubuntu-fr.org/cron">cron</a>. Pour cela&nbsp;:</p>
<pre>crontab -e</pre>
<p>et ajouter la ligne <em>qui-va-bien</em>. Par exemple, pour récupérer les nouveaux épisodes des guignols tous les jours à 23 heures&nbsp;:</p>
<pre>00 23 * * * vodget guignols</pre>
<h3>Améliorations</h3>
<p>Techniquement, il faudrait gérer le démon par un script <em>init.d</em>, mais ça n&#8217;est pas si simple (si on arrête le service alors qu&#8217;une vidéo est en cours d&#8217;encodage et qu&#8217;on le redémarre, le nombre de CPU à utiliser ne sera plus respecté…).</p>
<p>Si vous êtes motivés, il est également possible de faire un beau site qui permette de regarder les vidéos en VOD, plutôt qu&#8217;une page qui liste simplement les fichiers récupérés.</p>
<h3>Conclusion</h3>
<p>Les différentes vidéos que je suis susceptible de regarder en VOD (que je ne regardais pas avant) sont maintenant disponibles sur mon serveur, lisible directement par mon navigateur.</p>
<p>On peut imaginer de nombreuses sources à agréger&nbsp;:</p>
<ul>
<li>les sites de VOD des chaînes de télévision (Canal+, France5, M6…)&nbsp;;</li>
<li>des bandes-annonces cinéma&nbsp;;</li>
<li>des chaînes enregistrées en direct avec la TV sur ADSL&nbsp;;</li>
<li>le flux de l&#8217;Assemblée Nationale ou du Sénat&nbsp;;</li>
<li>…</li>
</ul>
<p>Bien sûr, on aimerait mieux que les différentes sources fournissent des flux RSS pointant vers leurs vidéos, qu&#8217;ils diffuseraient eux-même en OGG/Theora. Mais on peut toujours attendre…</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2010/04/aggreger-differentes-sources-de-vod-en-oggtheora/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Filtrer les spams sur un serveur mail (SpamAssassin)</title>
		<link>http://blog.rom1v.com/2010/03/filtrer-les-spams-sur-un-serveur-mail-spamassassin/</link>
		<comments>http://blog.rom1v.com/2010/03/filtrer-les-spams-sur-un-serveur-mail-spamassassin/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 22:25:54 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[auto-hébergement]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/?p=1265</guid>
		<description><![CDATA[Pour continuer ma série d&#8217;articles sur l&#8217;auto-hébergement de ses mails, je vais présenter l&#8217;installation de SpamAssassin. Pour mon serveur mail (et plus généralement pour les outils que j&#8217;utilise), j&#8217;essaie de mettre en place uniquement ce dont j&#8217;ai besoin. Et jusqu&#8217;ici, je n&#8217;avais pas l&#8217;utilité d&#8217;un anti-spams, ne recevant aucun courrier indésirable. Mais depuis peu, j&#8217;en [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.rom1v.com/wp-content/uploads/2010/03/NO-SPAM.png"><img src="http://blog.rom1v.com/wp-content/uploads/2010/03/NO-SPAM.png" alt="" title="NO-SPAM" width="150" height="150" class="alignright size-full wp-image-1293" /></a><br />
Pour continuer ma série d&#8217;articles sur l&#8217;auto-hébergement de ses mails, je vais présenter l&#8217;installation de <em>SpamAssassin</em>.</p>
<p>Pour mon serveur mail (et plus généralement pour les outils que j&#8217;utilise), j&#8217;essaie de mettre en place uniquement ce dont j&#8217;ai besoin. Et jusqu&#8217;ici, je n&#8217;avais pas l&#8217;utilité d&#8217;un anti-spams, ne recevant aucun courrier indésirable. Mais depuis peu, j&#8217;en reçois un de temps en temps… C&#8217;est donc l&#8217;occasion de m&#8217;y mettre.</p>
<h3>Installation et configuration</h3>
<p>Il existe plusieurs méthodes, j&#8217;ai choisi la plus simple&nbsp;: c&#8217;est <em>procmail</em> qui fournit les mails à <em>SpamAssassin</em>.</p>
<p>Il faut tout d&#8217;abord <a href="http://blog.rom1v.com/2010/01/trier-ses-mails-directement-sur-le-serveur-procmail/">installer et configurer procmail</a>, puis installer le paquet <a href="apt://spamassassin">spamassassin</a>&nbsp;:</p>
<pre>sudo apt-get install spamassassin</pre>
<p>Ensuite, rajouter dans <code>~/.procmailrc</code> la règle suivante (copiée de <a href="http://spamassassin.apache.org/full/3.0.x/dist/procmailrc.example">la doc</a>)&nbsp;:</p>
<pre># Pipe the mail through spamassassin (replace 'spamassassin' with 'spamc'
# if you use the spamc/spamd combination)
#
# The condition line ensures that only messages smaller than 250 kB
# (250 * 1024 = 256000 bytes) are processed by SpamAssassin. Most spam
# isn't bigger than a few k and working with big messages can bring
# SpamAssassin to its knees.
#
# The lock file ensures that only 1 spamassassin invocation happens
# at 1 time, to keep the load down.
#
:0fw: spamassassin.lock
* &lt; 256000
| spamassassin</pre>
<p>Enfin, éditer <code>/etc/spamassassin/local.cf</code>.</p>
<p>Pour uniquement ajouter les en-têtes de spam (ce qui est suffisant pour filtrer), il faut changer la valeur de <code>report_safe</code>&nbsp;:</p>
<pre>report_safe 0</pre>
<p>Pour ajouter un tag dans le sujet d&#8217;un mail considéré comme un spam&nbsp;:</p>
<pre>rewrite_header Subject *****SPAM*****</pre>
<p>Il est également possible de configurer le score requis pour qu&#8217;un mail soit considéré comme un spam. Plus cette valeur est faible, plus le filtre est agressif.<br />
La valeur par défaut (5.0) est un peu faible, je vous conseille d&#8217;augmenter un peu si vous voulez limiter les faux-positifs&nbsp;:</p>
<pre>required_score 6.0</pre>
<p>Rajouter éventuellement les lignes suivantes&nbsp;:</p>
<pre># Langues attendues (les autres auront un score plus élevé)
ok_languages fr

# Rapports en français
lang fr</pre>
<p>Pour ajouter un expéditeur en liste blanche, rajouter&nbsp;:</p>
<pre>whitelist_from any@mail.com</pre>
<h3>Test</h3>
<p>Pour tester, le plus simple est de mettre un filtre très sévère, par exemple avec un score négatif&nbsp;:</p>
<pre>required_score -2</pre>
<p>En m&#8217;envoyant un mail à moi-même qui contient comme sujet <em>test</em>, je constate à la réception que les en-têtes ont été modifiés&nbsp;:</p>
<pre>Subject: *****SPAM***** test
Date: Thu, 25 Mar 2010 21:19:52 +0100
Message-Id: &lt;1269548392.9798.9.camel@rom-laptop>
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on rom-eeebox
X-Spam-Level: ***
X-Spam-Status: Yes, score=3.9 required=-2.0 tests=ALL_TRUSTED,</pre>
<p>Le mail a bien été détecté comme un spam. Ça fonctionne.</p>
<h3>Filtrage</h3>
<p>Maintenant que les spams sont détectés, il faut les traiter (les déplacer dans un dossier prévu à cet effet).</p>
<p>Il suffit pour cela de créer un dossier sur le serveur&nbsp;:</p>
<pre>maildirmake.dovecot ~/Maildir/.Spams</pre>
<p>et d&#8217;ajouter la règle suivante dans <codttte>~/.procmailrc (<a href="http://blog.rom1v.com/2010/01/trier-ses-mails-directement-sur-le-serveur-procmail/">plus d&#8217;infos</a>)&nbsp;:</p>
<pre>:0
* ^X-Spam-Status: Yes
.Spams/</pre>
<h3>Conclusion</h3>
<p>Les spams auront maintenant un peu plus de mal à se glisser dans ma boîte mail.</p>
<p>La configuration présentée ici est vraiment minimale. Selon son efficacité il faudra peut-être l&#8217;affiner.</p>
<h3>Voir aussi</h3>
<p>Mes précédents billets sur l&#8217;auto-hébergement des mails&nbsp;:<br />
<a href="http://blog.rom1v.com/2009/08/hebergez-vos-mails-sur-ubuntu-server-et-liberez-vous/">Hébergez vos mails sur Ubuntu Server (et libérez-vous)</a><br />
<a href="http://blog.rom1v.com/2009/11/installer-un-webmail-roundcube-sur-ubuntu-server/">Installer un webmail (RoundCube) sur Ubuntu Server</a><br />
<a href="http://blog.rom1v.com/2010/01/ajouter-lauthentification-smtp-sur-un-serveur-mail/">Ajouter l’authentification SMTP sur un serveur mail</a><br />
<a href="http://blog.rom1v.com/2010/01/trier-ses-mails-directement-sur-le-serveur-procmail/">Trier ses mails directement sur le serveur (procmail)</a></codttte></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2010/03/filtrer-les-spams-sur-un-serveur-mail-spamassassin/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Trier ses mails directement sur le serveur (procmail)</title>
		<link>http://blog.rom1v.com/2010/01/trier-ses-mails-directement-sur-le-serveur-procmail/</link>
		<comments>http://blog.rom1v.com/2010/01/trier-ses-mails-directement-sur-le-serveur-procmail/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 17:43:18 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[auto-hébergement]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/?p=1140</guid>
		<description><![CDATA[Dans la continuité des articles consacrés à l&#8217;auto-hébergement des mails, je vais présenter quelque chose que je voulais mettre en place depuis un moment&#160;: le tri du courrier directement sur le serveur. Introduction Lorsqu&#8217;on est abonné à des mailing-lists ou qu&#8217;on reçoit des notifications de forums ou de blogs, il est inconcevable de garder tous [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.rom1v.com/wp-content/uploads/2010/01/tri-courrier.jpg"><img src="http://blog.rom1v.com/wp-content/uploads/2010/01/tri-courrier-150x150.jpg" alt="" title="tri-courrier" width="150" height="150" class="alignright size-thumbnail wp-image-1174" /></a></p>
<p>Dans la continuité des articles consacrés à l&#8217;<a href="http://blog.rom1v.com/2009/08/hebergez-vos-mails-sur-ubuntu-server-et-liberez-vous/">auto-hébergement des mails</a>, je vais présenter quelque chose que je voulais mettre en place depuis un moment&nbsp;: <strong>le tri du courrier directement sur le serveur</strong>.</p>
<h3>Introduction</h3>
<p>Lorsqu&#8217;on est abonné à des mailing-lists ou qu&#8217;on reçoit des notifications de forums ou de blogs, il est inconcevable de garder tous ses mails dans un seul et même dossier, et impensable de les déplacer manuellement (à moins de passer 30 minutes par jour à les trier). Un tri doit être mis en place automatiquement, en se basant sur les en-têtes des mails reçus.</p>
<p>J&#8217;utilisais jusqu&#8217;à maintenant les filtres de messages de mon client mail, <em>Evolution</em>, mais ça n&#8217;était pas forcément approprié&nbsp;:</p>
<ul>
<li>d&#8217;une part c&#8217;est très long avec un compte IMAP (les dossiers étant gérés côté serveur), car le client doit récupérer localement les nouveaux messages du serveur et les analyser&nbsp;; s&#8217;il faut en déplacer un, il doit demander au serveur de le copier de la boîte de réception vers le dossier destination adéquat, puis demander de le supprimer de la boîte de réception, et enfin récupérer le messages déplacé… Rien que ça&nbsp;!</li>
<li>d&#8217;autre part, lorsqu&#8217;on accède à ses mails à partir de plusieurs endroits (par exemple le client mail, le webmail et le téléphone portable), il devient évident que ce ne peut pas être le rôle des clients de trier les messages…</li>
</ul>
<p>C&#8217;est donc au serveur de placer les mails dans le bon dossier dès la réception. C&#8217;est ce que <b>procmail</b> permet de faire.</p>
<h3>Les dossiers IMAP</h3>
<p>Les dossiers IMAP sont des dossiers physiques contenus dans <code>~/Maildir</code> (le répertoire des mails) qui respectent une structure particulière&nbsp;:</p>
<ul>
<li>leur nom commence par &laquo;&nbsp;.&nbsp;&raquo; (ce sont des dossiers cachés) et les sous-dossiers &laquo;&nbsp;logiques&nbsp;&raquo; sont séparés par des &laquo;&nbsp;.&nbsp;&raquo; (par exemple, si je veux un dossier <code>a</code> contenant un sous-dossier <code>b</code>, le répertoire physique sera <code>~/Maildir/.a.b</code>)&nbsp;;</li>
<li>ils contiennent 3 sous-dossiers physiques&nbsp;: <code>cur</code>, <code>new</code> et <code>tmp</code>.</li>
</ul>
<p>Pour les créer, il suffit d&#8217;utiliser <code>maildirmake</code> ou <code>maildirmake.dovecot</code>, à partir du répertoire <code>~/Maildir</code>&nbsp;:</p>
<pre>maildirmake.dovecot .forums.ubuntu-fr
maildirmake.dovecot .forums.developpez</pre>
<p>pour obtenir l&#8217;arborescence suivante&nbsp;:</p>
<pre>|-- .forums.developpez
|   |-- cur
|   |-- new
|   `-- tmp
`-- .forums.ubuntu-fr
    |-- cur
    |-- new
    `-- tmp</pre>
<p>Il est également possible de les créer graphiquement grâce à un client mail.</p>
<h3>Configuration de postfix</h3>
<p>Il faut indiquer à <strong>postfix</strong> que <strong>procmail</strong> va s&#8217;occuper de trier les mails, en lui précisant dans <code>/etc/postfix/main.cf</code>&nbsp;:</p>
<pre>mailbox_command = /usr/bin/procmail</pre>
<p>Il faudra ensuite recharger la configuration&nbsp;:</p>
<pre>sudo /etc/init.d/postfix reload</pre>
<h3>Définir les règles de tri</h3>
<p>Tout se passe dans le fichier (à créer) <code>~/.procmailrc</code>, qui contient deux parties&nbsp;: la définition des variables et la définition des &laquo;&nbsp;recettes&nbsp;&raquo; (les règles de tri).</p>
<h4>Les variables</h4>
<p>Pour les variables, copiez simplement ceci (en décommentant les 2 premières lignes si vous voulez des logs).</p>
<pre>#VERBOSE=yes
#LOGFILE=.procmail.log
SHELL=/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=Maildir/
DEFAULT=./</pre>
<h4>Les recettes</h4>
<p>Les recettes sont écrites sous la forme suivante&nbsp;:</p>
<pre>:0 [drapeaux] [ : [verrou_local] ]
&lt;zéro ou plusieurs conditions (une par ligne)&gt;
&lt;exactement une ligne d'action&gt;</pre>
<p>Les conditions commencent toutes par &laquo;&nbsp;*&nbsp;&raquo;, suivie d&#8217;une expression régulière. Pour qu&#8217;une recette exécute l&#8217;action définie, il faut que le mail en question valide <strong>toutes</strong> les conditions.</p>
<p>Pour faire simple, nous allons simplement créer des règles qui déplacent des mails dans des dossiers. Pour définir une telle action, il suffit d&#8217;écrire le nom du dossier, en terminant la ligne par <code>/</code> (très important, cette convention indique à <strong>procmail</strong> que le dossier est au format <em>maildir</em>).</p>
<p>Un exemple étant plus parlant, voici une règle qui déplace toutes mes notifications de blog dans un dossier <code>blog</code>&nbsp;:</p>
<pre>:0
* ^From: .*&lt;wordpress@blog\.rom1v\.com&gt;$
.blog/</pre>
<p><ins datetime="2010-12-01T00:00:00+01:00">Cet autre exemple permet d&#8217;envoyer une copie des mails validant les conditions à des adresses e-mails spécifiées (je m&#8217;en sers pour transférer les messages vocaux de mon répondeur téléphonique sur plusieurs adresses)&nbsp;:</ins></p>
<pre>:0c
* ^From: telephonie\.freebox@freetelecom\.com$
! autre@email.com</pre>
<h4>Résultat</h4>
<p>Au final, voici un extrait de mon fichier <code>~/.procmailrc</code> (je n&#8217;ai pas mis toutes les règles, c&#8217;est juste pour donner quelques exemples)&nbsp;:</p>
<pre>#VERBOSE=yes
#LOGFILE=.procmail.log
SHELL=/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=Maildir/
DEFAULT=./

:0
* ^From: .*&lt;wordpress@blog\.rom1v\.com&gt;$
.blog/

:0
* ^Reply-To: .*&lt;[0-9]+@bugs\.launchpad\.net&gt;$
.bugs.launchpad/

:0
* ^From: .*&lt;dev\.null@ubuntu-fr\.org&gt;$
.forums.ubuntu-fr/

:0
* ^List-Id: &lt;april\.april\.org&gt;$
.ml.april/</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2010/01/trier-ses-mails-directement-sur-le-serveur-procmail/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Motorola Milestone avec Android 2, mes premières impressions</title>
		<link>http://blog.rom1v.com/2010/01/motorola-milestone-avec-android-2-mes-premieres-impressions/</link>
		<comments>http://blog.rom1v.com/2010/01/motorola-milestone-avec-android-2-mes-premieres-impressions/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 18:10:11 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Humeur]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[netneutrality]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/?p=1108</guid>
		<description><![CDATA[Je viens de recevoir mon nouveau téléphone, un Motorola Milestone, avec le système d&#8217;exploitation Android 2, que j&#8217;ai pris avec un abonnement SFR Illymythics 3G+ Full Internet. Ma ligne n&#8217;étant pas encore activée, je me suis connecté en WiFi sur mon routeur. Voici mes premières impressions de libriste. Comme vous allez le voir, il y [...]]]></description>
			<content:encoded><![CDATA[<p>Je viens de recevoir mon nouveau téléphone, un Motorola Milestone, avec le système d&#8217;exploitation Android 2, que j&#8217;ai pris avec un abonnement SFR Illymythics 3G+ Full Internet. Ma ligne n&#8217;étant pas encore activée, je me suis connecté en WiFi sur mon routeur.</p>
<p>Voici mes premières impressions de libriste. Comme vous allez le voir, il y a du positif… et du négatif. Je vais commencer par l&#8217;achat et l&#8217;accès Internet, pour ensuite entrer dans le vif du sujet&nbsp;: le matériel et le logiciel.</p>
<h3>L&#8217;achat</h3>
<p>Exclusivité <em>rueducommerce</em>, ce téléphone n&#8217;était pas trouvable autre part à sa sortie&nbsp;: c&#8217;est insupportable ces exclusivités, impossible de le voir &laquo;&nbsp;en vrai&nbsp;&raquo; avant l&#8217;achat. Par contre, il était possible de choisir son opérateur (encore heureux me direz-vous, mais ça n&#8217;est pas toujours le cas).</p>
<h3>L&#8217;accès Internet</h3>
<p>Comme prévu, un internet mobile (avec un petit <em>i</em>) loin d&#8217;être neutre, comme on peut le voir dans les <a href="http://www.sfr.fr/mobile/edito/pdf/docs_juridique/181109/conditions_generales_abonnement_SFR.pdf">conditions générales d&#8217;abonnement SFR</a>&nbsp;:</p>
<blockquote><p>4.1&nbsp;: L’abonné est informé et accepte que les Offres lui soient proposées sur la base de la configuration du terminal compatible opérée par l’opérateur. Dès lors, l’abonné qui procèderait à la modification de paramétrage de son terminal compatible ne pourra plus bénéficier des Offres et tarifs en l’état.</p></blockquote>
<p>Les offres et les tarifs dépendent du matériel qu&#8217;on utilise pour aller sur internet ou téléphoner&nbsp;! Imaginez que votre accès ADSL soit plus cher si vous achetez un ordinateur Acer plutôt qu&#8217;un Asus… ou que vous changiez le système d&#8217;exploitation ou les logiciels pré-installés…</p>
<blockquote><p>4.2&nbsp;: Le peer to peer, les newsgroups, la Voix sur IP et les usages Modem sont interdits, ce que l’abonné reconnaît et accepte, SFR se réservant le droit, pour les clients Forfaits Bloqués SFR, de résilier la ligne en cas de manquement.</p></blockquote>
<p>Bon, bah là on est carrément dans le filtrage protocolaire pure et simple. Sans parler des usages &laquo;&nbsp;modem&nbsp;&raquo; qui sont interdits, comme si les fournisseurs d&#8217;accès ADSL interdisaient d&#8217;installer un routeur perso sur sa connexion…</p>
<blockquote><p>4.3 : Pour permettre à tous les clients SFR d’accéder au réseau SFR dans des conditions optimales, le débit maximum de connexion sera réduit au-delà de 1Go d’échanges de données par mois jusqu’à la prochaine date de facturation.</p></blockquote>
<p>Quand une phrase commence comme ça, en général, c&#8217;est mauvais signe… Le soi-disant &laquo;&nbsp;Internet&nbsp;&raquo; est donc limité à 1Go par mois sans réduction de débit…</p>
<p>Les cas particuliers pour les <em>iPhone</em>s sont également assez hallucinants.</p>
<p>Vivement que Free sorte ses offres mobiles…</p>
<h3>Le matériel</h3>
<p><a href="http://blog.rom1v.com/wp-content/uploads/2010/01/motorola-milestone.jpg"><img src="http://blog.rom1v.com/wp-content/uploads/2010/01/motorola-milestone-300x238.jpg" alt="" title="motorola-milestone" width="300" height="238" class="aligncenter size-medium wp-image-1111" /></a></p>
<p>Rien à redire à ce niveau-là, l&#8217;écran 3,7&#8242; avec une définition de 854×480 est vraiment très confortable, la navigation sur internet est agréable. L&#8217;écran tactile fonctionne très bien, il a l&#8217;air solide et ne se raye pas. Le clavier physique est très sympa pour écrire tout en gardant l&#8217;intégralité de l&#8217;écran visible.</p>
<p>Le téléphone est peut-être un peu lourd, mais on s&#8217;y fait.</p>
<h3>Le logiciel</h3>
<h4>Mes attentes</h4>
<p>Avant de détailler ce que je pense de toute la partie logicielle, je voudrais détailler ce que j&#8217;attends du téléphone.</p>
<p>Tout d&#8217;abord, je veux accéder à mes mails, à la messagerie instantanée et aux salons de discussion IRC. Je veux également pouvoir me connecter en SSH (sur mon serveur à la maison par exemple) et rediriger des ports (pour faire passer les connexions dans un tunnel, vers un réseau internet plus neutre, celui que j&#8217;ai à la maison en l&#8217;occurrence)&nbsp;; les logiciels que j&#8217;utilise doivent donc supporter la configuration d&#8217;un proxy.</p>
<p>Ensuite, je ne veux pas utiliser tous les services <em>Google</em>, en particulier je ne veux pas de Gmail, de l&#8217;agenda, de Google Talk… Plus généralement, je ne veux pas d&#8217;applications qui nécessitent un compte <em>Google</em> (mes données personnelles n&#8217;ont rien à faire chez <em>Google</em> ou chez n&#8217;importe qui d&#8217;autre).</p>
<p>Enfin, je ne veux pas passer par &laquo;&nbsp;Android Market&nbsp;&raquo; pour installer des applications. Je veux installer et désinstaller des applications à ma guise, même celles qui sont fournies avec le téléphone. D&#8217;ailleurs, je ne suis pas d&#8217;accord avec les <a href="http://www.google.com/mobile/android/market-tos.html">conditions d&#8217;utilisation</a>, entre autres&nbsp;:</p>
<blockquote><p>Si tel était le cas, Google se réserve le droit de supprimer à distance et à sa seule discrétion les Produits concernés de votre Mobile, sans vous en informer au préalable.</p></blockquote>
<p>D&#8217;une part, je considère que c&#8217;est abusif sur le principe, d&#8217;autre part ça signifie que techniquement le Market est une sorte de trojan à partir duquel une entité extérieure peut exécuter du code à son bon vouloir. Tout simplement inacceptable. <em>Google</em> m&#8217;a beaucoup déçu sur ce point, en général j&#8217;aime bien leur politique d&#8217;ouverture, mais j&#8217;avoue avoir été désagréablement surpris par leurs conditions, qui font malheureusement penser à celles d&#8217;Apple (en moins pire, certes, mais quand même)…</p>
<p>Certains me demanderont alors &laquo;&nbsp;mais pourquoi donc as-tu choisi un Android&nbsp;?&nbsp;&raquo;. Pour moi, Android a beaucoup d&#8217;attraits&nbsp;: le système d&#8217;exploitation est sympa, on peut rajouter des applications sous licence libre sans forcément passer par le Market, on peut se connecter directement en USB à l&#8217;ordinateur, j&#8217;aime bien l&#8217;interface, etc. Avoir accès facilement à mes données personnelles offertes gracieusement à <em>Google</em> est loin d&#8217;être ma priorité… Et je rajouterais que faute de mieux, Android est le moins pire au niveau ouverture…</p>
<h4>Que de déceptions&nbsp;!</h4>
<p>Tout d&#8217;abord, lorsqu&#8217;on allume le téléphone, on se rend compte qu&#8217;il y a quelques applications installées dont on n&#8217;a pas besoin (&laquo;&nbsp;Agenda&nbsp;&raquo;, &laquo;&nbsp;Agenda d&#8217;entreprise&nbsp;&raquo;, &laquo;&nbsp;Annuaire d&#8217;entreprise&nbsp;&raquo;, &laquo;&nbsp;Gmail&nbsp;&raquo;, &laquo;&nbsp;Motonav&nbsp;&raquo;, &laquo;&nbsp;Phone Portal&nbsp;&raquo;, sans compter &laquo;&nbsp;Market&nbsp;&raquo; puisque j&#8217;ai dit que je ne comptais pas m&#8217;en servir). Après tout, ce n&#8217;est pas gênant, sur Ubuntu <em>Empathy</em> est pré-installé, moi j&#8217;utilise <em>Gajim</em>, il me suffit de désinstaller <em>Empathy</em> et d&#8217;installer <em>Gajim</em>.</p>
<p>Mais là, non&nbsp;! Il est tout simplement impossible de désinstaller les applications pré-installées, certaines ressemblant plus à des crapwares qu&#8217;à des applications utiles (ça me fait penser aux pauvres utilisateurs de Windows qui achètent un ordinateur avec Norton pré-installé et difficile à retirer)…</p>
<p>En fait, il faut attendre que le téléphone soit rooté pour pouvoir faire ce que l&#8217;on veut sur sa machine. Et là vient encore une nouvelle déception vis-à-vis de <em>Google</em> (à moins que ça ne soit la faute de <em>Motorola</em>&nbsp;?)&nbsp;: pourquoi n&#8217;est-il pas proposé par défaut la fonctionnalité de passer root sur la machine&nbsp;? Pourquoi est-ce considéré comme du &laquo;&nbsp;piratage&nbsp;&raquo; de rooter son téléphone, comme pour le jailbreak de l&#8217;<em>iPhone</em>&nbsp;? Imaginez-vous acheter un ordinateur et qu&#8217;on vous empêche d&#8217;être root dessus&nbsp;? Pourquoi serait-ce différent pour un téléphone&nbsp;?</p>
<p>Ça commence mal, mais ce n&#8217;est pas très grave, je me dis que je vais ignorer ces applications, elles prennent juste un peu de place en mémoire et surtout dans le menu principal… Après tout, je peux installer les logiciels libres que je veux en les téléchargeant sur le site en <strong>.apk</strong> et en les copiant sur la carte mémoire, non&nbsp;? Pas tout-à-fait, car par défaut, le téléphone ne sait pas installer les <b>.apk</b>… Ça aurait été plus utile que les bidules pré-installés, non&nbsp;?</p>
<p>Parce que du coup, il faut installer un logiciel qui s&#8217;appelle <em>appsInstaller</em> (non libre) <em>(EDIT: je vous conseille plutôt le gestionnaire de fichiers libre <a href="http://www.openintents.org/en/download">OI File Manager</a>)</em>. Comment? En passant par le <em>Market</em>. Ce qui implique d&#8217;accepter les conditions disant <em>&laquo;&nbsp;ce programme est un trojan, voulez-vous accepter&nbsp;?&nbsp;&raquo;</em> (je caricature à peine). Et qui implique de renseigner un compte Gmail dans le téléphone, qui sera utilisé par toutes les autres applications.</p>
<p>J&#8217;accepte donc les conditions et crée un compte bidon (jeneveuxpasdecompte at gmail.com). Une fois <em>appsInstaller</em> installé, je tente de supprimer ce compte de mon téléphone, &laquo;&nbsp;Impossible de supprimer ce compte&nbsp;&raquo;. <strong>sudo supprimer ce compte</strong>, non ça n&#8217;est pas possible&nbsp;? Décidément, on n&#8217;est pas maître de la machine tant qu&#8217;on n&#8217;est pas root&nbsp;!</p>
<p><em><strong>EDIT 10/01/2009&nbsp;:</strong> C&#8217;est en fait possible d&#8217;installer une application <code>.apk</code> sans jamais configurer un comte gmail ni passer par le market&nbsp;: <a href="http://blog.rom1v.com/2010/01/installer-une-application-apk-sur-android-a-partir-dun-pc/">Installer une application .apk sur Android à partir d’un PC</a>.</em></p>
<h4>Du positif quand même</h4>
<p>Malgré tout cela, il y a des choses qui fonctionnent bien.</p>
<p>Par exemple la connexion USB qui permet d&#8217;accéder directement au contenu la carte SD, quelque soit le système d&#8217;exploitation. Ou la musique Ogg Vorbis qui se lit très bien avec le lecteur par défaut… La gestion des notifications est également sympa (un peu à la manière d&#8217;<em>indicator-applet</em> dans Ubuntu).</p>
<p>Le GPS fonctionne bien en extérieur (par contre en intérieur, il fait n&#8217;importe quoi chez moi).</p>
<p>Voici quelques retours d&#8217;expérience sur les programmes &laquo;&nbsp;de base&nbsp;&raquo; (mails, messagerie, ssh, jabber).</p>
<p><strong>Si vous connaissez d&#8217;autres logiciels libres sympa, n&#8217;hésitez pas à partager.</strong></p>
<h5>Mail</h5>
<p>Le client mail par défaut se connecte sans problème à mon serveur perso en utilisant IMAP/TLS et SMTP/TLS. Il n&#8217;offre par contre pas un super affichage pour les dossiers IMAP (une liste de noms &laquo;&nbsp;bruts&nbsp;&raquo; comme &laquo;&nbsp;INBOX.forums.ubuntu-fr&nbsp;&raquo;, &laquo;&nbsp;INBOX.mailing-list.april&nbsp;&raquo;…). il ne gère pas le PUSH (pour recevoir son mail aussitôt) et a un peu de mal avec les pièces jointes.</p>
<p>J&#8217;ai installé <a href="http://code.google.com/p/k9mail/">k9mail</a> (Apache License 2.0), qui est un peu plus complet, et qui gère le PUSH et les pièces jointes. Par contre, il n&#8217;est qu&#8217;en anglais.</p>
<h5>Messagerie instantanée</h5>
<p>Pour utiliser la messagerie instantanée <em>Jabber</em>, j&#8217;utilise le client <a href="">Beem</a> qui fonctionne très bien&nbsp;:<br />
<img alt="Beem" src="http://www.beem-project.com/screenshot_rc1/contact_list.png" title="capture d'écran de Beem" class="aligncenter" width="320" height="480" /></p>
<h5>Identi.ca</h5>
<p>Pour tweeter sur <em>identi.ca</em>, j&#8217;ai installé <a href="http://macno.org/mustard/">mustard</a>. Très sympa (sauf qu&#8217;il rafraîchit les flux à chaque fois qu&#8217;on le lance, même si le dernier chargement a eu lieu il y a 15 secondes).</p>
<h5>SSH</h5>
<p>L&#8217;application <a href="http://code.google.com/p/connectbot/">connectbot</a> (GNU/GPLv3), permet de se connecter en SSH à un serveur. Elle gère les paires de clés publique/privée et la redirection de ports.</p>
<p>En particulier, je l&#8217;utilise pour lancer <a href="http://www.irssi.org/">irssi</a> (un client IRC en ligne de commande) dans un <a href="http://doc.ubuntu-fr.org/screen">screen</a> sur un serveur. Cela permet de pouvoir déconnecter et reconnecter le client sans se déconnecter des salons et ni perdre le fil de discussion…</p>
<p>Malheureusement, le navigateur internet par défaut ne permet pas de configurer de proxy (pour utiliser un tunnel SSH). Si vous en connaissez un bien en attendant <em>Fennec</em>, je suis preneur. D&#8217;autant que le navigateur intégré ne fonctionne pas correctement sur <a href="http://tt-rss.org/">tt-rss</a> (quand je clique sur un flux, il considère que je clique sur toute la colonne de gauche).</p>
<h3>Conclusion</h3>
<p>Le téléphone et le système sont de jolis jouets technologiques.</p>
<p>Mais je m&#8217;attendais, de la part de <em>Google</em>, à ce que ça soit quand même plus ouvert que ça… Là on est obligé d&#8217;accepter des conditions inacceptables, d&#8217;utiliser un compte <em>Google</em> alors qu&#8217;on n&#8217;a rien demandé, on ne peut pas désinstaller les crapwares… On se sent un peu limité, on n&#8217;a pas la maîtrise totale de la machine tant qu&#8217;elle n&#8217;aura pas été rootée, je trouve que c&#8217;est vraiment dommage.</p>
<p>Attendons donc qu&#8217;elle soit rootée…</p>
<p><em>PS: Quelques trolls se sont malencontreusement glissés dans ce billet, saurez-vous les retrouver&nbsp;? <img src='http://blog.rom1v.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2010/01/motorola-milestone-avec-android-2-mes-premieres-impressions/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Ajouter l&#8217;authentification SMTP sur un serveur mail</title>
		<link>http://blog.rom1v.com/2010/01/ajouter-lauthentification-smtp-sur-un-serveur-mail/</link>
		<comments>http://blog.rom1v.com/2010/01/ajouter-lauthentification-smtp-sur-un-serveur-mail/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 20:23:05 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[auto-hébergement]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/?p=1093</guid>
		<description><![CDATA[Ce billet vient compléter mon premier billet concernant l&#8217;installation d&#8217;un serveur mail sur Ubuntu Server. Objectif La configuration de postfix présentée dans mon premier billet limitait (dans un but de sécurité) l&#8217;envoi d&#8217;un mail à une personne distante qu&#8217;à partir du réseau local (ou une liste de réseaux prédéfinis). Cela est parfait lorsqu&#8217;on envoie toujours [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.rom1v.com/wp-content/uploads/2010/01/mail-smtp-auth.png"><img src="http://blog.rom1v.com/wp-content/uploads/2010/01/mail-smtp-auth-150x150.png" alt="" title="mail-smtp-auth" width="150" height="150" class="alignleft size-thumbnail wp-image-1098" /></a><br />
Ce billet vient compléter mon premier billet concernant l&#8217;<a href="http://blog.rom1v.com/2009/08/hebergez-vos-mails-sur-ubuntu-server-et-liberez-vous/">installation d&#8217;un serveur mail sur Ubuntu Server</a>.</p>
<h3>Objectif</h3>
<p>La configuration de <strong>postfix</strong> présentée dans mon premier billet limitait (dans un but de sécurité) l&#8217;envoi d&#8217;un mail à une personne distante qu&#8217;à partir du réseau local (ou une liste de réseaux prédéfinis). Cela est parfait lorsqu&#8217;on envoie toujours les mails de chez soi, avec au besoin la possibilité d&#8217;envoyer un mail de n&#8217;importe où grâce au <a href="http://blog.rom1v.com/2009/11/installer-un-webmail-roundcube-sur-ubuntu-server/">webmail</a>.</p>
<p>Mais l&#8217;utilisation du SMTP à distance devient utile lorsqu&#8217;on veut envoyer un mail à partir de chez un ami avec son client mail (plus pratique pour les pièces jointes par exemple), et cela devient carrément indispensable lorsqu&#8217;on veut écrire des mails à partir de son téléphone de n&#8217;importe où (sans IP fixe).</p>
<p>Ne plus restreindre l&#8217;utilisation du SMTP au réseau local implique évidemment de rajouter une couche d&#8217;authentification…</p>
<p>Je vais donc décrire comment mettre en place une authentification SMTP-AUTH &laquo;&nbsp;en clair&nbsp;&raquo; (bien sûr encapsulée dans une connexion chiffrée TLS, déjà configurée si vous avez suivi le premier tuto) qui correspond au login et mot de passe de l&#8217;utilisateur système. Il a été écrit pour une installation sur <strong>Ubuntu Server 9.10</strong>, il faudra donc peut-être l&#8217;adapter légèrement si vous utilisez autre chose.</p>
<h3>Configuration de SASL</h3>
<p>Il faut installer le paquet <strong>sasl2-bin</strong>&nbsp;:</p>
<pre>sudo apt-get install sasl2-bin</pre>
<p>et ajouter l&#8217;utilisateur <strong>postfix</strong> au groupe <strong>sasl</strong>&nbsp;:</p>
<pre>sudo adduser postfix sasl</pre>
<p>Ouvrez ensuite <strong>/etc/default/saslauthd</strong>, remplacez&nbsp;:</p>
<pre>START=no</pre>
<p> par&nbsp;:</p>
<pre>START=yes</pre>
<p>et remplacez la dernière ligne par&nbsp;:</p>
<pre>OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"</pre>
<p>Démarrez le service&nbsp;:</p>
<pre>sudo /etc/init.d/saslauthd start</pre>
<h3>Configuration de postfix</h3>
<p>À la fin de <strong>/etc/postfix/main.cf</strong>, rajoutez&nbsp;:</p>
<pre># SASL
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination</pre>
<p><em>Dans ce même fichier, vous pouvez également supprimer le réseau <strong>192.168.0.0/24</strong> de la variable <strong>mynetworks</strong> (si vous l&#8217;aviez rajouté).</em></p>
<p>Créez le fichier <strong>/etc/postfix/sasl/smtpd.conf</strong> contenant&nbsp;:</p>
<pre>pwcheck_method: saslauthd
mech_list: plain login</pre>
<p>Rechargez la configuration de postfix&nbsp;:</p>
<pre>sudo /etc/init.d/postfix reload</pre>
<p>Voilà, tout est prêt.</p>
<h3>Configuration du client mail</h3>
<p>Dans votre client mail, indiquez que le serveur SMTP requiert une authentification, de type CLAIR (ou PLAIN), et précisez votre compte utilisateur à utiliser.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2010/01/ajouter-lauthentification-smtp-sur-un-serveur-mail/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>Installer un webmail (RoundCube) sur Ubuntu Server</title>
		<link>http://blog.rom1v.com/2009/11/installer-un-webmail-roundcube-sur-ubuntu-server/</link>
		<comments>http://blog.rom1v.com/2009/11/installer-un-webmail-roundcube-sur-ubuntu-server/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 18:38:55 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[auto-hébergement]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/?p=909</guid>
		<description><![CDATA[Un de mes précédents billets présentait l&#8217;installation d&#8217;un serveur de mails sur Ubuntu Server. Une fois installé, il était possible d&#8217;accéder à son courrier grâce à un client de messagerie. Il peut-être pratique, en plus de cela, d&#8217;accéder à ses mails par un webmail de n&#8217;importe où (notamment au travail, où il ne sera pas [...]]]></description>
			<content:encoded><![CDATA[<p>Un de mes précédents billets présentait l&#8217;<a href="http://blog.rom1v.com/2009/08/hebergez-vos-mails-sur-ubuntu-server-et-liberez-vous/">installation d&#8217;un serveur de mails sur Ubuntu Server</a>. Une fois installé, il était possible d&#8217;accéder à son courrier grâce à un client de messagerie.</p>
<p>Il peut-être pratique, en plus de cela, d&#8217;accéder à ses mails par un <em>webmail</em> de n&#8217;importe où (notamment au travail, où il ne sera pas filtré comme celui de <em>gmail</em> ou de <em>yahoo</em>, puisque c&#8217;est un webmail perso).</p>
<p>Je profite de la réinstallation à neuf de mon serveur pour présenter l&#8217;installation de <a href="http://roundcube.net/">RoundCube</a>, un webmail assez moderne, à installer sur <a href="http://doc.ubuntu-fr.org/lamp">LAMP</a> (avec accès HTTPS) sur Ubuntu Server.</p>
<p>Voici ce que ça donne une fois installé&nbsp;:<br />
<a href="http://blog.rom1v.com/wp-content/uploads/2009/11/roundcube.png"><img src="http://blog.rom1v.com/wp-content/uploads/2009/11/roundcube-300x190.png" alt="roundcube" title="roundcube" width="300" height="190" class="aligncenter size-medium wp-image-1014" /></a></p>
<p><em>Je partirai du principe que le webmail est sur la même machine que le serveur SMTP et que le répertoire <code>~/Maildir</code> (contenant les mails), et qu&#8217;il sera le seul site hébergé en HTTPS sur le serveur.</em></p>
<h3>Téléchargement</h3>
<p>Tout d&#8217;abord, il faut télécharger l&#8217;archive sur le site de <a href="http://roundcube.net/download">RoundCube</a> (la version complète), et l&#8217;extraire dans un répertoire&nbsp;:</p>
<pre>tar xzf roundcubemail-0.3.1.tar.gz</pre>
<p>Il est plus pratique de le renommer&nbsp;:</p>
<pre>mv roundcubemail-0.3.1 mail</pre>
<p>Ensuite, il faut donner les droits au serveur d&#8217;écrire dans les répertoires <code>temp</code> et <code>logs</code>&nbsp;:</p>
<pre>sudo chmod -R 777 mail/temp mail/logs</pre>
<p>Enfin, faire un lien du répertoire d&#8217;installation de RoundCube (par exemple <code>~/mail</code>) dans <code>/var/www</code>.</p>
<pre>sudo ln -s ~/mail/ /var/www</pre>
<h3>Préparation de la base de données</h3>
<p>Il faut créer une base de données qui sera utilisée par RoundCube, avec son propre utilisateur. Pour cela, démarrer <em>mysql</em> en tant qu&#8217;administrateur (le login et le mot de passe choisi lors de la configuration de <em>mysql</em>)&nbsp;:</p>
<pre>$ mysql -uroot -p
Enter password:</pre>
<p>Ensuite, créer une base de données&nbsp;:</p>
<pre>mysql> CREATE DATABASE mail;
Query OK, 1 row affected (0,00 sec)</pre>
<p>Puis un utilisateur <em>mysql</em> (par exemple <code>mailuser</code>/<code>unmotdepasse</code>)&nbsp;:</p>
<pre>mysql> GRANT ALL PRIVILEGES ON mail.* TO mailuser@localhost IDENTIFIED BY 'unmotdepasse';
Query OK, 0 rows affected (0,00 sec)</pre>
<p>Voilà, la base de données est prête à accueillir RoundCube.</p>
<h3>Configuration d&#8217;Apache</h3>
<p>Tout d&#8217;abord, il faut activer le mod <code>ssl</code> d&#8217;apache&nbsp;:</p>
<pre>sudo a2enmod ssl</pre>
<p>Et renseigner le champ <code>date.timezone</code> de <code>php.ini</code>&nbsp;:</p>
<pre>sudo nano /etc/php5/apache2/php.ini</pre>
<p>Remplacer la ligne&nbsp;:</p>
<pre>;date.timezone =</pre>
<p>par&nbsp;:</p>
<pre>date.timezone = 'Europe/Paris'</pre>
<p>Ensuite, il faut créer un <em>VirtualHost</em> qui décrit à Apache le site qu&#8217;il doit héberger (le nom du site sur lequel il répond en http, quels répertoires doivent être accessibles, etc.).</p>
<p>Voici un modèle (qui correspond à mon <em>VirtualHost</em>), qui permet&nbsp;:</p>
<ul>
<li>d&#8217;afficher le site contenu dans <code>/var/www/mail</code> lorsqu&#8217;une requête arrive sur le port 443 (<code>https</code>), c&#8217;est-à-dire quand je tape <code>https://mail.rom1v.com</code> dans un navigateur&nbsp;;</li>
<li>d&#8217;interdire l&#8217;accès aux répertoires <code>config</code>, <code>temp</code> et <code>logs</code>&nbsp;;</li>
<li>de rediriger automatiquement <code>http://mail.rom1v.com</code> vers <code>https://mail.rom1v.com</code>.</li>
</ul>
<pre>NameVirtualHost *:443

&lt;VirtualHost *:80&gt;
	ServerName	mail.rom1v.com
	Redirect	/ https://mail.rom1v.com/
&lt;/VirtualHost&gt;

&lt;VirtualHost *:443&gt;
	DocumentRoot	/var/www/mail
	ServerName	mail.rom1v.com
	SSLEngine on
	SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
	SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

	&lt;Directory /var/www/mail/&gt;
		Options FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	&lt;/Directory&gt;

	&lt;Directory /var/www/mail/config&gt;
		Options -FollowSymLinks
		AllowOverride None
	&lt;/Directory&gt;

	&lt;Directory /var/www/mail/temp&gt;
		Options -FollowSymLinks
		AllowOverride None
	&lt;/Directory&gt;

	&lt;Directory /var/www/mail/logs&gt;
		Options -FollowSymLinks
		AllowOverride None
		Order allow,deny
		Deny from all
	&lt;/Directory&gt;

	ErrorLog	/var/log/apache2/mail_error.log
	CustomLog	/var/log/apache2/mail_access.log combined

&lt;/VirtualHost&gt;</pre>
<p>Ce fichier, une fois adapté à votre serveur, est à écrire dans <code>/etc/apache2/sites-available/</code> (dans un fichier nommé comme votre site par exemple, <code>mail.rom1v.com</code> pour moi).</p>
<p>Il faut ensuite l&#8217;activer&nbsp;:</p>
<pre>sudo a2ensite mail.rom1v.com</pre>
<p>Et recharger Apache&nbsp;:</p>
<pre>sudo /etc/init.d/apache2 reload</pre>
<h3>Configuration de RoundCube</h3>
<p>Il ne reste plus qu&#8217;à aller sur <code>http://votreserveur/installer</code> avec un navigateur pour configurer RoundCube.</p>
<p><a href="http://blog.rom1v.com/wp-content/uploads/2009/11/firefox-ssl.png"><img src="http://blog.rom1v.com/wp-content/uploads/2009/11/firefox-ssl-300x228.png" alt="firefox-ssl" title="firefox-ssl" width="300" height="228" class="aligncenter size-medium wp-image-1015" /></a><br />
Bien sûr, lors de la première connexion, Firefox vous alerte car il ne connaît pas votre certificat SSL (qui est auto-signé), il suffit de lui indiquer que vous faites confiance à ce site (puisque c&#8217;est le vôtre) en ajoutant une exception.</p>
<p>L&#8217;<strong>étape 1</strong> <em>(Check environment)</em> doit bien se passer (à part quelques modules optionnels que vous n&#8217;avez pas, ce n&#8217;est pas grave).</p>
<p>Pour l&#8217;<strong>étape 2</strong> <em>(Create config)</em>&nbsp;:</p>
<ul>
<li>Choisir un <code>product_name</code>&nbsp;: le titre des pages souhaité&nbsp;;</li>
<li>Activer <code>ip_check</code>&nbsp;;</li>
<li>Désactiver <code>enable_spellcheck</code> (sinon tous vos mails seront envoyés à Google)&nbsp;;</li>
<li>Renseigner les données pour l&#8217;accès à la base de données (que nous avons créée tout à l&#8217;heure)&nbsp;;</li>
<li>Dans la partie IMAP, renseigner uniquement <code>default_host</code> à la valeur <code>localhost</code>&nbsp;;</li>
<li>Laissez par défaut le reste de la partie IMAP et la partie SMTP (vu que les mails sont sur la même machine).</li>
</ul>
<p>Lors de la validation, deux fichiers sont générés. Il faut les télécharger et les placer dans le répertoire <code>config/</code> <em>(ce n&#8217;est pas très pratique d&#8217;ailleurs, lorsqu&#8217;on accède au serveur par ssh, devoir télécharger les fichiers localement pour les renvoyer au serveur est un peu tordu)</em>.</p>
<p>L&#8217;<strong>étape 3</strong> <em>(Test config)</em> permet de tester que tout est OK. Il faut cliquer sur <em>Initialize database</em>.</p>
<p>Une fois ces étapes effectuées, rendez-vous sur l&#8217;adresse du webmail, vérifiez que ça fonctionne (avec votre login système et votre mot de passe). Si tout est ok, supprimez le répertoire <code>installer/</code>&nbsp;:</p>
<pre>rm -rf /var/www/mail/installer</pre>
<h3>Modifier les préférences</h3>
<p>Une fois connecté, il est possible de changer les préférences utilisateur. Je vous laisse découvrir les options par vous-même, mais certaines sont importantes.</p>
<p>Tout d&#8217;abord, dans l&#8217;onglet <em>identités</em>, renseignez votre adresse mail (par défaut c&#8217;est <code>login@localhost</code>, ce qui posera des problèmes à ceux qui voudront vous répondre).</p>
<p>Ensuite, activez les options qui concernent la suppression d&#8217;un message sur un compte IMAP dans <em>Préférences du serveur</em> de l&#8217;onglet <em>Préférences</em>&nbsp;:</p>
<ul>
<li><em>Mettre le drapeau de suppression au lieu de supprimer</em> (sinon vous ne pourrez pas supprimer de messages)&nbsp;;</li>
<li><em>Ne pas montrer les messages supprimés</em> (sinon vous les verrez encore en barré)</li>
</ul>
<h3>Conclusion</h3>
<p>Bravo. Vous avez maintenant un serveur mail perso avec un accès webmail sur HTTPS en plus de votre accès IMAP/TLS. Vous gagnez 1 point de liberté et 1 point de confort.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2009/11/installer-un-webmail-roundcube-sur-ubuntu-server/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Hébergez vos mails sur Ubuntu Server (et libérez-vous)</title>
		<link>http://blog.rom1v.com/2009/08/hebergez-vos-mails-sur-ubuntu-server-et-liberez-vous/</link>
		<comments>http://blog.rom1v.com/2009/08/hebergez-vos-mails-sur-ubuntu-server-et-liberez-vous/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 22:52:28 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[auto-hébergement]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[netneutrality]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/?p=839</guid>
		<description><![CDATA[Après avoir acheté un petit serveur pour y héberger ce dont j&#8217;avais besoin, mon objectif est d&#8217;héberger TOUT ce qui n&#8217;a rien à faire ailleurs. Et comme l&#8217;explique Benjamin Bayart dans sa désormais célèbre conférence Internet libre ou Minitel 2.0, toutes nos données personnelles entrent dans cette catégorie. Mon blog est un bon exemple d&#8217;un [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.rom1v.com/wp-content/uploads/2009/08/mail.png"><img class="alignleft size-thumbnail wp-image-872" title="mail" src="http://blog.rom1v.com/wp-content/uploads/2009/08/mail-150x150.png" alt="mail" width="150" height="150" /></a></p>
<p>Après avoir acheté un petit serveur pour y héberger ce dont j&#8217;avais besoin, mon objectif est d&#8217;héberger TOUT ce qui n&#8217;a rien à faire ailleurs. Et comme l&#8217;explique Benjamin Bayart dans sa désormais célèbre conférence <a href="http://www.fdn.fr/Internet-libre-ou-Minitel-2.html">Internet libre ou Minitel 2.0</a>, toutes nos données personnelles entrent dans cette catégorie.</p>
<p><a href="http://blog.rom1v.com/2009/01/nouveau-blog-100-libre/">Mon blog</a> est un bon exemple d&#8217;un contenu qui ne doit pas être hébergé ailleurs. La liste des flux RSS que je consulte aussi (c&#8217;est pourquoi j&#8217;ai installé <a href="http://tt-rss.org/">tt-rss</a>). Mon album photos à partager avec la famille également (j&#8217;ai installé <a href="http://gallery.menalto.com/">gallery</a>). Mais il restait le plus important&nbsp;: <strong>les mails</strong>.</p>
<p>Et c&#8217;est bien moins compliqué à installer que je ne l&#8217;imaginais !</p>
<p>Je vais donc présenter comment installer son propre serveur de mails sur <strong>Ubuntu Server</strong> (si vous utilisez autre chose, ça ne devrait pas être bien dur à adapter). Ainsi, vous pourrez avoir une jolie adresse <code>login@mondomaine</code>.</p>
<h3>Prérequis</h3>
<p>Je supposerai que vous avez déjà un nom de domaine et que vous savez ajouter des enregistrements <code>A</code> et <code>MX</code> (généralement dans l&#8217;interface fournie par votre registrar).</p>
<h3>Présentation</h3>
<p>Pour mettre en place un serveur mail complet, nous avons besoin de deux choses&nbsp;: un serveur SMTP (qui gère le transport du courrier) et un serveur IMAP ou POP3 (permettant de se connecter à sa boîte aux lettres).</p>
<p>J&#8217;ai choisi respectivement <strong>postfix</strong> et <strong>dovecot</strong> (ceux par défaut dans Ubuntu Server).</p>
<p>Il est possible de faire tout un tas de choses compliquées, ici je vais aller au plus simple. Au final on obtiendra donc un compte mail par utilisateur système (avec son mot de passe système), un serveur SMTP et un accès IMAP, le tout sécurisé sur TLS. Le serveur SMTP ne pourra relayer les mails envoyés qu&#8217;à partir du réseau local.</p>
<h3>Configuration DNS</h3>
<p>Rajoutez deux records de type <code>A</code> à votre fichier de zones DNS (<code>smtp</code> et <code>imap</code> – histoire de faire comme tout le monde, mais vous mettez ce que vous voulez –), et ajoutez un record de type <code>MX</code> qui pointe vers votre enregistrement <code>smtp</code> (<code>smtp.rom1v.com.</code> – n&#8217;oubliez pas le <code>.</code> à la fin –).</p>
<p>Il faut bien sûr ouvrir les ports sur le routeur et dans le pare-feu…<br />
Pour rappel&nbsp;:</p>
<ul>
<li>SMTP = 25</li>
<li>POP = 110</li>
<li>POP3S = 995</li>
<li>IMAP = 143</li>
<li>IMAPS = 993</li>
</ul>
<h3>Serveur</h3>
<h4>postfix</h4>
<p>Si vous n&#8217;avez pas déjà les paquets installés&nbsp;:</p>
<pre>sudo apt-get install postfix dovecot-imapd</pre>
<p>Si vous aviez déjà postfix&nbsp;:</p>
<pre>sudo dpkg-reconfigure postfix</pre>
<p>Vous obtenez un écran de configuration <em>debconf</em> qui va vous prendre par la main pour la configuration&nbsp;:<br />
<a href="http://blog.rom1v.com/wp-content/uploads/2009/08/postfix-debconf.png"><img class="aligncenter size-medium wp-image-840" title="postfix-debconf" src="http://blog.rom1v.com/wp-content/uploads/2009/08/postfix-debconf-300x211.png" alt="postfix-debconf" width="300" height="211" /></a></p>
<ol>
<li><strong>Configuration type du serveur de messagerie :</strong> Site Internet</li>
<li><strong>Nom de courrier :</strong> votre nom de domaine (<code>rom1v.com</code> pour moi)</li>
<li><strong>Destinataire des courriels de « root » et de « postmaster » :</strong> votre login sur le serveur (<code>rom</code> pour moi)</li>
<li><strong>Autres destinations pour lesquelles le courrier sera accepté :</strong> rajoutez votre nom de domaine dans la liste (<code>rom1v.com</code>)</li>
<li><strong>Forcer des mises à jour synchronisées de la file d&#8217;attente des courriels :</strong> non (laisser par défaut)</li>
<li><strong>Réseaux internes :</strong> <code>127.0.0.0/8, 192.168.0.0/24</code> si votre réseau local est <code>192.168.0.x</code></li>
<li><strong>Utiliser procmail pour la distribution locale :</strong> non (allons au plus simple)</li>
<li><strong>Taille maximale des boîtes aux lettres (en octets) :</strong> à vous de choisir, moi j&#8217;ai mis 5Gio (5368709120) <em>(les créateurs de logiciels qui proposent 50Mio ne doivent pas recevoir des mails de gens n&#8217;y connaissant rien qui envoient en triple des photos en 10 mégapixels)</em></li>
<li><strong>Caractère d&#8217;extension pour les adresse locales :</strong> <code>+</code> (laisser par défaut)</li>
<li><strong>Protocoles internet à utiliser :</strong> <code>all</code></li>
</ol>
<p>Vous avez alors un fichier <code>/etc/postfix/main.cf</code> qui ressemble à ceci (sauf la dernière ligne)&nbsp;:</p>
<pre>myhostname = rom1v.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = rom1v.com, rom-eeebox, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8, 192.168.0.0/24
mailbox_size_limit = 5368709120
recipient_delimiter = +
inet_interfaces = all
myorigin = /etc/mailname
inet_protocols = all
home_mailbox = Maildir/</pre>
<p>Ajoutez donc la dernière ligne (c&#8217;est très important pour faire fonctionner IMAP).</p>
<p><ins datetime="2010-11-08T00:00:00+01:00">Par défaut, les mails sont limités à 10Mio (ce qui paraît normal). Cependant, il arrive toujours que quelqu&#8217;un dans votre entourage vous envoie 10 photos de 3Mio chacune. Pour cela il faut ajouter dans <code>/etc/postfix/main.cf</code> la ligne suivante (pour 50Mio)&nbsp;:</ins></p>
<pre>message_size_limit = 52428800</pre>
<p>Voilà, le serveur SMTP est prêt&nbsp;:</p>
<pre>sudo /etc/init.d/postfix restart</pre>
<p>Il ne sera possible d&#8217;envoyer un mail qu&#8217;à partir des réseaux définis dans <strong>mynetworks</strong> (c&#8217;est pour cela qu&#8217;il n&#8217;y a pas d&#8217;authentification par défaut).</p>
<p><ins datetime="2010-01-02T00:00:00+01:00">Pour mettre en place une authentification plutôt que de limiter l&#8217;accès à une liste de réseaux, lisez <a href="http://blog.rom1v.com/2010/01/ajouter-lauthentification-smtp-sur-un-serveur-mail/">ce billet</a>.</ins></p>
<h4>dovecot</h4>
<p>Il y a deux choses à changer dans le fichier <code>/etc/dovecot/dovecot.conf</code>, tout d&#8217;abord pour activer le protocole IMAP&nbsp;:</p>
<pre>protocols = imap</pre>
<p>Ensuite pour choisir le répertoire de stockage des mails pour les utilisateurs (forcément <code>~/Maildir</code>)&nbsp;:</p>
<pre>mail_location = maildir:~/Maildir</pre>
<p>Enfin, il faut préparer ce répertoire en exécutant la commande&nbsp;:</p>
<pre>maildirmake.dovecot ~/Maildir</pre>
<p>Voilà, c&#8217;est fini&nbsp;:</p>
<pre>sudo /etc/init.d/dovecot restart</pre>
<h3>Client</h3>
<p>Le serveur est configuré, nous pouvons maintenant l&#8217;utiliser.</p>
<h4>mailtutils</h4>
<p>Commençons par le tester grâce au paquet <strong>mailutils</strong> qui permet d&#8217;envoyer des mails en ligne de commande&nbsp;:</p>
<pre>sudo apt-get install mailutils</pre>
<p>Directement sur le serveur&nbsp;:</p>
<pre>$ mail login@mondomaine
Cc:
Subject: Mon premier serveur
Ça y'est, j'ai configuré mon premier serveur !</pre>
<p><em>(terminer avec une nouvelle ligne suivi de Ctrl+D)</em><br />
Le mail a dû arriver dans <code>~/Maildir/new</code>.</p>
<h4>Un vrai client</h4>
<p>Comme pour n&#8217;importe quelle adresse e-mail, il suffit de configurer le client (Evolution par exemple) en renseignant les champs demandés.</p>
<h5>Réception</h5>
<p>Type de serveur&nbsp;: IMAP<br />
Serveur&nbsp;: <code>imap.rom1v.com</code> <em>(à adapter avec votre nom de domaine)</em><br />
Nom d&#8217;utilisateur&nbsp;: <em>votre login sur le serveur</em><br />
Sécurité&nbsp;: Chiffrement TLS<br />
Type d&#8217;authentification&nbsp;: Mot de passe</p>
<h5>Envoi</h5>
<p>Type de serveur&nbsp;: SMTP<br />
Serveur&nbsp;: <code>smtp.rom1v.com</code> <em>(à adapter avec votre nom de domaine)</em><br />
Nom d&#8217;utilisateur&nbsp;: <em>votre login sur le serveur</em><br />
Sécurité&nbsp;: Chiffrement TLS<br />
Pas d&#8217;authentification.</p>
<h3>Sauvegardes</h3>
<p>Bien entendu, maintenant que vous hébergez vos mails, vous êtes responsables de leur stockage, et donc des backups. Mais j&#8217;imagine que cela ne vous posera pas de problèmes, car vous avez bien évidemment déjà mis en place un système (au moins <code>rsync</code>) qui sauvegarde vos données sur une autre machine&nbsp;: il suffira donc de rajouter le répertoire <code>~/Mailbox</code> à la liste des répertoires sauvegardés.</p>
<h3>Disponibilité</h3>
<p>Si le serveur est déconnecté moins de 48 heures, ce n&#8217;est pas catastrophique, les mails ne seront probablement pas perdus, la majorité des serveurs SMTP tentent de renvoyer le courrier après un échec. Évidemment, si le serveur est éteint durant un mois, il n&#8217;y a pas de magie&nbsp;: pas de serveur, pas de mails…</p>
<h3>Conclusion</h3>
<p>Cette étape est pour moi un pas de plus vers un internet libre…</p>
<p>J&#8217;ai présenté le minimum vital, mais vous pouvez trouver des fonctionnalités à mettre en place (un webmail tel que <a href="http://blog.rom1v.com/2009/11/installer-un-webmail-roundcube-sur-ubuntu-server/">RoundCube</a>, un <a href="http://blog.rom1v.com/2010/03/filtrer-les-spams-sur-un-serveur-mail-spamassassin/">anti-spam</a>, le <a href="http://blog.rom1v.com/2010/01/trier-ses-mails-directement-sur-le-serveur-procmail/">tri des mails sur le serveur</a>, une <a href="http://blog.rom1v.com/2010/01/ajouter-lauthentification-smtp-sur-un-serveur-mail/">authentification SMTP</a>…).</p>
<p>Amusez-vous bien !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2009/08/hebergez-vos-mails-sur-ubuntu-server-et-liberez-vous/feed/</wfw:commentRss>
		<slash:comments>59</slash:comments>
		</item>
		<item>
		<title>Synergy : contrôlez plusieurs PC avec une seule souris et un seul clavier</title>
		<link>http://blog.rom1v.com/2008/11/synergy-controlez-plusieurs-pc-avec-une-seule-souris-et-un-seul-clavier/</link>
		<comments>http://blog.rom1v.com/2008/11/synergy-controlez-plusieurs-pc-avec-une-seule-souris-et-un-seul-clavier/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 21:10:00 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[synergy]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/2008/11/synergy%c2%a0-controlez-plusieurs-pc-avec-une-seule-souris-et-un-seul-clavier/</guid>
		<description><![CDATA[Synergy est un outil permettant de contrôler plusieurs ordinateurs avec un seul clavier et une seule souris. De plus, il permet de partager le presse-papier : pratique pour copier-coller d&#8217;un ordinateur à l&#8217;autre ! Mais en plus, c&#8217;est super simple ! Il y a un serveur et n clients. C&#8217;est le serveur qui possède le clavier et [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Synergy</strong> est un outil permettant de contrôler plusieurs ordinateurs avec un seul clavier et une seule souris. De plus, il permet de partager le presse-papier : pratique pour copier-coller d&#8217;un ordinateur à l&#8217;autre ! Mais en plus, c&#8217;est super simple !</p>
<p>Il y a un <strong>serveur</strong> et <em>n</em> <strong>clients</strong>. C&#8217;est le serveur qui possède le clavier et la souris.</p>
<div style="text-align: center;"><img src="http://www.generation-linux.fr/public/nov08/puls_synergy.png" alt="synergy" /></div>
<p>Tout d&#8217;abord, sur chacun des postes, il faut installer le paquet <a href="apt://synergy">synergy</a>.</p>
<p>Ensuite, sur le serveur, il faut créer un fichier de configuration <code>~/.synergy.conf</code>, extrêmement simple :</p>
<pre>section: screens
   rom-laptop:
   rom-desktop:
end
section: links
   rom-desktop:
       left = rom-laptop
   rom-laptop:
       right = rom-desktop
end</pre>
<p>Ici, <em>rom-laptop</em> est mon portable (le serveur) et <em>rom-desktop</em> est mon fixe (le client). C&#8217;est le nom de la machine, que l&#8217;on peut connaître avec :</p>
<pre>echo $HOSTNAME</pre>
<p>La section <code>screen</code> définit la liste des machines, et la section <code>links</code> définit leur position relative.</p>
<p>Ensuite, côté serveur, on tape :</p>
<pre>synergys</pre>
<p>Et sur chaque client :</p>
<pre>synergyc ip_du_serveur</pre>
<p>Les clients peuvent être lancés avant le serveur, ils vont tenter de se reconnecter 1 seconde après, puis 3 secondes après, puis 5, puis 15, puis 30 et enfin toutes les minutes. Ils survivent à la déconnexion du serveur, et tentent de se reconnecter en suivant la même règle.</p>
<p>Pour arrêter la connexion, sur le serveur :</p>
<pre>killall synergys</pre>
<p>et sur les clients :</p>
<pre>killall synergyc</pre>
<p><span style="text-decoration: underline;"><strong>Pour aller plus loin :</strong></span></p>
<p><strong>Éviter le changement d&#8217;écran involontaire</strong><br />
Après quelques minutes d&#8217;utilisation, on se rend compte que lorsqu&#8217;on est sur le PC de gauche, et qu&#8217;on va à la droite de l&#8217;écran (pour déplacer la scrollbar de <em>Firefox</em> en plein écran par exemple), on se retrouve involontairement sur l&#8217;écran de droite, c&#8217;est très embêtant.<br />
Mais c&#8217;est très facile d&#8217;y remédier, il suffit d&#8217;ajouter l&#8217;option :</p>
<pre>section: options
   switchDoubleTap = 400
end</pre>
<p>Cela permet de ne changer d&#8217;écran qu&#8217;en cas de double-contact en moins de 400ms avec le bord de l&#8217;écran.</p>
<p><strong>Démarrer automatiquement</strong><br />
Sous <em>GNOME</em> (à adapter pour les autres environnements), il suffit de rajouter au fichier <code>~/.gnomerc</code> la commande du serveur ou du client selon le cas.<br />
Pour le serveur :</p>
<pre>echo 'synergys' &gt;&gt; ~/.gnomerc</pre>
<p>Pour le client :</p>
<pre>echo 'synergyc ip_du_serveur' &gt;&gt; ~/.gnomerc</pre>
<p><strong>Décaler les écrans</strong><br />
Deux écrans côte à côte ne sont pas forcément alignés et ils n&#8217;ont pas forcément la même hauteur.<br />
Par exemple l&#8217;écran de mon fixe est un 5:4 et il est un peu surélevé, celui de mon portable est un 16:10 et il est plus bas.<br />
Pourtant, quand je déplace la souris d&#8217;un écran à l&#8217;autre, je voudrais que la souris reste à la même hauteur. Aucun problème, on peut passer des arguments (start,end), exprimés en pourcentage de l&#8217;écran, entre 0 et 100 inclus :</p>
<pre>section: screens
    rom-laptop:
    rom-desktop:
end
section: links
    rom-desktop:
        left(35,100) = rom-laptop(0,85)
    rom-laptop:
        right(0,85) = rom-desktop(35,100)
end
section: options
    switchDoubleTap = 400
end</pre>
<p>Ici, la partie supérieure de mon portable ([0%;85%]) est en face de la partie basse de mon fixe ([35%;100%]).<br />
<em>Remarque :</em> la relation n&#8217;a pas besoin d&#8217;être symétrique, mais c&#8217;est plus logique qu&#8217;elle le soit <img src='http://blog.rom1v.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Démarrer chacun des clients à distance</strong><br />
Si l&#8217;on ne veut pas démarrer <strong>synergy</strong> au démarrage, on souhaiterais pouvoir le faire rapidement sans passer sur chacun des PC pour exécuter une commande. Avec une connexion SSH correctement configurée (par clés de préférence), on peut automatiser le lancement de tous les clients :</p>
<pre>synergys
ssh rom-desktop synergyc rom-laptop
ssh un-autre-pc synergyc rom-laptop</pre>
<p>(<code>rom-laptop</code> est défini dans <code>/etc/hosts</code>)</p>
<p><strong>Sécuriser la connexion</strong><br />
<strong>Synergy</strong> ne crypte pas les communications, donc tout passe en clair sur le réseau (enfin, du moins pour ceux qui connaissent la clé WPA de votre réseau, si vous êtes en wifi).<br />
Pour crypter, il suffit de faire passer la connexion dans un tunnel SSH. Pour cela, sur chacun des clients :</p>
<pre>ssh rom-laptop -fCNL24800:localhost:24800 synergyc localhost</pre>
<p>Ce qui est embêtant, c&#8217;est qu&#8217;il faut décrypter sur chacun des postes la clé privée, et donc c&#8217;est problématique pour démarrer <strong>synergy</strong> au démarrage du système.</p>
<p>Un grand merci à <a href="http://www.generation-linux.fr/index.php?post/2008/11/19/%5BTest-1er-Billet%5D-Synergy-ou-comment-gagner-de-la-place-sur-votre-bureau">Génération Linux</a> qui m&#8217;a fait découvrir cet outil maintenant indispensable.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2008/11/synergy-controlez-plusieurs-pc-avec-une-seule-souris-et-un-seul-clavier/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>netcat : communication primaire en TCP</title>
		<link>http://blog.rom1v.com/2008/11/netcat-communication-primaire-en-tcp/</link>
		<comments>http://blog.rom1v.com/2008/11/netcat-communication-primaire-en-tcp/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 11:06:00 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[netcat]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/2008/11/netcat%c2%a0-communication-primaire-en-tcp/</guid>
		<description><![CDATA[Comment envoyer un bout de texte d&#8217;un pc à l&#8217;autre? Ou même un fichier? Il y a plein de méthodes, mais parfois la plus rudimentaire fonctionne très bien : écrire directement en TCP ! Pour cela, sur un pc (192.168.0.1 par exemple), faites : nc -l 1234 -l veut dire listen (ça veut dire qu&#8217;on lance un serveur) [...]]]></description>
			<content:encoded><![CDATA[<p>Comment envoyer un bout de texte d&#8217;un pc à l&#8217;autre? Ou même un fichier?</p>
<p>Il y a plein de méthodes, mais parfois la plus rudimentaire fonctionne très bien : écrire directement en TCP !</p>
<p>Pour cela, sur un pc (<code>192.168.0.1</code> par exemple), faites :</p>
<pre>nc -l 1234</pre>
<p><code>-l</code> veut dire <code>listen</code> (ça veut dire qu&#8217;on lance un serveur)<br />
<code>-p 1234</code> précise le port, choisissez ce que vous voulez</p>
<p>Sur un autre pc :</p>
<pre>nc 192.168.0.1 1234</pre>
<p>Et ça y&#8217;est, vous avez un tuyau de communication bidirectionnel, pratique pour faire des copiers-collers d&#8217;un ordinateur à l&#8217;autre. Si vous ouvrez le port correspondant sur votre routeur, ça marche aussi sur internet, bien évidemment.</p>
<p>L&#8217;avantage c&#8217;est que <code>nc</code> (ou <code>netcat</code>) est installé par défaut.</p>
<p>On peut aussi transférer des fichiers :</p>
<pre>nc -l -p 1234 &gt; monfichier</pre>
<pre>cat unfichier | nc 192.168.0.1 1234</pre>
<p>(terminer par <code>Ctrl+C</code>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2008/11/netcat-communication-primaire-en-tcp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Partager sa musique sur réseau local avec Rhythmbox</title>
		<link>http://blog.rom1v.com/2008/11/partager-sa-musique-sur-reseau-local-avec-rhythmbox/</link>
		<comments>http://blog.rom1v.com/2008/11/partager-sa-musique-sur-reseau-local-avec-rhythmbox/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 15:30:00 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[rhythmbox]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/2008/11/partager-sa-musique-sur-reseau-local-avec-rhythmbox/</guid>
		<description><![CDATA[Si vous avez plusieurs ordinateurs chez vous, il y a des dizaines de moyens de partager votre musique sur votre réseau local. En voici une très simple, grâce à Rhythmbox (le lecteur par défaut d&#8217;Ubuntu). Pour activer le partage, dans Édition → Greffons, il suffit d&#8217;activer Partage de musique DAAP (cette case est déjà activée [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous avez plusieurs ordinateurs chez vous, il y a des dizaines de moyens de partager votre musique sur votre réseau local.</p>
<p>En voici une très simple, grâce à <strong>Rhythmbox</strong> (le lecteur par défaut d&#8217;Ubuntu).</p>
<p>Pour activer le partage, dans Édition → Greffons, il suffit d&#8217;activer <em>Partage de musique DAAP</em> (cette case est déjà activée par défaut dans Ubuntu 8.10), de cliquer sur <em>Configurer</em>, et d&#8217;activer <em>Partager ma musique</em>.<br />
<a href="http://blog.rom1v.com/wp-content/uploads/2008/11/rhythmbox-enable-share.png"><img src="http://blog.rom1v.com/wp-content/uploads/2008/11/rhythmbox-enable-share-300x194.png" alt="rhythmbox-enable-share" title="rhythmbox-enable-share" width="300" height="194" class="aligncenter size-medium wp-image-235" /></a><br />
<a href="http://blog.rom1v.com/wp-content/uploads/2008/11/rhythmbox-share-dialog.png"><img src="http://blog.rom1v.com/wp-content/uploads/2008/11/rhythmbox-share-dialog-300x159.png" alt="rhythmbox-share-dialog" title="rhythmbox-share-dialog" width="300" height="159" class="aligncenter size-medium wp-image-236" /></a></p>
<p>Vous obtiendrez une nouvelle entrée dans le menu de gauche de <strong>Rhythmbox</strong>, et vous pourrez lire directement toute la musique se trouvant sur un autre ordinateur :<br />
<a href="http://blog.rom1v.com/wp-content/uploads/2008/11/rhythmbox-share.png"><img src="http://blog.rom1v.com/wp-content/uploads/2008/11/rhythmbox-share.png" alt="rhythmbox-share" title="rhythmbox-share" width="228" height="207" class="aligncenter size-full wp-image-237" /></a></p>
<p><em>Rhythmbox doit resté ouvert sur l&#8217;ordinateur &laquo;&nbsp;serveur&nbsp;&raquo;.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2008/11/partager-sa-musique-sur-reseau-local-avec-rhythmbox/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PulseAudio et X-forwarding : trouver le serveur de son</title>
		<link>http://blog.rom1v.com/2008/09/pulseaudio-et-x-forwarding-trouver-le-serveur-de-son/</link>
		<comments>http://blog.rom1v.com/2008/09/pulseaudio-et-x-forwarding-trouver-le-serveur-de-son/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 17:55:00 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[pulseaudio]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/2008/09/pulseaudio-et-x-forwarding%c2%a0-trouver-le-serveur-de-son/</guid>
		<description><![CDATA[J&#8217;avais d&#8217;abord présenté comment exécuter un lecteur audio à distance, en ayant son affichage localement (présentation de SSH, chapitre 5). J&#8217;ai ensuite présenté comment rediriger le son vers un autre PC (grâce à PulseAudio). Le problème, c&#8217;est qu&#8217;avec PulseAudio, l&#8217;exécution d&#8217;un lecteur audio à distance avec l&#8217;affichage en local ne fonctionne plus : le son ne [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;avais d&#8217;abord présenté comment exécuter un lecteur audio à distance, en ayant son affichage localement (<a href="http://blog.rom1v.com/2008/08/presentation-de-ssh/">présentation de SSH</a>, chapitre 5).</p>
<p>J&#8217;ai ensuite présenté comment <a href="http://blog.rom1v.com/2008/09/utilisez-une-sortie-son-dun-autre-pc-avec-ubuntu-804/">rediriger le son vers un autre PC</a> (grâce à PulseAudio).</p>
<p>Le problème, c&#8217;est qu&#8217;avec <strong>PulseAudio</strong>, l&#8217;exécution d&#8217;un lecteur audio à distance avec l&#8217;affichage en local ne fonctionne plus : le son ne sort nulle part, même si à l&#8217;écran tout a l&#8217;air de fonctionner :</p>
<pre>ssh monserveur -XC rhythmbox</pre>
<p>En effet, la variable d&#8217;environnement <code>PULSE_SERVER</code> n&#8217;étant pas affectée lors d&#8217;un <code>ssh -X</code>, le lecteur ne trouve pas de serveur audio.</p>
<p>La solution propre serait de rajouter une ligne dans <code>~/.pulse/client.conf</code> :</p>
<pre>echo "default-server={$HOSTNAME}unix:/tmp/pulse-$USER/native" &gt;&gt; ~/.pulse/client.conf</pre>
<p>Mais un bug de pulse audio, corrigé dans la version 0.9.12, fait que cette solution ne fonctionne pas. Et malheureusement, cette version de pulse audio ne devrait pas apparaître dans Ubuntu avant la version 9.04.</p>
<p>Une solution consiste donc à l&#8217;initialiser lors du lancement du lecteur audio :</p>
<pre>ssh monserveur -XC 'PULSE_SERVER="{$HOSTNAME}unix:/tmp/pulse-$USER/native" rhythmbox'</pre>
<p>Si vraiment l&#8217;on veut éviter d&#8217;affecter cette variable à chaque fois manuellement, on peut rajouter à la fin du fichier <code>/etc/ssh/sshd_config</code> la ligne suivante :</p>
<pre>PermitUserEnvironment yes</pre>
<p>puis, toujours <strong>sur le serveur</strong>, définir la variable d&#8217;environment dans le fichier <code>~/.ssh/environment</code> :</p>
<pre>echo "PULSE_SERVER={$HOSTNAME}unix:/tmp/pulse-$USER/native" &gt;&gt; ~/.ssh/environment</pre>
<p>Après avoir redémarré le serveur :</p>
<pre>sudo /etc/init.d/ssh restart</pre>
<p>il est possible de lancer sur le client :</p>
<pre>ssh monserveur -XC rhythmbox</pre>
<p>Le son ne sera plus perdu dans une faille de l&#8217;espace-temps <img src='http://blog.rom1v.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2008/09/pulseaudio-et-x-forwarding-trouver-le-serveur-de-son/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Utilisez une sortie son d&#8217;un autre PC avec Ubuntu 8.04 !</title>
		<link>http://blog.rom1v.com/2008/09/utilisez-une-sortie-son-dun-autre-pc-avec-ubuntu-804/</link>
		<comments>http://blog.rom1v.com/2008/09/utilisez-une-sortie-son-dun-autre-pc-avec-ubuntu-804/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 12:03:00 +0000</pubDate>
		<dc:creator>®om</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[puf]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[pulseaudio]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rom1v.com/2008/09/utilisez-une-sortie-son-dun-autre-pc-avec-ubuntu-804%c2%a0/</guid>
		<description><![CDATA[Dans ma présentation de SSH (au chapitre 5), j&#8217;expliquais comment exécuter un lecteur audio à distance, en ayant l&#8217;affichage en local. Pour résumer, supposons qu&#8217;un PC fixe (qui joue un peu le rôle de serveur) contienne toute notre audiothèque, et soit relié à un ampli. Il peut être pratique de vouloir contrôler cette musique à [...]]]></description>
			<content:encoded><![CDATA[<p>Dans ma <a href="http://blog.rom1v.com/2008/08/presentation-de-ssh/">présentation de SSH</a> (au chapitre 5), j&#8217;expliquais comment exécuter un lecteur audio à distance, en ayant l&#8217;affichage en local. Pour résumer, supposons qu&#8217;un PC fixe (qui joue un peu le rôle de serveur) contienne toute notre audiothèque, et soit relié à un ampli. Il peut être pratique de vouloir contrôler cette musique à distance avec le PC portable, tranquillement installé dans le canapé. La redirection de l&#8217;affichage du lecteur distant sur le PC local répond à ce problème.</p>
<p>Maintenant, prenons un autre cas de figure : je veux que les sons qui sortent actuellement sur le PC portable soient finalement redirigés vers l&#8217;ampli (par exemple le son d&#8217;une vidéo lue dans un navigateur).</p>
<p>Ceci est possible grâce au serveur de son <strong>PulseAudio</strong> intégré à Ubuntu 8.04. Et en plus, c&#8217;est très simple à mettre en œuvre.</p>
<p>Tout d&#8217;abord, installez le paquet <a href="apt://padevchooser">padevchooser</a> à la fois sur le PC serveur et sur le PC client, puis lancez <code>padevchooser</code> en console (ou allez dans le menu Applications → Son et vidéo → PulseAudio Device Chooser) : une icône apparaît alors dans le <em>systray</em>.</p>
<p>Sur le serveur, cliquez sur cette icône, puis &laquo;&nbsp;Configure Local Sound Server…&nbsp;&raquo;, et dans l&#8217;onglet &laquo;&nbsp;Multicast/RTP&nbsp;&raquo;, activez &laquo;&nbsp;<strong>Enable Multicast/RTP receiver</strong>&laquo;&nbsp;.<br />
Sur le client, faites de même, sauf que c&#8217;est &laquo;&nbsp;<strong>Enable Multicast/RTP sender</strong>&nbsp;&raquo; qu&#8217;il faut activer.<br />
Les deux machines peuvent avoir simultanément le rôle de client et de serveur.</p>
<p>Ensuite, sur le client, cliquez sur l&#8217;icône de <strong>PulseAudio</strong> dans le <em>systray</em>, puis &laquo;&nbsp;Volume Control&nbsp;&raquo;. Pour chaque flux sortant (ici VLC et Rhythmbox), vous pouvez choisir si le son doit sortir en local ou à distance :<br />
<a href="http://blog.rom1v.com/wp-content/uploads/2008/09/pulse-audio-volume-control.png"><img src="http://blog.rom1v.com/wp-content/uploads/2008/09/pulse-audio-volume-control-300x210.png" alt="pulse-audio-volume-control" title="pulse-audio-volume-control" width="300" height="210" class="aligncenter size-medium wp-image-198" /></a></p>
<p>Le réglage est appliqué &laquo;&nbsp;à chaud&nbsp;&raquo; (le son change aussitôt de sortie audio).</p>
<p>Il est possible de configurer de manière plus précise, pour choisir sur quelle carte son de quel PC le son doit sortir, ainsi que de définir une sortie son par défaut. Je vous laisse fouiller les préférences <img src='http://blog.rom1v.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Merci à <a href="http://forum.ubuntu-fr.org/viewtopic.php?pid=2047197#p2047197">Compte0</a> qui m&#8217;a fait découvrir cette fonctionnalité.</p>
<p><em>Note : pour que cela fonctionne avec les vidéos Flash, il faut le paquet <a href="apt://libflashsupport">libflashsupport</a>, en attendant que Flash supporte nativement <strong>PulseAudio</strong>.<br />
Attention cependant, il est possible avec ce paquet que des plantages de Firefox surviennent aléatoirement sur des pages contenant du Flash ; si cela vous arrive, désinstallez simplement le paquet.<br />
Vous pouvez également tester <a href="http://labs.adobe.com/downloads/flashplayer10.html">la version RC de Flash Player 10</a>, qui supporte <strong>PulseAudio</strong> en natif, ou attendre la version 8.10 d&#8217;Ubuntu, prévue pour le 30 octobre 2008.</em></p>
<p><em>EDIT: Tout fonctionne correctement depuis la version 8.10.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rom1v.com/2008/09/utilisez-une-sortie-son-dun-autre-pc-avec-ubuntu-804/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

