<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.paradoxal.org/blog/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Blog Blog</title>
  <link>http://www.paradoxal.org/blog/</link>
  <description>Blogblog vous propose l'aide mémoire d'un développeur PHP / Mysql passionné par l'administration Linux. Alban LEROUX - alias Seza - son autheur vous met donc à disposition ses astuces,  les mauvais moments et difficultés rencontrées mais aussi ses connaissances.
Même si ce blog s'orienté très clairement vers les lignes de code illisibles pour nombreux d'entre vous, actualité, coup de geule et information sur les techno du moment ne seront pas absentes. Bonne visistes !</description>
  <language>fr</language>
  <pubDate>Sat, 05 Jul 2008 10:19:19 +0200</pubDate>
  <copyright>licence creative commons</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Alerte email pour les mises à jour APT.</title>
    <link>http://www.paradoxal.org/blog/post/2008/03/21/Alerte-email-en-cas-de-nouvelles-mises-a-jour-disponible-sur-votre-serveur</link>
    <guid isPermaLink="false">urn:md5:e3b842b7544d4b7fcaecd5a80acaa01a</guid>
    <pubDate>Fri, 21 Mar 2008 15:06:00 +0100</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Astuces</category>
            
    <description>&lt;p&gt;Peut être avez-vous pris l'habitude de checker assez souvent (ou moins souvent) les mises à jour disponible sur votre serveur avec le petit couple de commande &lt;code&gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Cette opération courante et banale peut s'avérer bien souvent fastidieuse. En effet il faut se connecter en SSH, rentrer sont mot de passe, taper la fameuse commande (quelle fénéantise...) pourtant est plus que recommandé d'upgrader son serveur le plus souvent possible afin d'éviter que des failles de sécurité restent ouvertent aux pirates susceptibles de s'intéresser à vos machines.&lt;br /&gt;
Si vous pouvez assez facilement rester au fait des dernières mises à jour de vos serveurs préférés comme Apache, Mysql ou encore du module PHP et du kernel Linux, il est en revanche moins évident d'être au courant des dernières mises à jour de tous les outils et librairies installés sur votre machine.&lt;/p&gt;


&lt;p&gt;Cet état de cause fait que vous pouvez devenir un accroc de la commande &lt;code&gt;apt&lt;/code&gt;. Pour y remédier, je vous propose une petite cure.&lt;/p&gt;    &lt;p&gt;N'ayant pas trouver de paquet adéquat (l'inexistance d'un tel paquet m'étonne fortement j'ai du mal cherché), je me suis donc décidé de faire ce petit script tout ridicul afin d'être averti par email dès qu'une mise à jour est disponible dans les sources APT.&lt;/p&gt;


&lt;p&gt;C'est une petite libération en soit de ne plus s'imposer de se connecter en SSH toutes les semaines pour voir l'état des sources APT pour votre serveur préféré dans lequel vous avez mis tout votre amour et tendresse pour l'installé, le bichonné et le maintenir en forme.&lt;/p&gt;


&lt;p&gt;Après la minute romantique passons au chose concrète&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;Dans un lieu qui vous plaira, par exemple ici&amp;nbsp;; &lt;code&gt;/usr/local/sbin&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;Créer un petit fichier nommé&amp;nbsp;: &lt;code&gt;aptUpdateNotify.sh&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;Insérer le contenu ci-dessous dedans&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#!/bin/bash

#       l'adresse de notification des paquets à mettre à jour
#       à modifier selon vos gouts

APT_MAIL_NOTIFY=&amp;quot;hostmaster@domain.com&amp;quot;

#       le nom de la machine

APT_MAIL_NODE_NAME=`uname -n` 

#       Met à jour la liste des paquets

apt-get update &amp;gt; /dev/null


#       pousse dans un fichier temporaire
#       le résultat de la commande apt-get upgrade simulée
#       (aucune mise à jour réelle n'est effectuée)

apt-get upgrade -s -y -V -u -q --no-download --ignore-missing &amp;gt; /tmp/APT_MAIL_aptUpdateNotifier

#       récupère le nombre de paquets à mettre à jour

APT_MAIL_NB_UPDATE=`cat /tmp/APT_MAIL_aptUpdateNotifier | grep &amp;quot;mis . jour,&amp;quot; | cut -d &amp;quot; &amp;quot; -f 1`
APT_MAIL_TITLE=&amp;quot;${APT_MAIL_NB_UPDATE} mise(s) à jour disponible sur ${APT_MAIL_NODE_NAME}&amp;quot;

#       si il n'y a pas de mises à jour, nettoie et termine le programme.

if [[ $APT_MAIL_NB_UPDATE == 0 ]]; then
        rm /tmp/APT_MAIL_aptUpdateNotifier
        exit 0
fi

#       prépare le mail à envoyer

cat &amp;gt; /tmp/APT_MAIL_aptUpdateNotifierMail &amp;lt;&amp;lt; EOF

Bonjour,

${APT_MAIL_NB_UPDATE} paquet(s) possède(nt) une mise à jour sur la machine
${APT_MAIL_NODE_NAME}

Voici la trace &amp;quot;apt-get upgrade&amp;quot; capturée :


EOF

#       ajoute la sortie apt-get upgrade au mail

cat /tmp/APT_MAIL_aptUpdateNotifier &amp;gt;&amp;gt; /tmp/APT_MAIL_aptUpdateNotifierMail

#       envoie l'email

mailx -e -s &amp;quot;${APT_MAIL_TITLE}&amp;quot; ${APT_MAIL_NOTIFY} &amp;lt; /tmp/APT_MAIL_aptUpdateNotifierMail

#       nettoie les fichiers temporaires

rm /tmp/APT_MAIL_aptUpdateNotifier
rm /tmp/APT_MAIL_aptUpdateNotifierMail

#       termine le script

exit 0;
&lt;/pre&gt;


&lt;p&gt;Voilà, pensez bien évidemment à rentrer votre adresse email dans le script et à lui donner des droit d'éxécution avec la commande &lt;code&gt;chmod 744 aptUpdateNotify.sh&lt;/code&gt;.&lt;br /&gt;
Pour expliquez très rapidement ce qui se passe, le script simule une commande &lt;code&gt;apt-get update &amp;amp;&amp;amp; apt-get upgrade&lt;/code&gt; et vérifie si des paquets sont disponibles. Si tel est le cas un email vous sera envoyé avec la liste des paquets disponibles. Bien entendu le script ne procède pas aux mises à jour et n'installe rien. C'est à l'administrateur de faire la mises à jour ou pas.&lt;/p&gt;


&lt;p&gt;Il ne reste plus qu'à mettre ceci en tâche CRON à la cadence qu'il vous plaira. Par exemple je fais un check tous les matin de bonne heure à 5h23.&lt;/p&gt;


&lt;p&gt;Voici ce qu'il faut faire&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;Rendez-vous dans &lt;code&gt;/etc/cron.d/&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;Créez le fichier&amp;nbsp;: &lt;code&gt;aptUpdateNotify&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;Ajoutez la ligne suivante&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
23 5 * * *   root    /usr/local/sbin/aptUpdateNotify.sh 2&amp;gt;&amp;amp;1 &amp;gt; /dev/null
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminé.&lt;/p&gt;


&lt;p&gt;J'espère que ça vous sera utile. Si bien sûr un paquet existant fait déjà la même chose n'hésiter pas à m'en avertir.&lt;/p&gt;


&lt;p&gt;Bonne journée à tous.&lt;/p&gt;


&lt;p&gt;&lt;q&gt;PS&amp;nbsp;: Une petite note tout de même: ce script est prévu pour une distibution française, si votre machine vous parle dans la langue de shakespeare ou autre il faudra modifier le petit grep (ligne 25) en conséquence...&lt;/q&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2008/03/21/Alerte-email-en-cas-de-nouvelles-mises-a-jour-disponible-sur-votre-serveur#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2008/03/21/Alerte-email-en-cas-de-nouvelles-mises-a-jour-disponible-sur-votre-serveur#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/60</wfw:commentRss>
      </item>
    
  <item>
    <title>PHP : PDO et ses misères...</title>
    <link>http://www.paradoxal.org/blog/post/2008/02/23/PHP-%3A-PDO-et-ses-miseres</link>
    <guid isPermaLink="false">urn:md5:5dab55f5637f7f00dba684e3025abf9b</guid>
    <pubDate>Sat, 23 Feb 2008 12:35:00 +0100</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Programmation</category>
            
    <description>    &lt;p&gt;Petite note rapide&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;PDO pour la nième fois m'à fait des misères ce matin. Je devrais préciser PDO + driver Mysql car je ne saurait dire lequel des deux est coupable dans l'histoire.&lt;/p&gt;


&lt;p&gt;Si PDO est récent et donc sa manipulation nouvelle. Certes c'est normal que l'on se retrouve confronter à des erreurs &quot; de débutant &quot;. Mais ce matin j'ai passé une heure à cherché le pourquoi ça marche pas.&lt;/p&gt;


&lt;p&gt;Il y a peu j'avais été confronter à une requête sql qui ne retournait rien.  Après avoir cherché dans la doc PHP. l'instruction PdoStatement-&amp;gt;closeCursor() s'avérait être la solution. Autant pour moi c'était clairement indiquer dans la doc.&lt;br /&gt;
Aujourd'hui le même BUG se présente. Un select qui ne retourne rien et bien entendu il est éxécuté après une suite de select. Si je le place en tête de liste, il fonctionne mais les suivants ne fonctionnent plus. Ce coup-ci je n'ai pas fait l'idiot et j'avait bien mis des closeCursor() après chaque requête (même celle qui lise la liste complète de résultat).&lt;/p&gt;


&lt;p&gt;Alors que faire dans ce cas&amp;nbsp;? Après plus d'une heure j'ai trouver une solution. faire un unset(pdoStatement) derrière le closeCursor() et comme par magie tout est revenu dans l'ordre.&lt;/p&gt;


&lt;p&gt;J'apprécie travailler avec PDO globalement même si certaine fonctionnalité sont abstente oou d'autre parraisse fonctionner étrangement voir certainre qui diverge complètement de la doc.  Je doit avoir que je commence un peu à fatiguer de ce genre de mauvaise surprise.&lt;/p&gt;


&lt;p&gt;Pourquoi je rale&amp;nbsp;? Parceque pendant que je cherchait une solution à ce bug j'ai remis en cause réellement l'utilisation de PDO dans mon application. et après avoir trouver la solution j'ai repris tout mon code (quelques dizaine de millier de lignes) afin de rajouter des unset() après chaque requête. J'ai maintenant la crainte qu'un nouveau bug PDO m'oblige à revoir mon architecture ou changer de driver.&lt;/p&gt;


&lt;p&gt;Résultat ma confiance en PDO diminue d'un cran et c'est bien dommage.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2008/02/23/PHP-%3A-PDO-et-ses-miseres#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2008/02/23/PHP-%3A-PDO-et-ses-miseres#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/59</wfw:commentRss>
      </item>
    
  <item>
    <title>SERVEUR DEBIAN : Antispam email suite... et fin ?</title>
    <link>http://www.paradoxal.org/blog/post/2008/02/16/Spam-spam-spam-tu-ne-mauras-pas</link>
    <guid isPermaLink="false">urn:md5:c4b2b07fe64f242a6571a3bde8fe0857</guid>
    <pubDate>Sat, 16 Feb 2008 19:00:00 +0100</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
            
    <description>&lt;p&gt;Devant l'inventivité des spammeurs (je fais un compliment ?). Il faut changer assez souvent ses méthodes pour contrer le spam.&lt;/p&gt;


&lt;p&gt;Voilà comment la petite histoire commence&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;J'ai un serveur antispam qui fonctionne à merveille&amp;nbsp;: Dspam...&lt;/p&gt;    &lt;p&gt;Avec encore une petite centaine de spam par jour sur ma boîte personnelle, Dspam se trompe en moyenne 1 fois ou 2. Des faux négatifs bien sûr, les faux positifs ceci à du m'arriver 4 fois en un an.&lt;br /&gt;
Donc à ma petite habitude - expliquée dans le tuto&amp;nbsp;: &lt;a href=&quot;http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Antispam-email&quot; hreflang=&quot;fr&quot;&gt;SERVEUR DEBIAN&amp;nbsp;: Antispam email&lt;/a&gt;- j'envoie le faux négatif à &lt;q&gt;spam@domain.tld&lt;/q&gt; et hop il sera détecté la prochaine fois.&lt;/p&gt;


&lt;p&gt;Donc ce score très honorable de 98 % méritait toutes les louanges jusqu'au jour où les performances diminuées de 30 %.&lt;br /&gt;
Que se passe t-il donc&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;La réponse était très simple et il n'a pas fallu chercher longtemps. Ma première idée était que les mails envoyés à &lt;q&gt;spam@domain.tld&lt;/q&gt; n'était plus transférés ou mal intégrés donc la reconnaissance de spams s'en retrouvait altérée. Rien de cela en fait. Dès que j'ai ouvert le log &lt;q&gt;mail.info&lt;/q&gt; j'ai découvert la mascarade&amp;nbsp;: &lt;br /&gt;
Mes chères ennemis spammeurs envoient leurs courriers directement à &lt;q&gt;ham@domain.tld&lt;/q&gt; qui les accepte gracieusement et - en quelque sorte - les whiteliste avant que le spammeur fasse un second envoie dans les boîtes réelles ce coup-ci.&lt;/p&gt;


&lt;p&gt;Après la découverte de cette macabre entreprise, je me mis en tête de trouver une solution. &lt;br /&gt;
La première idée c'est de changer l'adresse &lt;q&gt;ham@domain.tld&lt;/q&gt;. Pourquoi pas, c'est une idée simple et peu coûteuse. Mais embêtante pour les utilisateurs qui doivent mémoriser cette adresse qui pourrait, de plus, changer de nouveau etc... Si l'adresse &lt;q&gt;ham@domain.tld&lt;/q&gt; à pu être trouver par déduction, en suivant mon tuto ou les autres ressource du web qui utilise cette méthode, comment l'adresse &lt;q&gt;1234@domain.tld&lt;/q&gt; pourrait-elle être trouvée&amp;nbsp;? Comme votre adresse personnelle à été trouvée par les spammeurs. &lt;br /&gt;
A partir du moment ou vous n'êtes pas le seul client de vos services, vous devez pensez aux utilisateurs. Prenons un utilisateur lambda - ou beta :]...&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Windows&lt;/li&gt;
&lt;li&gt;Outlook Express&lt;/li&gt;
&lt;li&gt;l'adresse 1234@domain.tld dans son carnet d'adresse&lt;/li&gt;
&lt;li&gt;Msn messenger&lt;/li&gt;
&lt;li&gt;une conversation msn&lt;/li&gt;
&lt;li&gt;clique (bêtement ?) sur votre ami(e) souhaite vous envoyer un fichier&amp;nbsp;: photos_chaudes.zip&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Qui ne cliquerai pas en fait&amp;nbsp;? :p &lt;br /&gt;
Bon vous avez compris l'utilisateur va être vérolé (s'il ne l'était pas déjà) et le virus fera joujou avec son carnet d'adresse... et &lt;q&gt;1234@domain.tld&lt;/q&gt; devra être changer vers une nouvelle adresse. &lt;br /&gt;
Tout ça pour dire que ma première idée ne va pas être celle que je vais prendre.&lt;/p&gt;


&lt;p&gt;Cela  faisait un moment que je souhaitais changer de système et c'était l'occasion d'en changer. &lt;br /&gt;
En effet transférer un mail ou deux à une adresse mail c'est cool de temps en temps mais quand la boite mail est toute neuve et le Dspam tout frais dessus, vous devez transférer 10 mails , 15 mails ou plus... Ceci devient rebutant.&lt;br /&gt;
De plus certains aiment transférer leurs mails en pièces jointes, souvent pour en transférer plusieurs d'un coup, ce qui est donc incompatible avec la méthode employée pour Dspam.&lt;br /&gt;
Le second problème de la solution «&amp;nbsp;transférer à xxx&amp;nbsp;» est que le système reste ouvert à l'extérieur donc toujours d'une manière ou d'une autre accessible à l'ennemi.&lt;/p&gt;


&lt;p&gt;La solution pour moi est donc&amp;nbsp;: &lt;br /&gt;
Pourquoi ne pas avoir un dossier dans la boîte mail ou l'on entreposerai les spams et les hams mal interprétés par Dspam afin qu'il puisse toujours apprendre et corriger ses erreurs.&lt;br /&gt;
Cette solution apporterai du confort pour l'utilisateur de la boîte qui n'aurai plus qu'à déplacer ses mails d'un dossier à l'autre et elle apporterai aussi une sécurité supplémentaire puisqu'elle ne serait pas accessible de l'extérieur.&lt;/p&gt;


&lt;p&gt;Après n'avoir pu trouvé mon bonheur auprès de Maildrop ou Procmail pour gérer un tel échange avec Dspam (peut être ai-je mal recherché). J'ai donc décidé de faire le petit script ci-dessous pour traiter les mails mal interprétés.&lt;/p&gt;


&lt;p&gt;Voici la démarche :&lt;br /&gt;
Les utilisateurs doivent créer - pour ceux qui souhaite profiter de Dspam – un dossier &lt;q&gt;Antispam&lt;/q&gt; qui contiendra deux sous-dossiers&amp;nbsp;: &lt;q&gt;spam&lt;/q&gt; et &lt;q&gt;non-spam&lt;/q&gt;.&lt;br /&gt;
Les spams non reconnus seront donc entreposés dans le dossier spam et les ham reconnu comme spam seront entreposés dans non-spam.&lt;/p&gt;


&lt;p&gt;Il ne reste plus qu'à mettre sur le serveur ce script et d'automatiser la tâche avec Cron. J'ai choisi pour moi toute les 5 minutes.&lt;/p&gt;

&lt;pre&gt;
#!/bin/bash

### Configuration
Dir=/var/mail/virtual
Spam=.Antispam.spam
Ham=.Antispam.non-spam
Trash=.Trash

### Ne plus toucher ici
parseDirToDspam()
{
	if [ $1 == &amp;quot;SPAM&amp;quot; ]
	then
		Type=spam
	else
		Type=innocent
	fi

	for Message in `ls $2/$3/$4/$5/cur`
	do
		echo &amp;quot;find $Type : $Message&amp;quot;

		# Vérifie si le message est flaggué
		if [ `echo $Message | grep : | wc -l` -lt 1 ]; then
			mv $2/$3/$4/$5/cur/$Message $2/$3/$4/$5/cur/${Message},2:
			Message=${Message},2:
		fi

		# Vérifie si le message est marqué comme lu
		if [ `echo $Message | cut -d: -f2 | grep S | wc -l` -lt 1 ]; then
			mv $2/$3/$4/$5/cur/$Message $2/$3/$4/$5/cur/${Message}S
			Message=${Message}S
		fi

		# Vérifie que le message n'est pas supprimé
		if [ `echo $Message | cut -d: -f2 | grep T | wc -l` == 1 ]; then
			continue
		fi

		# récupère la signature du message
		Signature=`cat $2/$3/$4/$5/cur/$Message | grep X-DSPAM-Signature | cut -d: -f2 | sed -n 's/ //p'`

		# envoie le message à DSPAM pour classification
		/usr/bin/dspam --user $4@$3 --class=$Type --source=error --signature=$Signature

		# Le nom du message qui va etre déplacé
		NewName=`echo $Message | cut -d: -f1`

		if [ $1 == &amp;quot;SPAM&amp;quot; ]; then
			echo &amp;quot;Suppression&amp;quot;
			cp $2/$3/$4/$5/cur/$Message $2/$3/$4/$6/new/${NewName}:2,S
			mv $2/$3/$4/$5/cur/$Message $2/$3/$4/$5/cur/${Message}T
		else
			echo &amp;quot;Restauration&amp;quot;
			sed -e 's/\[SPAM\]//' $2/$3/$4/$5/cur/$Message &amp;gt; $2/$3/$4/cur/${NewName}
			mv $2/$3/$4/$5/cur/$Message $2/$3/$4/$5/cur/${Message}T			
		fi
	done
}

# Parse les domaines présent dans le $Dir
for Domain in `ls $Dir`
do
	# entre dans le domaine	
	if [ ! -d $Dir/$Domain ]; then
		continue
	fi

	echo &amp;quot;Domaine : $Domain&amp;quot;

	for User in `ls $Dir/$Domain`
	do
		# entre dans l'utilisateur
		if [ ! -d $Dir/$Domain/$User ]; then
			continue
		fi

		echo &amp;quot;User : $User&amp;quot;

		if [ ! -d $Dir/$Domain/$User/$Spam ]; then
			continue
		fi

		parseDirToDspam SPAM $Dir $Domain $User $Spam $Trash

		if [ ! -d $Dir/$Domain/$User/$Ham ]; then
			continue
		fi

		parseDirToDspam HAM $Dir $Domain $User $Ham
	done
done

exit 0
&lt;/pre&gt;


&lt;p&gt;Voici ce que ce script  fait:&lt;/p&gt;


&lt;p&gt;Il inspecte &lt;q&gt;$Dir&lt;/q&gt; - ici&amp;nbsp;: &lt;q&gt;/var/mail/virtual&lt;/q&gt; - afin de trouver toutes les boites mails existantes. Pour chacune d'elle il vérifie la présence du dossier &lt;q&gt;Antispam&lt;/q&gt; et des ses deux sous dossiers.&lt;/p&gt;


&lt;p&gt;Si tout est présent il vient chercher les mails présent dans le dossier &lt;q&gt;spam&lt;/q&gt; pour traitement&amp;nbsp;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;marque le message comme lu&lt;/li&gt;
&lt;li&gt;récupère la signature dans les entêtes du message&lt;/li&gt;
&lt;li&gt;demande à Dspam de reclassifier le mail identifié par sa signature&lt;/li&gt;
&lt;li&gt;déplace le mail dans la corbeille&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ensuite il vient chercher les mails présent dans le dossier &lt;q&gt;non-spam&lt;/q&gt; pour traitement&amp;nbsp;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;marque le message comme lu&lt;/li&gt;
&lt;li&gt;récupère la signature dans les entêtes du message&lt;/li&gt;
&lt;li&gt;demande à Dspam de reclassifier le mail identifié par sa signature&lt;/li&gt;
&lt;li&gt;supprime la signature [spam] dans le sujet&lt;/li&gt;
&lt;li&gt;replace le mail dans la boite pricipale&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ainsi on peut y voir trois intérêts&amp;nbsp;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;La signature Dspam dans le contenu du mail devient inutile et l'on peut donc reparamétrer Dspam pour l'enlever.&lt;/li&gt;
&lt;li&gt;Les faux positifs se retrouve après traitement dans la boite email comme s'il avait été correctement reçu. (pas marqué comme transféré, pas de préfixe [spam] dans le sujet)&lt;/li&gt;
&lt;li&gt;La boîte d'envoi ne sera plus remplie des nombreux transferts vers &lt;q&gt;spam@...&lt;/q&gt; que vous ne ferez plus.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Si toutefois vous avez des choses à apporter à cette solution, si vous avez trouvé des erreurs, n'hésitez pas. Je suis toujours preneur. Notamment s'il existe un moyen de coupler Maildrop ou Procmail à tout ça afin de ne plus utiliser Cron pour lancer le script ce qui diminuerai les ressources consommées.&lt;/p&gt;


&lt;p&gt;Le choses à faire sont donc&amp;nbsp;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reparamétré dspam pour qu'il pose la signature dans les entêtes du mail et non plus dans le corps du mail.&lt;/li&gt;
&lt;li&gt;supprimer les deux adresses &lt;q&gt;spam@domain.tld&lt;/q&gt; et &lt;q&gt;ham@domain.tld&lt;/q&gt;.&lt;/li&gt;
&lt;li&gt;Copier le script dans un endroit qui vous plaît. par example /usr/local/sbin et appelé le ... dspam-classify&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;paramétrez le script avec votre environnement.&lt;/li&gt;
&lt;li&gt;Le script est aussi prévu uniquement pour supprimé le préfixe [spam] dans le sujet du mail. Si vous utilisez un aute préfixe, il faudra changer la commande &lt;q&gt;sed&lt;/q&gt; en conséquence.&lt;/li&gt;
&lt;li&gt;Créer un fichier dspam dans /etc/cron.d et mettez ceci dedans&amp;nbsp;:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;
*/5 * * * *   root   /usr/local/sbin/dspam-classify &amp;gt; /dev/null
&lt;/pre&gt;


&lt;p&gt;Merci pour la lecture de ce long sujet&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2008/02/16/Spam-spam-spam-tu-ne-mauras-pas#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2008/02/16/Spam-spam-spam-tu-ne-mauras-pas#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/58</wfw:commentRss>
      </item>
    
  <item>
    <title>Dotclear et le spam</title>
    <link>http://www.paradoxal.org/blog/post/2008/01/15/Dotclear-et-le-spam</link>
    <guid isPermaLink="false">urn:md5:f669eee014d1a47ac16c552c72a9033e</guid>
    <pubDate>Tue, 15 Jan 2008 14:27:00 +0100</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Actualité</category>
            
    <description>    &lt;p&gt;Bonjour et bonne année à tous&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Je reviens après les fêtes plus reposé que jamais. J'ai en effet quitté mon emploi ce qui me permet de respirer un peu. Pas trop quand même puisque je me lance de facto dans une nouvelle aventure.&lt;/p&gt;


&lt;p&gt;Je publie donc cette petite nouvelle pour vous souhaiter à tous bien le bonjour et aussi pour demander à tous une bonne solutions antispam pour Dotclear.&lt;/p&gt;


&lt;p&gt;Je m'explique. J'ai il y a quelques mois fermé les commentaire de ce blog (et de ceux que j'héberge) car le nombre de spam par commentaire comme rétrolien est devenue vraiment impressionnant. Au début 30 par jour était fatiguant à traiter mes tolérable. 1000 par jour est devenu impossible.
Faute de temps et de moyen j'ai donc bloqué la possibilité pour le spectateur d'effectuer une intervention sur le blog.&lt;/p&gt;


&lt;p&gt;Par la suite, en vue du nombre d'intervention par email des lecteurs - ce qui me ravie&amp;nbsp;! - Je souhaite plus que tous vous offrir de nouveau la parole ici. Je réouvre donc les commentaires. Si les spams vont se faire rare dans un premier temps, je redoute le moment où il vont arriver de nouveau.&lt;/p&gt;


&lt;p&gt;Donc si vous passé par là et que vous avez une bonne astuce. Je suis preneur.&lt;/p&gt;


&lt;p&gt;Merci à vous&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2008/01/15/Dotclear-et-le-spam#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2008/01/15/Dotclear-et-le-spam#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/57</wfw:commentRss>
      </item>
    
  <item>
    <title>Cher Petit papa noël</title>
    <link>http://www.paradoxal.org/blog/post/2007/11/11/Cher-Petit-papa-noel</link>
    <guid isPermaLink="false">urn:md5:7f2a42a923c62c6a138a009a68186805</guid>
    <pubDate>Sun, 11 Nov 2007 22:49:00 +0100</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>General</category>
        <category>2007</category><category>Inutile</category>    
    <description>    &lt;p&gt;Je t'écris ce soir pour t'envoyer ma liste de voeux&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Alors ne perdons pas de temps en belles paroles.&lt;/p&gt;


&lt;p&gt;Je veux&amp;nbsp;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Canon EOS 40 D nu (env. 1130 €)&lt;/li&gt;
&lt;li&gt;Canon EF 16-35 F2,8 USM L (env.  1550 €)&lt;/li&gt;
&lt;li&gt;Canon EF 24-70 F2,8 USM L (env. 1450 €)&lt;/li&gt;
&lt;li&gt;Canon EF 70-200 F4 USM L IS (env. 1360 €)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Merci beaucoup&amp;nbsp;! :p&lt;/p&gt;



&lt;p&gt;Et s'il te reste de quoi fournir des cartes mémoires, batteries, saccoche ou autre je suis tout à fait preneur.
Encore merci pour ta générosité et tes 5490 € c'est trop sympa.&lt;/p&gt;


&lt;p&gt;Je compte sur toi&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/11/11/Cher-Petit-papa-noel#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/11/11/Cher-Petit-papa-noel#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/56</wfw:commentRss>
      </item>
    
  <item>
    <title>Certificat SSL multi domaine</title>
    <link>http://www.paradoxal.org/blog/post/2007/09/29/Certificat-SSL-multi-domaine</link>
    <guid isPermaLink="false">urn:md5:9b49c2cd79910302ffc23290756ad491</guid>
    <pubDate>Sat, 29 Sep 2007 19:14:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Astuces</category>
            
    <description>&lt;p&gt;A un moment donné nous avons tous été amené en tant qu'administrateur à générer des certificats SSL. Des certificats pour Apache, pour votre MDA ou MTA. Ces sur ces derniers éléments que j'ai buté dernièrement.&lt;/p&gt;


&lt;p&gt;Courrier-imap-ssl mon MDA n'accepte qu'un seul certificat SSL. Comment en effet, partant de ce constat, héberger plusieurs domaines. Mon Thunderbird génère une alerte à chaque fois en précisant que le certificat n'est pas valide pour le domaine à chaque démarrage, ce qui est très embêtant.&lt;/p&gt;    &lt;p&gt;Après de nombreuses recherches avec mon ami Google pour créer un certificat valide sur plusieurs domaines j'ai fini par trouver mon bonheur.
Car oui c'est possible de créer un certificat SSL pour plusieurs domaines. C'est possible je m'en doutais car toutes les organisations de certification  proposent ce type de certificat à la vente. Et forcément ceci coûte très très cher. Trop pour moi.&lt;/p&gt;


&lt;p&gt;Alors voici la démarche à suivre. Partons de la génération d'un certificat classique. J'utilise d'entrée de jeu un fichier de configuration car c'est obligatoire pour un multi domaines.&lt;/p&gt;


&lt;p&gt;Génération d'un certificat pour mondomaine.com&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;Créez le fichier mondomaine.cnf&lt;/p&gt;

&lt;pre&gt;
RANDFILE = /var/log/mail.info

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=FR
ST=FRANCE
L=Paris
O=Certificat SSL pour modomaine.com
OU=Certificat SSL
CN=mondomaine.com
emailAddress=hostmaster@mondomaine.com

[ cert_type ]
nsCertType                      = server

&lt;/pre&gt;


&lt;p&gt;Ensuite vous lancez la commande suivante&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
openssl req -new -outform PEM -config mondomaine.cnf \
-out mondomaine.cert -newkey rsa:2048 -nodes \
-keyout mondomaine.key -keyform PEM -days 365 -x509

&lt;/pre&gt;


&lt;p&gt;Voilà, des options peuvent variées dans la ligne de commande en fonction du certificat créé mais le principe est là.&lt;/p&gt;


&lt;p&gt;Maintenant procédons à la génération d'un certificat SSL (format PEM) pour courrier-imap-ssl pour les domaines imaps.mondomaine.com et imaps.monautredomaine.com&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;Créez votre fichier de configuration&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
RANDFILE = /var/log/mail.info

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=FR
ST=FRANCE
L=Paris
O=IMAP MDA
OU=IMAPS SSL key
CN=imaps.mondomaine.com
emailAddress=postmaster@mondomaine.com

[ cert_type ]
basicConstraints                = critical,CA:FALSE

nsCertType                      = server
nsComment                       = &amp;quot;Serveur COURIER IMAP SSL&amp;quot;

subjectKeyIdentifier            = hash
authorityKeyIdentifier          = keyid,issuer:always
subjectAltName                  = DNS:imaps.mondomaine.com,DNS:imaps.monautredomaine.com
issuerAltName                   = issuer:copy

keyUsage                        = keyEncipherment, digitalSignature
extendedKeyUsage                = serverAuth

&lt;/pre&gt;


&lt;p&gt;Ici on voit que l'on garde un domaine principal et que l'on créé en fait un domaine alias au domaine principal.&lt;/p&gt;


&lt;p&gt;Il vous reste à lancer la génération du certificat comme un certificat normal.&lt;/p&gt;


&lt;p&gt;Et voilà le tour est joué.
Si vous avez d'autres infos, je suis preneur&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/09/29/Certificat-SSL-multi-domaine#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/09/29/Certificat-SSL-multi-domaine#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/55</wfw:commentRss>
      </item>
    
  <item>
    <title>Eclispe - PDT sort en version finale !</title>
    <link>http://www.paradoxal.org/blog/post/2007/09/20/Eclispe-PDT-sort-en-version-finale</link>
    <guid isPermaLink="false">urn:md5:fd2e9681860fe736e11fbeb534b0f08a</guid>
    <pubDate>Thu, 20 Sep 2007 22:22:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Actualité</category>
        <category>2007</category><category>Eclipse</category><category>IDE</category><category>PHP</category><category>Zend</category>    
    <description>    &lt;p&gt;Enfin après des mois d'attente, &lt;a href=&quot;http://www.eclipse.org/pdt/&quot; hreflang=&quot;fr&quot;&gt;PDT&lt;/a&gt; le plugin pour l'IDE Eclipse sort en version 1.0. Que pensez-vous de
cette nouvelle mouture&amp;nbsp;? D'ailleurs je me demande quels sont vos plugins préférés sur Eclispe. J'ai découvert &lt;a href=&quot;http://www.aptana.com/&quot; hreflang=&quot;fr&quot;&gt;Aptana&lt;/a&gt; il y a seulement 3 jours à travers le blog de &lt;a href=&quot;http://www.durcommefaire.net/2007/09/18/732-sortie-de-pdt&quot; hreflang=&quot;fr&quot;&gt;Jean-Marc Fontaine&lt;/a&gt; et il a l'air excellent&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;De quoi donnez des idées pour de nouveaux projets...&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/09/20/Eclispe-PDT-sort-en-version-finale#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/09/20/Eclispe-PDT-sort-en-version-finale#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/54</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - versionning de fichiers</title>
    <link>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-versionning-de-fichier</link>
    <guid isPermaLink="false">urn:md5:67d10e064c4532d53a0b02b641c9f6fd</guid>
    <pubDate>Tue, 04 Sep 2007 21:22:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Iptables</category><category>Linux</category><category>Subversion</category><category>SVN</category><category>Utilisateurs virtuels</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 9&amp;nbsp;: Subversion&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Subversion ou autrement dit SVN est un outil bien agréable et utile pour les développeurs ou toutes personnes souhaitant versionnés des fichiers.&lt;/p&gt;


&lt;p&gt;SVN, pour rappel, remplace avantageusement CVS - sûrement le logiciel le plus connu -. Je ne présenterais pas comment on utilise SVN car si vous êtes intéressé et que vous êtes là vous avez déjà trouvez sûrement beaucoup de tutoriaux concernant se sujet.&lt;/p&gt;


&lt;p&gt;Passons à l'installation&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebevserv:~# apt-get update
[...]
bebevserv:~# apt-get upgrade
[...]
apt-get install subversion subversion-tools
[...]
&lt;/pre&gt;


&lt;p&gt;C'est presque terminé&amp;nbsp;!
Il nous faut créer un repository&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /var
bebeserv:/var# mkdir svn
bebeserv:/var# cd svn
&lt;/pre&gt;


&lt;p&gt;Voilà ici sera donc entreposé nos projet.
Créons-en un pour l'exemple&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/var/svn# svnadmin --fs-type fsfs create mon_projet
&lt;/pre&gt;


&lt;p&gt;Rien de plus simple.
Maintenant créons un modèle à importer de base dans notre projet avec les clasiques dossier &lt;q&gt;« trunk »&lt;/q&gt;, «&amp;nbsp;branches »}} et &lt;q&gt;« tags »&lt;/q&gt;.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/var/svn# mkdir bases
bebeserv:/var/svn# cd bases
bebeserv:/var/svn# mkdir trunk branches tags
bebeserv:/var/svn# cd ..
bebeserv:/var/svn# svn import -m &amp;quot;Import des dossiers commum&amp;quot; /var/svn/bases/ file:///var/svn/mon_projet
&lt;/pre&gt;


&lt;p&gt;Voilà nous avons un dossier &lt;q&gt;« bases »&lt;/q&gt; qui nous resservira sûrement plus tard et las commande &lt;q&gt;« svnadmin »&lt;/q&gt; avait créer un répertoire avec tout ce dont SVN à besoin pour fonctionner et entreposé les fichiers. D'ailleurs nous allons faire un tour dans la configuration de ce projet pour voir rapidement comment sont géré les utilisateurs&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/var/svn# cd mon_projet/conf
&lt;/pre&gt;


&lt;p&gt;Paramétrons d'abord le comportement du serveur SVN associé à ce projet&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/var/svn/mon_projet/conf# nano svnserve.conf
&lt;/pre&gt;

&lt;pre&gt;
general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = Subversion bebeserv.bebenet.local repository
&lt;/pre&gt;


&lt;p&gt;Voilà rien n'est autorisé pour les utilisateur anonyme (même pas la lecture) et les utilisateur authentifié auront le droit d'écrire dans le projet au mieux.
Pourquoi au mieux car l'on peut préciser les droits d'accès utilisateurs par utilisateurs (ou par groupe d'utilisateur) grâce au fichier &lt;q&gt;« passwd »&lt;/q&gt; et &lt;q&gt;« authz »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Passwd pour créer les utilisateurs&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/var/svn/mon_projet/conf# nano passwd
&lt;/pre&gt;

&lt;pre&gt;
users]
user = password
user2 = password_2
user3 = password_3
&lt;/pre&gt;


&lt;p&gt;Enregistrez ainsi simplement votre fichier d'utilisateur.&lt;/p&gt;


&lt;p&gt;Authz pour préciser les droits des utilisateurs&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/var/svn/mon_projet/conf# nano authz
&lt;/pre&gt;

&lt;pre&gt;
groups]
les_autres = user2, user3

[mon_projet:/]
user = rw
@les_autres = r

[mon_projet:/trunk/dir/section_modifiable]
@les_autres = rw
&lt;/pre&gt;


&lt;p&gt;Voilà un petit exemple assez concis. Tout d'abord &lt;q&gt;« user2 »&lt;/q&gt; et &lt;q&gt;« user3 »&lt;/q&gt; sont mis dans un groupe &lt;q&gt;« les_autres »&lt;/q&gt;. Pour la racine de notre projet  le groupe à le droit unique de lecture. Pour le dossier &lt;q&gt;« trunk/dir/section_modifiable »&lt;/q&gt; le groupe aura le droit d'écrire.
L'utilisateur &lt;q&gt;« user »&lt;/q&gt; quand à lui à le droit d'écriture partout.&lt;/p&gt;


&lt;p&gt;Voilà c'est fini pour la configuration. Il vous reste à démarrer le serveur SVN.
Pour ceci j'ai encore fait un petit script&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/var/svn/mon_projet/conf#cd /etc/init.d
bebeserv:/etc/init.d# nano svn
&lt;/pre&gt;


&lt;p&gt;Entrez ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#! /bin/sh
set -e

case &amp;quot;$1&amp;quot; in
  start)
        echo -n &amp;quot;Starting svnserve&amp;quot;
        svnserve -d -r /var/svn
        echo &amp;quot;.&amp;quot;
        ;;
  stop)
        echo -n &amp;quot;Terminating svnserve&amp;quot;
        pid=`ps -C svnserve -o pid=`
        kill -HUP $pid
        echo &amp;quot;.&amp;quot;
        ;; 
  restart)
        echo -n &amp;quot;Terminating svnserve&amp;quot;
        pid=`ps -C svnserve -o pid=`
        kill -HUP $pid
        echo &amp;quot;.&amp;quot;
        echo -n &amp;quot;Starting svnserve&amp;quot;
        svnserve -d -r /var/svn
        echo &amp;quot;.&amp;quot;
       ;; 
  *)
        echo &amp;quot;Usage: /etc/init.d/svn {start|stop|restart}&amp;quot;
        exit 1
esac

exit 0
&lt;/pre&gt;


&lt;blockquote&gt;&lt;p&gt;UPDATE&amp;nbsp;: Un grand merci pour la contribution de &quot; le père Léon &quot; qui m'a permi de mettre à jour le script de démarrage, en ajoutant le cas STOP. (le RESTART en découle forcément)&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;&lt;del&gt;A l'heure actuel je n'est pas trouver comment arrêter proprement le serveur.&lt;/del&gt;
Mettez les bons droits d'accès et faîtes un &lt;q&gt;« update-rc.d »&lt;/q&gt; pour lancer ce script au démarrage du serveur.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/init.d# chmod 755 svn
bebeserv:/etc/init.d# update-rc.d svn start 98 2 3 4 5 .
&lt;/pre&gt;


&lt;p&gt;Démarrez finalement le serveur pour finir cette session&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/init.d# /etc/init.d/svn start
&lt;/pre&gt;


&lt;p&gt;N'oubliez pas votre firewall&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/init.d# nano /etc/network/iptables
&lt;/pre&gt;

&lt;pre&gt;
iptables -t filter -A INPUT -i eth0 -p tcp --dport 3690 -d $MYIP -j ACCEPT
iptables -t filter -A OUTPUT -i eth0 -p tcp --dport 3690 -s $MYIP -j ACCEPT
&lt;/pre&gt;

&lt;pre&gt;
bebeserv:/etc/init.d# /etc/init.d/iptables-conf restart
&lt;/pre&gt;


&lt;p&gt;C'est fini =)
A très bientôt&amp;nbsp;!&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/init.d# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-versionning-de-fichier#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-versionning-de-fichier#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/53</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - Antispam email</title>
    <link>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Antispam-email</link>
    <guid isPermaLink="false">urn:md5:29461e8f6f9628573bac2a8869aace16</guid>
    <pubDate>Sat, 25 Aug 2007 13:19:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Dspam</category><category>Linux</category><category>Mysql</category><category>SMTP</category><category>Spam</category><category>Sécurité</category><category>Utilisateurs virtuels</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 8&amp;nbsp;: DSPAM&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Maintenant que nous possédons un très bel outil qui nous permet d'envoyer et de recevoir des e-mails, il ne saurait tarder à ce que vous receviez quelques spams.
Nous allons donc installer un antispam.&lt;/p&gt;


&lt;p&gt;Pour commencer installons déjà un antispam. Etant un habitué de Spamassassin et en cherchant sur la toile de quoi aller plus loin avec SA j'ai découvert Dspam. Alors j'ai choisi d'utiliser du coup ce dernier pour mon tutorial. Je préfère la démarche de mise en place autour de Dspam, malgré que je le connaisse peu, je me sens plus à l'aise qu'avec SA.
Dspam offre aussi un atout performance par rapport à SA ce qui n'est pas négligeable surtout si vous hébergez beaucoup de boites plus ou moins spammées.
Puisque nous hébergeons des utilisateurs virtuels sur notre Postfix et Dspam offre la possibilité d'être couplé à Mysql et d'être configurable utilisateur par utilisateur, nous allons par conséquent exploiter cette possibilité.&lt;/p&gt;


&lt;p&gt;Dspam à la particularité de devoir tout apprendre, c'est à dire qu'au début aucun spam ne sera recensés. Nous allons configurer deux boites e-mails &lt;q&gt;« spam@bebenet.local »&lt;/q&gt; et &lt;q&gt;« ham@bebenet.local »&lt;/q&gt; auxquelles nous transférerons respectivement les faux négatifs et les faux positifs afin que Dspam apprenne à reconnaître les bons des mauvais e-mails.&lt;/p&gt;


&lt;p&gt;Maintenant que le décor est planté, cette configuration aura le démérite que chaque utilisateur devra commencer de zéro avec Dspam mais Dspam aura la finesse de filtrer la boite e-mail de l'utilisateur tout comme ce dernier lui aura appris. Un véritable filtre personnalisé.
Néanmoins il existe des méthodes pour que Dspam apprenne plus vite à partir d'une base de spam préétablie. Je n'utiliserai pas cette fonctionnalité pour deux raisons.
La première est du fait que les bases de spams vieillissent très vite et les spams appris ne seront plus d'actualité ce qui ne servira en rien à Dspam.
La deuxième provient de mon expérience personnelle avec Dspam. Recevant une centaine de spam par jour Dspam n'a pas mis plus de deux heures pour commencer à attraper les premiers spams en trois jours il filtrait tout. Après les quelques semaines qui se sont passées entre la rédaction de se tuto et sa publication. Voici les statistique de mon Dspam.&lt;/p&gt;


&lt;p&gt;2 883 spam détecté dont 7 faux positifs et sur les 758 e-mail détecté comme valide seulement 53 faux négatif. Bien entendu ces résultats peuvent fortement varier en fonction de la typologie et de la variabilité des e-mails reçus.&lt;/p&gt;


&lt;p&gt;Dspam à son installation cherchera à se connecter en &lt;q&gt;« root »&lt;/q&gt; sur notre base de données. Etant donné que nous avions renommer l'utilisateur &lt;q&gt;« root »&lt;/q&gt; en &lt;q&gt;« bebeserv »&lt;/q&gt;, nous ferons machine arrière le temps de l'installation.&lt;/p&gt;


&lt;p&gt;Il est temps d'installer Dspam maintenant – place à l'action&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:/etc/mysql# mysql -u bebeserv -p
Enter password:
[...]

mysql&amp;gt; rename user bebeserv@localhost to root@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; exit
Bye
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install dspam dspam-drv-mysql dspam-doc
[...]
&lt;/pre&gt;


&lt;p&gt;Lors de l'installation, répondez oui à &lt;q&gt;« dbconfig-common »&lt;/q&gt;, entrez le mot de passe &lt;q&gt;« root »&lt;/q&gt; (enfin &lt;q&gt;« bebeserv »&lt;/q&gt;) de Mysql puis le mot de passe de l'utilisateur Dspam qui sera créé et confirmer ce mot de passe.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/mysql# mysql -u root -p
Enter password:
[...]

mysql&amp;gt; rename user root@localhost to bebeserv@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; exit
Bye
&lt;/pre&gt;


&lt;p&gt;Je vous passe ici l'exploration de la base de données créée qui doit normalement se prénomée par un nom un peu barbare dixit&amp;nbsp;: &lt;q&gt;« libdspam7drvmysql »&lt;/q&gt; et l'utilisateur attribué sera nommé &lt;q&gt;« libdspam7-drv-my »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Place à la configuration&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# nano /etc/dspam/dspam.conf

StorageDriver /usr/lib/dspam/libmysql_drv.so

DeliveryHost        127.0.0.1
DeliveryPort        10026
DeliveryIdent       localhost
DeliveryProto       SMTP

Preference &amp;quot;signatureLocation=message&amp;quot;  # 'message' or 'headers'
Preference &amp;quot;showFactors=on&amp;quot;
Preference &amp;quot;spamAction=tag&amp;quot;
Preference &amp;quot;spamSubject=***SPAM***&amp;quot;

#
# Purge configuration: Set dspam_clean purge default options, if not otherwise
# specified on the commandline
#
#PurgeSignatures 14          # Stale signatures
#PurgeNeutral    90          # Tokens with neutralish probabilities
#PurgeUnused     90          # Unused tokens
#PurgeHapaxes    30          # Tokens with less than 5 hits (hapaxes)
#PurgeHits1S    15          # Tokens with only 1 spam hit
#PurgeHits1I    15          # Tokens with only 1 innocent hit

#
# Purge configuration for SQL-based installations using purge.sql
#
PurgeSignature  off # Specified in purge.sql
PurgeNeutral   90
PurgeUnused    off # Specified in purge.sql
PurgeHapaxes   off # Specified in purge.sql
PurgeHits1S    off # Specified in purge.sql
PurgeHits1I    off # Specified in purge.sql

Opt out

ServerPort              10027
ServerQueueSize 32
ServerPID              /var/run/dspam/dspam.pid

ServerMode standard

ServerParameters        &amp;quot;--deliver=innocent -d %u&amp;quot;
ServerIdent             &amp;quot;localhost.localdomain&amp;quot;
	
DeliveryHost 127.0.0.1
DeliveryPort 10026
DeliveryIdent localhost
DeliveryProto SMTP
&lt;/pre&gt;


&lt;p&gt;Enregistrer et quitter.
Maintenant enregistrons les préférences des utilisateurs par défaut&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# nano /etc/dspam/default.prefs

trainingMode=TEFT
spamAction=tag
spamSubject=***SPAM***
signatureLocation=message
showFactors=on
optIn=off
optOut=on
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Activons Dspam&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# nano /etc/default/dspam
&lt;/pre&gt;


&lt;p&gt;START=yes&lt;/p&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant faisons les même réglages dans la base de données de Dspam&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# dspam_admin ch pref default trainingMode TEFT
[...]
bebeserv:~# dspam_admin ch pref default spamAction tag
[...]
bebeserv:~# dspam_admin ch pref default spamSubject &amp;quot;***SPAM***&amp;quot;
[...]
bebeserv:~# dspam_admin ch pref default enableBNR on
[...]
bebeserv:~# dspam_admin ch pref default enableWhitelist on
[...]
bebeserv:~# dspam_admin ch pref default statisticalSedation 5
[...]
bebeserv:~# dspam_admin ch pref default  signatureLocation headers
[...]
bebeserv:~# dspam_admin ch pref default whitelistThreshold 10
[...]
bebeserv:~# dspam_admin ch pref default showFactors on
[...]
&lt;/pre&gt;


&lt;p&gt;C'est terminer pour Dspam nous pouvons démarrer le démon&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# /etc/init.d/dspam start
[...]
&lt;/pre&gt;


&lt;p&gt;Il nous reste à coupler Dspam à Postfix.&lt;/p&gt;


&lt;p&gt;Commencez par préparer nos deux boites e-mail &lt;q&gt;« spam@bebenet.local »&lt;/q&gt; et &lt;q&gt;« ham@bebenet.local »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/postfix/conf.d/
bebeserv:/etc/postfix/conf.d# nano virtual_mailbox

spam@bebenet.local      bebenet.local/spam/
ham@bebenet.local       bebenet.local/ham/
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Rechargeons la base&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# postmap virtual_mailbox
&lt;/pre&gt;


&lt;p&gt;C'est deux boîtes e-mail sont fictive en fait et ne recevront jamais de messages. Elles seront couplé à Dspam et nous allons préparer ce couplage grâce à ce fichier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# nano transport

spam@paradoxal.org      dspam-spam:
ham@paradoxal.org       dspam-ham:
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.&lt;/p&gt;


&lt;p&gt;Ce fichier va rediriger nos deux boites e-mail non pas vers le transport classique &lt;q&gt;« virtual »&lt;/q&gt; mais vers deux nouveaux transports que nous allons définir un peu plus loin.
Ces deux boites e-mail ne devrons pas être scannées par Dspam (logique) et nous allons aussi préparer un fichier qui va nous permettre de définir les boites à scanner et celle à ne pas scanner.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# nano dspam_filter_access

#les 2 boites à ne pas filtrer (celles où sont envoyé les emails pour l'apprentissage de Dspam)
/^(spam|ham)@.*$/ OK
#puis domaines qui n'ont que la vérification antivirus, dans notre cas, tous les autres domaines :
/^.*$/ FILTER dspam-filter:127.0.0.1:10027
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Voilà comme vous pouvez le voir ce dernier fichier utilise les expressions régulières, pour que Postfix puisse les comprendre nous allons devoir lui installer un complément&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# apt-get install postfix-pcre
[...]
&lt;/pre&gt;


&lt;p&gt;Voilà nos fichiers de configuration sont prêt, il faut maintenant définir les nouveaux transports dans Postfix&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# cd ..
bebeserv:/etc/postfix# nano master.cf
&lt;/pre&gt;


&lt;p&gt;A la fin du fichier rentrez ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
dspam-spam   unix    -       n       n       -       10      pipe
	flags=Rhq user=dspam argv=/usr/bin/dspam --user $sender --class=spam --source=error

dspam-ham   unix    -       n       n       -       10      pipe
	flags=Rhq user=dspam argv=/usr/bin/dspam --user $sender --class=innocent --source=error

dspam-filter unix - - n - 10 lmtp
	-o smtp_send_xforward_command=yes
	-o disable_mime_output_conversion=yes
	-o smtp_generic_maps=

localhost:10026 inet n - n - - smtpd
	-o content_filter=
	-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
	-o smtpd_helo_restrictions=
	-o smtpd_client_restrictions=
	-o smtpd_sender_restrictions=
	-o smtpd_recipient_restrictions=permit_mynetworks,reject
	-o mynetworks=127.0.0.0/8
	-o smtpd_authorized_xforward_hosts=127.0.0.0/8
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.&lt;/p&gt;


&lt;p&gt;Il nous reste plus qu'à dire à Postfix d'utiliser tout ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# nano main.cf
&lt;/pre&gt;


&lt;p&gt;Rajoutez cette ligne&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
transport_maps = hash:/etc/postfix/conf.d/transport
&lt;/pre&gt;


&lt;p&gt;et modifiez celle-ci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
smtpd_recipient_restrictions =
	permit_mynetworks,
	permit_sasl_authenticated,
	reject_invalid_hostname,
	reject_unauth_destination,
	reject_unknown_sender_domain,
	reject_unknown_recipient_domain,
	reject_unauth_destination,
	check_recipient_access pcre:/etc/postfix/conf.d/dspam_filter_access
&lt;/pre&gt;



&lt;p&gt;Enregistrez et quittez.
Rechargeons la configuration de Postfix pour terminer le travail&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# /etc/init.d/postfix reload
[...]
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminé, vous possédez maintenant un antispam, bien sûr il faudra lui apprendre à reconnaître les spams mais je ne doute pas que vous en serez très vite satisfait.&lt;/p&gt;


&lt;p&gt;Votre antispam est paramétrable par utilisateur ne l'oubliez pas&amp;nbsp;! Si l'un d'entre eux demande un tag différent c'est possible. Vous pouvez aussi voir les statistiques de Dspam par utilisateur pour voir son travail. Pour ceci regarder les commandes &lt;q&gt;« dspam_admin »&lt;/q&gt;, &lt;q&gt;« dspam_stats »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Pour voir les préférences par défaut&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# dspam_admin list preference default
[...]
&lt;/pre&gt;


&lt;p&gt;Pour voir les statistiques d'un utilisateur&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# dspam_stats -H user@bebenet.local
[...]
&lt;/pre&gt;


&lt;p&gt;Bientôt je ferais le tuto pour installer un antivirus email. Si aujourd'hui la majorité des emails reçu sont des virus (donc faire d'abord le tuto d'un antivirus aurais été mieux) et bien je pense que non. Dspam consomme tellement peu et reconnaît (pour l'instant) tellement bien les spams qu'il fait très bien le ménage que le besoin d'un antivirus ne se fait pas vraiment sentir.&lt;/p&gt;


&lt;p&gt;Une fois que vous aurez confiance en votre Dspam. Vous pourrez lui demander de ne pas vous transmettre les spams et ainsi à ce moment là branchez un antivirus sur votre Postfix. La consommation de ressources en sera bien moindre.&lt;/p&gt;


&lt;p&gt;A très bientôt&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_8.pdf"
      length="99198" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Antispam-email#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Antispam-email#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/52</wfw:commentRss>
      </item>
    
  <item>
    <title>Contourné la restriction orange du port 25 !</title>
    <link>http://www.paradoxal.org/blog/post/2007/08/05/Contourne-la-restriction-orange-du-port-25</link>
    <guid isPermaLink="false">urn:md5:81ca75f7ebfda55725976703f386849b</guid>
    <pubDate>Fri, 10 Aug 2007 08:14:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Astuces</category>
        <category>Posfix</category><category>SASL</category><category>SMTP</category><category>Spam</category><category>Sécurité</category>    
    <description>&lt;p&gt;Si comme moi vous aviez sur votre réseau perso votre propre serveur mail et que vous êtes abonné orange, vous avez été confronter à la nouvelle restriction du port 25. C'est à dire l'obligation de passer par le smtp orange pour envoyé de l'email.&lt;/p&gt;    &lt;p&gt;Tant qu'on est dans la configuration type serveur local, il suffisait de lui demander de passer par orange pour transférer les email.&lt;/p&gt;


&lt;p&gt;Avec un postfix il suffisait d'ajouter dans le main.cf&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
relayhost = smtp.orange.fr
&lt;/pre&gt;


&lt;p&gt;Ce qui fonctionnait très bien.&lt;/p&gt;


&lt;p&gt;Maintenant que se passe t'il si son postfix est sur un serveur distant. Impossibilité de le contacter. étant donné que j'utilisais sur mon serveur perso l'authentification (sasl) pour l'envoie je n'ai pas eu grand chose à changé finalement.&lt;/p&gt;


&lt;p&gt;il a suffit de (comme orange l'indique) utiliser le port 583. Et dans postfix ceci se traduit ainsi (en décommentant ces lignes)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
submission inet n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
&lt;/pre&gt;


&lt;p&gt;Voilà, pensez aussi à recharger votre configuration. Ceci à pour effet de déporter l'authentification smtp  ou autrement dit la soumission d'email sur le port 583. Vous recevrez toujours vos email correctement par le port 25 ne vous inquiété pas.&lt;/p&gt;


&lt;p&gt;Il suffit maintenant d'indiquer à sont logiciel favoris d'utiliser le port 583 au lieu du 25 pour le smtp.&lt;/p&gt;


&lt;p&gt;C'est terminé. Pourvu que ça vous soit utile.&lt;/p&gt;


&lt;p&gt;PS&amp;nbsp;: pour paramétrer l'authentification smtp je vous renvoie à mon tuto debian correspondant&amp;nbsp;:&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/08/05/Contourne-la-restriction-orange-du-port-25#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/08/05/Contourne-la-restriction-orange-du-port-25#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/50</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - Serveur email (MTA + MDA)</title>
    <link>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Serveur-email-MTA-MDA</link>
    <guid isPermaLink="false">urn:md5:19570fd3b6c6e5d032f01c4ca9e17b4e</guid>
    <pubDate>Tue, 07 Aug 2007 10:20:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>IMAP</category><category>Iptables</category><category>Linux</category><category>Posfix</category><category>SASL</category><category>SMTP</category><category>SSL</category><category>Userdb</category><category>Utilisateurs virtuels</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 7&amp;nbsp;: POSTFIX &amp;amp; COURRIER-IMAP&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Postfix est certainement un des meilleurs serveurs d'e-mail existant, c'est pourquoi mon choix se porte sur celui-ci. Le sujet des e-mails est un sujet compliqué ou les documentations sont nombreuses et confusent assez souvent, je n'en ferai aujourd'hui toujours pas ma spécialité. Je vais donc ne pas m'étendre sur ce sujet.&lt;/p&gt;


&lt;p&gt;Nous voulons ici créer un serveur MX principal qui recevra nos mails et les enverra au reste du monde. Nous souhaitons pouvoir envoyé des e-mails depuis ce serveur depuis n'importe où. Dans cette configuration pour ne pas finir en open relay, il n'y a que l'authentification SMTP qui puisse nous protégé de ceci. J'ai testé auparavant le pop-before-smtp qui permet d'en faire autant mais ce n'est qu'un bricolage face à l'authentification SMTP. C'est pourquoi ici on fera une véritable authentification bien sur avec un peu de SSL.&lt;/p&gt;


&lt;p&gt;Commençons par installer Postfix et ce qui sera nécessaire à l'authentification SMTP.&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install postfix libsasl2-modules sasl2-bin
[...]
&lt;/pre&gt;


&lt;p&gt;L'installateur vous pose deux questions pour la configuration de Postfix. Répondez à la première &quot;Site internet&quot; et laisser la seconde qui devrait ressembler à &lt;q&gt;« bebeserv.bebenet.local »&lt;/q&gt; tel quel.&lt;/p&gt;


&lt;p&gt;Maintenant que c'est fait, stoppez Postfix&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# /etc/init.d/postfix stop
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant configurons notre serveur d'e-mail&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/postfix
bebeserv:/etc/postfix# nano main.cf
&lt;/pre&gt;


&lt;p&gt;Afin de garantir la sécurité du MTA faisons le passer pour un serveur Sendmail (un concurrent plus ancien)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
mail_name = Sendmail
mail_version = 8.12.10
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
&lt;/pre&gt;


&lt;p&gt;Maintenant quelques fonctionnalités et configuration&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
append_dot_mydomain = yes
mynetwork_style = host
proxy_interfaces = 10.0.0.1
relay_domains=
masquerade_domains = bebenet.local
local_transport = virtual:$myhostname
&lt;/pre&gt;


&lt;p&gt;Les utilisateurs virtuels&lt;/p&gt;

&lt;pre&gt;
virtual_alias_domains = hash:/etc/postfix/conf.d/virtual_alias_domains
virtual_alias_maps = hash:/etc/postfix/conf.d/virtual_alias
virtual_mailbox_domains = hash:/etc/postfix/conf.d/virtual_mailbox_domains
virtual_mailbox_base = /var/mail/virtual
virtual_mailbox_maps = hash:/etc/postfix/conf.d/virtual_mailbox
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
&lt;/pre&gt;


&lt;p&gt;Encore un peu de sécurité et pour l'authentification SMTP&lt;/p&gt;

&lt;pre&gt;
smtp_helo_timeout = 10s
smtpd_recipients_limit = 16
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 12
smtpd_helo_required = yes
smtpd_delay_reject = yes
disable_vrfy_command = yes
strict_rfc821_envelopes = yes

broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous


smtpd_helo_restrictions = 
	permit_mynetworks, 
	reject_invalid_hostname, 
	reject_unknown_hostname,
	reject_non_fqdn_hostname

smtpd_client_restrictions =
   sleep 1, 
   reject_unauth_pipelining
   
smtpd_recipient_restrictions =
	permit_mynetworks,
	permit_sasl_authenticated,
	reject_invalid_hostname,
	reject_unauth_destination,
	reject_unknown_sender_domain,
	reject_unknown_recipient_domain,
	reject_non_fqdn_recipient

smtpd_sender_restrictions =
	reject_unknown_sender_domain,
	reject_non_fqdn_sender,
&lt;/pre&gt;

&lt;pre&gt;&lt;/pre&gt;

&lt;p&gt;Pour le SSL&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
smtpd_use_tls=yes
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Générons directement les nouveaux certificats SSL pour Postfix&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# openssl req -new -outform PEM -out /etc/postfix/smtpd.cert -newkey rsa:2048 -nodes -keyout /etc/postfix/smtpd.key -keyform PEM -days 365 -x509
bebeserv:/etc/postfix# chmod 640 smtpd.key
&lt;/pre&gt;


&lt;p&gt;Le fait d'utiliser Sasl (un serveur d'authentification) nous impose de lui montré comment nous souhaitons authentifier les utilisateurs&amp;nbsp;:
Pour ceci nous créons comme précisé par notre configuration&amp;nbsp;: &lt;q&gt;« smtpd_sasl_path »&lt;/q&gt; le fichier &lt;q&gt;« /etc/postfix/sasl/smtpd.conf »&lt;/q&gt;&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# cd sasl
bebeserv:/etc/postfix/sasl# nano smtpd.conf
&lt;/pre&gt;


&lt;p&gt;Entrez ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
pwcheck_method: saslauthd
mech_list: plain login
&lt;/pre&gt;


&lt;p&gt;Enregistrer et quitter.
Visiblement la commande suivante est utile pour remédier à une histoire de bug...&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/sasl# ln -s /etc/postfix/sasl/smtpd.conf /usr/lib/sasl2/smtpd.conf 
&lt;/pre&gt;


&lt;p&gt;Éditez le fichier de configuration de Sasl&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/sasl# nano /etc/default/saslauthd
&lt;/pre&gt;


&lt;p&gt;Modifier les lignes suivantes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
START=yes
MECHANISMS=&amp;quot;rimap&amp;quot;
MECH_OPTIONS=&amp;quot;localhost&amp;quot;
OPTIONS=&amp;quot;-r -c -m /var/spool/postfix/var/run/saslauthd&amp;quot;
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quitter.
Maintenant ajoutons l'utilisateur Postfix au groupe Sasl et faisons en sorte que Sasl puisque créer ses fichiers dans la cage de postfix (ça aussi ça ne s'invente pas)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/sasl# dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd
bebeserv:/etc/postfix/sasl# adduser postfix sasl
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant il va falloir alimenter les différentes bases de Postfix&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/sasl# cd ..
bebeserv:/etc/postfix# mkdir conf.d
bebeserv:/etc/postfix# cd conf.d
bebeserv:/etc/postfix/conf.d# nano virtual_mailbox_domains
&lt;/pre&gt;


&lt;p&gt;Entrez&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv.local	x
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quitter.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# nano virtual_mailbox
&lt;/pre&gt;


&lt;p&gt;Entrez&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
test@bebeserv.local	bebeserv.local/test/
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quitter.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# nano virtual_alias
&lt;/pre&gt;


&lt;p&gt;Entrez&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
postmaster@bebeserv.local	test@bebeserv.local
hostmaster@bebeserv.local	test@bebeserv.local
webmaster@bebeserv.local	test@bebeserv.local
www@bebeserv.local	test@bebeserv.local
ALBAN@bebeserv.local	test@bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quitter.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# nano virtual_alias_domains
&lt;/pre&gt;


&lt;p&gt;Entrez&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
localhost	bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quitter.
Créons maintenant les bases compilées à l'aide de &lt;q&gt;« postmap »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# postmap virtual_alias
bebeserv:/etc/postfix/conf.d# postmap virtual_alias_domains
bebeserv:/etc/postfix/conf.d# postmap virtual_mailbox
bebeserv:/etc/postfix/conf.d# postmap virtual_mailbox_domains
&lt;/pre&gt;


&lt;p&gt;Redirigeons &lt;q&gt;« root »&lt;/q&gt; qui est normalement alias de tous les autres démon vers notre utilisateur principal&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# nano /etc/aliases
&lt;/pre&gt;


&lt;p&gt;Entrez à la fin du fichier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
root:	ALBAN
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Remettons, de la même manière que les autres tables, celle-ci à jour&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# postalias /etc/aliases
&lt;/pre&gt;

&lt;p&gt;
Créons l'utilisateur et le groupe &lt;q&gt;« virtual »&lt;/q&gt; et le dossier des boites e-mail virtuelles&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# cd /var/mail
bebeserv:/var/mail# mkdir virtual	
bebeserv:/var/mail# groupadd -g 5000 virtual
bebeserv:/var/mail# useradd -u 5000 -g virtual -d /var/mail/virtual -s /usr/sbin/nologin virtual
bebeserv:/var/mail# chown virtual.virtual virtual
&lt;/pre&gt;


&lt;p&gt;Parfait&amp;nbsp;! Maintenant Postfix est fonctionnel et bien configuré. Nous l'avons configuré de sorte que les e-mails émis par les utilisateurs locaux soit traiter par le relay virtual, que localhost soit assimilé à notre domaine, que les sous domaines de notre domaine soit assimilé à notre domaine. Il ne nous reste plus qu'à installer un client IMAP pour lire nos messages.&lt;/p&gt;


&lt;p&gt;Installons &lt;q&gt;« courier-imap-ssl »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/var/mail# apt-get install courier-imap-ssl
&lt;/pre&gt;


&lt;p&gt;Stoppons les serveur nouvellement installés&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/var/mail# /etc/init.d/courier-authdaemon stop
[...]
bebeserv:/var/mail# /etc/init.d/courier-imap stop
[...]
bebeserv:/var/mail# /etc/init.d/courier-imap-ssl stop
[...]
&lt;/pre&gt;


&lt;p&gt;Regénérons un certificat propre à notre domaine pour IMAP&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/var/mail# cd /etc/courier
bebeserv:/etc/courier# rm imapd.pem
bebeserv:/etc/courier# nano imapd.cnf
&lt;/pre&gt;


&lt;p&gt;Modifiez ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
[ req_dn ]
C=FR
ST=FRANCE
L=Paris
O=Courier Mail Server
OU=IMAP SSL key
CN=imap.bebenet.local
emailAddress=postmaster@bebenet.local
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant créons un beau certificat&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/courier# dpkg-reconfigure courier-imap-ssl
[...]
&lt;/pre&gt;


&lt;p&gt;Ceci fait, ré-arretons le serveur qui a été redémarrer et configurons l'authentification (ici authdaemon à ne pas confondre avec saslauthd)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/courier# /etc/init.d/courier-imap-ssl stop
[...]
bebeserv:/etc/courier# nano authdaemonrc
&lt;/pre&gt;


&lt;p&gt;Modifiez cette ligne&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
authmodulelist=&amp;quot;authuserdb&amp;quot;
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant nous allons créer la base des utilisateurs qui vont pouvoir se connecter à IMAP. Pour simplifier les choses je vous ai concocté un petit script:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/courier# mkdir userdb
bebeserv:/etc/courier# chmod 0000 userdb
bebeserv:/etc/courier# nano userdb-utils
&lt;/pre&gt;


&lt;p&gt;Entrez ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#!/bin/bash
cd /etc/courier
case &amp;quot;$1&amp;quot; in
add)
	if [ $# -lt 2 ]; then
		echo &amp;quot;Usage: ./userdb-utils add user@domain.tld&amp;quot;
		exit 1
	fi
	EMAIL=$2
	DIR=/var/mail/virtual
	USER=$(echo $EMAIL | cut -d@ -f1)
	DOMAIN=$(echo $EMAIL | cut -d@ -f2)
	userdb $DOMAIN/$EMAIL set mail=$DIR/$DOMAIN/$USER home=$DIR/$DOMAIN/$USER uid=5000 gid=5000
	userdbpw -md5 | userdb $DOMAIN/$EMAIL set systempw
	makeuserdb
	;;
del)
	if [ $# -lt 2 ]; then
		echo &amp;quot;Usage: ./userdb-utils del user@domain.tld&amp;quot;
		exit 1
	fi
	TODAY=$(date +%Y%m%d)
	FILE=/tmp/userdbcreate$TODAY
	EMAIL=$2
	USER=$(echo $EMAIL | cut -d@ -f1)
	DOMAIN=$(echo $EMAIL | cut -d@ -f2)
	DB=/etc/courier/userdb/$DOMAIN
	sed -e /^$EMAIL/d $DB &amp;gt; $FILE
	rm $DB
	mv $FILE $DB
	makeuserdb
	;;
list)
	authenumerate
	;;
*)
	echo &amp;quot;Usage: ./userdb-utils {add|del|list} [user@domain.tld]&amp;quot;
	exit 1
esac
exit 0
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant rendons notre script exécutable et disponible dans notre banque de script&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/courier# chmod 700 userdb-utils
bebeserv:/etc/courier# ln -s userdb-utils /usr/local/bin/
&lt;/pre&gt;


&lt;p&gt;Ok, créons deux utilisateurs pour voir comment ceci fonctionne&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/courier# ./userdb-utils add test@bebenet.local
Password :
[...]
bebeserv:/etc/courier# ./userdb-utils add test2@bebenet.local
Password :
[...]
bebeserv:/etc/courier# ./userdb-utils list
[...]
bebeserv:/etc/courier# ./userdb-utils del test2@bebenet.local
bebeserv:/etc/courier# ./userdb-utils list
[...]
&lt;/pre&gt;

&lt;p&gt;
C'est terminé.
Il reste à mettre à jour &lt;q&gt;« iptables »&lt;/q&gt;&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/courier# nano /etc/network/iptables
&lt;/pre&gt;


&lt;p&gt;Rajouter ces lignes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
iptables -t filter -A INPUT -i eth0 -p tcp --dport 25 -d $MYIP -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp --dport 993 -d $MYIP -j ACCEPT

iptables -t filter -A OUTPUT -o eth0 -p tcp --dport 25 -s $MYIP -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp --sport 25 -s $MYIP -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp --dport 993 -s $MYIP -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -p tcp --sport 993 -s $MYIP -j ACCEPT
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;Redémarrons les serveurs&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/var/mail# /etc/init.d/iptables-conf restart
bebeserv:/var/mail# /etc/init.d/postfix start
bebeserv:/var/mail# /etc/init.d/courier-authdaemon start
bebeserv:/var/mail# /etc/init.d/courier-imap-ssl start
bebeserv:/var/mail# /etc/init.d/courier-imap start
&lt;/pre&gt;


&lt;p&gt;Et voilà&amp;nbsp;! Nos utilisateurs doivent se loguer forcément en IMAP et en SMTP le tout couvert du SSL.&lt;/p&gt;


&lt;p&gt;Prochain chapitre on ajoute un antivirus et un antispam&amp;nbsp;!&lt;/p&gt;

&lt;pre&gt;
bebeserv:/var/mail# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_7.pdf"
      length="101673" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Serveur-email-MTA-MDA#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Serveur-email-MTA-MDA#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/51</wfw:commentRss>
      </item>
    
  <item>
    <title>Blogblog is back !</title>
    <link>http://www.paradoxal.org/blog/post/2007/08/05/Blogblog-is-back</link>
    <guid isPermaLink="false">urn:md5:9409c2c9cedbaf0b966cfa2e66586834</guid>
    <pubDate>Sun, 05 Aug 2007 06:06:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Actualité</category>
            
    <description>&lt;p&gt;Voilà si tout n'est pas encore rétabli la solution est plus péreine aujourd'hui puisque j'ai pris un serveur dédié. Le temps de tout réinstaller (c'est là qu'on aprécie d'avoir ses tutos debian) et je vous laisse ce petit mot.&lt;/p&gt;    &lt;p&gt;Je vous renvoie vers le post précédant pour ceux qui n'aurait pas suivi. Et beaucoup n'ont pas du suivre puisque le disque dur de serveur après l'avoir remis en route à définitiement laché prise au bout d'une dizaine d'heures.&lt;/p&gt;


&lt;p&gt;Donc devant ce choix crucial que je me posais, j'ai pris la décision de louer un serveur dédié. J'ai du faire quelques petite recherche pour trouver mon bonheur. Je me suis tourné vers ovh et leur offre&amp;nbsp;: Kimsufi. avec une debian de base sans rien dessus. C'est le choix de pouvoir choisir (justement) la distrib et le prix ;) qui m'a fait préféré cette offre plutot qu'une autre. J'aime pouvoir est libre de faire ce que je veux sur mon serveur et surtout ne pas me retrouver brider par une interface plesk (même si l'on a l'accès ssh). Oui vous n'avez jamais fouiller dans un serveur administrer par plesk&amp;nbsp;? bien c'est une horreur (pour moi).&lt;/p&gt;


&lt;p&gt;Bref je fini quelques config et je vais pouvoir partir en vacances tranquille&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Pour l'instant j'ai loué pour un mois, si ça me plait je renouvelle.&lt;/p&gt;


&lt;p&gt;PS&amp;nbsp;: merci ovh pour la mise à dispo du serveur en 10 minutes.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/08/05/Blogblog-is-back#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/08/05/Blogblog-is-back#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/49</wfw:commentRss>
      </item>
    
  <item>
    <title>Le clash...</title>
    <link>http://www.paradoxal.org/blog/post/2007/08/03/Le-clash</link>
    <guid isPermaLink="false">urn:md5:684a4a957b8857fbac9332d0f29c3358</guid>
    <pubDate>Fri, 03 Aug 2007 22:26:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Bug</category>
        <category>Linux</category>    
    <description>&lt;p&gt;De mauvaise augure juste avant les vacances qui approchent (pour moi), hier soir en pleine nuit (à peine 4 heures) un bruit affreux - du genre bruit de matériel informatique qui est anormalement présent - me réveille...&lt;/p&gt;    &lt;p&gt;Quoi de plus insupportable que de se faire réveiller par son serveur perso qui ne semble pas se porter bien au milieu de la nuit&amp;nbsp;?
La tête enfarinée j'écoute d'abord d'où provient cette sonorité. Pensant d'abord au ventilateur je me rend rapidement compte que c'est le disque dur. Comme qui dirait&amp;nbsp;: ça ne sent pas bon.&lt;/p&gt;


&lt;p&gt;Je ne sais ce qui s'est passé pour en arriver là, mais le disque s'est mi à délirer, vibrant comme jamais, pour moi c'était foutu le disque est en train de rendre l'âme.&lt;/p&gt;


&lt;p&gt;J'ouvre donc le capot (j'allume l'écran) et je découvre plein de filesystem error à l'écran etc. Que faire&amp;nbsp;? Je tente de rebooter mais le résultat est sans appel&amp;nbsp;: même symptôme.&lt;/p&gt;


&lt;p&gt;Je coupe donc la machine, tant pis. Je me dis que demain soir (aujourd'hui) après la journée de boulot – disque à froid – j'obtiendrai peut être mieux.&lt;/p&gt;


&lt;p&gt;Donc en rentrant je relance la machine. Aucun son perturbant. Tout semble bien se dérouler jusqu'au moment ou le boot à commencer à m'afficher beaucoup beaucoup d'erreurs du type fichier inexistant et compagnie. Je passe le disque au fsck et à voir la taille du dossier lost+found c'est très mauvais. il y avait au moins une centaine de fichiers perdus.&lt;/p&gt;


&lt;p&gt;Après le scan je relance la bête qui ne ressemble plus à grand chose et je constate les dégâts. C'est la partition / qui est touchée, des binaires comme cp sont foutu, les modules du kernel sont en partie morts.&lt;/p&gt;


&lt;p&gt;Malgré tout j'ai réussi à relancer ssh et bonheur scp fonctionne. En balançant tous les paquets nécessaires pour recompiler le kernel sur mon serveur j'arrive à relancer ma machine proprement et à redémarrer certain serveur plus ou moins partiellement.&lt;/p&gt;


&lt;p&gt;A l'heure actuelle postfix ne semble pas vouloir entendre grand chose. Le blog fonctionne et mysql aussi...&lt;/p&gt;


&lt;p&gt;Je suis un peu dubitatif maintenant. Que faire&amp;nbsp;? (En dehors d'un backup forcément). Acheté un nouveau serveur ou du moins remplacer ce disque&amp;nbsp;? Faire mal à mon porte monnaie et en loué un (un vrai)&amp;nbsp;? partir la semaine prochaine en vacances en espérant qu'il ne me mette pas le feu à l'appart&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;Je ne suis pas un spécialiste du tout en la matière (sauvetage de crash linux) En tout cas, pour un avant vacances, ce n'est pas très cool tout ça...&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/08/03/Le-clash#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/08/03/Le-clash#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/48</wfw:commentRss>
      </item>
    
  <item>
    <title>Ma wishliste pour la rentrée</title>
    <link>http://www.paradoxal.org/blog/post/2007/07/10/Ma-wishliste-pour-la-rentree</link>
    <guid isPermaLink="false">urn:md5:982d54761f56e590c8630b10e3a493d8</guid>
    <pubDate>Tue, 10 Jul 2007 13:24:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Actualité</category>
        <category>2007</category><category>Accessibilite</category><category>CSS</category><category>Eclipse</category><category>Javascript</category><category>Linux</category><category>Navigateur</category><category>OS</category><category>PHP</category><category>Sécurité</category><category>Windows</category><category>XHTML</category>    
    <description>&lt;p&gt;Comme l'avant Noël, on pourrait faire l'avant rentrée. Je trouve que la rentrée est toujours un moment ou l'actualité prend beaucoup d'importance, autant en terme de communication qu'en terme de nouveauté. La rentrée c'est toujours le moment de sortir sont nouveau site, logiciel ou crie de guerre afin que tout le monde - sur le guet - ne puisse pas vous louper.&lt;/p&gt;    &lt;p&gt;C'est bien là, la raison qui me donne envie d'écrire une wishliste de la rentrée avec ce que j'attends pour ce futur mois de septembre.&lt;/p&gt;


&lt;p&gt;L'été c'est souvent le moment ou les esprits - sensé être au repos - foisonnent d'idées sous un soleil qui devrait se montré un peu plus en ce moment. Les esprits bulles sous la chaleur et les concepteurs s'imaginent déjà maître de la prochaine révolution.&lt;/p&gt;


&lt;p&gt;Personnellement j'ai envie&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Que l'accessibilité devienne accessible.&lt;/strong&gt;
Les discussions autour de l'accessibilité se font nombreuses dernièrement et nombre de définitions autour de balises, de mode de conception sont en cours. Pour l'instant je trouve que - même si l'intérêt est énorme - lire les spécifications du RGAA ou enfin son actualité et ses début de réponses sont lourdes, compliquées à suivre et ont réellement tendance à embrouiller les esprits pour un spectateur comme moi.  &lt;br /&gt;
Aujourd'hui donc vouloir créer un site  en suivant scrupuleusement le WCAG, RGAA, WAI, les 92 critères d'accessiweb et j'en passe... Aujourd'hui donc je reprends, ceci relève du parcours du combattant. Loin est le temps ou il suffisait de lire la documentation HTML 4 du W3C pour faire un site propre.
En fait, moi qui suis plutôt un fervent supportaire de l'accessibilité, aujourd'hui ce foisonnement de règles et directives ont tendance à me décourager, à me pousser à les ignorer.  &lt;br /&gt;
Pourquoi&amp;nbsp;? Parce qu'aujourd'hui ou les outils de conception et d'aide à la création foisonne, CMS, éditeur Wisiwyg et compagnie et ces éditeurs ne peuvent aujourd'hui se tenir à jour – car tout change constamment – Et de part ce fait, dois-je oublier tout mes outils et reprendre mon bon vieux bloc note&amp;nbsp;? Sachant qu'avec ces efforts demain une nouvelle règles pourrait venir détruire des heures d'observation de mon code frais écrit et m'obliger à reprendre la conception de mon site dans ses bases. &lt;br /&gt;
Il est clair que si ce portrait aujourd'hui de l'accessibilité est plutôt négatif, il en reste de reflet de beaucoup de développeurs avec qui je discute. Ces derniers ont plutôt tendance pour la peine à se rétracter dans leur propre conception de l'accessibilité et de faire leurs propres règles en attendant d'avoir mieux.
Je me souviens d'une époque ou l'on doublait nos sites, l'une était en flash et l'autre en HTML pour que tout le monde puisse avoir accès au contenu. Doit-on en arriver à créer un site pur texte , noir et blanc, spécial accessibilité construit dans ce cadre, une version pour chaque handicap existant, et laisser la partie créative qui nous emplie vraiment s'exprimer dans l'autre version&amp;nbsp;? Peut-on en fait réellement compilé en une seule version tous les documents web de sorte qu'il soit visionnable pour tout le monde. &lt;br /&gt;
Il est clair que cette vision de l'avenir ne m'enchante guère, que doit devenir l'accessibilité dans le web, encore plus dans le web 2.0 ou les contenus change dynamiquement qui font souvent appel à des service distant qu'on ne contrôle pas et encore encore plus dans le web 3.0 qui imaginons le assez facilement s'orienterait vers une navigation en 3 dimensions. Comment la 3D serait-elle traduite en braille, comment quelqu'un qui n'arrive à percevoir la profondeur (la simple perte d'un oeil par exemple) fera-t-il dans un environnement 3D. Comment un déficient visuel pourra-t-il appliqué sa propre feuille de style à la 3D. Comment l'accessibilité pourra-t-elle s'inviter dans un monde ou seul le mouvement de souris fera foie et tout ne sera qu'images&amp;nbsp;? L'accessibilité - à l'instar de certain paranoïaque de la sécurité - deviendra-t-elle seulement l'acte de quelque aficionados ou pourra-t-elle vraiment s'immiscer dans les concepts de création et faire foie de qualité et d'assurance pour l'avenir de son site. &lt;br /&gt;
Je pense qu'il faut rendre l'accessibilité accessible au plus grand nombre, commencé par l'éducation avec des règles simples. A la manière dont beaucoup on pu découvrir l'XHTML. C'est à dire quelques règles, facilement applicable comme bien préciser son DTD, ne plus chevaucher ses balises, limité l'utilisation de certaines balises puis proposé d'aller plus loin au fur et à mesure ou les gens s'y préparent et apprennent. Le web semble se fermé de plus en plus, cerner les fondements de l'ajax est bien difficile, manier parfaitement l'XHTML et le CSS n'est pas chose forcément aisée pour tout le monde déjà, les environnements riches comme Flash ou Silverlight ne sont pas simple à appréhender, la simplification du web en framework directement utilisable sont dans un sens contraire à l'accessibilité car cette dernière est aujourd'hui à traiter au cas par cas et il n'existe pas encore de solution globale pour y remédier. S'en va-t-on vers un régression du web où certains – la plus part des créateurs de site amateur – resteront sur le bas côté faute de compétences en la matière et seront totalement dépassés face à la masse de travail pour y parvenir. Les éditeurs professionnels auront–ils la volonté de vouloir se lancé dans ce grand sujet&amp;nbsp;? J'aimerai entendre un discours simple et convainquant sur le sujet. J'espère donc que la rentrée apportera des solutions en ce sens.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;J'ai aussi envie de trouver des logiciels vraiment adéquat&lt;/strong&gt;, notemment en matière d'EDI de programmation. Si les logiciels prolifèrent eux aussi beaucoup trop sont insatisfaisant ou incomplet. Chacun apporte sa fonctionnalité miracle pour en laisser beaucoup de côté. J'attends avec impatience la version 1,0 d'Eclipse PDT. Même si éclipse est très lourd pour les petit développement, c'est encore le meilleur environnement que j'ai trouvé jusqu'à maintenant mais je garde des petits outils ça et là pour telles ou telles utilisations bien spécifique. Pour moi éclipse reste trop pauvre pour ce qui est du CSS et du Javascript. J'aimerai donc à la rentée voir l'offre autour d'éclipse se compléter.  &lt;br /&gt;
J'attends les sorties des prochains Mysql WorkBench qui chez moi actuellement est vraiment inutilisable. Dbdesigner reste bien meilleur encore aujourd'hui.
Qu'un Windows XP SP3 sorte&amp;nbsp;?  &lt;br /&gt;
Que Debian passe au dernier Gnome, qu'un trouve enfin des belles typos sous Linux car même si c'est un plaisir de travailler sous Linux, les écritures dégueulasse gâche vraiment tout malgré tous les efforts fait pour obtenir un résultat correct. Et que aussi les touchpads soit mieux géré et il y aurait tellement à demander...&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Que j'obtienne la certification PHP.&lt;/strong&gt;  Petit plaisir que j'ai envie de m'offrir très prochaiement.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Voir PHP 6 sortir, idem pour HTML 5 et XHML 2. Que devient CSS 3 ?&lt;/strong&gt; On craignait pour CSS3 que les navigateur mette trop de temps à y passer déjà que CSS2 n'était pas complètement implémenter. Les navigateurs sont entrer depuis dans une nouvelle bataille et ont repris de leur vigueur. Il serait peut être intéressant d'en profiter pour sortir CSS3 et voir les première implémentation sortir – rêvons par exemple pour Firefox 3 et IE8.&lt;/p&gt;


&lt;p&gt;Bref comme on peu le voir j'attends et je rêve beaucoup pour cette rentrée. J'espère comme j'en ai longtemps parlé précédemment au niveau de l'accessibililité que les grands acteurs du web retrouve le bon chemin car je considère aujourd'hui comme une certaine perdition face à l'ampleur que prend internet aujourd'hui. HTML 5 et XHTML 2 l'avenir&amp;nbsp;? CSS 3 l'avenir&amp;nbsp;? Accessibilité l'avenir&amp;nbsp;? Environnement riche L'avenir&amp;nbsp;? Ajax L'avenir&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Oui l'avenir ?&lt;/strong&gt; J'entends par cette question, n'essaie pas t-il de faire trop complet et du coup compliqué pour certains. N'essaie-t-il pas de se focalisé sur des détails alors que la globalité est incomplète comme certain texte de loi que vote nos députés qui sont fortement complexe et précise sur bien des point mais qui finissent par contenir des gros contresens et d'énormes trou dans la réglementation voir être hors sujet ou à côté des attentes au final. Dans le monde libre il est nécesaire d'introduire des lignes de conduites, des protocoles à suivre. Aujourd'hui ce monde ne passe-t-il pas de l'autre côté de la barrière avec des tentatives d'autorité de plus en plus cinglante et contraignante. Le libre n'en ressort que moins libre. &lt;br /&gt;
Je souhaite aussi que cette mode de version Beta s'arrete. Beta deviendrai-t-il un label de qualité&amp;nbsp;? Un moyen marketing surtout. Il est fou sur le net de trouver des version beta de logiciel à vendre. Encore plus de trouver des site e-commerce en version beta. Que cela signifie-t-il&amp;nbsp;? « Nous risquons de débiter votre carte mais de ne pas envoyer vos produits, le logiciel n'étant pas encore au point... »&lt;/p&gt;


&lt;p&gt;Hier orange, comme Free, bloque le port 25 afin de &lt;strong&gt;limiter le spam&lt;/strong&gt;. Bonne ou mauvaise solution&amp;nbsp;? Les fai agissent-ils sur le bon vecteurs pour limité le spam. Le font-ils faute d'incapacité à utiliser d'autre moyen de protection&amp;nbsp;? Serait-il temps de rénover certains protocoles&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;Après ce bilan plutôt négatif, car volontairement négatif. Oui je souhaitait mettre l'accent sur ces points qui me dérangent de plus en plus. J'en oublie beaucoup et j'arrête ici car ce billet prend trop de longueur.  &lt;br /&gt;
Je n'oublie pas non plus que le web aujourd'hui prend une nouvelle dimension, que de formidable révolution ont eu lieu et sont en cours. Mes questions et craintes sont elles le simple d'une étape difficile qu'on pourrait appelée la transition&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;A vos plumes, je souhaite sincèrement avoir vos avis sur l'avenir de ce qui est aujourd'hui le centre d'intérêt de beaucoup d'entre nous.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/07/10/Ma-wishliste-pour-la-rentree#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/07/10/Ma-wishliste-pour-la-rentree#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/47</wfw:commentRss>
      </item>
    
  <item>
    <title>Petit retour discret</title>
    <link>http://www.paradoxal.org/blog/post/2007/07/10/Petit-retour-discret</link>
    <guid isPermaLink="false">urn:md5:e964de0ac8e07f353512c9f3a024e1b6</guid>
    <pubDate>Tue, 10 Jul 2007 11:16:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>General</category>
            
    <description>    &lt;p&gt;Bonjour à tous,&lt;/p&gt;


&lt;p&gt;Bientôt un mois de silence, que voulez vous , certaines obligations passent toujours devant d'autres. Dernièrement un petit passage au urgence (que jen'ai guère apprécié) à encore reculé mon retour.&lt;/p&gt;


&lt;p&gt;Je ne suis pas très téméraire quand il s'agit de poster car ici c'est surtout pour moi un aide&amp;nbsp;; mémoire, ou je peux mettre tout ce qui m'intérese et que je risque d'oublier. Bien sur je ne note pas tout, je ne peux pas tout dire et pour énormément d'information intéressante et constructive, on les retrouves déjà dans plusieurs blogs ou articles sur la programmation. Donc en ce qui me concerne je ne recopie pas betement.&lt;/p&gt;


&lt;p&gt;De plus depuis quelques temps donc j'ai bien envie de me mettre à la photo, les appareil photo sont des petits object à la technologie qui me séduit énormément. Pour suivre dans l'idée, j'ai repris mon bon vieux photoshop et j'ai laissé de côté éclipse je pense pour quelques temps.&lt;/p&gt;


&lt;p&gt;Vous allez vous dire, ça y est il ferme ses portes, pas du tout, il me reste encore deux tuto debian à posté et je ne compte pas les oublié. De plus je programme toujours, c'est un peu mon job quand même. En ce moment je suis en quête d'outils. et j'en parlerai plus volontier autour de mon prochain billet.&lt;/p&gt;


&lt;p&gt;En attendant, je regarde le temps pourri et je rêve de vacances au soleil...&lt;/p&gt;


&lt;p&gt;Bonne journée à tous&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/07/10/Petit-retour-discret#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/07/10/Petit-retour-discret#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/46</wfw:commentRss>
      </item>
    
  <item>
    <title>Framasoft à besoin de vous !</title>
    <link>http://www.paradoxal.org/blog/post/2007/06/17/Framasoft-a-besoin-de-vous</link>
    <guid isPermaLink="false">urn:md5:59bc3f138682f4a756491dcc2e0b4f78</guid>
    <pubDate>Sun, 17 Jun 2007 13:49:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Actualité</category>
        <category>2007</category><category>Communauté</category><category>Linux</category><category>Windows</category>    
    <description>&lt;p&gt;&lt;a href=&quot;http://www.framasoft.net/&quot; hreflang=&quot;fr&quot;&gt;Framasoft&lt;/a&gt;&amp;nbsp;? Ce nom ne vous est pas inconnu, il vous rappelle quelques choses. Ah oui c'est le site ou j'ai trouvé un programme gratuit&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Si c'est que vous avez retenu de Framasoft c'est que vous ne connaissez pas encore Framasoft, ou que vous n'avez jamais prêtez attention au logiciel libred'un autre manière que de ne pas payer un logiciel.&lt;/p&gt;


&lt;p&gt;Framasoft c'est bien plus qu'une banque de logiciels gratuits&amp;nbsp;!&lt;/p&gt;    &lt;p&gt;Framasoft fait parti de ces pionniers du web qui se sont battus pour promouvoirs les logiciels libres. Framasoft aujourd'hui plus qu'un site est une communauté ou vous trouverez&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.framasoft.net/&quot; hreflang=&quot;fr&quot;&gt;Framasoft&lt;/a&gt;&amp;nbsp;: Une banque de logiciel libre pour windows autant que pour linux ou mac.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://forum.framasoft.org/&quot; hreflang=&quot;fr&quot;&gt;Framagora&lt;/a&gt;&amp;nbsp;: Un forum de discussion sur le sujet du libre, des liberté informatique.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wiki.framasoft.info/&quot; hreflang=&quot;fr&quot;&gt;Framawiki&lt;/a&gt;&amp;nbsp;: Un wiki pour pouvoir développer vos connaissances autour du libre.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.framakey.org/&quot; hreflang=&quot;fr&quot;&gt;Framakey&lt;/a&gt;&amp;nbsp;: Des packages tout fait à mettre sur clé usb afin de transformer cette dernière en couteau suisse pret à l'emploi.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.framabook.org/&quot; hreflang=&quot;fr&quot;&gt;Framabook&lt;/a&gt;&amp;nbsp;: Une banque de livre blanc.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://framablog.org/&quot; hreflang=&quot;fr&quot;&gt;Framablog&lt;/a&gt;&amp;nbsp;: Pour rester informé sur la vie de la communauté et de l'actualité autour du libre.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ah mais ya tout ça dans Framasoft&amp;nbsp;? Bien sur&amp;nbsp;! C'est une communauté importante, récemment récompensée pour son action à &lt;em&gt;Paris Capitale du libre&lt;/em&gt;. Et vous imaginez bien que tout ce travail accompli par l'équipe de Framasoft est aussi gratifiant que fatiguant.&lt;/p&gt;


&lt;p&gt;Aujourd'hui framasoft fait un appel à l'aide, Framasoft à besoin de ressources, en mains pour se soulager de la charge de travail, pour développer de nouveaux projets, pour pouvoir continuer à vivre, à suivre son évolution grandissante et si vous n'avez pas de main, vous pouvez aussi faire des dons&amp;nbsp;! Les soutenirs en parlant d'eux autours de vous, sur votre blog...&lt;/p&gt;


&lt;p&gt;Saviez-vous que Framasoft était à l'origine de &lt;a href=&quot;http://stopdrm.info/&quot; hreflang=&quot;fr&quot;&gt;stopDRM&lt;/a&gt;, action contre la protection des médias, les fameux DRM qui à fait couler tellement d'encre cette dernière année.&lt;/p&gt;


&lt;p&gt;Framasoft est un représentant français dans le monde du libre qui mérite qu'on lui donne le droit de continuer son action.&lt;/p&gt;


&lt;p&gt;A vous de passer à l'action&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/06/17/Framasoft-a-besoin-de-vous#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/06/17/Framasoft-a-besoin-de-vous#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/45</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - php et dotclear 2</title>
    <link>http://www.paradoxal.org/blog/post/2007/06/15/Serveur-Debian-php-et-dotclear-2</link>
    <guid isPermaLink="false">urn:md5:f5fc6443b860e16e0be85728355dcf23</guid>
    <pubDate>Fri, 15 Jun 2007 20:29:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Apache</category><category>Dotclear</category><category>Linux</category><category>Mysql</category><category>PHP</category><category>Sécurité</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 6&amp;nbsp;: PHP + DOCLEAR 2&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Maintenant que notre serveur web est installé, il serait bon de lui fournir un peu de dynamisme et rien de tel pour cela que d'installer PHP que je ne présenterai pas =).&lt;/p&gt;


&lt;p&gt;Commençons par installer &lt;q&gt;« php5 »&lt;/q&gt; et ce qu'il faut pour l'allier à &lt;q&gt;« apache2 »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install apache2-mpm-prefork libapache2-mod-php5 php5-common php5 php5-cli php5-mysql
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant comme à l'habitude coupons Apache le temps de le reconfigurer. Comme vous avez pu l'observer, nous avons changer la manière dont &lt;q&gt;« apache2 »&lt;/q&gt; gère ses processus. Nous sommes passé de &lt;q&gt;« apache2-mpm-worker »&lt;/q&gt; à &lt;q&gt;« apach2-mpm-prefork »&lt;/q&gt;. Bien que &lt;q&gt;« worker »&lt;/q&gt; soit plus rapide et offre une meilleure méthode de travail à &lt;q&gt;« apache2 »&lt;/q&gt;, &lt;q&gt;« php5 »&lt;/q&gt; requiert que &lt;q&gt;« apache2 »&lt;/q&gt; travail en &lt;q&gt;« prefork »&lt;/q&gt; encore aujourd'hui.
De même nous avons installé le minimum pour faire fonctionner notre configuration, c'est à dire &lt;q&gt;« php5 »&lt;/q&gt; lui même, &lt;q&gt;« php5 »&lt;/q&gt; en ligne de commande&amp;nbsp;: &lt;q&gt;« cli »&lt;/q&gt; et &lt;q&gt;« mysql »&lt;/q&gt; pour &lt;q&gt;« php5 »&lt;/q&gt;, bien que &lt;q&gt;« php5 »&lt;/q&gt; offre une couche d'abstraction totale pour l'accès au SGBD beaucoup de site sont encore construit autour de l'API mysql directement.&lt;/p&gt;


&lt;p&gt;Retournons donc à notre configuration. Configurons &lt;q&gt;« mpm-prefork »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/apache2
bebeserv:/etc/apache2# nano apache2.conf
&lt;/pre&gt;


&lt;p&gt;Changeons notre configuration en ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
# prefork MPM
&amp;lt;IfModule mpm_prefork_module&amp;gt;
	StartServers          5
	MinSpareServers       5
	MaxSpareServers      10
	MaxClients          150
	MaxRequestsPerChild 500
&amp;lt;/IfModule&amp;gt;

# worker MPM
#&amp;lt;IfModule mpm_worker_module&amp;gt;
#    StartServers          2
#    MaxClients          150
#    MinSpareThreads      25
#    MaxSpareThreads      75
#    ThreadsPerChild      25
#    MaxRequestsPerChild 500
#&amp;lt;/IfModule&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Les commentaires sont facultatifs, ils me servent à me rappeler que mon apache tourne en &lt;q&gt;« prefork »&lt;/q&gt;, comme je l'avais fais dans le chapitre précédent.
Enregistrez et quittez.
Maintenant mettons à jour quelques points comme la configuration de &lt;q&gt;« mod_dir »&lt;/q&gt;.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# nano mods-avalable/dir.conf
&lt;/pre&gt;


&lt;p&gt;Modifier la configuration comme suit&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;IfModule mod_dir.c&amp;gt;
	DirectoryIndex index.php index.html index.cgi index.pl index.php index.xhtml
&amp;lt;/IfModule&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant configurons &lt;q&gt;« php5 »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# cd /etc/php5/apache2
bebeserv:/etc/php5/apache2# nano php.ini
&lt;/pre&gt;


&lt;p&gt;Modifier comme suit&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;

short_open_tag = Off
allow_call_time_pass_reference = Off
open_basedir = /home/nobody/default_apache
ignore_user_abort = On
realpath_cache_size=16k
realpath_cache_ttl=120
expose_php = Off

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 10
max_input_time = 10
	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

error_reporting = E_ALL | E_STRICT
display_errors = On			; A passé à Off quand vous rendez votre site web public
log_errors = On
ignore_repeated_errors = On
error_log = /var/log/php5.log

;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;

arg_separator.output = &amp;quot;&amp;amp;amp;&amp;quot;
register_long_arrays = Off
register_argc_argv = Off
magic_quotes_gpc = Off
default_mimetype = &amp;quot;text/html&amp;quot;
default_charset = &amp;quot;iso-8859-15&amp;quot;

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;

allow_url_fopen = Off
default_socket_timeout = 10

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[date]
date.timezone = Europe/Paris

[mail function]
;SMTP = localhost
;smtp_port = 25
;sendmail_from = me@example.com
sendmail_path = sendmail -t -f apache2@bebeserv.local

[mysql]
mysql.connect_timeout = 10

[session]
session.use_only_cookies = 1
session.name = SESSID
session.cache_limiter =
session.hash_function = 1
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez. Maintenant PHP est configuré pour travailler avec Apache mais pas pour  fonctionner en ligne de commande.
Refaites donc la même chose pour le CLI&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# cd ../cli
bebeserv:/etc/php5/cli# nano php.ini
&lt;/pre&gt;


&lt;p&gt;Mettez exactement les même paramètre à la différence de ceux-ci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
;open_basedir =
; ignore_user_abort = On
max_execution_time = 60
max_input_time = 10
memory_limit = 32M
log_errors = Off
file_uploads = Off
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Il nous reste à créer le fichier de log de PHP et de lui créer sa rotation&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# cd /var/log
bebeserv:/var/log# touch php5.log
bebeserv:/var/log# cd /etc/logrotate.d/
bebeserv:/etc/logrotate.d# nano php5
&lt;/pre&gt;


&lt;p&gt;Créez le fichier suivant&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
/var/log/php5.log {
		weekly
		missingok
		rotate 4
		compress
		delaycompress
		notifempty
		create 640 root root
}
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminer pour la configuration de PHP.
A l'heure actuelle avec la directive &lt;q&gt;« open_basedir »&lt;/q&gt;, PHP est enfermé dans &lt;q&gt;« /home/nobody/default_apache »&lt;/q&gt; pour chaque site que nous mettrons en place (et donc chaque virtual host) nous mettrons une directive &lt;q&gt;« open_basedir »&lt;/q&gt; dans le virtual host afin que PHP soit ouvert uniquement pour ce site. Ainsi nous mettrons d'autre élément de configuration PHP dans la configuration des vhosts. Cette méthode offre le grand avantage d'offrir au dessus de la configuration générale de PHP beaucoup de finesse pour ajuster certain paramètre notamment de sécurité.&lt;/p&gt;


&lt;p&gt;C'est ce que nous allons voir tout de suite en installant Dotclear 2. Un exemple simple et facile afin d'illustrer ce que nous venons de mettre en place durant les 4 derniers chapitres.&lt;/p&gt;


&lt;p&gt;Mais avant de nous lancer, vérifions le bon fonctionnement de PHP et pour ceci dans notre vhost &lt;q&gt;« default_apache »&lt;/q&gt; créons un fichier &lt;q&gt;« php.php »&lt;/q&gt; qui nous donnera le phpinfo.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/logrotate.d# cd /home/nobody/default_apache
bebeserv:/home/nobody/default_apache# nano php.php
&lt;/pre&gt;


&lt;p&gt;Mettez ceci dans votre fichier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;?php
phpinfo();
?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Donnez les bons droits à votre fichier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# chown nobody php.php
&lt;/pre&gt;


&lt;p&gt;Rechargeons la configuration &lt;q&gt;« apache2 »&lt;/q&gt; ainsi que &lt;q&gt;« php5 »&lt;/q&gt;.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# apace2ctl graceful
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant observons notre phpinfo&amp;nbsp;:
Depuis un poste du réseau local allez à cette adresse&amp;nbsp;: &lt;q&gt;« http://10.0.0.2/php.php »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Passons à la partie facultative de ce chapitre&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;L'installation de Dotclear 2&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Sachant que vous avez votre propre nom de domaine ici nous ferons une installation pour le réseau locale. il faut savoir que Dotclear ne requiert pas mais serait mieux avec la librairie GD2. !Nous allons donc l'installer.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# apt-get install php5-gd
[...]
&lt;/pre&gt;


&lt;p&gt;Rechargeons la configuration de PHP pour intégré GD&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# apace2ctl graceful
[...]
&lt;/pre&gt;


&lt;p&gt;Vous pouvez à nouveau regarder le phpinfo pour observer que GD est bien intégré dans sa version 2.&lt;/p&gt;


&lt;p&gt;Maintenant nous allons préparer l'arborescence pour notre futur site.
Afin de ne pas refaire la même manipulation à chaque fois, nous allons généré un squelette qu'il suffira de recopier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# cd ..
bebeserv:/home/nobody# mkdir skeleton
bebeserv:/home/nobody# cd skeleton
bebeserv:/home/nobody/skeleton# mkdir backup html includes logs sessions tmp
bebeserv:/home/nobody/skeleton# cd logs
bebeserv:/home/nobody/skeleton/logs# touch apache2.log php5.log
bebeserv:/home/nobody/skeleton/logs# cd ../../
bebeserv:/home/nobody# chown -R nobody skeleton
&lt;/pre&gt;


&lt;p&gt;Voilà une bonne chose de faite, maintenant créons la véritable arborescence de notre site que j'appellerai ici &lt;q&gt;« www.bebeserv.local »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody# cp -ra skeleton www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Nous devons dorénavant nous créer un vhost pour pouvoir exploiter tout ceci.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody# cd /etc/apache2/site-available
bebeserv:/etc/apache2/site-available# nano www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Créez le fichier suivant&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;VirtualHost *&amp;gt;
		ServerSignature Off
		ServerAdmin webmaster@bebeserv.local
		ServerName www.bebeserv.local
		ServerAlias bebeserv.local
		ServerAlias 10.0.0.2

		DocumentRoot /home/nobody/www.bebeserv.local/html/

		&amp;lt;Directory /home/nobody/www.bebeserv.local/html/&amp;gt;
				AllowOverride All
				Order allow,deny
				allow from all
		&amp;lt;/Directory&amp;gt;

		&amp;lt;IfModule mod_php5.c&amp;gt;
				php_admin_value open_basedir /home/nobody/www.bebeserv.local
				php_admin_value error_log /home/nobody/www.bebeserv.local/logs/php5.log
				php_admin_value upload_tmp_dir /home/nobody/www.paradoxal.org/tmp
				php_admin_value include_path .:/home/nobody/www.bebeserv.local/includes
				php_admin_value session.save_path /home/nobody/www.bebeserv.local/sessions
				php_admin_value sendmail_path &amp;quot;sendmail -t -f www@bebeserv.local&amp;quot;
		&amp;lt;/IfModule&amp;gt;

		CustomLog /home/nobody/www.bebeserv.local/logs/apache2.log combined
&amp;lt;/VirtualHost&amp;gt;
&lt;/pre&gt;



&lt;p&gt;Enregistrez et quittez.
J'ai mis en alias de serveur l'adresse IP de la machine afin qu'on puisse accéder au site localement pour le tester.
Autorisons ce vhost&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/site-available# cd ../site-enabled
bebeserv:/etc/apache2/site-enabled# ln -s ../site-available/www.bebeserv.local 100-www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Je garde une numérotation devant les nom des vhosts afin de définir l'ordre de chargement de ces derniers et ainsi leur priorité dans apache.&lt;/p&gt;


&lt;p&gt;Puisque nous y sommes, ouvrons nous un compte FTP afin de compléter l'ouverture de notre futur blog&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/site-enabled# cd /etc/vsftpd/user_conf
bebeserv:/etc/vsftpd/user_conf# cp example www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Dans le fichier &lt;q&gt;« www.bebeserv.local »&lt;/q&gt; mettez les options qui vous plaisent et surtout&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
local_root=/home/nobody/www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Nous pouvons ajouter notre utilisateur &lt;q&gt;« www.bebeserv.local »&lt;/q&gt; à la base de donnée de &lt;q&gt;« vsftpd »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd/user_conf# cd ..
bebeserv:/etc/vsftpd# nano userdb
&lt;/pre&gt;


&lt;p&gt;Entrez les lignes&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
www.bebeserv.local
votre-mot-de-passe
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez puis recharger la base de donner de &lt;q&gt;« vsftpd »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd# vsftpd-makedb
&lt;/pre&gt;


&lt;p&gt;Tout est OK, rechargeons aussi la configuration de apache&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd# apache2ctl graceful
&lt;/pre&gt;


&lt;p&gt;Maintenant téléchargeons Dotclear 2&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd# cd /home/nobody/www.bebeserv.local/html
bebeserv:/home/nobody/www.bebeserv.local/html# wget	http://download.dotclear.net/latest-2.0.tar.gz
[...]
&lt;/pre&gt;


&lt;p&gt;Décompressez l'archive&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# tar -xvzf dotclear-2.0-beta6.tar.gz
[...]
&lt;/pre&gt;


&lt;p&gt;Un dossier &lt;q&gt;« dotclear »&lt;/q&gt; est créé, donnons lui les bons droits (ainsi qu'à tout ce qu'il contient)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# chown -R nobody.nogroup dotclear
&lt;/pre&gt;


&lt;p&gt;Supprimons le tarball&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# rm dotclear-2.0-beta6.tar.gz
&lt;/pre&gt;


&lt;p&gt;Nous pouvons changer le nom du répertoire &lt;q&gt;« dotclear »&lt;/q&gt; par &lt;q&gt;« blog »&lt;/q&gt; par exemple&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# mv dotclear blog
&lt;/pre&gt;


&lt;p&gt;Voilà c'est presque fini. Dotclear aura besoin d'une base de données, créons donc un utilisateur et une base pour Dotclear.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# mysql -u bebeserv -p
Entre password: 
[...]

mysql&amp;gt; create database bebeserv_dc2;
Query OK, 1 row affected (0.00 sec)

mysql&amp;gt; grant create, delete, insert, update, select, index, lock tables, alter, drop on bebeserv_dc2.* to 'dotclear2'@'localhost' identified by 'un-mot-de-passe';
Query OK, 0 rows affected (0.01 sec)

mysql&amp;gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; quit
Bye
bebeserv:/home/nobody/www.bebeserv.local/html#
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminé, rendez vous sur la page &lt;q&gt;« http://10.0.0.2/blog/admin/install/ »&lt;/q&gt; pour terminer l'installation.
Pour le wizard de configuration Dotclear voici ce que vous aurez à entrer&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
hote de la base : localhost
base de donnée bebeserv_dc2
utilisateurs de la base de donnée : dotclear2
&lt;/pre&gt;


&lt;p&gt;Mémorisez bien le mot de passe qui vous sera fourni&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Voilà c'est terminé pour ce chapitre, vous avez intérêt à produire de bon billet maintenant&amp;nbsp;!&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_6.pdf"
      length="102096" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/06/15/Serveur-Debian-php-et-dotclear-2#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/06/15/Serveur-Debian-php-et-dotclear-2#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/44</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - apache</title>
    <link>http://www.paradoxal.org/blog/post/2007/06/13/Serveur-Debian-apache</link>
    <guid isPermaLink="false">urn:md5:8660a745dfe197a1994401405cf06b18</guid>
    <pubDate>Wed, 13 Jun 2007 09:01:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Apache</category><category>Linux</category><category>PHP</category><category>Sécurité</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 5&amp;nbsp;: &lt;a href=&quot;http://www.paradoxal.org/blog/tag/Apache&quot;&gt;APACHE&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Maintenant que nous disposons d'un serveur FTP et d'un serveur de base de données, il est grand temps que nous installions notre serveur web.&lt;/p&gt;


&lt;p&gt;Commençons par installer &lt;q&gt;« &lt;a href=&quot;http://www.paradoxal.org/blog/tag/Apache&quot;&gt;Apache&lt;/a&gt; »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install apache2 apache2-doc apache2-utils apache2.2-common
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant comme à l'habitude coupons le serveur fraîchement installé.&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# /etc/init.d/apache2 stop
&lt;/pre&gt;


&lt;p&gt;Allons directement éditer la configuration de notre serveur&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/apache2
bebeserv:/etc/apache2# nano apache2.conf
&lt;/pre&gt;


&lt;p&gt;Changez les lignes suivantes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
Timeout 60
MaxKeepAliveRequests 75
KeepAliveTimeout 10
&lt;/pre&gt;


&lt;p&gt;Par défaut aujourd'hui &lt;q&gt;« apache2 »&lt;/q&gt; est installé avec le module worker MPM. Commentez donc les lignes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#&amp;lt;IfModule mpm_prefork_module&amp;gt;
#    StartServers          5
#    MinSpareServers       5
#    MaxSpareServers      10
#    MaxClients          150
#    MaxRequestsPerChild   0
#&amp;lt;/IfModule&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Pour le module worker je garde les réglages par défaut qui sont bien pour une configuration  moyenne. Je change uniquement la valeur du &lt;q&gt;« MaxRequetsPerChild »&lt;/q&gt; sur une valeur assez courte. Pourquoi&amp;nbsp;? Etant donné que nous allons plus tard installer et travailler avec PHP, PHP requiert (surtout dans sa version 5) beaucoup de mémoire. Les fils apache augmenterons leur mémoire alloué de manière conséquente. Ainsi pour servir une image un fils s'allouera disons 30 Ko de mémoire, ensuite s'il reçoit une requête pour un script PHP il agrandira sa mémoire disons à 4 Mo. S'il ressert la même image que précédemment il gardera les 4 Mo de mémoire allouée. C'est pourquoi il est fort intéressant (même si c'est consommateur en CPU) de renouveler les fils apache assez régulière de manière à ne pas surconsommer de RAM.&lt;/p&gt;

&lt;pre&gt;
MaxRequestsPerChild 500
&lt;/pre&gt;


&lt;p&gt;Maintenant en relation directe avec le chapitre sur l'installation du serveur FTP, configurez l'utilisateur et le groupe apache&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
User nobody
Group nogroup
&lt;/pre&gt;


&lt;p&gt;Utilisez ces  utilisateurs permet de mettre en relation FTP, Apache, (et plus tard PHP) en limitant les problèmes d'utilisateur et de droits d'exécution. Tout le monde aura pour UID et GID &lt;q&gt;« nobody »&lt;/q&gt; et &lt;q&gt;« nogroup »&lt;/q&gt; ce qui évitera les problèmes du genre (je ne peux pas supprimé les fichier créer par PHP dans mon FTP... ou d'installer des plugins supplémentaire comme &lt;q&gt;« suphp »&lt;/q&gt; pour apache).
Pour une question de sécurité et de commodité par rapport au fichier UNIX caché, j'empêche aux utilisateurs d'accéder à tous les fichier commençant par un &lt;q&gt;« . »&lt;/q&gt; et pas uniquement les fichiers commençant par &lt;q&gt;« .ht »&lt;/q&gt;&lt;/p&gt;

&lt;pre&gt;
&amp;lt;Files ~ &amp;quot;^\.&amp;quot;&amp;gt;
	Order allow,deny
	Deny from all
&amp;lt;/Files&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Toujours pour la sécurité, donnons un minimum d'information&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ServerTokens Prod
ServerSignature Off
&lt;/pre&gt;


&lt;p&gt;Ensuite la configuration des différents modules&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
DefaultLanguage fr
LanguagePriority fr en ca ...
AddDefaultCharset ISO-8859-15
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Supprimez le fichier de configuration du charset dans &lt;q&gt;« conf.d »&lt;/q&gt; puisque nous venons de le préciser dans la configuration générale.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# rm conf.d/charset
&lt;/pre&gt;


&lt;p&gt;Pour moi le fichier &lt;q&gt;« ports.conf »&lt;/q&gt; est correctement configuré puisque notre serveur sera ouvert sur l'extérieur.
Maintenant supprimons les modules qui ne nous servirons pas.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# cd mods-enabled/
bebeserv:/etc/apache2/mods-enabled# rm autoindex* cgi* env* negociation* setenvif* status*
&lt;/pre&gt;


&lt;p&gt;Voici les seuls modules que j'ai a présent &lt;q&gt;« alias »&lt;/q&gt;, &lt;q&gt;« auth_* »&lt;/q&gt;, &lt;q&gt;« dir »&lt;/q&gt;, &lt;q&gt;« mime »&lt;/q&gt;.
Maintenant ajoutons les modules que nous souhaitons et qui n'étaient pas présent&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/deflate.conf deflate.conf
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/deflate.load deflate.load
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/expires.load expires.load
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/headers.load headers.load
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/rewrite.load rewrite.load
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.conf ssl.conf
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.load ssl.load
&lt;/pre&gt;


&lt;p&gt;Voilà nous en avons terminé avec les modules.
Maintenant pour éviter de divulguer notre configuration à tout le monde. Configurons notre virtualhost et créons une petite page d'accueil en attendant que notre site soit installé.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/mods-enabled# cd ../site-available
bebeserv:/etc/apache2/site-available# cp default mydefault
bebeserv:/etc/apache2/site-available# nano mydefault
&lt;/pre&gt;


&lt;p&gt;Entrez les modifications comme suit&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
NameVirtualHost *

&amp;lt;VirtualHost *&amp;gt;
	ServerAdmin webmaster@localhost

	DocumentRoot /home/nobody/default_apache/

	&amp;lt;Directory /&amp;gt;
		AllowOverride None
	&amp;lt;/Directory&amp;gt;
	&amp;lt;Directory /home/nobody/default_apache/&amp;gt;
		AllowOverride None
		Order allow,deny
		allow from all
	&amp;lt;/Directory&amp;gt;

	CustomLog /var/log/apache2/access.log combined
&amp;lt;/VirtualHost&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Activons ce site par défaut plutôt que celui proposé par apache&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/site-available# cd ../site-enabled
bebeserv:/etc/apache2/site-enabled# rm 000-default
bebeserv:/etc/apache2/site-enabled# ln -s ../site-available/mydefault 000-default
&lt;/pre&gt;


&lt;p&gt;Maintenant créons le dossier hébergeant ce virtuelhost et une petite page d'accueil&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/site-enabled# cd /home/nobody
bebeserv:/home/nobody# mkdir default_apache
bebeserv:/home/nobody# chown nobody default_apache/
bebeserv:/home/nobody# cd default_apache/
bebeserv:/home/nobody/default_apache# nano index.html
&lt;/pre&gt;


&lt;p&gt;Voici un petit html horrible mais qui suffira&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;html&amp;gt;
		&amp;lt;head&amp;gt;
				&amp;lt;title&amp;gt;Bienvenue sur bebeserv.bebenet.local&amp;lt;/title&amp;gt;
		&amp;lt;/head&amp;gt;
		&amp;lt;body&amp;gt;
				&amp;lt;h1&amp;gt;Bienvenue sur bebeserv.bebenet.local&amp;lt;/h1&amp;gt;
		&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# chown nobody index.html
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminé.
Nous allons pouvoir redémarrer apache et regarder si notre page d'accueil s'affiche bien.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# /etc/init.d/apache2 start
&lt;/pre&gt;


&lt;p&gt;Essayez cette adresse depuis votre navigateur sur un pc connecter au réseau local&amp;nbsp;: &lt;q&gt;« http://10.0.0.151/ »&lt;/q&gt; et observez le résultat&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Un dernier petit rappel nous n'avons pas configurer &lt;q&gt;« iptables »&lt;/q&gt; dans cette section car nous avions déjà ouvert le port 80 pour &lt;q&gt;« apt »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Le chapitre est maintenant terminé.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_5.pdf"
      length="90207" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/06/13/Serveur-Debian-apache#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/06/13/Serveur-Debian-apache#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/43</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - mysql</title>
    <link>http://www.paradoxal.org/blog/post/2007/06/09/Serveur-Debian-mysql</link>
    <guid isPermaLink="false">urn:md5:accec290a9c19e675de2958569e34599</guid>
    <pubDate>Sat, 09 Jun 2007 15:03:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Innodb</category><category>Linux</category><category>Mysql</category><category>Mysqldump</category><category>Sécurité</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 4&amp;nbsp;: &lt;a href=&quot;http://www.paradoxal.org/blog/tag/mysql&quot;&gt;MYSQL&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Pour nos futurs sites internet, nous allons avoir besoin de certain élément, nous possédons déjà le FTP pour créer des utilisateurs à notre guise, nous allons aussi avoir besoin d'une base de données. Aujourd'hui nous allons donc nous occuper de Mysql.&lt;/p&gt;


&lt;p&gt;Commençons par installer les paquets nécessaires&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install mysql-client-5.0 mysql-server-5.0 mysql-common
[...]
&lt;/pre&gt;


&lt;p&gt;Ceci fait comme pour le FTP commencer par couper le serveur tout frais installer.&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# /etc/init.d/mysql stop
[...]
&lt;/pre&gt;


&lt;p&gt;Éditons la configuration&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/mysql
bebeserv:/etc/mysql# nano my.cnf
[...]
&lt;/pre&gt;


&lt;p&gt;Dans &lt;q&gt;« [mysqld] »&lt;/q&gt;
D'abord la langue&amp;nbsp;! ( très important :) )&lt;/p&gt;

&lt;pre&gt;
language        = /usr/share/mysql/french
&lt;/pre&gt;


&lt;p&gt;Puis puisque dans mon cas je n'ouvrirai pas Mysql à l'extérieur je laisse le&lt;/p&gt;

&lt;pre&gt;
skip-networking
bind-address à 127.0.0.1
&lt;/pre&gt;


&lt;p&gt;Pour enregistrer les mauvaises requêtes (coûteuses en performance).&lt;/p&gt;

&lt;pre&gt;
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes
&lt;/pre&gt;


&lt;p&gt;Commentez les lignes suivantes, elles sont inutiles car nous ne feront pas de réplication Mysql.&lt;/p&gt;

&lt;pre&gt;
#log_bin                        = /var/log/mysql/mysql-bin.log
#expire_logs_days       = 10
#max_binlog_size         = 100M
&lt;/pre&gt;


&lt;p&gt;Puisque je compte utiliser Dotclear 2 qui nécessite le moteur &lt;q&gt;« &lt;a href=&quot;http://www.paradoxal.org/blog/tag/innodb&quot;&gt;innodb&lt;/a&gt; »&lt;/q&gt;, je ne décommenterai pas la ligne suivante&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#skip-innodb
&lt;/pre&gt;


&lt;p&gt;Dans la section &lt;q&gt;« [&lt;a href=&quot;http://www.paradoxal.org/blog/tag/mysqldump&quot;&gt;mysqldump&lt;/a&gt;] »&lt;/q&gt; je rajoute ces options&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
skip-opt
add-drop-table
add-locks
create-options
set-charset
disable-keys
complete-insert
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant vous pouvez relancer Mysql.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/mysql# /etc/init.d/mysql start
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant il va falloir sécuriser Mysql car sont installation d'origine est plein de trou.
Entrez dans la console Mysql&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.32-Debian_7etch1-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&amp;gt;

Maintenant que vous êtes dans la console, tapez les commandes suivantes :

mysql&amp;gt; use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&amp;gt; select User,Host,Password from user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost |                                           |
| root             | bebeserv  |                                           |
| debian-sys-maint | localhost | *23C6BA678DB0427E1A213D86DF1819114D2A80FD |
+------------------+-----------+-------------------------------------------+
&lt;/pre&gt;


&lt;p&gt;Nous observons un compte &lt;q&gt;« root »&lt;/q&gt; sous le nom &lt;q&gt;« bebeserv »&lt;/q&gt; qui ne servira pas puisque nous utiliserons uniquement Mysql en local. Nous allons donc le supprimé.&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; delete from user where Host &amp;lt;&amp;gt; &amp;quot;localhost&amp;quot;;
Query OK, 1 row affected (0.00 sec)

mysql&amp;gt; select User,Host,Password from user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost |                                           |
| debian-sys-maint | localhost | *23C6BA678DB0427E1A213D86DF1819114D2A80FD |
+------------------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
&lt;/pre&gt;


&lt;p&gt;Maintenant modifions le compte &lt;q&gt;« root »&lt;/q&gt; pour plus de sécurité et renommons le au passage (remplacé **** par votre mot de passe dans la seconde commande):&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; rename user root@localhost to bebeserv@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; update user set password=password('****') where user = &amp;quot;bebeserv&amp;quot;;
Query OK, 1 row affected (0.00 sec)
Enregistrements correspondants: 1  Modifiés: 1  Warnings: 0

mysql&amp;gt; select User,Host,Password from user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| bebeserv         | localhost | *A7581E9CC269EDA8C16D974E1032E393B33DC199 |
| debian-sys-maint | localhost | *23C6BA678DB0427E1A213D86DF1819114D2A80FD |
+------------------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
&lt;/pre&gt;


&lt;p&gt;Parfait&amp;nbsp;! Appliquons tout ça&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)
&lt;/pre&gt;


&lt;p&gt;Maintenant vérifions les bases présentes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)
&lt;/pre&gt;


&lt;p&gt;Parfait encore&amp;nbsp;! Par défaut Mysql créer un utilisateur vide et une base test que nous aurions du supprimer car inutile voir dangereux pour l'utilisateur sans nom. Mais l'installation dans Debian était déjà propre.&lt;/p&gt;


&lt;p&gt;Maintenant quittons la console et tentons de nous loguer en &lt;q&gt;« root »&lt;/q&gt; (&lt;q&gt;« bebeserv »&lt;/q&gt; excuser moi !).&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; exit
Bye

bebeserv:/etc/mysql# mysql -u bebeserv -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.32-Debian_7etch1-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Parfait&amp;nbsp;! nous pouvons quitter sachant que tout fonctionne bien&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; exit
Bye
&lt;/pre&gt;


&lt;p&gt;Voilà ce chapitre est terminé.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/mysql# exit
logout
ALBAN@bebeserv:~$