<?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>Serveur Linux</title>
	<atom:link href="http://www.serveur-linux.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.serveur-linux.info</link>
	<description>Aide à la configuration des serveurs sous Linux</description>
	<lastBuildDate>Mon, 23 Jan 2012 10:32:56 +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>Dépôt personnalisé de paquets .deb (Debian / Ubuntu)</title>
		<link>http://www.serveur-linux.info/2012/01/depot-personnalise-paquets-debian/</link>
		<comments>http://www.serveur-linux.info/2012/01/depot-personnalise-paquets-debian/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 09:09:41 +0000</pubDate>
		<dc:creator>Ludovic</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[deb]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[deploiement]]></category>
		<category><![CDATA[depot]]></category>
		<category><![CDATA[paquet]]></category>
		<category><![CDATA[reprepro]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.serveur-linux.info/?p=354</guid>
		<description><![CDATA[Pour déployer rapidement votre application (développements maison, plugins Nagios, configurations personnelles, ...), les paquets .deb permettent de réaliser cette opération facilement et sans copier tous les fichiers à la main dans le bon répertoire sur chaque machine.
Voyons voir comment créer un dépôt dans lequel nos paquets seront stockés et tous les serveurs (ou clients) pourront récupérer ce que l'on souhaite. <a href="http://www.serveur-linux.info/2012/01/depot-personnalise-paquets-debian/"> Lire la suite <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>Si vous avez <a title="Création d’un paquet Debian .deb" href="http://www.serveur-linux.info/2012/01/creation-paquet-debian-deb/">créés vos propres paquets &laquo;&nbsp;.deb&nbsp;&raquo; pour Debian</a> et Ubuntu, il faut un dépôt de paquets pour permettre aux machines de récupérer ces paquets et de les mettre à jour facilement.</p>
<p>Le format d&#8217;un paquet est le suivant &laquo;&nbsp;foo_VVV-RRR_AAA.deb&nbsp;&raquo; :</p>
<ul>
<li>VVV =&gt; la version</li>
<li>RRR =&gt; la révision</li>
<li>AAA =&gt; l&#8217;architecture</li>
</ul>
<p>Le serveur qui gère les dépôts possède un Apache configuré et qui est accessible via l&#8217;URL (HTTP ou HTTPS) :</p>
<pre>http://depot-deb/</pre>
<p>Le serveur Apache pointe sur le dossier suivant :</p>
<pre>/var/www/depot-deb</pre>
<h1>Génération de la clé GPG</h1>
<p>Pour authentifier vos paquets, vous pouvez générer une clé GPG pour les signer. Ensuite, la clé sera utilisée pour certifier votre dépôt personnel.</p>
<p>Pour générer la clé (il faudra définir un nom et une adresse email) :</p>
<pre>cd /root
gpg --gen-key
5 (pour choisir RSA)
4096
O</pre>
<p><strong><em>Ce processus peut prendre du temps. Laissez la console en l&#8217;état et ouvrez une nouvelle console.</em></strong></p>
<p>Lors de la création d&#8217;un clé GPG, il faut générer des activités systèmes pour que des chaines aléatoires soient utilisées en copiant des fichiers, lister des répertoires, etc.<br />
Vous rencontrerez surement le message ci-dessous :</p>
<pre>Il n'y a pas assez d'octets aléatoires disponibles. Faites autre chose
pour que l'OS puisse amasser plus d'entropie ! (il faut 277 octets de plus)</pre>
<p>Pour connaitre le nombre d&#8217;octets aléatoires générés par votre système, ouvrez une nouvelle console SHELL :</p>
<pre>cat /proc/sys/kernel/random/entropy_avail</pre>
<p>Pour accélérer cette génération aléatoire, voici le petit script que j&#8217;utilise :</p>
<pre>#!/bin/bash

while true
do
cp -rp /etc/ /tmp/.
rm -r /tmp/etc/
done</pre>
<p>L&#8217;opération devrait se terminer au bout de plusieurs minutes. <span style="text-decoration: underline;">N&#8217;oubliez pas de tuer le processus du script ci-dessus</span> car il ne se terminera jamais à cause du &laquo;&nbsp;while true&nbsp;&raquo;.</p>
<p>Une fois la clé générée, on peut l&#8217;afficher :</p>
<pre>gpg --list-keys

/root/.gnupg/pubring.gpg
------------------------
pub   1024R/EA8AE8AD 2012-01-20
uid                  user-test &lt;user-test@domaine.fr&gt;</pre>
<p>Il faut maintenant exporter la clé pour être rendue publique, en effet, les machines qui accéderont à ce dépôt personnel demanderont la clé car les paquets sont signés :</p>
<pre>gpg --armor --export user-test@domaine.fr &gt;&gt; /var/www/depot-deb/key/depot-deb.gpg.key</pre>
<p>Ainsi, pour récupérer la clé à partir d&#8217;une machine, elle est accessible via :</p>
<pre>http://depot-deb/key/depot-deb.gpg.key</pre>
<h1>Installation de reprepro</h1>
<p>Le paquet REPREPRO permet de créer son propre dépôt personnel. L&#8217;installation est rapide :</p>
<pre>apt-get install reprepro</pre>
<p>La configuration est à placer dans un répertoire dédié :</p>
<pre>mkdir /var/www/depot-deb/conf/</pre>
<p>Il faut ensuite définir tous les systèmes pour lesquels nos paquets pourront être installés. Dans mon cas, il s&#8217;agit de Debian Squeeze (pour mettre pour Lenny, ajoutez simplement le même bloc dans ce même fichier <em>distributions</em> en remplaçant <em>squeeze</em> par <em>Lenny</em>) :</p>
<pre>vi /var/www/depot-deb/conf/distributions

Origin: Depot-Debian
Label: User-test
Suite: stable
Codename: squeeze
Architectures: i386 amd64 source
Components: main non-free contrib
Description: Paquets pour Debian
SignWith: yes</pre>
<p>Le paramètre <em>SignWith</em> est spécifié à <em>yes</em> car nos paquets sont signés.</p>
<p><em>Je laisse la définition du paramètre override même s&#8217;il n&#8217;est pas activé.</em></p>
<pre>vi /var/www/depot-deb/conf/override.squeeze
verbose
ask-passphrase
basedir .</pre>
<h1>Construction du dépôt</h1>
<p>Avant de pouvoir enregistrer nos paquets, il faut construire l&#8217;arborescence du dépôt. La commande va lire le fichier <em>/var/www/depot-deb/conf/distributions</em> :</p>
<pre>reprepro --ask-passphrase -Vb /var/www/depot-deb export</pre>
<p>Voici le résultat (il faudra spécifier votre mot de passe pour la clé GPG créée précédemment) :</p>
<pre>Created directory "/var/www/depot-deb/db"
Exporting squeeze...
Created directory "/var/www/depot-deb/dists"
Created directory "/var/www/depot-deb/dists/squeeze"
Created directory "/var/www/depot-deb/dists/squeeze/main"
Created directory "/var/www/depot-deb/dists/squeeze/main/binary-i386"
Created directory "/var/www/depot-deb/dists/squeeze/main/binary-amd64"
Created directory "/var/www/depot-deb/dists/squeeze/main/source"
Created directory "/var/www/depot-deb/dists/squeeze/non-free"
Created directory "/var/www/depot-deb/dists/squeeze/non-free/binary-i386"
Created directory "/var/www/depot-deb/dists/squeeze/non-free/binary-amd64"
Created directory "/var/www/depot-deb/dists/squeeze/non-free/source"
Created directory "/var/www/depot-deb/dists/squeeze/contrib"
Created directory "/var/www/depot-deb/dists/squeeze/contrib/binary-i386"
Created directory "/var/www/depot-deb/dists/squeeze/contrib/binary-amd64"
Created directory "/var/www/depot-deb/dists/squeeze/contrib/source"
6CCC2757EA8AE8AD user-test &lt;user-test@domaine.fr&gt; needs a passphrase
Please enter passphrase:
Successfully created '/var/www/depot-deb/dists/squeeze/Release.gpg.new'
6CCC2757EA8AE8AD user-test &lt;user-test@domaine.fr&gt; needs a passphrase
Please enter passphrase:
Successfully created '/var/www/depot-deb/dists/squeeze/InRelease.new'</pre>
<h1>Ajout d&#8217;un paquet .deb</h1>
<p>Le dépôt est prêt à accueillir les paquets <em>.deb</em> pour les rendre accessible aux autres machines.</p>
<p>Pour notre exemple :</p>
<ul>
<li>le nom logique du paquet se nomme <em>mon-paquet</em></li>
<li>le nom physique est <em>mon-paquet_1.2-1_amd64.deb</em></li>
</ul>
<p>Ajouter un paquet :</p>
<pre>reprepro --ask-passphrase -Vb /var/www/depot-deb includedeb squeeze /root/mon-paquet_1.2-1_amd64.deb</pre>
<p>Supprimer un paquet :</p>
<pre>reprepro --ask-passphrase -vb /var/www/depot-deb remove squeeze mon-paquet</pre>
<p>Lister les paquets non référencés :</p>
<pre>reprepro --ask-passphrase -vb /var/www/depot-deb dumpunreferenced</pre>
<p>Effacer les paquets non référencés :</p>
<pre>reprepro --ask-passphrase -vb /var/www/depot-deb deleteunreferenced</pre>
<p>Reréférencer les paquets :</p>
<pre>reprepro --ask-passphrase -vb /var/www/depot-deb rereference</pre>
<h1>Côté client</h1>
<p>Comme votre serveur peut fournir les paquets <em>.deb</em> avec reprepro, il faut maintenant configurer vos serveurs (ou PC clients) pour les récupérer.</p>
<pre>vi /etc/apt/sources.list.d/depot-deb.list

# depot-deb repository
deb http://depot-deb/private/ squeeze main</pre>
<p>Pour éviter le message d&#8217;erreur à cause de l&#8217;absence de clé, il faut l&#8217;ajouter dans le trousseau de clés :</p>
<pre>wget -O - http://depot-deb/key/depot-deb.gpg.key | apt-key add -</pre>
<p>Une fois la clée ajoutée, on met à jour :</p>
<pre>apt-get update</pre>
<p>Puis notre paquet est déployable sur la cible :</p>
<pre>apt-get install mon-paquet</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.serveur-linux.info/2012/01/depot-personnalise-paquets-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serveur TeamSpeak</title>
		<link>http://www.serveur-linux.info/2012/01/serveur-teamspeak/</link>
		<comments>http://www.serveur-linux.info/2012/01/serveur-teamspeak/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 21:41:44 +0000</pubDate>
		<dc:creator>Ludovic</dc:creator>
				<category><![CDATA[TeamSpeak]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[ini]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[teamspeak]]></category>

		<guid isPermaLink="false">http://www.serveur-linux.info/?p=241</guid>
		<description><![CDATA[Teamspeak est LE serveur VoIP pour discuter avec ses amis dans les jeux ou autre en toute simplicité. L'installation est très simple, permet de créer plusieurs canaux pour séparer les utilisateurs dans différents salons. Il est possible de gérer les permissions suivants les utilisateurs pour les autoriser ou non à se connecter sur tel ou tel canal. <a href="http://www.serveur-linux.info/2012/01/serveur-teamspeak/"> Lire la suite <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>TeamSpeak est un logiciel qui vous permettra de discuter avec vos amis et est très utilisé lors des parties de jeux en lignes.</p>
<p>Le guide a été réalisé pour un serveur TeamSpeak en version 64 bits.</p>
<h2>Installation</h2>
<h3>Création de l&#8217;utilisateur</h3>
<pre>useradd -m -b /home teamspeak</pre>
<h3>Récupération de l&#8217;archive</h3>
<p>La version se récupère sur le serveur officiel TeamSpeak :</p>
<pre>su - teamspeak
wget http://teamspeak.gameserver.gamed.de/ts3/releases/3.0.1/teamspeak3-server_linux-amd64-3.0.1.tar.gz
tar xzf teamspeak3-server_linux-amd64-3.0.1.tar.gz
rm -v teamspeak3-server_linux-amd64-3.0.1.tar.gz</pre>
<h2>Configuration</h2>
<p>Pour ma part, je modifie le script <em>$HOME/teamspeak3-server_linux-amd64/ts3server_startscript.sh</em> en modifiant la ligne d&#8217;origine :pour spécifier l&#8217;emplacement du fichier <em>ts3server.ini</em> :</p>
<pre>#COMMANDLINE_PARAMETERS="${2}" #add any command line parameters you want to pass here
 COMMANDLINE_PARAMETERS="inifile=ts3server.ini" #add any command line parameters you want to pass here</pre>
<p>Ainsi, lors du démarrage de TeamSpeak, le script va charger le contenu du fichier ts3server.ini dans lequel se trouve l&#8217;IP de serveur et les divers paramètres.</p>
<h3>Contenu du fichier ts3server.ini</h3>
<p>Voici le contenu du fichier ts3server.ini qui se place à la racine <em>$HOME/teamspeak3-server_linux-amd64/ts3server.ini</em> :</p>
<pre>machine_id=
default_voice_port=9987
voice_ip=178.33.xxx.xxx
licensepath=
filetransfer_port=30033
filetransfer_ip=178.33.xxx.xxx
query_port=10011
query_ip=178.33.xxx.xxx
query_ip_whitelist=query_ip_whitelist.txt
query_ip_blacklist=query_ip_blacklist.txt
dbplugin=ts3db_sqlite3
dbpluginparameter=
dbsqlpath=sql/
dbsqlcreatepath=create_sqlite/
dblogkeepdays=90
logpath=logs
logquerycommands=0
dbclientkeepdays=30</pre>
<p>Les ports par défaut peuvent être gardés, en revanche, vous devez spécifier l&#8217;<span style="text-decoration: underline;">IP du serveur</span> pour les paramètres suivants :</p>
<ul>
<li>voice_ip</li>
<li>filetransfer_ip</li>
<li>query_ip</li>
</ul>
<h2>Démarrage</h2>
<p>Pour activer le serveur TeamSpeak, il faut simplement le démarrer :</p>
<pre>cd $HOME/teamspeak3-server_linux-amd64/
./ts3server_startscript.sh start</pre>
<p>Lors de la 1ère exécution, vous allez obtenir ces lignes dans votre Shell :</p>
<pre>Starting the TeamSpeak 3 server
TeamSpeak 3 server started, for details please view the log file

------------------------------------------------------------------
I M P O R T A N T
------------------------------------------------------------------
Server Query Admin Acccount created
loginname= "xxxadminxxx", password= "kxxxxxxr"
------------------------------------------------------------------

------------------------------------------------------------------
 I M P O R T A N T
------------------------------------------------------------------
ServerAdmin privilege key created, please use it to gain
serveradmin rights for your virtualserver. please
also check the doc/privilegekey_guide.txt for details.

token=wvJc+RMU8cKKy3c6rzE52exxxxxxxxxxxx
------------------------------------------------------------------</pre>
<p>Notez bien le <em>login</em>, <em>mot de passe</em> et le <em>token</em> qui vous permettra de vous connecter avec le client et de vous déclarer comme administrateur du serveur TeamSpeak.</p>
<p>Les prochains démarrage ne les affichera plus donc notez bien ces informations. <img src='http://www.serveur-linux.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>Logs</h2>
<p>Pour savoir ce que TeamSpeak fait en arrière-plan, tout est enregistré dans les fichiers de logs (dont le dossier <em>log</em>s sera créé au démarrage) :</p>
<pre>less $HOME/teamspeak3-server_linux-amd64/logs/ts3server_2012-01-12__18_22_57.155813_0.log</pre>
<h2>Base de données</h2>
<p>La base de données qui contient vos permissions, nombre de canaux, etc se trouve dans le fichier suivant :</p>
<pre>ts3server.sqlitedb</pre>
<p><span style="text-decoration: underline;">Pensez à bien le sauvegarder !</span></p>
<h2>Mise à jour</h2>
<p>Lors d&#8217;une mise à jour, vous devez :</p>
<ul>
<li>téléchargez la nouvelle version sur le site de TeamSpeak</li>
<li>copier les nouveaux fichiers en écrasant les anciens</li>
<li>vérifiez que votre script de démarrage <em>ts3server_startscript.sh</em> modifié, contient bien le paramètre <em>inifile=ts3server.ini</em></li>
<li>vérifiez la présence de la base de données <em>ts3server.sqlitedb</em></li>
<li>démarrez TeamSpeak avec <em>./ts3server_startscript.sh start</em></li>
</ul>
<p>Au 1er démarrage, TeamSpeak va détecter l&#8217;ancienne version et va mettre à jour la base de données. Vous pouvez voir la progression dans les fichiers présents dans le dossier <em>logs</em> :</p>
<pre>2012-01-12 18:22:57.156120|INFO    |ServerLibPriv |   | TeamSpeak 3 Server 3.0.1 (2011-11-17 07:34:30)
2012-01-12 18:22:57.157216|INFO    |DatabaseQuery |   | dbPlugin name:    SQLite3 plugin, Version 2, (c)TeamSpeak Systems GmbH
2012-01-12 18:22:57.157378|INFO    |DatabaseQuery |   | dbPlugin version: 3.7.3
2012-01-12 18:22:57.158194|INFO    |DatabaseQuery |   | checking database integrity (may take a while)
2012-01-12 18:22:57.215239|ERROR   |DatabaseQuery |   | db_open() select * from instance_properties where string_id = ''; error: no such column: string_id
2012-01-12 18:22:57.219796|INFO    |SQL           |   | database updated successfully to revision: 16
2012-01-12 18:22:57.231279|INFO    |SQL           |   | database updated successfully to revision: 17
2012-01-12 18:22:57.242037|INFO    |SQL           |   | database updated successfully to revision: 18
2012-01-12 18:22:57.253455|INFO    |SQL           |   | database updated successfully to revision: 19
2012-01-12 18:22:57.259112|INFO    |DatabaseQuery |   | database busy, waiting for finishing index tasks, may take some time!
2012-01-12 18:23:37.308225|INFO    |SQL           |   | updated permissions to version 9
2012-01-12 18:23:37.323234|INFO    |SQL           |   | updated permissions to version 10
2012-01-12 18:23:37.407635|INFO    |SQL           |   | updated permissions to version 11
2012-01-12 18:23:37.435631|INFO    |SQL           |   | updated permissions to version 12
2012-01-12 18:23:37.442458|INFO    |SQL           |   | updated permissions to version 13
2012-01-12 18:23:37.468095|WARNING |Accounting    |   | Unable to find valid license key, falling back to limited functionality
2012-01-12 18:23:37.512729|INFO    |FileManager   |   | listening on 178.33.xxx.xxx:30033
2012-01-12 18:23:37.642727|INFO    |CIDRManager   |   | updated query_ip_whitelist ips: 127.0.0.1,
2012-01-12 18:23:37.643727|INFO    |Query         |   | listening on 178.33.xxx.xxx:10011</pre>
<p>A vous de jouer !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serveur-linux.info/2012/01/serveur-teamspeak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Outil DELL OpenManage Server Administrator sous Linux</title>
		<link>http://www.serveur-linux.info/2012/01/outils-dell-openmanage-server-administrator-linux/</link>
		<comments>http://www.serveur-linux.info/2012/01/outils-dell-openmanage-server-administrator-linux/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 14:14:01 +0000</pubDate>
		<dc:creator>Ludovic</dc:creator>
				<category><![CDATA[Dell]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[omreport]]></category>
		<category><![CDATA[openmanage]]></category>
		<category><![CDATA[paquets]]></category>
		<category><![CDATA[redhat]]></category>

		<guid isPermaLink="false">http://www.serveur-linux.info/?p=228</guid>
		<description><![CDATA[DELL OpenManage Server Administrator (OMSA) gère la configuration complète d'un serveur DELL tel que le BIOS, carte RAID, etc. OMSA peut être utilisé avec Nagios pour remonter les alertes au niveau de la carte mère, de l'état du RAID, des disques physiques, bref, tous les composants matériels du serveur. <a href="http://www.serveur-linux.info/2012/01/outils-dell-openmanage-server-administrator-linux/"> Lire la suite <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>DELL propose des paquets pour installer l&#8217;outil OpenManage Server Administrator (OMSA) sous Ubuntun / Debian et RedHat / Centos.</p>
<p>OpenManage est un outil qui fournit des binaires capables de récupérer toute la configuration matériel du serveur telle que la carte RAID, BIOS, etc.</p>
<p>De plus, OpenManage vous permettra de récupérer l&#8217;état du RAID (OK, Degraded, &#8230;), des disques physiques, &#8230; de quoi compléter le monitoring sous Nagios par exemple.</p>
<h2>Installation sous RedHat / CENTOS</h2>
<p>RedHat étant supporté par DELL, il est même possible d&#8217;effectuer des mises à jours de Bios et firmwares directement sous l&#8217;OS en installant les binaires fournis par le dépôt DELL.</p>
<p>Le dépôt DELL est accessible via l&#8217;adresse suivante : <a href="http://linux.dell.com/repo/hardware/" target="_blank">http://linux.dell.com/repo/hardware/</a></p>
<p>DELL fournit un script qui va configurer l&#8217;adresse du dépôt pour YUM :</p>
<pre>wget -q -O - http://linux.dell.com/repo/hardware/OMSA_6.5/bootstrap.cgi | bash</pre>
<p>Ensuite, il ne reste plus qu&#8217;à installer l&#8217;outil :</p>
<pre>yum install srvadmin-all</pre>
<h2>Installation sous Debian / Ubuntu</h2>
<p>Le dépôt DELL est accessible via l&#8217;adresse suivante : <a href="http://linux.dell.com/repo/community/deb/" target="_blank">http://linux.dell.com/repo/community/deb/</a></p>
<p>Pour configurer le dépôt sous APT, la commande est la suivante :</p>
<pre>echo 'deb http://linux.dell.com/repo/community/deb/latest /' | sudo tee -a /etc/apt/sources.list.d/linux.dell.com.sources.list</pre>
<p>Ajout des clés GPG pour ce dépôt :</p>
<pre>gpg --keyserver pgpkeys.mit.edu --recv-key E74433E25E3D7775
gpg -a --export E74433E25E3D7775 | sudo apt-key add -</pre>
<p>Enfin, mise à jour et installation :</p>
<pre>apt-get update
apt-get install srvadmin-all</pre>
<h2>Start / Stop</h2>
<p><em>Dès la fin de l&#8217;installation, il faut<span style="text-decoration: underline;"> se déconnecter puis se reconnecter</span> pour recharger les variables du SHELL.</em></p>
<p>Pour démarrer ou arrêter le service :</p>
<pre>srvadmin-services.sh (stop|start|restart)</pre>
<h2>Aperçu de OMREPORT</h2>
<p>Voici un aperçu en utilisant omreport pour connaitre la configuration de 2 disques durs SAS sur un DELL r610 avec la commande &laquo;&nbsp;<strong>omreport storage vdisk controller=0</strong>&nbsp;&raquo; :</p>
<pre>Virtual Disk 0 on Controller PERC H700 Integrated (Embedded)

Controller PERC H700 Integrated (Embedded)
ID                  : 0
Status              : Ok
Name                : Virtual Disk 0
State               : Ready
Encrypted           : No
Layout              : RAID-1
Size                : 136.13 GB (146163105792 bytes)
Device Name         : /dev/sda
Bus Protocol        : SAS
Media               : HDD
Read Policy         : Read Ahead
Write Policy        : Write Back
Cache Policy        : Not Applicable
Stripe Element Size : 64 KB
Disk Cache Policy   : Enabled</pre>
<h2>Erreurs possibles</h2>
<p>Si vous intégrez les paquets DELL sur votre propre dépôt Debian ou RedHat, et que vous rencontrez l&#8217;erreur &laquo;&nbsp;<strong>le système n&#8217;est pas supporté</strong>&nbsp;&raquo; lors du démarrage du service, cela provient de l&#8217;absence des paquets &laquo;&nbsp;<em>smbios-utils</em>&nbsp;&raquo; et/ou &laquo;&nbsp;<em>libsmbios-bin</em>&laquo;&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serveur-linux.info/2012/01/outils-dell-openmanage-server-administrator-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Création d&#8217;un paquet Debian .deb</title>
		<link>http://www.serveur-linux.info/2012/01/creation-paquet-debian-deb/</link>
		<comments>http://www.serveur-linux.info/2012/01/creation-paquet-debian-deb/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 09:52:53 +0000</pubDate>
		<dc:creator>Ludovic</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[creation]]></category>
		<category><![CDATA[deb]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[paquet]]></category>

		<guid isPermaLink="false">http://www.serveur-linux.info/?p=219</guid>
		<description><![CDATA[La création d'un paquet Debian permet d'installer rapidement sur de multiples serveurs votre application sans géner les utilisateurs. 
Au programme, il faut créer une arborescence spéciale, puis choisir les répertoires où vont être situés vos programmes. Enfin, il est possible de définir les actions à mener avant l'installation du paquet ou de sa suppression. <a href="http://www.serveur-linux.info/2012/01/creation-paquet-debian-deb/"> Lire la suite <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<h2>Arborescence</h2>
<p>L’arborescence utilisée, sur le serveur où les paquets sont créés, est la suivante :</p>
<pre>$HOME/build =&gt; emplacement des sources
$HOME/deb =&gt; emplacement des paquets créés</pre>
<p>A l&#8217;intérieur du dossier où se trouve les sources, il faut créer l&#8217;arborescence suivante :</p>
<pre>mkdir $HOME/build/nom-du-paquet/
cd $HOME/build/nom-du-paquet/

mkdir DEBIAN
touch DEBIAN/control
touch DEBIAN/postinst
touch DEBIAN/postrm
touch DEBIAN/preinst
touch DEBIAN/prerm
chmod 755 DEBIAN/post*
chmod 755 DEBIAN/pre*</pre>
<h3>Le fichier control</h3>
<p>Architecture possible : i386, amd64, all</p>
<pre>vi DEBIAN/control</pre>
<p>Package: <em>Nom_Du_Paquet</em><br />
Version: <em>1.0</em><br />
Section: <em>base</em><br />
Priority: <em>optional</em><br />
Architecture: <em>all</em><br />
Depends: <em>bash</em><br />
Maintainer: <em>Nom Prénom</em><br />
Description: <em>paquet de test</em></p>
<p>Description des différents champs:</p>
<ul>
<li>Package : c&#8217;est le nom du paquet</li>
<li>Version : c&#8217;est le numéro de version du paquet (à incrémenter pour le système de dépôt comprenne qu&#8217;il remplace la précédente version)</li>
<li>Section : base</li>
<li>Priority : c&#8217;est la priorité d&#8217;installation du paquet</li>
<li>Architecture : c&#8217;est l&#8217;architecture sur laquelle est utilisable le paquet</li>
<li>Depends : c&#8217;est ce qui doit être présent dans le système pour que le paquet puisse être utilisé</li>
<li>Maintainer : ce sont les informations sur la personne qui s&#8217;occupe du paquet</li>
<li>Description : c&#8217;est la description du paquet. On peut expliquer deux trois choses sur le paquet si nécessaire</li>
</ul>
<h3>Configuration des fichiers avant et après installation du paquet</h3>
<p>Pour définir les différentes étapes lors de l&#8217;installation et désinstallation du paquet, vous avez 4 scripts disponibles :</p>
<ul>
<li>postinst =&gt; après l&#8217;installation</li>
<li>preinst =&gt; avant l&#8217;installation</li>
<li>postrm =&gt; après la désinstallation</li>
<li>prerm =&gt; avant la désinstallation</li>
</ul>
<p>De plus, le langage utilisé est très simple puisque vous pouvez écrire en Bash le contenu de ces scripts.</p>
<h2>Contenu du paquet</h2>
<p>Votre paquet va contenir l&#8217;emplacement de vos applications. Vous devez donc créer l&#8217;arborescence que vous souhaitez lorsque le paquet sera installé.<br />
En effet, le paquet sera décompacté et se copiera suivant l&#8217;arborescence définie, par exemple :</p>
<pre>$HOME/build/nom-du-paquet/usr/bin/votre_binaire
$HOME/build/nom-du-paquet/etc/config/votre_fichier
$HOME/build/nom-du-paquet/etc/init.d/script-init</pre>
<h2>Construction</h2>
<p>Pour générer le paquet :</p>
<pre>dpkg-deb --build $HOME/build/nom-du-paquet $HOME/deb/nom-du-paquet_0.1-1amd64.deb
dpkg-deb : construction du paquet « nom-du-paquet » dans « deb/nom-du-paquet_0.1-1amd64.deb ».</pre>
<p>Ensuite, si vous souhaitez placer votre paquet sur un depôt Debian, vous allez devoir le signer :</p>
<pre>dpkg-sig --sign nom-proprietaire $HOME/deb/nom-du-paquet_0.1-1amd64.deb
Processing deb/nom-du-paquet_0.1-1amd64.deb...

Vous avez besoin d'une phrase de passe pour déverrouiller la
clé secrète pour l'utilisateur: « nom-proprietaire (cle depot votre-depot) »
clé de 4096 bits RSA, ID XXXXXXXXX, créée le 2012-01-05

Signed deb deb/nom-du-paquet_0.1-1amd64.deb</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.serveur-linux.info/2012/01/creation-paquet-debian-deb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Connaitre la version de RedHat et son noyau</title>
		<link>http://www.serveur-linux.info/2012/01/connaitre-version-redhat-noyau/</link>
		<comments>http://www.serveur-linux.info/2012/01/connaitre-version-redhat-noyau/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 15:15:53 +0000</pubDate>
		<dc:creator>Ludovic</dc:creator>
				<category><![CDATA[RedHat]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[noyau]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[version]]></category>

		<guid isPermaLink="false">http://www.serveur-linux.info/?p=193</guid>
		<description><![CDATA[Connaitre la version de RedHat qui tourne sur le serveur, afficher les noyaux installés et le noyau qui démarre lors du démarrage du serveur sous Grub. <a href="http://www.serveur-linux.info/2012/01/connaitre-version-redhat-noyau/"> Lire la suite <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<h2>Version du système</h2>
<p>Afficher la version de RedHat :</p>
<pre>cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.7 (Tikanga)</pre>
<p>Il existe un fichier qui est rempli lors de l&#8217;installation du système et qui fonctionne également sous Debian :</p>
<pre>cat /etc/issue
Red Hat Enterprise Linux Server release 5.7 (Tikanga)
Kernel \r on an \m</pre>
<p>Le fichier /etc/issue est pratique si vous utilisez une boucle SSH pour connaitre rapidement les versions Debian ou RedHat que vous possédez.</p>
<h2>Version du noyau</h2>
<pre>uname -r
2.6.18-274.12.1.el5</pre>
<p>Vous pouvez également lister les noyaux qui sont installés sur le système en utilisant la base des paquets :</p>
<pre>rpm -qa | grep kernel
kernel-2.6.18-274.12.1.el5
kernel-2.6.18-274.3.1.el5
kernel-2.6.18-274.7.1.el5</pre>
<p>Ce serveur tourne sur le noyau 2.6.18-274.12.1.el5 en 64 bits.</p>
<h3>Chargement du noyau au démarrage</h3>
<p>Sous GRUB, le noyau qui se charge au démarrage correspond au 1er groupe dans le fichier &laquo;&nbsp;<em>/boot/grub/menu.lst</em>&nbsp;&raquo; :</p>
<pre>[...]
title Red Hat Enterprise Linux Server (2.6.18-274.12.1.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-274.12.1.el5 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.18-274.12.1.el5.img
title Red Hat Enterprise Linux Server (2.6.18-274.7.1.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-274.7.1.el5 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.18-274.7.1.el5.img
title Red Hat Enterprise Linux Server (2.6.18-274.3.1.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-274.3.1.el5 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.18-274.3.1.el5.img</pre>
<p>Au démarrage, le serveur affichera les différents choix entre les noyaux 2.6.18-274.3.1, 2.6.18-274.7.1 et 2.6.18-274.12.1.</p>
<p>Par défaut, le serveur chargera celui qui se trouve tout en haut à savoir : <strong>2.6.18-274.12.1.el5</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serveur-linux.info/2012/01/connaitre-version-redhat-noyau/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Connaitre la version de Debian et son noyau</title>
		<link>http://www.serveur-linux.info/2012/01/connaitre-version-debian-noyau/</link>
		<comments>http://www.serveur-linux.info/2012/01/connaitre-version-debian-noyau/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 14:59:42 +0000</pubDate>
		<dc:creator>Ludovic</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[noyau]]></category>
		<category><![CDATA[version]]></category>

		<guid isPermaLink="false">http://www.serveur-linux.info/?p=191</guid>
		<description><![CDATA[Afficher la version actuelle de votre système Debian, connaitre la version du noyau installé, et choisir le noyau qui démarre avec Grub. <a href="http://www.serveur-linux.info/2012/01/connaitre-version-debian-noyau/"> Lire la suite <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<h2>Version du système</h2>
<p>Afficher la version de Debian :</p>
<pre>cat /etc/debian_version
6.0.3</pre>
<p>Il existe un fichier qui est rempli lors de l&#8217;installation du système et qui fonctionne également sous RedHat, en revanche, vous n&#8217;aurez pas la version exacte :</p>
<pre>cat /etc/issue
Debian GNU/Linux 6.0 \n \l</pre>
<p>Le fichier /etc/issue est pratique si vous utilisez une boucle SSH pour connaitre rapidement les versions Debian ou RedHat que vous possédez.</p>
<h2>Version du noyau</h2>
<pre>uname -r
2.6.32-5-amd64</pre>
<p>Pour connaitre la release exacte du noyau (par exemple, pour savoir si vous êtes concernés par une faille), il faut vérifier directement dans la base des paquets :</p>
<pre>dpkg -l | grep 2.6.32-5-amd64
ii  linux-image-2.6.32-5-amd64          2.6.32-38                    Linux 2.6.32 for 64-bit PCs</pre>
<p>Ce serveur tourne sur le noyau 2.6.32-38 en 64 bits.</p>
<h3>Chargement du noyau au démarrage</h3>
<p>Sous GRUB, le noyau qui se charge au démarrage correspond au 1er groupe dans le fichier &laquo;&nbsp;<em>/boot/grub/grub.cfg</em>&nbsp;&raquo; :</p>
<pre>menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos1)'
        search --no-floppy --fs-uuid --set d0778cde-fdb4-4b9d-a22f-a821fbc8485e
        echo    'Chargement de Linux 2.6.32-5-amd64 ...'
        linux   /vmlinuz-2.6.32-5-amd64 root=UUID=4fe98a6f-2358-4af1-8c41-42f011f5f307 ro  quiet
        echo    'Chargement du disque mémoire initial ...'
        initrd  /initrd.img-2.6.32-5-amd64
}</pre>
<p>Par défaut, le serveur chargera celui qui se trouve tout en haut à savoir : <strong>2.6.32-5-amd64</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serveur-linux.info/2012/01/connaitre-version-debian-noyau/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Géolocalisation avec un serveur DNS : PowerDNS</title>
		<link>http://www.serveur-linux.info/2012/01/geolocalisation-serveur-dns-powerdns/</link>
		<comments>http://www.serveur-linux.info/2012/01/geolocalisation-serveur-dns-powerdns/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 19:07:55 +0000</pubDate>
		<dc:creator>Ludovic</dc:creator>
				<category><![CDATA[DNS]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[geobackend]]></category>
		<category><![CDATA[geoip]]></category>
		<category><![CDATA[géolocalisation]]></category>
		<category><![CDATA[powerdns]]></category>

		<guid isPermaLink="false">http://www.serveur-linux.info/?p=112</guid>
		<description><![CDATA[PowerDNS est un concurrent de Bind et propose un module "geobackend" très intéressant qui permet de géolocaliser les internautes et de les rediriger vers le datacanter le plus proche de leur lieu physique.
Les données sont stockées dans un serveur de base de données MySQL et contient les données des zones (alias, cname, A, etc.).
Voyons en détail la configuration d'une telle plateforme. <a href="http://www.serveur-linux.info/2012/01/geolocalisation-serveur-dns-powerdns/"> Lire la suite <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>La solution fut portée sur PowerDNS et le module GeoBackend pour la géolocalisation des internautes.</p>
<p>PowerDNS est actuellement utilisé parmi de nombreux registrars de domaine et également Wikimédia qui utilise GeoBackend.</p>
<p>De plus, PowerDNS fonctionne aussi bien sous Windows que Linux, par contre, il y a plus de documentations sous Linux que sous Windows pour le module GeoBackend. Il faut également penser que le module GeoBackend doit être compilé avec Visual C++ sous Windows alors que sous Linux tout cela est automatique.</p>
<p>La solution est entièrement gratuite, le système d’exploitation est Linux Debian version Etch 4.0, la base de données est MySQL version 5.0, le serveur Internet est basé sur Apache 2.0, le tout administré avec un logiciel gratuit Windows : Putty.</p>
<p>BIND propose également un module de géolocalisation mais il n’a pas été remis à jour depuis 2004 donc cette solution ne fut pas sélectionnée.<br />
Il existe d’autres systèmes, par exemple des géo balancers matériels qui se chargent de rediriger les internautes, malheureusement ce type de matériel est très onéreux.</p>
<p><em>Ce tutorial est issu d&#8217;un de mes rapports de stage en 2007. Et à l&#8217;époque j&#8217;utilisais &laquo;&nbsp;nano&nbsp;&raquo; au lieu de &laquo;&nbsp;vi&nbsp;&raquo;</em> <img src='http://www.serveur-linux.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>Installation de PowerDNS</h2>
<p>En ligne de commande, exécutez sur votre serveur :</p>
<pre>apt-get install pdns-backend-geo pdns pdns-backend-mysql
cd /etc/powerdns/</pre>
<p>Pour connaître la version utilisée, exécutez :</p>
<pre>/usr/bin/pdns_control version</pre>
<p>Pour démarrer PowerDNS :</p>
<pre>/etc/init.d/pdns stop
/etc/init.d/pdns monitor</pre>
<h3>Configuration de PowerDNS</h3>
<p>Comme tout programme sous Linux, il faut modifier les fichiers de configuration <img src='http://www.serveur-linux.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre>nano /etc/powerdns/pdns.conf
local-address=0.0.0.0				# répond à toutes les IP qui l’interroge
local-port=53					# écoute sur le port 53
recursor=127.0.0.1:5300			# les requêtes récursives sont renvoyés au localhost port 5300
allow-recursion=127.0.0.1 172.20.0.0/16	# autorise seulement le localhost et les adresses IP internes à utiliser les requêtes récursives</pre>
<p>PowerDNS doit répondre à tous les IP donc le paramètre « <em>local-address=0.0.0.0</em> », le port par défaut du DNS est 53 « local-port=53 ». Pour les requêtes récursives, le module <em>recursor</em> écoute sur le port 5300 et les requêtes seront traitées par lui-même.<br />
Pour des raisons de sécurité, les requêtes récursives ne sont autorisées que pour les IP locales.</p>
<h3>Configuration des requêtes récursives</h3>
<pre>nano /etc/powerdns/recursor.conf
local-address=127.0.0.1		# écoute sur l’IP local
local-port=5300		# écoute sur le port 5300
allow-from=127.0.0.0/8	# autorise seulement le localhost à utiliser le serveur recursor</pre>
<p>Pour des raisons de sécurité, les requêtes récursives ne sont autorisées que pour les IP locales.</p>
<p>Une fois configuré, il faut démarrer le démon pour charger les fichiers de configuration.</p>
<p>Démarrage de recursor :</p>
<pre>/etc/init.d/pdns-recursor start</pre>
<p>Démarrage de pdns pour voir l’état de l’application en temps réel (pratique pour déboguer en temps réel dans la console Shell) :</p>
<pre>/etc/init.d/pdns monitor</pre>
<p>Ces informations sont essentielles pour vérifier le bon fonctionnement de l’application mais également pour la dépanner. Voici un exemple de logs :</p>
<pre>Jul 11 10:22:08 This is a standalone pdns
Jul 11 10:22:08 It is advised to bind to explicit addresses with the --local-address option
Jul 11 10:22:08 UDP server bound to 0.0.0.0:53
Jul 11 10:22:08 TCP server bound to 0.0.0.0:53
Jul 11 10:22:08 PowerDNS 2.9.20 (C) 2001-2006 PowerDNS.COM BV (Mar 10 2007, 00:36:58, gcc 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) starting up
Jul 11 10:22:08 PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2.
Jul 11 10:22:08 Set effective group id to 109
Jul 11 10:22:08 Set effective user id to 108
Jul 11 10:22:08 DNS Proxy launched, local port 48069, remote 127.0.0.1:5300
Jul 11 10:22:09 Creating backend connection for TCP
Jul 11 10:22:09 About to create 3 backend threads for UDP
% Jul 11 10:22:09 Done launching threads, ready to distribute questions
Jul 11 10:22:15 Distributor misses a thread (4</pre>
<p>Comme PowerDNS fonctionne sous forme de démon (similaire au « service » sous Windows), il est possible de l’exécuter sans afficher les logs en temps réel :</p>
<pre>/etc/init.d/pdns start</pre>
<h3>Test du bon fonctionnement du serveur PowerDNS</h3>
<p>Une fois installé, il faut tester le bon fonctionnement du serveur DNS. Nous allons taper les commandes recommandées dans la documentation (http://doc.powerdns.com/testing.html) :</p>
<pre>host www.example.com 127.0.0.1</pre>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_1.png"><img class="alignnone size-full wp-image-119" title="powerdns_1" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_1.png" alt="" width="500" height="115" /></a></p>
<p>PowerDNS résout l’URL www.example .com pour nous retourner l’IP du domaine.</p>
<pre>dig www.example.com A @127.0.0.1</pre>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_2.png"><img class="alignnone size-full wp-image-120" title="powerdns_2" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_2.png" alt="" width="567" height="311" /></a></p>
<p>Le serveur DNS nous retourne l’enregistrement de type A pour le domaine www.example.com qui a pour IP : 208.77.188.166 ce qui est correct.</p>
<h3>Activation des logs</h3>
<p>Les logs sont très importants et permettent de résoudre pas mal de problèmes de configuration mais également de bien vérifier que tout fonctionne correctement.</p>
<p>Il faut décommenter les lignes « logfile » et « loglevel » :</p>
<pre>nano /etc/powerdns/pdns.conf</pre>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_3.png"><img class="alignnone size-full wp-image-121" title="powerdns_3" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_3.png" alt="" width="567" height="407" /></a></p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_4.png"><img class="alignnone size-full wp-image-122" title="powerdns_4" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_4.png" alt="" width="273" height="69" /></a></p>
<p>Attention, le « loglevel=7 » retourne un très grand nombre de ligne et ne doit servir que pour les tests ! Une fois les tests réussis, il faut remettre « loglevel=3 ».</p>
<p>Ensuite, il faut modifier le fichier « recursor.conf » avec « nano /etc/powerdns/recursor.conf » et rajouter la partie LOG :</p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_5.png"><img class="alignnone size-full wp-image-123" title="powerdns_5" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_5.png" alt="" width="323" height="143" /></a></p>
<p>L’argument « <em>logging-facility=0</em> » permet de spécifier le format de sortie pour SYSLOG du système d’exploitation.</p>
<p>Pour récupérer les logs et remplir le fichier dédié à PowerDNS, il faut configurer syslog :</p>
<pre>nano /etc/syslog.conf</pre>
<p>On rajoute cela dans le fichier :</p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_6.png"><img class="alignnone size-full wp-image-124" title="powerdns_6" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_6.png" alt="" width="420" height="48" /></a></p>
<p>Puis on redémarre le démon syslog :</p>
<pre>/etc/init.d/sysklogd restart</pre>
<p>ainsi que les démons de PowerDNS</p>
<pre>/etc/init.d/pdns-recursor restart</pre>
<p>et</p>
<pre>/etc/init.d/pdns restart</pre>
<p>Pour visualiser les logs, il faudra faire :</p>
<pre>tail -f /var/log/pdns.log</pre>
<h2>Installation de la Base de données</h2>
<p>La base de données MySQL va contenir les domaines, les IP, c&#8217;est-à-dire toutes les informations nécessaires qui servent à définir un nom de domaine.<br />
Il est possible d’utiliser une autre base de données tel qu’Oracle ou SQL Server mais le choix de MySQL fut adopté : éprouvé et gratuit.</p>
<h3>Installation de MySQL</h3>
<p>On commence donc par installer le module mysql de PowerDNS :</p>
<pre>apt-get install pdns-backend-mysql</pre>
<p>Il faut créer un utilisateur, spécifier un mot de passe (pdnstest dans notre exemple) et lui donner les droits pour qu’il puisse se connecter à la base.</p>
<pre>mysql -u root –p
CREATE USER ‘u_pdnstest’@’localhost’ IDENTIFIED BY 'pdnstest'
#CREATE USER ‘u_pdnstest’@’localhost’;
CREATE DATABASE pdnstest;
GRANT ALL PRIVILEGES ON pdnstest.* TO 'u_pdnstest'@'localhost';
exit</pre>
<p>On vérifie la bonne connexion de l’utilisateur :</p>
<pre>mysql –u u_pdnstest -p</pre>
<p>On rentre le mot de passe &laquo;&nbsp;pdnstest&nbsp;&raquo;. Il faut obtenir cela :</p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_7.png"><img class="alignnone size-full wp-image-125" title="powerdns_7" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_7.png" alt="" width="534" height="162" /></a></p>
<p>On quitte toujours en tapant « exit ; ».</p>
<p>Pour que PowerDNS puisse utiliser la base MySQL, il faut rajouter cela dans le fichier « <em>pdns.conf</em> » :</p>
<pre>launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=u_pdnstest
gmysql-dbname=pdnstest
gmysql-password=pdnstest</pre>
<p>On commente la partie de tests d’avant : « launch=bind » et « bind-example-zones » pour que PowerDNS charge le module MySQL.</p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_8.png"><img class="alignnone size-full wp-image-126" title="powerdns_8" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_8.png" alt="" width="549" height="187" /></a></p>
<h3>Création des tables MySQL</h3>
<p>PowerDNS utilise une base de données (MySQL dans notre cas mais cela peut être Oracle, DB2, etc.) pour stocker les noms de domaines, les zones, etc.<br />
Pour cela, il faut tout d’abord créer la structure de la base de données, car lors de l’installation, les tables ne sont pas installées ce qui nous permet de choisir notre SGBDR.</p>
<p>Voici ce qu’il faut exécuter sur le serveur MySQL pour créer les tables :</p>
<pre>create table domains (
id INT auto_increment,
name VARCHAR(255) NOT NULL,
master VARCHAR(128) DEFAULT NULL,
last_check INT DEFAULT NULL,
type VARCHAR(6) NOT NULL,
notified_serial INT DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
primary key (id)
)type=InnoDB;

CREATE UNIQUE INDEX name_index ON domains(name);

CREATE TABLE records (
id INT auto_increment,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(6) DEFAULT NULL,
content VARCHAR(255) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
primary key(id)
)type=InnoDB;

CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);

create table supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
);</pre>
<p>On relance PowerDNS pour vérifier la bonne connexion du serveur DNS à la base de données MySQL :</p>
<pre>/etc/init.d/pdns monitor</pre>
<p>Voici le résultat de la commande :</p>
<pre>debian:~# /etc/init.d/pdns monitor
Jul 12 17:46:32 This is module gmysqlbackend.so reporting
Jul 12 17:46:32 This is a standalone pdns
Jul 12 17:46:32 It is advised to bind to explicit addresses with the --local-address option
Jul 12 17:46:32 UDP server bound to 0.0.0.0:53
Jul 12 17:46:32 TCP server bound to 0.0.0.0:53
Jul 12 17:46:32 PowerDNS 2.9.20 (C) 2001-2006 PowerDNS.COM BV (Mar 10 2007, 00:36:58, gcc 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) starting up
Jul 12 17:46:32 PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2.
Jul 12 17:46:32 Set effective group id to 109
Jul 12 17:46:32 Set effective user id to 108
Jul 12 17:46:32 DNS Proxy launched, local port 42771, remote 127.0.0.1:5300
Jul 12 17:46:32 Creating backend connection for TCP
% Jul 12 17:46:32 gmysql Connection succesful
Jul 12 17:46:32 About to create 3 backend threads for UDP
Jul 12 17:46:32 Launched webserver on 0.0.0.0:8081
Jul 12 17:46:32 gmysql Connection succesful
Jul 12 17:46:32 gmysql Connection succesful
Jul 12 17:46:32 gmysql Connection succesful
Jul 12 17:46:32 Done launching threads, ready to distribute questions
Jul 12 17:46:48 Distributor misses a thread (4</pre>
<p>La partie « gmysql Connection succesful » nous confirme la bonne connexion entre les deux.</p>
<h4>Résolution de quelques noms de domaines</h4>
<p>Pour tester le bon fonctionnement du serveur DNS, il suffit de rajouter l’IP du serveur et d’exécuter quelques pings vers example.com, perdu.com, etc. pour générer du trafic et des résolutions de requêtes.</p>
<p>Voici une vue des logs, après les pings :</p>
<pre>tail -f /var/log/pdns.log

Jul 16 11:49:31 Query: select content,ttl,prio,type,domain_id,name from records where name='perdu.com'
Jul 16 11:49:31 Query: select content,ttl,prio,type,domain_id,name from records where name='*.com'
Jul 16 11:49:31 gmysql Connection succesful
Jul 16 11:50:04 Distributor misses a thread (4</pre>
<h4>Activation du serveur WEB de PowerDNS</h4>
<p>PowerDNS contient un serveur Internet intégré pour afficher les requêtes que le serveur a traitées et permet de faire des statistiques.</p>
<p>Tout d’abord, il faut modifier le fichier de configuration pdns.conf pour l’activer. Voici mes paramètres :</p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_9.png"><img class="alignnone size-full wp-image-127" title="powerdns_9" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_9.png" alt="" width="566" height="360" /></a></p>
<p>Quelques explications sur les paramètres :</p>
<ul>
<li>« <em>webserver=yes</em> » -&gt; activation du serveur Internet</li>
<li>« <em>webserver-address=0.0.0.0</em> » -&gt; permet d’accéder au serveur à partir de toutes les IP. Attention ! Il vaut mieux mettre l’IP de la machine qui doit accéder aux statistiques pour la sécurité</li>
<li>« <em>webserver-port=8081</em> » -&gt; sélection du port pour accéder au serveur Internet</li>
</ul>
<p>Ainsi, pour accéder au serveur Internet, il faut taper : <em>http://IP_serveur_DNS:8081</em></p>
<p>Une fois les pings effectués, il est possible de se connecter au serveur Web activé pour visualiser les diverses requêtes :</p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_10.png"><img class="alignnone size-full wp-image-128" title="powerdns_10" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_10.png" alt="" width="326" height="422" /></a></p>
<p>On remarque les résolutions inversées « .in-addr.arpa » des divers noms de domaine. Ainsi, lors d’un ping sur le domaine example.com : « PING example.com (208.77.188.166) 56(84) bytes of data » possède comme IP 208.77.188.166, le serveur DNS retourne l’adresse inversée « 166.188.77.208.in-addr.arpa ».</p>
<p>La liste des IP qui ont demandé des résolutions d’adresses sont loguées et des pourcentages sont visibles ce qui permet de connaître les IP qui sollicitent le plus le serveur DNS.</p>
<p>Test de divers serveurs DNS :</p>
<pre>apt-get install zonecheck</pre>
<h4>Configuration des domaines dans la base de données MySQL</h4>
<p>Quelques commandes sont à réaliser d’après la <a href="http://doc.powerdns.com/configuring-db-connection.html" target="_blank">documentation</a> :</p>
<p>« host www.test.com 127.0.0.1 » retourne « www.test.com has address 208.48.34.132 »</p>
<p>Il faut ajouter des enregistrements dans la base de données Mysql en exécutant en ligne de commande les lignes ci-dessous :</p>
<pre>mysql -u u_pdnstest -p

	  INSERT INTO domains (name, type) values ('test.com', 'NATIVE');
	  INSERT INTO records (domain_id, name, content, type,ttl,prio)
	  VALUES (1,'test.com','localhost ahu@ds9a.nl 1','SOA',86400,NULL);
	  INSERT INTO records (domain_id, name, content, type,ttl,prio)
	  VALUES (1,'test.com','dns-us1.powerdns.net','NS',86400,NULL);
	  INSERT INTO records (domain_id, name, content, type,ttl,prio)
	  VALUES (1,'test.com','dns-eu1.powerdns.net','NS',86400,NULL);
	  INSERT INTO records (domain_id, name, content, type,ttl,prio)
	  VALUES (1,'www.test.com','199.198.197.196','A',120,NULL);
	  INSERT INTO records (domain_id, name, content, type,ttl,prio)
	  VALUES (1,'mail.test.com','195.194.193.192','A',120,NULL);
	  INSERT INTO records (domain_id, name, content, type,ttl,prio)
	  VALUES (1,'localhost.test.com','127.0.0.1','A',120,NULL);
	  INSERT INTO records (domain_id, name, content, type,ttl,prio)
	  VALUES (1,'test.com','mail.test.com','MX',120,25);
exit;</pre>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_11.png"><img class="alignnone size-full wp-image-129" title="powerdns_11" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_11.png" alt="" width="685" height="198" /></a></p>
<p>Maintenant, la requête « host www.test.com 127.0.0.1 » retourne « www.test.com has address 199.198.197.196 » ce qui correspond à l’IP renseigné dans la base de données pour le nom de domaine www.test.com.</p>
<p>Et la requête « host mail.test.com 127.0.0.1 » retourne « mail.test.com has address 195.194.193.192 » ce qui est correct puisqu’issue de la base de données.</p>
<h3>Installation et configuration de la Géolocalisation</h3>
<p>Sous Debian, l’installation du GeoBackend ne comporte pas de souci particulier :</p>
<pre>apt-get install pdns-backend-geo</pre>
<p>Le module geobackend permet de connaître le continent de l’internaute suivant son adresse IP. Il sera possible de rediriger cette internaute sur les serveurs choisis.</p>
<p>Il existe plusieurs modules disponibles en tapant : « apt-cache search pdns »</p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_12.png"><img class="alignnone size-full wp-image-130" title="powerdns_12" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_12.png" alt="" width="483" height="259" /></a></p>
<p>Il faut modifier le fichier de configuration pour intégrer le nouveau backend : « nano /etc/powerdns/pdns.conf »</p>
<p>Pour tester la géolocalisation, le domaine utilisé est « testrepartition.com ».</p>
<pre># The geobackend
launch=geo

# The zone that your geo-balanced RR is inside of.  The whole zone has to #be delegated to the PowerDNS backend, so you will generally want to make #up some subzone of your main zone.
geo-zone=geo.testrepartition.com

# The only parts of the SOA for "geo.telepulse.net" that apply here are the
# master server name and the contact address.
geo-soa-values=dns.testrepartition.com, webmaster@testrepartition.com

# List of NS records of the PowerDNS servers that are authoritative for #your GLB zone.
geo-ns-records=dns.testrepartition.com

# The TTL of the CNAME records that geobackend will return.  Since the same
# resolver will always get the same CNAME (apart from if the director-map
# changes) it is safe to return a reasonable TTL, so if you leave this
# commented then a sane default will be chosen.
#geo-ttl=3600

# The TTL of the NS records that will be returned.  Leave this commented if #you don't understand.
#geo-ns-ttl=86400

# This is the real guts of the data that drives this backend.  This is a #DNS zone file for RBLDNSD, a nameserver specialised for running large DNS #zones typical of DNSBLs and such.  We choose it for our data because it is #easier to parse than the BIND-format one.
# Anyway, it comes from http://countries.nerd.dk/more.html - there are #details there for how to rsync your own copy.  You'll want to do that #regularly, every couple of days maybe.  We believe the nerd.dk guys take #the netblock info from Regional Internet Registries (RIRs) like RIPE, #ARIN, APNIC.  From that they build a big zonefile of IP/prefixlen -&gt; ISO-#country-pre mappings.
geo-ip-map-zonefile=/etc/powerdns/zz.countries.nerd.dk.rbldnsd

# And finally this last directive tells the geobackend where to find the #map files that say a) which RR to answer for, and b) what actual resource #record to return for each ISO country pre.  The setting here is a comma-#separated list of paths, each of which may either be a single map file or #a directory that will contain map files.  If you are only ever going to #serve one RR then a single file is probably better, but if you're going to #serve many then a directory would probably be better.  The rest of this #documentation will assume you chose a directory.
geo-maps=/etc/powerdns/geo-maps</pre>
<p>« geo-ip-map-zonefile » retourne le pre du pays à partir d’une IP et « geo-maps » retourne un nom de pays à partir du pre du pays.</p>
<p>Récupération de la liste :</p>
<pre>rsync -va rsync://countries-ns.mdc.dk/zone/zz.countries.nerd.dk.rbldnsd .</pre>
<p>Ne pas oublier le « . » à la fin de la commande pour télécharger les données.</p>
<p>Attention à ne pas mettre de fichier tel que « zz.countries.nerd.dk.rbldnsd » dans le dossier geo-maps car le parseur recherche les variables « $RECORD » et « $ORIGIN » dans l’entête du fichier.<br />
L’erreur obtenu est : « [geobackend] Error occured while reading director file /etc/powerdns/geo-maps/zz.countries.nerd.dk.rbldnsd: $RECORD line empty or missing, georecord qname unknown ».</p>
<p>Tous les fichiers sont placés dans le dossier « /etc/powerdns ».</p>
<p>Une fois le dossier choisi : « /etc/powerdns/geo-maps » dans notre exemple, il faut respecter un format de fichier.<br />
Le début doit contenir « $RECORD », puis « $ORIGIN domaine.com. » puis un domaine par défaut.</p>
<pre>$RECORD www 			# pour www.geo.testrepartition.com.
$ORIGIN iso.testrepartition.com.
#par défaut
0 geomain.testrepartition.com.</pre>
<p>La suite comporte le nom du pays et le pre ISO. Par exemple, dans ce fichier se trouve :</p>
<pre># Belgium
56 eu</pre>
<p>Le n°56 est le pre ISO de la Belgique. Le « eu » est nécessaire au module GeoBackend et lui indique la localisation de la Belgique qui se trouve dans l’Europe. Il répond par un enregistrement DNS de type CNAME « eu.iso.testrepartition.com ».<br />
Lorsque le module GeoBackend est correctement lancé, le message « 0 failures » apparait.</p>
<p>La suite est disponible à cette adresse : http://www.micro-gravity.com/data/300605/vip</p>
<p>Voici un screenshot :</p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_13.png"><img class="alignnone size-full wp-image-131" title="powerdns_13" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_13.png" alt="" width="690" height="95" /></a></p>
<h3>Configuration des domaines dans la base de données MySQL</h3>
<p>La base de données MySQL contient les renseignements sur le domaine tel que l’IP, les noms DNS, etc.<br />
Dans notre exemple, le domaine « testrepartition.com » est utilisé. Ainsi, il faut définir les noms DNS tel que « www.testrepartition.com » qui dépendra de « eu.iso.testrepartition.com », « us.iso.testrepartition.com » etc.<br />
Puis il faut définir les IP suivant le nom de domaine. Pour effectuer un bon load balancing DNS, il est nécessaire de fournir plusieurs IP pour chaque nom de domaine. Dès lors, la charge des serveurs sera répartie.</p>
<h4>Configuration DNS – schema de type BIND</h4>
<pre>$TTL 38400
@    IN    SOA    dns.testrepartition.com.  webmaster.testrepartition.com. (
1607200701	   ; N° série (yyyymmddnn)
10800		   ; Rafraichissement (3 heures)
3600			; Retry (1 heure)
604800		; Expiration (1000 heures)
86400			; Minimum (24 heures)
)

; IN    NS    dns.testrepartition.com.

www 		IN	CNAME	www.geo
dns		IN	A	172.20.1.1
geo		IN	NS	dns

;geo		IN	CNAME	us.iso ;pas besoin PowerDNS utilise le module Geo
;geo		IN	CNAME	eu.iso ;pas besoin PowerDNS utilise le module Geo

us.iso	IN	A	172.20.100.10
us.iso	IN	A	172.20.100.11

eu.iso	IN	A	172.20.100.20
eu.iso	IN	A	172.20.100.21

; accès par défaut
geomain	IN	A	172.20.100.10
geomain	IN	A	172.20.100.20</pre>
<h4>Installation dans la base de données (script MySQL)</h4>
<p>Voici un exemple de script que j&#8217;ai réalisé :</p>
<pre>INSERT INTO domains (name, type) values ('testrepartition.com', 'NATIVE');

INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, 'testrepartition.com','dns.testrepartition.com web@testrepartition.com 1607200701 10800 3600 604800 86400','SOA',38400,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, 'www.testrepartition.com','www.geo.testrepartition.com','CNAME',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, 'dns.testrepartition.com','172.20.1.1','A',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, 'geo.testrepartition.com','dns.testrepartition.com','NS',86400,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, 'us.iso.testrepartition.com','172.20.100.10','A',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, 'us.iso.testrepartition.com','172.20.100.11','A',86400,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, 'eu.iso.testrepartition.com','172.20.100.20','A',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, 'eu.iso.testrepartition.com','172.20.100.21','A',86400,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, 'geomain.testrepartition.com','172.20.100.10','A',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, 'geomain.testrepartition.com','172.20.100.20','A',86400,NULL);
exit;</pre>
<h4>Test de la résolution</h4>
<p>Sur la machine où est installé PowerDNS, il est possible d’utiliser l’utilitaire « dig » qui va nous permettre de résoudre « www.testrepartition.com » avec l’IP local :</p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_14.png"><img class="alignnone size-full wp-image-132" title="powerdns_14" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_14.png" alt="" width="642" height="361" /></a></p>
<p>Si l’on utilise l’outil Windows « nslookup » à partir d’une autre IP, dans les logs de PowerDNS, une ligne apparait :</p>
<p>Jul 17 17:08:21 [geobackend] Serving www.geo.testrepartition.com CNAME geomain.testrepartition.com to 172.20.200.1 (0)</p>
<p>Puisqu’il s’agit d’une IP privée, le serveur DNS retourne l’internaute vers la zone par défaut : « geomain.testreparition.com », car le serveur ne trouve pas cette IP dans la liste d’IP par continent.</p>
<p>Il ne reste plus qu’à tester avec une IP publique.</p>
<h3>Modification de la base des IP pour tester une IP privée</h3>
<p>Pour l’instant, seul les IP publiques peuvent être testées, mais il est intéressant de modifier la base de données des IP pour faire passer une IP privée, pour une IP venant de l’Europe.</p>
<p>Ajout du masque d’IP privée « 172.20.0.0 » dans le fichier de référence :</p>
<pre>nano /etc/powerdns/zz.countries.nerd.dk.rbldnsd</pre>
<p>Ajout : 172.20.0.0/16 :127.0.0.250:fr</p>
<p>Dès qu’un test est effectué, par exemple d’une machine virtuelle qui possède l’IP 172.20.200.1 et qui a pour serveur DNS l’IP du serveur où est installé PowerDNS, on effectue un « nslookup » de www.testrepartition.com et dans les logs, la résolution est visible :</p>
<pre>[geobackend] Serving www.geo.testrepartition.com CNAME eu.iso.testrepartition.com to 172.20.200.1 (250)</pre>
<p>Le chiffre « 250 » signifie qu’il s’agit d’une IP provenant du continent 250 qui a pour nom « eu » :</p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_15.png"><img class="alignnone size-full wp-image-133" title="powerdns_15" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_15.png" alt="" width="93" height="37" /></a></p>
<p>Dès lors, la demande « www.testrepartition.com » est redirigé sur les serveurs « eu.iso » qui sont les serveurs européens.</p>
<p>Une fois les fichiers modifié, il n’est pas nécessaire de redémarrer le démon PowerDNS, il suffit de taper : « pdns_control rediscover ».<br />
Par contre, si vous avez exécuté PowerDNS avec « /etc/init.d/pdns monitor » et que l’on tente « pdns_control rediscover », alors une erreur apparait : « Fatal error: Unable to connect to remote &#8216;/var/run/pdns.controlsocket&#8217;: Connection refused ».</p>
<p>Il faut donc démarrer le démon avec « /etc/init.d/pdns start » puis « pdns_control rediscover » affichera « Ok ».</p>
<h3>Configuration de la zone inverse in-addr.arpa</h3>
<p>La résolution d’une IP en nom de domaine est possible en configurant la zone inverse in-addr.arpa.</p>
<p>Pour la mettre en place, il faut insérer de nouveaux enregistrements dans la base de données :</p>
<pre>INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, '99.1.20.172.in-addr.arpa','dns.testrepartition.com web@testrepartition.com 1607200701 10800 3600 604800 86400','SOA',38400,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, '99.1.20.172.in-addr.arpa','us.iso.testrepartition.com','PTR',86400,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, '20.100.20.172.in-addr.arpa','eu.iso.testrepartition.com','PTR',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, '21.100.20.172.in-addr.arpa','eu.iso.testrepartition.com','NS',86400,NULL);

INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, '10.100.20.172.in-addr.arpa','geomain.testrepartition.com','PTR',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) 	VALUES (2, ' 11.100.20.172.in-addr.arpa','geomain.testrepartition.com','PTR',86400,NULL);

exit;</pre>
<p>Maintenant, il est possible de résoudre l’IP pour afficher le nom de domaine :</p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_16.png"><img class="alignnone size-full wp-image-134" title="powerdns_16" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/powerdns_16.png" alt="" width="509" height="105" /></a></p>
<p>Dans cet exemple, le masque d’IP « 172.20.0.0 » est indiqué comme adresse américaine, dès lors, la résolution de l’adresse « 172.20.1.99 » retourne le nom DNS de la zone américaine, en l’occurrence « us.iso.testrepartition.com »</p>
<h2>Test charge DNS</h2>
<p>Pour tester la rapidité de résolution du serveur DNS, la création d’un petit script réalisant un nslookup est nécessaire. Deux versions ont été réalisées : l’une sous Linux et l’autre sous Windows.</p>
<p>Script Windows (.bat) :</p>
<pre>@echo off
:replay
nslookup www.testrepartition.com
Goto replay
:FIN</pre>
<p>Sous Debian (.sh) :</p>
<pre>#!/bin/sh
while true
do
nslookup www.testrepartition.com
done</pre>
<p><span style="text-decoration: underline;">Bilan :</span> <em>60 requêtes/sec</em> -&gt; 3% CPU</p>
<p>En extrapolant, il est possible de dire que le serveur DNS supporte 2000 requêtes par seconde sur ce type de test assez théorique.</p>
<p>Il faudra donc effectuer quelques tests réels et surveiller l’utilisation des ressources des divers serveurs.</p>
<h2>Conclusion</h2>
<p>La géolocalisation avec PowerDNS fonctionne très bien et se configure de manière assez simple sous Linux.</p>
<p>La priorité d’une telle solution est la base de données qui contient les IP et leur provenance classées par continent.<br />
En effet, si cette base est erronée ou incomplète, les internautes seront redirigés vers le lieu par défaut rendant la géo localisation inefficace. Ainsi, il faut que cette base soit le plus juste possible.</p>
<p>Il existe des bases effectuant la relation « IP vers continent » en vente sur Internet réalisées par des sociétés spécialisées ce qui permet de garantir un minimum la fiabilité des données.</p>
<p>Il est possible de faire évoluer cette solution en développant un petit module pour configurer simplement les données (nom de domaine, IP, etc.) qui se trouvent dans la base de données MySQL. Actuellement, la configuration est réalisée avec PHPMyAdmin qui permet de modifier la base de données de PowerDNS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serveur-linux.info/2012/01/geolocalisation-serveur-dns-powerdns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bash</title>
		<link>http://www.serveur-linux.info/2012/01/bash/</link>
		<comments>http://www.serveur-linux.info/2012/01/bash/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 18:51:08 +0000</pubDate>
		<dc:creator>Ludovic</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[caractère]]></category>
		<category><![CDATA[chaine]]></category>
		<category><![CDATA[suppression]]></category>

		<guid isPermaLink="false">http://www.serveur-linux.info/?p=110</guid>
		<description><![CDATA[Le Bash est un langage de scripting puissant qui permet d'automatiser ou de simplifier de multiples commandes sous Linux. Par exemple, de nombreux scripts de démarrage sont écrits dans ce langage.
Ce billet rassemble les astuces que je remarque sur Bash. <a href="http://www.serveur-linux.info/2012/01/bash/"> Lire la suite <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<h2>Suppression de chaines de caractères</h2>
<p>En Bash, il est possible de supprimer simplement des caractères qui se trouvent à gauche ou à droite d&#8217;un caractère.</p>
<p>Par exemple, pour : <em>RESULT=&nbsp;&raquo;host@channel&nbsp;&raquo;</em>.</p>
<pre># Suppression chaine à gauche
echo ${RESULT#*@};</pre>
<p>La variable RESULT renvoie : <em>channel</em>.</p>
<pre># Suppression chaine à droite
echo ${RESULT%@*};</pre>
<p>La variable RESULT renvoie : <em>host</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serveur-linux.info/2012/01/bash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation d&#8217;un client Bittorrent : MLDonkey</title>
		<link>http://www.serveur-linux.info/2012/01/installation-client-bittorrent-mldonkey/</link>
		<comments>http://www.serveur-linux.info/2012/01/installation-client-bittorrent-mldonkey/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 18:45:23 +0000</pubDate>
		<dc:creator>Ludovic</dc:creator>
				<category><![CDATA[Peer to peer]]></category>
		<category><![CDATA[bittorent]]></category>
		<category><![CDATA[échange]]></category>
		<category><![CDATA[mldonkey]]></category>
		<category><![CDATA[partage]]></category>
		<category><![CDATA[peer to peer]]></category>

		<guid isPermaLink="false">http://www.serveur-linux.info/?p=101</guid>
		<description><![CDATA[Pour partager ses fichiers en Peer to Peer, le serveur MLDonkey est facile à mettre en place et peut être administré par une page Web ou en ligne de commande.
Toutes les options dignes d'un client Bittorent sont possibles : évolution des téléchargements, taux d'upload et de download, etc. <a href="http://www.serveur-linux.info/2012/01/installation-client-bittorrent-mldonkey/"> Lire la suite <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://mldonkey.sourceforge.net/Main_Page" target="_blank">MLDonkey</a> est un client :</p>
<ul>
<li>qui fonctionne parfaitement en mode console (utile car nous n&#8217;avons pas d&#8217;interface graphique)</li>
<li>permet de se connecter à de multiples réseaux (eDonkey, Overnet, Bittorrent, etc.)</li>
<li>est mis régulièrement à jour par l&#8217;équipe (important pour corriger les bugs, failles, etc.)</li>
</ul>
<h2>Création d&#8217;un utilisateur pour le client Bittorrent</h2>
<pre># création d'un utilisateur pour mldonkey.
adduser bittorrent</pre>
<h2>Installation</h2>
<p>Récupération de l&#8217;archive MLDonkey :</p>
<pre>wget http://surfnet.dl.sourceforge.net/sourceforge/mldonkey/mldonkey-2.9.2.static.i386-Linux_glibc-2.3.2.tar.bz2
bzip2 -d mldonkey-2.9.2.static.i386-Linux_glibc-2.3.2.tar.bz2
tar -xf mldonkey-2.9.2.static.i386-Linux_glibc-2.3.2.tar</pre>
<p>Suppression de l&#8217;archive .tar qui ne nous sert plus :</p>
<pre>rm mldonkey-2.9.2.static.i386-Linux_glibc-2.3.2.tar</pre>
<p>Changement du nom en &laquo;&nbsp;mldonkey&nbsp;&raquo; :</p>
<pre>mv mldonkey-distrib-2.9.2/ mldonkey</pre>
<p>Compilation :</p>
<pre>cd mldonkey
# il n'y a rien à compiler maintenant, l'exécutable est livré compilé
# ./configure --enable-batch
# make

# déplacement du dossier contenant les exécutables mldonkey
mv mldonkey/ /home/bittorrent/

# installation de nohup pour exécuter mldonkey qui restera actif même après la déconnexion de l'utilisateur
apt-get update
apt-get install nohup</pre>
<h2>Lancement / Exécution / Utilisation</h2>
<pre># on se logue avec l'utilisateur bittorrent pour exécuter mldonkey sous l'utilisateur bittorrent pour des raisons de sécurité
su - bittorrent
cd /home/bittorrent/
# lancement du client avec nohup
nohup ./mlnet &amp;</pre>
<p>Pour contrôler MLDonkey, il faut utiliser le module &laquo;&nbsp;mldonkey_command&nbsp;&raquo;.</p>
<pre># autoriser des IP à accéder à l'interface Web
./mldonkey_command set allowed_ips "127.0.0.1 autre_ip autre_ip_2 autre_ip_3"</pre>
<pre># lancer un téléchargement : par exemple l'ISO d'Ubuntu par bittorent
./mldonkey_command startbt ftp://cdimage.ubuntu.com/cdimage/releases/7.10/release/ubuntu-7.10-dvd-i386.iso.torrent</pre>
<p>MLDonkey peut être entièrement configuré et contrôlé avec l&#8217;interface Internet : <em>http://IP_de_votre_serveur:4080</em> pour accéder à l&#8217;interface. Lors de la 1ère connexion à l&#8217;interface, on est averti qu&#8217;il faut spécifier un mot de passe pour éviter que n&#8217;importe qui puisse lancer des téléchargements par exemple.</p>
<pre># protection contre l'accès à l'interface Internet
./mldonkey_command auth admin votre_mot_de_passe</pre>
<h2>Partage de fichier et téléchargement</h2>
<p>Je vous conseille d&#8217;utiliser l&#8217;interface Internet ou alors de regarder la <a href="http://mldonkey.sourceforge.net/MLdonkeyCommandsExplained" target="_blank">documentation sur les commandes pour MLDonkey</a> pour réaliser la même chose sans l&#8217;interface Internet.</p>
<p>Pour télécharger un fichier que vous allez ensuite partager, il faut cliquer sur ce bouton : <a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/dl_mldonkey.png"><img class="alignnone size-full wp-image-102" title="dl_mldonkey" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/dl_mldonkey.png" alt="" width="31" height="24" /></a> puis dans la fenêtre qui s&#8217;ouvre il suffit de copier le lien Torrent puis de valider.</p>
<p>Pour voir la progression du téléchargement il faut cliquer sur <a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/transfers_mldonkey.png"><img class="alignnone size-full wp-image-104" title="transfers_mldonkey" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/transfers_mldonkey.png" alt="" width="68" height="21" /></a> puis <a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/download_mldonkey.png"><img class="alignnone size-full wp-image-103" title="download_mldonkey" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/download_mldonkey.png" alt="" width="139" height="20" /></a>.</p>
<p>Une fois les fichiers téléchargés, il est possible de les laisser afin que d&#8217;autres personnes puissent les récupérer à leur tour, voici un exemple de fichiers que je partage :</p>
<p><a href="http://www.serveur-linux.info/wp-content/uploads/2012/01/upload_mldonkey.png"><img class="alignnone size-full wp-image-105" title="upload_mldonkey" src="http://www.serveur-linux.info/wp-content/uploads/2012/01/upload_mldonkey.png" alt="" width="595" height="152" /></a></p>
<p>En effectuant un clic droit sur 1 des liens tels que le fichier OpenOffice fr : &laquo;&nbsp;<em>OOo_2.3.1_Win32Intel_install_fr.exe</em>&laquo;&nbsp;, il est possible de faire un clic droit sur celui-ci et de récupérer le lien à transmettre à vos amis.</p>
<p>Pour partager d&#8217;autres fichiers, il faut les placer sur votre serveur dans le dossier &laquo;&nbsp;incoming&nbsp;&raquo; par exemple. Par défaut, tous les fichiers placés dans le dossier &laquo;&nbsp;<em>/home/bittorrent/.mldonkey/incoming/</em>&nbsp;&raquo; sont partagés.</p>
<h2>Liens</h2>
<ul>
<li><a href="http://mldonkey.sourceforge.net/MLdonkeyCommandsExplained" target="_blank">Documentation sur les commandes pour MLDonkey</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.serveur-linux.info/2012/01/installation-client-bittorrent-mldonkey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qmail, Vpopmail / MySQL, Daemontools, UCSPI-TCP, SMTP-AUTH</title>
		<link>http://www.serveur-linux.info/2012/01/qmail-vpopmail-mysql-daemontools-ucspi-tcp-smtp-auth/</link>
		<comments>http://www.serveur-linux.info/2012/01/qmail-vpopmail-mysql-daemontools-ucspi-tcp-smtp-auth/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 18:10:41 +0000</pubDate>
		<dc:creator>Ludovic</dc:creator>
				<category><![CDATA[SMTP]]></category>
		<category><![CDATA[daemontools]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[qmail]]></category>
		<category><![CDATA[smtp auth]]></category>
		<category><![CDATA[ucspi-tcp]]></category>
		<category><![CDATA[vpopmail]]></category>

		<guid isPermaLink="false">http://www.serveur-linux.info/?p=95</guid>
		<description><![CDATA[Qmail est un serveur de messagerie sécurisé et qui fonctionne sous forme de modules qu'on rajoute à Qmail pour augmenter ses possibilités.
Le guide détaille l'installation de Qmail, de l'utilisation de MySQL pour gérer les comptes emails des utilisateurs, de daemontools, de UCSPI-TCP, de Vpopmail, de SMTP AUTH pour l'authentification chiffrée, ainsi que de SpamAssassin pour lutter contre le SPAM <a href="http://www.serveur-linux.info/2012/01/qmail-vpopmail-mysql-daemontools-ucspi-tcp-smtp-auth/"> Lire la suite <span class="meta-nav">&#8594; </span></a>]]></description>
			<content:encoded><![CDATA[<p>Je vais détailler l&#8217;installation du serveur mail Qmail couplé à Vpopmail et MySQL pour gérer simplement les domaines et les boites mails des utilisateurs.<br />
Ensuite, pour éviter que le serveur Mail ne devienne un relais à spam, il est possible d&#8217;utiliser une authentification SMTP pour envoyer des mails, ainsi, lorsqu&#8217;un utilisateur voudra envoyer un mail il devra être authentifié.</p>
<p>Là où Postfix fonctionne de manière autonome, Qmail se différencie par son fonctionnement sous la forme de module qui en fait un serveur de messagerie très sécurisé !</p>
<h2>Installation de Qmail</h2>
<p>L&#8217;auteur de Qmail n&#8217;a pas souhaité que des paquets soit créés, il faut donc compiler directement par les sources. Par contre il existe netqmail qui contient un grand nombre de patchs directement intégré.</p>
<pre>wget http://mir2.ovh.net/www.qmail.org/netqmail-1.06.tar.gz
tar -xzf netqmail-1.06.tar.gz
make
make setup check
./config-fast domaine.com</pre>
<p>Tous les fichiers de configuration se trouve dans le dossier :</p>
<pre>/var/qmail/control/</pre>
<p>Pour démarrer qmail :</p>
<pre>/var/qmail/rc &amp;</pre>
<h2>DaemonTools</h2>
<p>Documentation : <a href="http://cr.yp.to/daemontools/install.html" target="_blank">DaemonTools</a></p>
<p>DaemonTools va vérifier si le service qmail fonctionne, s&#8217;il est DOWN il sera relancé. De plus, la gestion des logs est améliorée.</p>
<h3>Installation</h3>
<pre>mkdir -p /package
cd /package
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar -xzf daemontools-0.76.tar.gz
mv admin/daemontools-0.76/ daemontools-0.76
rmdir admin/
cd daemontools-0.76
package/install</pre>
<p>Personnellement, lors de la compilation de <em>daemontools</em>, j&#8217;ai eu droit à cette erreur :</p>
<pre>Erreur lors de la compil :
collect2: ld returned 1 exit status
make: *** [envdir] Error 1
Copying commands into ./command...
cp: cannot stat `compile/svscan': No such file or directory</pre>
<p>Pour corriger cette erreur, il faut simplement patcher <em>daemontools</em> avec le patch issu du site de qmail :</p>
<pre>cd /package
wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
patch -p0 &lt; daemontools-0.76.errno.patch
patching file daemontools-0.76/src/error.h
cd daemontools-0.76
rm -R compile
package/install</pre>
<p>Si la compilation se déroule bien, voici ce que vous devriez avoir :</p>
<pre>Making compatibility links in /usr/local/bin...
Creating /service...
Adding svscanboot to inittab...
init should start svscan now.</pre>
<p>On remarque que la ligne &laquo;&nbsp;<em>SV:123456:respawn:/command/svscanboot</em>&nbsp;&raquo; a été rajouté dans &laquo;&nbsp;<em>vi /etc/inittab</em>&laquo;&nbsp;.<br />
Doit maintenir le service : <em>scanboot</em>, qui va maintenant <em>svscan</em>.</p>
<h2>UCSPI-TCP</h2>
<p>Le module <em>UCSPI-TCP</em> va gérer &laquo;&nbsp;<em>qmail-smtpd</em>&nbsp;&raquo; pour envoyer les mails. Puis il sera interfacé avec MySQL pour la gestion des accès au SMTP et seuls les utilisateurs du domaine pourront envoyer des emails. <a href="http://cr.yp.to/ucspi-tcp/install.html" target="_blank">Documentation</a>.</p>
<p>Comme pour <em>daemontools</em> il faut patcher le <em>ucspi-tcp</em> pour le bon déroulement de l&#8217;installation :</p>
<pre>cd /tmp
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar -xzf ucspi-tcp-0.88.tar.gz
wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
cd ucspi-tcp-0.88
patch -p1 &lt; /tmp/ucspi-tcp-0.88.errno.patch
make
make setup check</pre>
<h2>Vpopmail + MySQL</h2>
<p>Vpopmail est très simple à configurer et va créer de lui-même les tables MySQL ainsi que leur remplissage.</p>
<h3>Installation</h3>
<p>Création d&#8217;un compte MySQL avec les droits sur la base de donnée nommée <em>vpopmail</em> :</p>
<pre>CREATE DATABASE vpopmail;
GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmailuser@localhost IDENTIFIED BY 'votre_mot_de_passe';
quit;</pre>
<p>Puis il faut récupérer le paquet, le décompresser et configurer la compilation pour la prise en charge de MySQL : <em>enable-auth-module=mysql</em></p>
<pre>wget http://garr.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.25.tar.gz
tar xzf vpopmail-5.4.25.tar.gz
cd vpopmail-5.4.25
./configure \
--disable-roaming-users \
--enable-logging=p \
--disable-passwd \
--enable-clear-passwd \
--disable-domain-quotas \
--enable-auth-module=mysql \
--enable-auth-logging \
--enable-sql-logging \
--enable-valias \
--disable-mysql-limits

make
make install-strip</pre>
<p>Pour tester, il suffit d&#8217;utiliser les commandes fournies par Vpopmail : <em>vadddomain</em>, <em>vadduser</em>, etc.</p>
<p>Par exemple, pour la création du domaine avec le user postmaster@domaine.com (et, je le rappelle la création automatique des tables MySQL): <em>./vadddomain domaine.com password-postmaster</em>. Voici d&#8217;autres commandes :</p>
<pre>#Création d'un compte utilisateur sur un autre domaine virtuel
vadduser ludovic@autre-domaine.com password</pre>
<pre>#Création d'un alias de postmaster
valias -i postmaster@domaine.com ludovic@domaine.com</pre>
<pre>#Visualiser les alias / forwards
valias postmaster@domaine.com</pre>
<p>Configuration par défaut</p>
<pre>nano /var/vpopmail/etc/vlimits.default</pre>
<p>Emplacement des mails</p>
<pre>/var/vpopmail/domains/</pre>
<p>Test des mails :</p>
<pre>echo to: postmaster@domaine.com | /var/qmail/bin/qmail-inject
#Vérification
nano /var/vpopmail/domains/domaine.com/postmaster/Maildir/new/</pre>
<h2>Configuration de Qmail</h2>
<p>Pour la configuration de Qmail nous allons utiliser des scripts déjà tout faits.</p>
<pre> cd /tmp
wget http://qmail.jms1.net/scripts/service-qmail-send-run
wget http://qmail.jms1.net/scripts/service-qmail-smtpd-run
wget http://qmail.jms1.net/scripts/service-any-log-run
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log

cp /tmp/service-qmail-send-run /var/qmail/supervise/qmail-send/run
cp /tmp/service-qmail-smtpd-run /var/qmail/supervise/qmail-smtpd/run

chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run

cp /tmp/service-any-log-run /var/qmail/supervise/qmail-send/log/run
cp /tmp/service-any-log-run /var/qmail/supervise/qmail-smtpd/log/run

chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run</pre>
<h3>Configuration des scripts</h3>
<pre>nano /var/qmail/supervise/qmail-smtpd/run -&gt; remplacer "IP=unset" par "IP=0"
nano /var/qmail/supervise/qmail-smtpd/log/run -&gt; service-any-log-run</pre>
<p>Les logs seront dans &laquo;&nbsp;/var/qmail/supervise/qmail-smtpd/log/main&nbsp;&raquo;.</p>
<h3>Création du script de lancement de qmail qui va s&#8217;occuper la supervision des services</h3>
<pre>cd /tmp
wget http://www.lifewithqmail.org/qmailctl-script-dt70
cp /tmp/qmailctl-script-dt70 /var/qmail/bin/qmailctl
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin</pre>
<h3>Affichage des LOGS</h3>
<pre>tail -f /var/qmail/supervise/qmail-send/log/main/current | tai64nlocal
tail -f /var/qmail/supervise/qmail-smtpd/log/main/current | tai64nlocal</pre>
<p>Les logs s&#8217;affichent au format TimeStamp mais DaemonTools inclut un outil qui va convertir ce temps au format anglosaxon : &laquo;&nbsp;tai64nlocal&nbsp;&raquo;.</p>
<h2>TCP SERVER</h2>
<p><a href="http://qmail.jms1.net/scripts/service-qmail-smtpd-run.shtml" target="_blank">Documentation</a>.</p>
<h3>Recevoir les mails de tous</h3>
<pre>nano /etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
:allow
qmailctl cdb</pre>
<p>Tous les emails qui viennent des IP 127.0.0.X sont relayés.<br />
Tous les emails venant d&#8217;autres ip sont acceptés uniquement si le destinataire est configuré sur la machine (voir le serveur MX).<br />
Il n&#8217;est pas nécessaire de redémarrer le serveur smtp car le fichier est lu à chaque connexion smtp.</p>
<h2>Démarrage de Qmail</h2>
<p>Lancement du service qmail : &laquo;&nbsp;ln -s /var/qmail/supervise/qmail-send /service&nbsp;&raquo;<br />
Lancement du SMTP : &laquo;&nbsp;ln -s /var/qmail/supervise/qmail-smtpd /service&nbsp;&raquo;</p>
<pre>ps aux | grep qmail
root 7359 0.0 0.0 1428 300 ? S 13:40 0:00 supervise qmail-send
qmails 7361 0.0 0.0 1608 372 ? S 13:40 0:00 qmail-send
root 7363 0.0 0.0 1572 316 ? S 13:40 0:00 qmail-lspawn ./Maildir/
qmailr 7364 0.0 0.0 1568 304 ? S 13:40 0:00 qmail-rspawn
qmailq 7365 0.0 0.0 1560 320 ? S 13:40 0:00 qmail-clean
root 8082 0.0 0.0 1428 300 ? S 13:41 0:00 supervise qmail-smtpd
root 8126 0.0 0.0 3284 632 pts/1 R+ 13:41 0:00 grep qmail</pre>
<p>Vérification du bon fonctionnement :</p>
<pre>netstat -a | grep :smtp</pre>
<p>Qmail est bien lancé :</p>
<pre>qmailctl stat
/service/qmail-send: up (pid 7361) 535 seconds
/service/qmail-send/log: up (pid 7362) 535 seconds
/service/qmail-smtpd: up (pid 16696) 0 seconds
/service/qmail-smtpd/log: up (pid 8085) 515 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0</pre>
<p>On remarque que tous les services ont démarré sauf &laquo;&nbsp;/service/qmail-smtpd&nbsp;&raquo; qui affiche un uptime de 0 seconde. Il faut donc corriger cela :</p>
<pre>nano /var/qmail/supervise/qmail-smtpd/run</pre>
<p>Il faut remplacer la ligne SMTP_CDB=&nbsp;&raquo;/etc/tcp/smtp.cdb&nbsp;&raquo; par SMTP_CDB=&nbsp;&raquo;/etc/tcp.smtp.cdb&nbsp;&raquo;</p>
<p>On affiche à nouveau l&#8217;état des services :</p>
<pre> qmailctl stat
/service/qmail-send: up (pid 7361) 1342 seconds
/service/qmail-send/log: up (pid 7362) 1342 seconds
/service/qmail-smtpd: up (pid 25461) 330 seconds
/service/qmail-smtpd/log: up (pid 8085) 1322 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0</pre>
<h2>Courier POP / IMAP</h2>
<pre>apt-get install courier-base courier-authdaemon courier-authlib-mysql courier-imap courier-pop</pre>
<h3>Configuration de l&#8217;authentification avec Courier</h3>
<pre>nano /etc/courier/authdaemonrc</pre>
<p>authmodulelist=&nbsp;&raquo;authpam&nbsp;&raquo; -&gt; authmodulelist=&nbsp;&raquo;authvchkpw&nbsp;&raquo;</p>
<p>Avec l&#8217;installation par paquet ne fournit pas la livraire AUTHVCHKPW donc il faut :</p>
<pre>cd /tmp
wget http://www.qmailrocks.org/downloads/qmailrocks.tar.gz
tar xzf qmailrocks.tar.gz
cp qmailrocks/scripts/misc/authvchkpw /usr/lib/courier/courier-authlib/authvchkpw
bzip2 -d qmailrocks/courier-authlib-0.55.tar.bz2
tar xf qmailrocks/courier-authlib-0.55.tar
courier-authlib-0.55
./configure
make
cp /tmp/courier-authlib-0.55/.libs/libauthvchkpw.so /usr/lib/courier-authlib/</pre>
<h3>Redémarrage des démons</h3>
<pre>/etc/init.d/courier-authdaemon restart
/etc/init.d/saslauthd restart
/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart</pre>
<h2>SMTP AUTH</h2>
<p>SMTP AUTH permet à l&#8217;utilisateur de s&#8217;authentifier pour envoyer des mails à partir de n&#8217;importe quelle machine, tout en empêchant les envois de mails non désirés. En effet, il ne faut pas que le serveur soit &laquo;&nbsp;Open Relay&nbsp;&raquo;.</p>
<p>* Installation de <a href="http://cr.yp.to/checkpwd/install.html" target="_blank">CheckPassword</a></p>
<pre>cd /tmp
wget http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz
tar xzf checkpassword-0.90.tar.gz
cd checkpassword-0.90
make
make setup check</pre>
<p>Il faut stopper QMail car les fichiers binaires sont remplacés : &laquo;&nbsp;<em>qmailctl stop</em>&laquo;&nbsp;.</p>
<pre>cd /tmp/netqmail-1.06/other-patches
wget http://shupp.org/patches/netqmail-1.05-tls-smtpauth-20070417.patch
cd /tmp/netqmail-1.06
patch -p0 &lt; other-patches/netqmail-1.05-tls-smtpauth-20070417.patch</pre>
<p>Si tout se passe bien :</p>
<pre>patching file ./base64.c
patching file ./base64.h
patching file ./case_startb.c
patching file ./conf-cc
patching file ./dns.c
patching file ./FILES.auth
patching file ./hier.c
patching file ./install_auth.sh
patching file ./ipalloc.h
patching file ./Makefile
patching file ./Makefile-cert.mk
patching file ./qmail-control.9
patching file ./qmail-remote.8
patching file ./qmail-remote.c
patching file ./qmail-smtpd.8
patching file ./qmail-smtpd.c
patching file ./README.auth
patching file ./ssl_timeoutio.c
patching file ./ssl_timeoutio.h
patching file ./TARGETS
patching file ./tls.c
patching file ./tls.h
patching file ./update_tmprsadh.sh</pre>
<p>On lance la compilation et on installe :</p>
<pre>make
make setup check</pre>
<p>Fabrication des certificats :</p>
<pre>make cert
Generating a 1024 bit RSA private key
FR
France
Paris
Qmail
admin
admin
make tmprsadh</pre>
<p>Les certificats ont été rajouté dans &laquo;&nbsp;/var/qmail/control&nbsp;&raquo;.</p>
<h3>Modification du script de lancement de Qmail</h3>
<p>Nous allons tester de nous authentifier auprès du serveur mail :</p>
<pre>telnet ip_de_votre_serveur_mail 25
EHLO serveur-rps.fr
250-serveur-rps.fr
250-STARTTLS
250-PIPELINING
250-8BITMIME
250-SIZE 0
250 AUTH LOGIN PLAIN CRAM-MD5</pre>
<p>Le serveur attend la chaine de caractère qui contient le destinataire, le domaine et le mot de passe du compte mail créé avec VPOPMail.</p>
<p>Génération du MDP : perl -MMIME::Base64 -e &#8216;print enpre_base64(&laquo;&nbsp;\000postmaster\@domaine.com\000votre_mot_de_passe&nbsp;&raquo;)&#8217;<br />
Ou alors un convertisseur en ligne : http://www.motobit.com/util/base64-deprer-enprer.asp</p>
<pre>AUTH PLAIN la_cle_retournee_par_le_site</pre>
<h4>Erreur que j&#8217;ai eu</h4>
<pre>454 oops, unable to write pipe and I can't auth -&gt; au lancement -&gt; exec tcpserver -vR</pre>
<p>Il faut modifier la ligne :</p>
<pre>nano /var/qmail/supervise/qmail-smtpd/run
ARGS=" $LOCAL $CHECKPW $TRUE" par ARGS=" $CHECKPW $TRUE"</pre>
<p>On refait l&#8217;authentification et une nouvelle erreur apparait :</p>
<pre>"535 authentication failed (#5.7.1)"</pre>
<p>Dans les logs on remarque une erreur :</p>
<pre># voir les logs :
/var/qmail/supervise/qmail-smtpd/log/main/current
vmysql: can't read settings from /var/vpopmail/etc/vpopmail.mysql</pre>
<p>Visiblement il y a un problème dans les droits, il faut donc corriger cela.</p>
<p>Par défaut :</p>
<pre> ls -l /var/vpopmail/etc/vpopmail.mysql
-rw-r----- 1 vpopmail vchkpw 576 2008-02-11 16:53 /var/vpopmail/etc/vpopmail.mysql
# commande à exécuter pour modifier les propriétaires
chown vpopmail:root /var/vpopmail/etc/vpopmail.mysql
-rw-r----- 1 vpopmail root 576 2008-02-11 16:53 /var/vpopmail/etc/vpopmail.mysql</pre>
<p>Il est toujours impossible de se loguer, une nouvelle table est créé dans la BDD MySQL et contient les tentatives de log : &laquo;&nbsp;vlog&nbsp;&raquo;.<br />
Affichage d&#8217;une nouvelle erreur : &laquo;&nbsp;vchkpw-smtp: vpopmail user not found postmaster@domaine.com:xxx.xxx.xxx.xxx&nbsp;&raquo;</p>
<p>Par défaut :</p>
<pre> ls -l /var/vpopmail/bin/vchkpw
-rwx--x--x 1 vpopmail vchkpw 86320 2008-02-11 16:47 /var/vpopmail/bin/vchkpw
# commande à exécuter pour modifier les droits
chmod 751 /var/vpopmail/bin/vchkpw
chmod 4711 /var/vpopmail/bin/vchkpw
-rws--x--x 1 vpopmail root 86320 2008-02-11 16:47 /var/vpopmail/bin/vchkpw</pre>
<h2>SpamAssassin</h2>
<p>Il existe un <a href="http://www.qmail.org/qmailqueue-patch" target="_blank">patch </a>pour permettre à Qmail 1.03 d&#8217;utiliser le binaire &laquo;&nbsp;qmail-queue&nbsp;&raquo; différent de celui qui est intégré par défaut. Mais puisque l&#8217;installation de Qmail a été réalisée avec NetQmail, le patch est déjà intégré.</p>
<h3>Installation de Qmail-scanner</h3>
<pre>cd /tmp
wget http://prdownloads.sourceforge.net/qmail-scanner/qmail-scanner-2.02.tgz\?download
tar xfzv qmail-scanner-2.02.tgz
cd qmail-scanner-2.02
./configure
Y</pre>
<p>Mais une erreur se produit -&gt; &laquo;&nbsp;Cannot find reformime on your system!&nbsp;&raquo;.</p>
<p>Toutes les options de compilation sont listées [[http://qmail-scanner.sourceforge.net/configure-options.php|sur cette page]].</p>
<pre>./configure --spooldir /var/lib/qscan --qmaildir /var/qmail --bindir /var/qmail/bin \
--qmail-queue-binary /var/qmail/bin/qmail-queue --admin postmaster --domain serveur-rps.fr \
--add-dscr-hdrs yes --lang fr_FR --debug yes --scanners fast_spamassassin</pre>
<p>Il faut donc récupérer &laquo;&nbsp;reformime&nbsp;&raquo;. Il est possible de le faire en compilant MailDrop puis en copiant le binaire dans le répertoire. Par contre, il est possible d&#8217;avoir des problèmes lors d&#8217;une mise à jour par paquet donc je vous conseille d&#8217;installer mail drop par paquet &laquo;&nbsp;apt-get install maildrop&nbsp;&raquo;.</p>
<p>Si vous souhaitez tout de même copier seulement le binaire, voici la manipulation :</p>
<ul>
<li>Maildrop</li>
</ul>
<pre>cd /tmp
wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2
bzip2 -d maildrop-2.0.4.tar.bz2
tar xf maildrop-2.0.4.tar
cd maildrop-2.0.4
./configure
make</pre>
<p>Une nouvelle erreur apparait : (Perl-compatible regular expression library) n&#8217;est pas présent -&gt; &laquo;&nbsp;configure: error: pcre.h not found &#8211; install PCRE from www.pcre.org&nbsp;&raquo;.</p>
<ul>
<li>PCRE</li>
</ul>
<pre>cd /tmp
wget http://kent.dl.sourceforge.net/sourceforge/pcre/pcre-7.6.tar.gz
tar xzf pcre-7.6.tar.gz
cd pcre-7.6
./configure
make
make install</pre>
<ul>
<li>Récupération de reformime</li>
</ul>
<pre>cd maildrop-2.0.4
./configure
make</pre>
<p>Recompilation de maildrop pour créer Reformime :</p>
<pre>cd /tmp/maildrop-2.0.4
./configure
make</pre>
<p>Copie du binaire &laquo;&nbsp;reformime&nbsp;&raquo; dans /usr/local/bin</p>
<pre>cp /tmp/maildrop-2.0.4/rfc2045/reformime /usr/local/bin</pre>
<p>Refaire le ./configure avec &laquo;&nbsp;&#8211;install 1&#8243; à la fin pour éxécuter l&#8217;installation.</p>
<p>On reprend la configuration de qmail-scanner :</p>
<pre>./configure --spooldir /var/lib/qscan --qmaildir /var/qmail --bindir /var/qmail/bin \
--qmail-queue-binary /var/qmail/bin/qmail-queue --admin postmaster --domain serveur-rps.fr \
--add-dscr-hdrs yes --lang fr_FR --debug yes --scanners fast_spamassassin
The following binaries and scanners were found on your system:
mimeunpacker=/usr/local/bin/reformime
uudepre=/usr/bin/uudepre

Content/Virus Scanners installed on your System
max-scan-size=100000000
fast_spamassassin=/usr/bin/spamc

If that looks correct, I will now generate qmail-scanner-queue.pl
for your system...
Continue? ([Y]/N)
Y

Testing suid nature of /usr/bin/perl...
Whoa - broken perl install found.
Cannot even run a simple script setuid

You will either have to correct this
or use the C-wrapper within the ./contrib dir

Error was:
Can't do setuid (cannot exec sperl)

See FAQ for further details</pre>
<ul>
<li>perl-suid</li>
</ul>
<p>Il faut installer le paquet manquant :</p>
<pre>apt-get install perl-suid</pre>
<p>Ajout de &laquo;&nbsp;&#8211;install 1&#8243; dans le &laquo;&nbsp;./configure&nbsp;&raquo; pour que tout s&#8217;installe correctement.</p>
<h3>Modification du fichier TCP.SMTP</h3>
<p>Lors que le serveur reçoit un mail, le fichier &laquo;&nbsp;//tcp.smtp//&nbsp;&raquo; est appelé. C&#8217;est donc ce fichier qui va appelé Qmail Scanner avec SpamAssassin</p>
<pre>nano /etc/tcp.smtp
:allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
qmailctl cdb
qmailctl restart</pre>
<p>On vérifie le bon fonctionnement en envoyant un mail ou un SPAM qui traine dans une boite mail et on regarde les entêtes, on doit trouver :</p>
<pre>X-Spam-Status: No, score=3.2 required=5.0
X-Spam-Level: +++</pre>
<p>Si l&#8217;objet du mail n&#8217;est pas reécrit dans SpamAssassin :</p>
<pre>nano /var/qmail/bin/qmail-scanner-queue.pl</pre>
<p>Remplacer :</p>
<pre>my $spamc_options='-s 256000 -t 30 -c ';</pre>
<p>par :</p>
<pre>my $spamc_options='-s 256000 -t 30 ';</pre>
<h2>Commandes à connaitre</h2>
<p>Etat des services de qmail-send et qmail-smtp : <em>qmailctl stat</em></p>
<p>Nombre de mail en attente : <em>qmail-qstat</em></p>
<p>Entête des mails en attente : <em>qmail-qread</em></p>
<p>Configuration sommaire : <em>qmail-showctl</em></p>
<p>Pour toute modification de <em>/etc/tcp.smtp</em> il faut faire : <em>qmailctl cdb</em></p>
<h2>Fonctionnement en relai</h2>
<p>Dans l&#8217;exemple précédent, tout Qmail est installé sur la même machine, et il se peut que le serveur sature avec la réception des mails, le traitement antispam puis le délivrement dans la boite mail.</p>
<p>Il est donc possible d&#8217;avoir un serveur en amont nommé relai qui va recevoir les mails puis appliqué SpamAssassin et enfin délivré dans les boites mails.</p>
<p>La configuration des relais est identique au serveur de boites mails, il faut :</p>
<ul>
<li>DaemonTools</li>
<li>UCSPI-TCP</li>
<li>NetQmail</li>
<li>SpamAssassin</li>
</ul>
<p>Il n&#8217;y a pas besoin de :</p>
<ul>
<li>Courier</li>
<li>VPOPMail</li>
</ul>
<p>Voici les IP que j&#8217;ai imaginé pour le réseau :</p>
<pre>Serveur MX 1 -&gt; 192.168.0.50
Serveur MX 2 -&gt; 192.168.0.51
Serveur Boites mails -&gt; 192.168.0.1
Domaine -&gt; serveur-rps.fr</pre>
<p>Sur les relais MX 1 et MX 2, il faut relayer les mails vers le serveur qui contient les boites mails. Ensuite, lorsqu&#8217;un utilisateur enverra un mail, le mail sera transféré à l&#8217;un des relais et c&#8217;est l&#8217;un des relais qui enverra le mail.</p>
<h3>MX 1</h3>
<p>Routage des mails reçus vers le serveur de boites mails :</p>
<pre>nano /var/qmail/control/smtproutes
serveur-rps.fr:192.168.0.1</pre>
<p>Autorisation du serveur de boites mails à envoyer des mails avec le relai MX :</p>
<pre> nano /etc/tcp.smtp
:allow
192.168.0.1:allow,RELAYCLIENT=""
qmailctl cdb</pre>
<p>Autorisation du relai pour qui relai le domaine :</p>
<pre> nano /var/qmail/control/rcpthosts
serveur-rps.fr</pre>
<h3>MX 2</h3>
<p>La configuration est identique au MX 1.</p>
<pre> nano /var/qmail/control/smtproutes
serveur-rps.fr:192.168.0.1</pre>
<pre> nano /etc/tcp.smtp
:allow
192.168.0.1:allow,RELAYCLIENT=""
qmailctl cdb</pre>
<pre> nano /var/qmail/control/rcpthosts
serveur-rps.fr</pre>
<h3>Boites Mails</h3>
<p>Autorisation des relais pour relayer les mails :</p>
<pre> nano /etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
192.168.0.50:allow,RELAYCLIENT=""
192.168.0.51:allow,RELAYCLIENT=""
qmailctl cdb</pre>
<p>Lors de l&#8217;envoi d&#8217;un mail par un utilisateur du serveur de boites mails, il faut que le serveur de boites envoi le mail en utilisant l&#8217;un des deux relais MX :</p>
<pre> nano /var/qmail/control/smtproutes
:192.168.0.50
:192.168.0.51</pre>
<h3>Test d&#8217;envoi et de réception</h3>
<p>D&#8217;après les logs, il est tout à fait possible de suivre le bon cheminement d&#8217;un mail : Relai MX -&gt; Serveur de Boites mails.</p>
<h2>Documentation</h2>
<p><a href="http://www.lifewithqmail.org/lwq.pdf" target="_blank">Life with qmail</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.serveur-linux.info/2012/01/qmail-vpopmail-mysql-daemontools-ucspi-tcp-smtp-auth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.298 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-22 07:43:41 -->
<!-- Compression = gzip -->
