<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>http://wiki.diouxx.be/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ddevleeschauwer</id>
		<title>DiouxX's Wiki - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.diouxx.be/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ddevleeschauwer"/>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php/Sp%C3%A9cial:Contributions/Ddevleeschauwer"/>
		<updated>2026-04-16T14:23:43Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.30.2</generator>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Script_check_ftp&amp;diff=280</id>
		<title>Script check ftp</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Script_check_ftp&amp;diff=280"/>
				<updated>2019-05-03T11:34:10Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Ce script permet de vérifier si une connexion vers un serveur FTP est fonctionnel }}&lt;br /&gt;
&lt;br /&gt;
On peut l'insérer dans une tâche cron ou l'éxécuter de la manière suivante&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | /home/diouxx/Scripts/check-ftp.sh &amp;gt;&amp;gt; /home/diouxx/Scripts/check-ftp.log 2&amp;gt;&amp;amp;1 }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#Couleur affichage&lt;br /&gt;
VERT=&amp;quot;\\033[1;32m&amp;quot;&lt;br /&gt;
NORMAL=&amp;quot;\\033[0;39m&amp;quot;&lt;br /&gt;
ROUGE=&amp;quot;\\033[1;31m&amp;quot;&lt;br /&gt;
ROSE=&amp;quot;\\033[1;35m&amp;quot;&lt;br /&gt;
BLEU=&amp;quot;\\033[1;34m&amp;quot;&lt;br /&gt;
BLANC=&amp;quot;\\033[0;02m&amp;quot;&lt;br /&gt;
BLANCLAIR=&amp;quot;\\033[1;08m&amp;quot;&lt;br /&gt;
JAUNE=&amp;quot;\\033[1;33m&amp;quot;&lt;br /&gt;
CYAN=&amp;quot;\\033[1;36m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
HOST=ftp.domain.com&lt;br /&gt;
LOGIN=USER&lt;br /&gt;
PASSWORD=PASSWORD&lt;br /&gt;
PORT=21&lt;br /&gt;
LOG_FILE=/home/diouxx/Scripts/check-ftp.log&lt;br /&gt;
&lt;br /&gt;
#Fonction d'horodatage pour les log&lt;br /&gt;
#$1 = Texte a afficher apres l'horodatage&lt;br /&gt;
function horodate(){&lt;br /&gt;
        horodate=`date +&amp;quot;\n%d&amp;quot;/&amp;quot;%m&amp;quot;/&amp;quot;%Y&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;:&amp;quot;%S -- &amp;quot;`&lt;br /&gt;
        echo -e &amp;quot;$horodate$1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
exec 1&amp;gt;&amp;amp;2 &amp;gt;&amp;gt; $LOG_FILE&lt;br /&gt;
&lt;br /&gt;
horodate &amp;quot;START FTP CONNEXION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ftp -i -n $HOST $PORT &amp;lt;&amp;lt; END_SCRIPT&lt;br /&gt;
quote USER $LOGIN&lt;br /&gt;
quote PASS $PASSWORD&lt;br /&gt;
ls&lt;br /&gt;
quit&lt;br /&gt;
END_SCRIPT&lt;br /&gt;
&lt;br /&gt;
if [ $? != 0 ]&lt;br /&gt;
then&lt;br /&gt;
        horodate &amp;quot;Connexion FTP \t\t\t$ROUGE[KO]$NORMAL&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        horodate &amp;quot;Connexion FTP \t\t\t$VERT[OK]$NORMAL&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
horodate &amp;quot;END FTP CONNEXION&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Catégorie:Scripts System]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Script_check_ftp&amp;diff=279</id>
		<title>Script check ftp</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Script_check_ftp&amp;diff=279"/>
				<updated>2019-05-03T11:33:18Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : Page créée avec « {{ Introduction | Ce script permet de vérifier si une connexion vers un serveur FTP est fonctionnel }}  On peut l'insérer dans une tâche cron ou l'éxécuter de la mani... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Ce script permet de vérifier si une connexion vers un serveur FTP est fonctionnel }}&lt;br /&gt;
&lt;br /&gt;
On peut l'insérer dans une tâche cron ou l'éxécuter de la manière suivante&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | /home/diouxx/Scripts/check-ftp.sh &amp;gt;&amp;gt; /home/diouxx/Scripts/check-ftp.log 2&amp;gt;&amp;amp;1 }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lan=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#Couleur affichage&lt;br /&gt;
VERT=&amp;quot;\\033[1;32m&amp;quot;&lt;br /&gt;
NORMAL=&amp;quot;\\033[0;39m&amp;quot;&lt;br /&gt;
ROUGE=&amp;quot;\\033[1;31m&amp;quot;&lt;br /&gt;
ROSE=&amp;quot;\\033[1;35m&amp;quot;&lt;br /&gt;
BLEU=&amp;quot;\\033[1;34m&amp;quot;&lt;br /&gt;
BLANC=&amp;quot;\\033[0;02m&amp;quot;&lt;br /&gt;
BLANCLAIR=&amp;quot;\\033[1;08m&amp;quot;&lt;br /&gt;
JAUNE=&amp;quot;\\033[1;33m&amp;quot;&lt;br /&gt;
CYAN=&amp;quot;\\033[1;36m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
HOST=ftp.domain.com&lt;br /&gt;
LOGIN=USER&lt;br /&gt;
PASSWORD=PASSWORD&lt;br /&gt;
PORT=21&lt;br /&gt;
LOG_FILE=/home/diouxx/Scripts/check-ftp.log&lt;br /&gt;
&lt;br /&gt;
#Fonction d'horodatage pour les log&lt;br /&gt;
#$1 = Texte a afficher apres l'horodatage&lt;br /&gt;
function horodate(){&lt;br /&gt;
        horodate=`date +&amp;quot;\n%d&amp;quot;/&amp;quot;%m&amp;quot;/&amp;quot;%Y&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;:&amp;quot;%S -- &amp;quot;`&lt;br /&gt;
        echo -e &amp;quot;$horodate$1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
exec 1&amp;gt;&amp;amp;2 &amp;gt;&amp;gt; $LOG_FILE&lt;br /&gt;
&lt;br /&gt;
horodate &amp;quot;START FTP CONNEXION&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ftp -i -n $HOST $PORT &amp;lt;&amp;lt; END_SCRIPT&lt;br /&gt;
quote USER $LOGIN&lt;br /&gt;
quote PASS $PASSWORD&lt;br /&gt;
ls&lt;br /&gt;
quit&lt;br /&gt;
END_SCRIPT&lt;br /&gt;
&lt;br /&gt;
if [ $? != 0 ]&lt;br /&gt;
then&lt;br /&gt;
        horodate &amp;quot;Connexion FTP \t\t\t$ROUGE[KO]$NORMAL&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
        horodate &amp;quot;Connexion FTP \t\t\t$VERT[OK]$NORMAL&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
horodate &amp;quot;END FTP CONNEXION&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Catégorie:Scripts System]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Github&amp;diff=278</id>
		<title>Github</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Github&amp;diff=278"/>
				<updated>2019-04-23T09:08:42Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | 1=Un billet qui me sert d’aide mémoire sur l’utilisation « git » et de mon compte sur « GitHub ». }}&lt;br /&gt;
&lt;br /&gt;
==  Git en quelques mots ==&lt;br /&gt;
&lt;br /&gt;
Git est un logiciel de gestion de version qui permet de gérer une arborescence de fichiers tout en gardant un historique complet des différentes modifications effectuées. De ce point de vue, il offre les mêmes fonctionnalités que CVS ou Subversion.&lt;br /&gt;
&lt;br /&gt;
Git se caractérise principalement par son aspect décentralisé. En effet, git utilise à la fois un dépôt local et un dépôt distant. Pour travailler, il faut dans un premier temps « forker » un dépôt distant. Ceci permet de récupérer l’ensemble des fichiers présents sur le dépôt distant ainsi que l’historique associé.&lt;br /&gt;
&lt;br /&gt;
Une fois le dépôt distant « forker », on peut travailler en local tout comme on le ferait avec un gestionnaire de version classique. Il est ensuite possible de proposer sa contribution au dépôt distant (pull request).&lt;br /&gt;
&lt;br /&gt;
Ce mode de fonctionnement permet de profiter d’un gestionnaire de version pour effectuer son développement en local et de proposer un ensemble de modifications cohérentes et fonctionnelles sur le dépôt distant.&lt;br /&gt;
&lt;br /&gt;
== Préparer son espace de travail sous « GitHub » ==&lt;br /&gt;
&lt;br /&gt;
J’utilise « GitHub » pour héberger mes différents fichiers. La création du compte « GitHub » n’est pas détaillée dans ce billet. Cette étape ne présente aucune difficulté et n’est réalisée qu’une seule et unique fois. Seule la procédure d’échange de clefs est détaillée ici.&lt;br /&gt;
&lt;br /&gt;
=== Générer un couple de clefs privée/publique ===&lt;br /&gt;
&lt;br /&gt;
La génération des clefs privées et publiques se fait en tapant la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh-keygen -t rsa }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de la génération, il vous sera demandé une « passphrase ». Il faut bien noter cette dernière car elle sera à nouveau demandée lors de la connexion à « GitHub ».&lt;br /&gt;
&lt;br /&gt;
Si vous avez laissé les options par défaut, la clef se trouve dans le fichier « ~/.ssh/id_rsa.pub ».&lt;br /&gt;
&lt;br /&gt;
=== Exporter sa clef vers « GitHub » ===&lt;br /&gt;
&lt;br /&gt;
Suivre les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
    * se connecter sur « GitHub » avec votre compte ;&lt;br /&gt;
    * aller dans « settings » (icône en forme d’engrenage en haut à droite) ;&lt;br /&gt;
    * sélectionner dans le menu de gauche « SSH keys » ;&lt;br /&gt;
    * cliquer sur « Add SSH key » ;&lt;br /&gt;
    * donner un nom à la clef et recopier le contenu du fichier contenant la clef dans la zone de texte « Key ». Si vous avez laissé les options par défaut, la clef se trouve dans le fichier « ~/.ssh/id_rsa.pub »&lt;br /&gt;
&lt;br /&gt;
=== Tester le bon fonctionnement de la clef ===&lt;br /&gt;
&lt;br /&gt;
Dans un terminal, taper les commandes suivantes (cf. doc github) :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh -T git@github.com }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sortie doit ressembler au texte ci-dessous :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hi yopland! You've successfully authenticated, but GitHub does not provide shell access.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si le message fait référence à votre login, c’est gagné.&lt;br /&gt;
&lt;br /&gt;
=== Gestion des clefs avec « ssh-agent » ===&lt;br /&gt;
&lt;br /&gt;
L’utilisation d’un agent, évite d’avoir à retaper la « passphrase » à chaque fois que l’on sollicite l’utilisation de la clé privée. Les clefs et les « passphrases » associées sont stockées en mémoire par l’agent et restituées selon les besoins.&lt;br /&gt;
&lt;br /&gt;
Taper la commande suivante et renseigner la « passphrase » :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh-add }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tester le bon fonctionnement en essayant de se connecter sur le serveur. Il ne devrait pas être nécessaire de redonner la « passphrase ».&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh -T git@github.com }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour lister les clefs chargées par l’agent :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh-add -l }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour supprimer de l’agent la clef stockée dans « ~/.ssh/id_rsa »  :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh-add -d ~/.ssh/id_rsa }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Commandes principales ==&lt;br /&gt;
=== Dépôt local ===&lt;br /&gt;
==== Initialiser un dépôt git en local ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git init }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Lister les fichiers gérés par git ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git status }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Ajouter un ou des fichiers au dépôt local ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git add fichier&lt;br /&gt;
git add '*.txt'&lt;br /&gt;
git add .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Renseigner son identité ====&lt;br /&gt;
&lt;br /&gt;
Pour suivre les différentes modifications sur le serveur distant, il est nécessaire de renseigner son identité sur son dépôt.&lt;br /&gt;
&lt;br /&gt;
Pour effectuer cette déclaration de manière globale (valable pour tous les dépôt locaux), taper les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;you@example.com&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour effectuer cette déclaration uniquement pour le dépôt en cours, taper les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git config user.email &amp;quot;you@example.com&amp;quot;&lt;br /&gt;
git config user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Pousser les modifications effectuées vers le dépôt local (commit) ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git commit -m &amp;quot;message&amp;quot; }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Suivre les différentes actions ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git log }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Création d’un dépôt sur github ===&lt;br /&gt;
&lt;br /&gt;
Afin de recevoir les différents fichiers de ce billet, je me suis créé un dépôt « try_git ».  Cette étape se fait via l’interface d’administration de « GitHub ».&lt;br /&gt;
&lt;br /&gt;
Afin d’héberger différents projets, il est tout à fait possible de créer plusieurs dépôt sur un même compte.&lt;br /&gt;
&lt;br /&gt;
==== Déclarer un dépôt distant ====&lt;br /&gt;
&lt;br /&gt;
Afin d’éviter d’avoir à saisir l’URL complète du dépôt, il est possible de créer un alias.&lt;br /&gt;
&lt;br /&gt;
    * mon dépôt distant est hébergé sur « github » ;&lt;br /&gt;
    * pour les tests le nom de mon dépôt distant est « try_git » ;&lt;br /&gt;
    * le nom de mon compte est « DiouxX » ;&lt;br /&gt;
    * la référence « locale » au dépôt distant est « origin ».&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git remote add origin git@github.com:DiouxX/try_git.git}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Il est maintenant possible d’utiliser « origin » en lieu et place de l’URL complète.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | le nom origin est utilis&amp;amp; par convention. On peut bien évidemment le remplacer par n'importe quel nom/alias }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Dépot distant avec port SSH différent ====&lt;br /&gt;
&lt;br /&gt;
Si le dépôt distant utilise un port SSH différent de celui par défaut, il faut créer ou modifier le fichier {{ File | .ssh/config}} en y ajoutant les paramètres suivants :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hostname git.domaine.be&lt;br /&gt;
Port lePortSSH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Pousser les modifications locales vers le dépôt distant ====&lt;br /&gt;
&lt;br /&gt;
    * nom sous lequel est référencé le dépôt distant : origin&lt;br /&gt;
    * branche utilisée : master&lt;br /&gt;
    * option « -u » : permet de sauvegarder les paramètres et ainsi ne pas avoir à les saisir à nouveau lors de la prochaine commande&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git push -u origin master }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Récupérer les modifications effectuées ====&lt;br /&gt;
&lt;br /&gt;
Il est possible de récupérer les modifications effectuées sur le dépôt distant de deux manières différentes :&lt;br /&gt;
&lt;br /&gt;
    * en effectuant une fusion directement sur l’espace de travail ;&lt;br /&gt;
    * en stockant les données sur une nouvelle branche.&lt;br /&gt;
&lt;br /&gt;
Récupérer les modifications effectuées sur le dépôt distant et fusionner les modifications sur notre espace de travail&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git pull origin master }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérer les modifications effectuées sur le dépôt distant sans effectuer de fusion (les données seront stockées sous leur propre branche)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git fetch origin }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lister les dépôts distants ====&lt;br /&gt;
&lt;br /&gt;
    * l’option « -v » permet de visualiser les urls associées à chaque nom court;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git remote -v }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion des branches ===&lt;br /&gt;
==== Création d'une branche ====&lt;br /&gt;
&lt;br /&gt;
Pour créer une branche et y basculer tout de suite, vous pouvez lancer la commande git checkout avec l'option -b :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git checkout -b newbranch&amp;lt;br&amp;gt;Switched to a new branch &amp;quot;newbranch&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
C'est un raccourci pour :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | $ git branch  newbranch&amp;lt;br&amp;gt;$ git checkout newbranch }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Switcher de branche ====&lt;br /&gt;
&lt;br /&gt;
Pour l'instant, vous avez validé tous vos changements dans la branche newbranch et vous pouvez donc rebasculer vers la branche master :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | $ git checkout master&amp;lt;br&amp;gt;Switched to branch &amp;quot;master&amp;quot;}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Merge avec la branche master ====&lt;br /&gt;
&lt;br /&gt;
Vous pouvez lancer vos tests, vous assurer que la correction est efficace et la fusionner dans la branche master pour la déployer en production. Vous réalisez ceci au moyen de la commande git merge :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git checkout master &amp;lt;br&amp;gt; $ git merge correctif }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Suppression d'une branche ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git branch -d newbranch }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Autres commandes ===&lt;br /&gt;
==== Récupérer les différences entre la copie locale et le dépôt ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git diff HEAD }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Récupérer les dernières modifications que l’on vient d’effectuer ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git diff --staged }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cloner un dépot ====&lt;br /&gt;
&lt;br /&gt;
Cloner un dépôt entier :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git clone url }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cloner une branche :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git clone -b branche url }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
    * http://carnetdevol.shost.ca/wordpress/aide-memoire-git/&lt;br /&gt;
    * documentation git : http://git-scm.com/&lt;br /&gt;
    * un livre en français : http://git-scm.com/book/fr/v1&lt;br /&gt;
    * un très bon tutoriel : https://try.github.io/levels/1/challenges/1&lt;br /&gt;
    * le site de gitub : https://github.com&lt;br /&gt;
    * utilisation de ssh : http://www.linux-france.org/prj/edu/archinet/systeme/ch13s03.html&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Commandes_PowerCLI&amp;diff=277</id>
		<title>Commandes PowerCLI</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Commandes_PowerCLI&amp;diff=277"/>
				<updated>2018-01-18T13:22:06Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* VM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page reprend un certains nombre de commande dont j'ai eu besoin }}&lt;br /&gt;
&lt;br /&gt;
== Identification ==&lt;br /&gt;
&lt;br /&gt;
=== Création d'un fichier avec identifiant ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
#Cela stocke les identifiants dans un fichier xml. Vous pouvez ouvrir le fichier xml, mais le mot de passe est haché&lt;br /&gt;
&lt;br /&gt;
New-VICredentialStoreItem -Host ESXorvCenterHostname -User root -Password &amp;quot;Super$ecretPassword&amp;quot; -File C:\vsphere-credential.xml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Utilisation d'un fichier d'identification ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
#Création de l'objet avec les informations de connexion&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Conexion au serveur&lt;br /&gt;
$connexion = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM ==&lt;br /&gt;
&lt;br /&gt;
=== Création VM ===&lt;br /&gt;
&lt;br /&gt;
* Création à partir d'un template&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
New-VM -Name &amp;quot;VMName&amp;quot; -Template TemplateName -ResourcePool PoolName -Datastore DatastoreName -Location location&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Listing VM ===&lt;br /&gt;
&lt;br /&gt;
* Lister les évènements lié à une VM&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Get-VM -Name &amp;quot;VMName&amp;quot; | Get-VIEvent | Select createdTime, userName, fullFormattedMessage&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:PowerCLI]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Commandes_PowerCLI&amp;diff=276</id>
		<title>Commandes PowerCLI</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Commandes_PowerCLI&amp;diff=276"/>
				<updated>2018-01-18T13:21:38Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* VM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page reprend un certains nombre de commande dont j'ai eu besoin }}&lt;br /&gt;
&lt;br /&gt;
== Identification ==&lt;br /&gt;
&lt;br /&gt;
=== Création d'un fichier avec identifiant ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
#Cela stocke les identifiants dans un fichier xml. Vous pouvez ouvrir le fichier xml, mais le mot de passe est haché&lt;br /&gt;
&lt;br /&gt;
New-VICredentialStoreItem -Host ESXorvCenterHostname -User root -Password &amp;quot;Super$ecretPassword&amp;quot; -File C:\vsphere-credential.xml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Utilisation d'un fichier d'identification ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
#Création de l'objet avec les informations de connexion&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Conexion au serveur&lt;br /&gt;
$connexion = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VM ==&lt;br /&gt;
&lt;br /&gt;
=== Création VM ===&lt;br /&gt;
&lt;br /&gt;
* Création à partir d'un template&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
New-VM -Name &amp;quot;VMName&amp;quot; -Template TemplateName -ResourcePool PoolName -Datastore DatastoreName -Location location&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Lister les évènements lié à une VM&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Get-VM -Name &amp;quot;VMName&amp;quot; | Get-VIEvent | Select createdTime, userName, fullFormattedMessage&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:PowerCLI]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Powershell&amp;diff=275</id>
		<title>Powershell</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Powershell&amp;diff=275"/>
				<updated>2018-01-12T09:21:53Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page reprend l'ensemble des coommandes/script powershell dont j'ai eu l'utilité }}&lt;br /&gt;
&lt;br /&gt;
== Active Directory ==&lt;br /&gt;
&lt;br /&gt;
=== Manipulation Groupes ===&lt;br /&gt;
==== Lister les membres d'un groupe et leur netlogon ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Get-ADGroupMember &amp;quot;YOURGROUP&amp;quot; | foreach{Get-ADUser -Identity $_.SamAccountName -Properties scriptpath} | ft name,scriptpath&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Groupes AD vides ====&lt;br /&gt;
* Lister les groupes AD vides&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Get-ADGroup -Filter * -Properties Members | where { $_.Members.Count -eq 0 } | ft Name&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Compter le nombre de groupe AD vide &lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
$(Get-ADGroup -Filter * -Properties Members | where { $_.Members.Count -eq 0 } | measure).Count&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Fichier:Deploiement-paquet-partage.png&amp;diff=274</id>
		<title>Fichier:Deploiement-paquet-partage.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Fichier:Deploiement-paquet-partage.png&amp;diff=274"/>
				<updated>2018-01-11T10:15:05Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : Ddevleeschauwer a téléversé une nouvelle version de Fichier:Deploiement-paquet-partage.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Powershell&amp;diff=273</id>
		<title>Powershell</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Powershell&amp;diff=273"/>
				<updated>2018-01-11T10:09:49Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : Page créée avec « {{ Introduction | Cette page reprend l'ensemble des coommandes/script powershell dont j'ai eu l'utilité }}  == Active Directory ==  === Lister les memebres d'un groupe et... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page reprend l'ensemble des coommandes/script powershell dont j'ai eu l'utilité }}&lt;br /&gt;
&lt;br /&gt;
== Active Directory ==&lt;br /&gt;
&lt;br /&gt;
=== Lister les memebres d'un groupe et leur netlogon ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Get-ADGroupMember &amp;quot;YOURGROUP&amp;quot; | foreach{Get-ADUser -Identity $_.SamAccountName -Properties scriptpath} | ft name,scriptpath&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Postfix&amp;diff=272</id>
		<title>Postfix</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Postfix&amp;diff=272"/>
				<updated>2017-11-07T07:28:48Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page permet de réaliser la mis en place ainsi que la configuration de Postfix }}&lt;br /&gt;
&lt;br /&gt;
Avant toute chose, il est nécessaire d'installer et configurer Cyrus-Imap&lt;br /&gt;
&lt;br /&gt;
== Cyrus Imap ==&lt;br /&gt;
&lt;br /&gt;
Pour l'installation et la configuration de Cyrus Imap, veuillez vous référencer à la [[Cyrus|page suivante]]&lt;br /&gt;
&lt;br /&gt;
== Postfix ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
La configuration de postfix est réalisé via deux fichiers&lt;br /&gt;
&lt;br /&gt;
* main.cf&lt;br /&gt;
* master.cf&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le fichier {{ File | main.cf }} qui permet de paramétrer postfix&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#########################################&lt;br /&gt;
#	REGLES GENERALES		#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
#La règle smtpd_banner définit le message d’accueil du serveur Postfix&lt;br /&gt;
#smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)&lt;br /&gt;
smtpd_banner = DIOUXX&lt;br /&gt;
&lt;br /&gt;
#Desactivation notification terminal&lt;br /&gt;
biff = no&lt;br /&gt;
&lt;br /&gt;
#La règle myhostname renseigne le nom de la machine sur laquelle s’exécute (est installé) Postfix.&lt;br /&gt;
myhostname = your hostname&lt;br /&gt;
&lt;br /&gt;
#La règle mail_name définit le nom du système de messagerie du serveur&lt;br /&gt;
mail_name = Postfix&lt;br /&gt;
&lt;br /&gt;
#La règle mydomain renseigne le nom de domaine auquel appartient la machine sur laquelle s’exécute Postfix.&lt;br /&gt;
mydomain = diouxx.be&lt;br /&gt;
&lt;br /&gt;
#La règle mydestination énumère tous les domaines pour lesquels le serveur Postfix acceptera les mails afin de les distribuer en local.&lt;br /&gt;
#&amp;quot;distribuer en local&amp;quot; signifie: livrer les mails à tous les utilisateurs ayant un compte UNIX ou un compte virtuel (c’est à dire simplement une BàL) sur une machine qui appartient à &lt;br /&gt;
#l’un des domaines de la liste de la règle mydestination.&lt;br /&gt;
#A la place de $mydomain on peut bien sûr mettre le nom de domaine en toute lettre !&lt;br /&gt;
mydestination = $myhostname, www.$mydomain, $mydomain, localhost, localhost.$mydomain&lt;br /&gt;
&lt;br /&gt;
inet_interfaces = all&lt;br /&gt;
&lt;br /&gt;
#proxy_interfaces = 193.190.248.8&lt;br /&gt;
&lt;br /&gt;
#################################&lt;br /&gt;
#	VIRTUAL DOMAIN		#&lt;br /&gt;
#################################&lt;br /&gt;
&lt;br /&gt;
#Le paramètre virtual_mailbox_domains indique à Postfix que domain.be est un domaine de boîtes-aux-lettres virtuelles.&lt;br /&gt;
#Si vous l'oubliez, Postfix rejetera le courrier (relais interdit) ou ne sera pas en mesure de le livrer (le courrier de exmple.com bouclera).&lt;br /&gt;
#virtual_mailbox_domains = domain.be&lt;br /&gt;
&lt;br /&gt;
#Le paramètre virtual_mailbox_base indique le répertoire de base pour toutes les boîtes aux lettres virtuelles.&lt;br /&gt;
#C'est un mécanisme évitant les erreurs : le courrier ne peut être livré n'importe où.&lt;br /&gt;
#virtual_mailbox_base = /var/spool/cyrus/mail&lt;br /&gt;
&lt;br /&gt;
# Le paramètre virtual_mailbox_maps indique la table des correspondances entre les adresses virtuelles et les boîtes-aux-lettres (ou les répertoires).&lt;br /&gt;
#virtual_mailbox_maps = hash:/etc/postfix/vmailbox&lt;br /&gt;
&lt;br /&gt;
#virtual_alias_domains = /etc/postfix/virtual_domains&lt;br /&gt;
&lt;br /&gt;
#Il est possible de mixer les alias virtuels avec des boîtes-aux-lettres virtuelles.&lt;br /&gt;
#virtual_alias_maps = hash:/etc/postfix/virtual&lt;br /&gt;
&lt;br /&gt;
#virtual_minimum_uid = 100&lt;br /&gt;
#virtual_uid_maps = static:5000&lt;br /&gt;
#virtual_gid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
##########################################&lt;br /&gt;
#	MASQUAGE DES NOMS D'HOTES	 #&lt;br /&gt;
##########################################&lt;br /&gt;
&lt;br /&gt;
#La règle myorigin renseigne la partie réseau de l’adresse d’enveloppe ou d’en-tête des mails qui seront envoyés par Postfix.&lt;br /&gt;
myorigin = $mydomain&lt;br /&gt;
&lt;br /&gt;
#La règle append_at_myorigin initialise ou non (yes/no) la réécriture des adresses en ajoutant à ces adresses&lt;br /&gt;
#append_at_myorigin = yes&lt;br /&gt;
&lt;br /&gt;
#La règle append_dot_mydomain initialise ou non la réécriture des adresses en ajoutant à ces adresses&lt;br /&gt;
#append_dot_mydomain = yes&lt;br /&gt;
&lt;br /&gt;
#La règle masquerade_domains définit les règles de supression des noms d’hôtes et/ou de sous-domaines dans les adresses d’enveloppe et les en-têtes de message de l’expéditeur&lt;br /&gt;
#(et non du destinataire!!!).&lt;br /&gt;
#masquerade_domains = domain.be&lt;br /&gt;
&lt;br /&gt;
#La règle masquerade_exceptions définit les comptes pour lesquels ne s’appliqueront pas les règles de la directive masquerad_domains.&lt;br /&gt;
#masquerade_exceptions =&lt;br /&gt;
&lt;br /&gt;
#########################################&lt;br /&gt;
#	CONTROLE D ACCES RELAYAGE	#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
#La règle mynetworks énumère les réseaux ou adresses des machines qui peuvent utiliser le serveur postfix pour envoyer/relayer du courrier vers l’extérieur.&lt;br /&gt;
mynetworks = 127.0.0.0/8 &lt;br /&gt;
#mynetworks_style = class&lt;br /&gt;
&lt;br /&gt;
#La règle relay_domains indique les domaines et sous-domaines vers lesquels Postfix va relayer (faire suivre) le courrier.&lt;br /&gt;
relay_domains = $mydestination &lt;br /&gt;
&lt;br /&gt;
#La règle relayhost définit la passerelle SMTP qui est rellement connectée à Internet.&lt;br /&gt;
#Cette règle ne concerne que les mails SORTANT.&lt;br /&gt;
relayhost = &lt;br /&gt;
&lt;br /&gt;
#################################&lt;br /&gt;
#	CONFIGURATION TLS	#&lt;br /&gt;
#################################&lt;br /&gt;
smtp_use_tls=no&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
#smtpd_tls_security = may&lt;br /&gt;
smtpd_tls_CApath = /etc/postfix/tls&lt;br /&gt;
smtpd_tls_key_file = /etc/postfix/tls/postfix.key&lt;br /&gt;
smtpd_tls_cert_file = /etc/postfix/tls/postfix.crt&lt;br /&gt;
smtpd_tls_CAfile = /etc/postfix/tls/cacert.pem&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtpd_tls_received_header = yes&lt;br /&gt;
smtpd_tls_session_cache_timeout = 3600s&lt;br /&gt;
tls_random_source = dev:/dev/urandom&lt;br /&gt;
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache&lt;br /&gt;
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
smtp_use_tls = yes&lt;br /&gt;
smtp_tls_security_level = may&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
smtp_tls_note_starttls_offer = yes &lt;br /&gt;
&lt;br /&gt;
#########################################&lt;br /&gt;
#	CONFIGURATION SASL		#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
smtpd_sasl_auth_enable = yes&lt;br /&gt;
smtpd_sasl_local_domain = &lt;br /&gt;
smtpd_sasl_type = cyrus&lt;br /&gt;
smtpd_sasl_path = smtpd&lt;br /&gt;
smtpd_sasl_security_options = noanonymous&lt;br /&gt;
smtpd_sasl_authenticated_header = yes&lt;br /&gt;
broken_sasl_auth_clients = yes&lt;br /&gt;
&lt;br /&gt;
#########################################&lt;br /&gt;
#	TABLE DE RECHERCHES		#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
#La règle default_database_type définit le type de base de données que l’on souhaite utiliser.&lt;br /&gt;
#default_database_type = hash&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#	ALIAS		#&lt;br /&gt;
#########################&lt;br /&gt;
&lt;br /&gt;
#La règle alias_maps définit le type (hash, NIS, LDAP, etc...) et l’emplacement du fichier texte dont se servira la commande postalias ou newalises&lt;br /&gt;
#pour re/construire le(s) fichier(s) de base de données (.db) d’alias utilisés par l’agent de distribution local.&lt;br /&gt;
alias_maps = hash:/etc/aliases&lt;br /&gt;
&lt;br /&gt;
#La règle alias_database définit l’emplacement des fichiers texte dont se servira la commande newaliases pour construire les fichiers base de données d’alias,&lt;br /&gt;
#c’est à dire uniquement les fichiers qui doivent être indexés par la commande newaliases.&lt;br /&gt;
#alias_database = hash:/etc/aliases.db&lt;br /&gt;
alias_database = hash:/etc/aliases&lt;br /&gt;
&lt;br /&gt;
#La règle default_privs définit les privilèges de Postfix lors de la distribution en local à un alias.&lt;br /&gt;
#default_privs = nobody&lt;br /&gt;
&lt;br /&gt;
#La règle allow_mail_to_commands définit dans quel cadre Postfix doit délivrer le courrier à une commande.&lt;br /&gt;
#allow_mail_to_commands = alias,forward, include&lt;br /&gt;
&lt;br /&gt;
#La règle allow_mail_to_files définit dans quel cadre Postfix doit délivrer le courrier à un fichier.&lt;br /&gt;
#allow_mail_to_files = alias,forward, include&lt;br /&gt;
&lt;br /&gt;
#########################################################&lt;br /&gt;
#	REECRITURE ET/OU REDIRECTION D ADRESSES		#&lt;br /&gt;
#########################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#########################################&lt;br /&gt;
#	GESTION FILE D ATTENTE		#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
#La règle queue_directory définit l’emplacement du répertoire racine de la file d’attente de Postfix.&lt;br /&gt;
queue_directory = /var/spool/postfix&lt;br /&gt;
&lt;br /&gt;
#################################&lt;br /&gt;
#	DISTRIBUTION LOCALE	#&lt;br /&gt;
#################################&lt;br /&gt;
&lt;br /&gt;
mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp&lt;br /&gt;
&lt;br /&gt;
local_recipient_maps = $alias_maps&lt;br /&gt;
#local_recipient_maps =&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#	GESTION BAL	#&lt;br /&gt;
#########################&lt;br /&gt;
&lt;br /&gt;
home_mailbox = Maildir/&lt;br /&gt;
&lt;br /&gt;
#Limitation de la taille des BAL&lt;br /&gt;
mailbox_size_limit = 0&lt;br /&gt;
&lt;br /&gt;
#Taille maximal des messages&lt;br /&gt;
#Taille = 20 Mo&lt;br /&gt;
message_size_limit = 20480000&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#	AMAVIS		#&lt;br /&gt;
#########################&lt;br /&gt;
&lt;br /&gt;
content_filter = amavis:[127.0.0.1]:10024&lt;br /&gt;
receive_override_options = no_address_mappings&lt;br /&gt;
&lt;br /&gt;
smtpd_recipient_restrictions = permit_sasl_authenticated,&lt;br /&gt;
	   permit_mynetworks,&lt;br /&gt;
           reject_unauth_destination,&lt;br /&gt;
#           check_policy_service inet:127.0.0.1:60000&lt;br /&gt;
           check_policy_service inet:127.0.0.1:10023&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#	SECURITE	#&lt;br /&gt;
#########################&lt;br /&gt;
&lt;br /&gt;
#Bloque une partie de SPAM en obligeant la requete HELO&lt;br /&gt;
smtpd_helo_required = yes&lt;br /&gt;
&lt;br /&gt;
#Utilisation de postgrey &lt;br /&gt;
#check_policy_service = inet:127.0.0.1:10023&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Le fichier {{ File | master.cf }} permet de définir la manière dont postfix va communiquer via les différents protocoles qu'il accepte&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Postfix master process configuration file.  For details on the format&lt;br /&gt;
# of the file, see the master(5) manual page (command: &amp;quot;man 5 master&amp;quot;).&lt;br /&gt;
#&lt;br /&gt;
# Do not forget to execute &amp;quot;postfix reload&amp;quot; after editing this file.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
# service type  private unpriv  chroot  wakeup  maxproc command + args&lt;br /&gt;
#               (yes)   (yes)   (yes)   (never) (100)&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
smtp      inet  n       -       -       -       -       smtpd&lt;br /&gt;
#	-o content_filter=spamassassin&lt;br /&gt;
#smtp      inet  n       -       -       -       1       postscreen&lt;br /&gt;
#smtpd     pass  -       -       -       -       -       smtpd&lt;br /&gt;
#dnsblog   unix  -       -       -       -       0       dnsblog&lt;br /&gt;
#tlsproxy  unix  -       -       -       -       0       tlsproxy&lt;br /&gt;
submission inet n       -       -       -       -       smtpd&lt;br /&gt;
#  -o syslog_name=postfix/submission&lt;br /&gt;
  -o smtpd_tls_security_level=encrypt&lt;br /&gt;
#  -o smtpd_sasl_auth_enable=yes&lt;br /&gt;
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
#  -o milter_macro_daemon_name=ORIGINATING&lt;br /&gt;
smtps     inet  n       -       -       -       -       smtpd&lt;br /&gt;
#  -o syslog_name=postfix/smtps&lt;br /&gt;
  -o smtpd_tls_wrappermode=yes&lt;br /&gt;
  -o smtpd_sasl_auth_enable=yes&lt;br /&gt;
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
  -o smtpd_client_restrictions=permit_sasl_authenticated&lt;br /&gt;
  -o milter_macro_daemon_name=ORIGINATING&lt;br /&gt;
#628       inet  n       -       -       -       -       qmqpd&lt;br /&gt;
pickup    fifo  n       -       -       60      1       pickup&lt;br /&gt;
cleanup   unix  n       -       -       -       0       cleanup&lt;br /&gt;
qmgr      fifo  n       -       n       300     1       qmgr&lt;br /&gt;
#qmgr     fifo  n       -       n       300     1       oqmgr&lt;br /&gt;
tlsmgr    unix  -       -       -       1000?   1       tlsmgr&lt;br /&gt;
rewrite   unix  -       -       -       -       -       trivial-rewrite&lt;br /&gt;
bounce    unix  -       -       -       -       0       bounce&lt;br /&gt;
defer     unix  -       -       -       -       0       bounce&lt;br /&gt;
trace     unix  -       -       -       -       0       bounce&lt;br /&gt;
verify    unix  -       -       -       -       1       verify&lt;br /&gt;
flush     unix  n       -       -       1000?   0       flush&lt;br /&gt;
proxymap  unix  -       -       n       -       -       proxymap&lt;br /&gt;
proxywrite unix -       -       n       -       1       proxymap&lt;br /&gt;
smtp      unix  -       -       -       -       -       smtp&lt;br /&gt;
relay     unix  -       -       -       -       -       smtp&lt;br /&gt;
	-o smtp_fallback_relay=&lt;br /&gt;
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5&lt;br /&gt;
showq     unix  n       -       -       -       -       showq&lt;br /&gt;
error     unix  -       -       -       -       -       error&lt;br /&gt;
retry     unix  -       -       -       -       -       error&lt;br /&gt;
discard   unix  -       -       -       -       -       discard&lt;br /&gt;
local     unix  -       n       n       -       -       local&lt;br /&gt;
virtual   unix  -       n       n       -       -       virtual&lt;br /&gt;
lmtp      unix  -       -       n       -       -       lmtp&lt;br /&gt;
anvil     unix  -       -       -       -       1       anvil&lt;br /&gt;
scache    unix  -       -       -       -       1       scache&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
# Interfaces to non-Postfix software. Be sure to examine the manual&lt;br /&gt;
# pages of the non-Postfix software to find out what options it wants.&lt;br /&gt;
#&lt;br /&gt;
# Many of the following services use the Postfix pipe(8) delivery&lt;br /&gt;
# agent.  See the pipe(8) man page for information about ${recipient}&lt;br /&gt;
# and other message envelope options.&lt;br /&gt;
# ====================================================================&lt;br /&gt;
#&lt;br /&gt;
# maildrop. See the Postfix MAILDROP_README file for details.&lt;br /&gt;
# Also specify in main.cf: maildrop_destination_recipient_limit=1&lt;br /&gt;
#&lt;br /&gt;
maildrop  unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
#&lt;br /&gt;
# Recent Cyrus versions can use the existing &amp;quot;lmtp&amp;quot; master.cf entry.&lt;br /&gt;
#&lt;br /&gt;
# Specify in cyrus.conf:&lt;br /&gt;
#   lmtp    cmd=&amp;quot;lmtpd -a&amp;quot; listen=&amp;quot;localhost:lmtp&amp;quot; proto=tcp4&lt;br /&gt;
#&lt;br /&gt;
# Specify in main.cf one or more of the following:&lt;br /&gt;
#  mailbox_transport = lmtp:inet:localhost&lt;br /&gt;
#  virtual_transport = lmtp:inet:localhost&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
#&lt;br /&gt;
# Cyrus 2.1.5 (Amos Gouaux)&lt;br /&gt;
# Also specify in main.cf: cyrus_destination_recipient_limit=1&lt;br /&gt;
#&lt;br /&gt;
cyrus     unix  -       n       n       -       -       pipe&lt;br /&gt;
#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
# Old example of delivery via Cyrus.&lt;br /&gt;
#&lt;br /&gt;
#old-cyrus unix  -       n       n       -       -       pipe&lt;br /&gt;
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
#&lt;br /&gt;
# See the Postfix UUCP_README file for configuration details.&lt;br /&gt;
#&lt;br /&gt;
uucp      unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)&lt;br /&gt;
#&lt;br /&gt;
# Other external delivery methods.&lt;br /&gt;
#&lt;br /&gt;
ifmail    unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)&lt;br /&gt;
bsmtp     unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient&lt;br /&gt;
scalemail-backend unix	-	n	n	-	2	pipe&lt;br /&gt;
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}&lt;br /&gt;
mailman   unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py&lt;br /&gt;
  ${nexthop} ${user}&lt;br /&gt;
&lt;br /&gt;
#Amavis&lt;br /&gt;
amavis unix - - - - 2 smtp&lt;br /&gt;
        -o smtp_data_done_timeout=1200&lt;br /&gt;
        -o smtp_send_xforward_command=yes&lt;br /&gt;
 &lt;br /&gt;
127.0.0.1:10025 inet n - - - - smtpd&lt;br /&gt;
        -o content_filter=&lt;br /&gt;
        -o local_recipient_maps=&lt;br /&gt;
        -o relay_recipient_maps=&lt;br /&gt;
        -o smtpd_restriction_classes=&lt;br /&gt;
        -o smtpd_client_restrictions=&lt;br /&gt;
        -o smtpd_helo_restrictions=&lt;br /&gt;
        -o smtpd_sender_restrictions=&lt;br /&gt;
        -o smtpd_recipient_restrictions=permit_mynetworks,reject&lt;br /&gt;
        -o mynetworks=127.0.0.0/8&lt;br /&gt;
        -o strict_rfc821_envelopes=yes&lt;br /&gt;
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks&lt;br /&gt;
#        -o smtpd_bind_address=127.0.0.1&lt;br /&gt;
&lt;br /&gt;
#Spamassasin&lt;br /&gt;
spamassassin  unix  -   n     n     -   -   pipe&lt;br /&gt;
    user=spamd    argv=/usr/bin/spamc -f  -e&lt;br /&gt;
    /usr/sbin/sendmail -oi -f ${sender} ${recipient}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMTPD.conf ==&lt;br /&gt;
&lt;br /&gt;
Avant d'aller plus loin, il est important de veiller à ce que le fichier smtpd.conf soit créé dans /etc/postfix/sasl/ avec les paramètres&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pwcheck_method: saslauthd&lt;br /&gt;
mech_list: PLAIN LOGIN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En effet : l'utilisation de la balise &amp;quot;smtpd_sasl_path = variable&amp;quot; implique d'un fichier /etc/postfix/sasl/[variable].conf soit créé et instancié.&lt;br /&gt;
Ce fichier est utilisé directement par postfix pour configurer l'accès SASL. Sinon, des messages RCPT TO style Relay Acces Denied ou Acces Denied peuvent se produire.&lt;br /&gt;
&lt;br /&gt;
== [[Postfix-TLS]] ==&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
Le disclaimer est un service qui permet de rajouter un message (typiquement une clause de confidentialité) à la fin des mails. Dans la suite, nous verrons comment modifier le disclaimer afin qu'il n'ajoute un message que pour les mails sortants&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Pour l'instant, l'installation est réalisé grâce à la commande ''apt''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Console root | apt-get install altermime }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
Une fois installé, nous allons pouvoir configurer altermime mais avant cela, nous allons créer un utilisateur spécifique ainsi que les différents dossier dont doit disposer altermime&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
useradd -r -c &amp;quot;Postfix Filters&amp;quot; -d /var/spool/filter filter&lt;br /&gt;
mkdir /var/spool/filter&lt;br /&gt;
chown filter:filter /var/spool/filter&lt;br /&gt;
chmod 750 /var/spool/filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois cela réalisé, il nous faut créer le script disclaimer dans {{ File | /etc/postfix/disclaimer }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# Localize these.&lt;br /&gt;
INSPECT_DIR=/var/spool/filter&lt;br /&gt;
SENDMAIL=/usr/sbin/sendmail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Exit codes from &amp;lt;sysexits.h&amp;gt;&lt;br /&gt;
EX_TEMPFAIL=75&lt;br /&gt;
EX_UNAVAILABLE=69&lt;br /&gt;
&lt;br /&gt;
# Clean up when done or when aborting.&lt;br /&gt;
trap &amp;quot;rm -f in.$$&amp;quot; 0 1 2 3 15&lt;br /&gt;
&lt;br /&gt;
# Start processing.&lt;br /&gt;
cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit&lt;br /&gt;
$EX_TEMPFAIL; }&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt;in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }&lt;br /&gt;
&lt;br /&gt;
#Modification pour uniquement mails sortant&lt;br /&gt;
# obtain From address&lt;br /&gt;
#from_address=`grep -m 1 &amp;quot;From:&amp;quot; in.$$ | cut -d &amp;quot;&amp;lt;&amp;quot; -f 2 | cut -d &amp;quot;&amp;gt;&amp;quot; -f 1`&lt;br /&gt;
to_address=`grep -m 1 &amp;quot;To:&amp;quot; in.$$ | cut -d : -f 2 | cut -d @ -f 2`&lt;br /&gt;
&lt;br /&gt;
#echo $from_address &amp;gt; /tmp/from.txt&lt;br /&gt;
#echo $to_address &amp;gt; /tmp/to.txt&lt;br /&gt;
&lt;br /&gt;
if [ $to_address != &amp;quot;admin.diouxx.be&amp;quot; ]   &lt;br /&gt;
then&lt;br /&gt;
        /usr/bin/altermime --input=in.$$ \&lt;br /&gt;
                        --disclaimer=/etc/postfix/disclaimer.txt \&lt;br /&gt;
                        --disclaimer-html=/etc/postfix/disclaimer.html \&lt;br /&gt;
                        --xheader=&amp;quot;X-Copyrighted-Material: Please visit http://www.company.com/privacy.htm&amp;quot; || \&lt;br /&gt;
                                { echo Message content rejected; exit $EX_UNAVAILABLE; }&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
$SENDMAIL -oi &amp;quot;$@&amp;quot; &amp;lt;in.$$&lt;br /&gt;
&lt;br /&gt;
exit $?&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Note | La modification par rapport au script d'origine se situe au niveau du '''IF'''. En effet, le script va récupérer le champ du destinataire et vérifier si son adresse mail correspond au domaine du serveur postfix ou non. Si ce n'est pas le cas, il s'agit d'un mail sortant }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut également modifier le propriétaire du script ainsi que les droits&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Console root | chgrp filter /etc/postfix/disclaimer&amp;lt;br&amp;gt;[root@ordi ~]# chmod 750 /etc/postfix/disclaimer }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est nécessaire maintenant de créer le fichier {{ File | /etc/postfix/disclaimer.txt }} qui va contenir le message à rajouter aux mails sortant.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a modifier le fichier {{ File | /etc/postfix/master.cf }} afin de lui indiquer qu'il doit utiliser le service disclaimer pour envoyer les mails. Pour cela, il faut rajouter ces deux lignes si au début du fichier&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Postfix master process configuration file.  For details on the format&lt;br /&gt;
# of the file, see the master(5) manual page (command: &amp;quot;man 5 master&amp;quot;).&lt;br /&gt;
#&lt;br /&gt;
# Do not forget to execute &amp;quot;postfix reload&amp;quot; after editing this file.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
# service type  private unpriv  chroot  wakeup  maxproc command + args&lt;br /&gt;
#               (yes)   (yes)   (yes)   (never) (100)&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
smtp      inet  n       -       -       -       -       smtpd&lt;br /&gt;
   -o content_filter=dfilt:&lt;br /&gt;
dfilt     unix    -       n       n       -       -       pipe&lt;br /&gt;
    flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redemmarez postfix pour qu'il prenne en compte les modifications que l'on a apportés&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/postfix restart }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Amavis ==&lt;br /&gt;
&lt;br /&gt;
Amavis est le logiciel qui va permettre de réaliser le transport des mails de postfix jusqu'aux filtres anti-spam et antivirus. Il repassera le mail à postfix pour sa destination final seulement si ce mail est considéré comme &amp;quot;propre&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Pour l'instant, l'installation se réalise avec la commande '''apt'''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Console root | apt-get install amavis }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
Nous allons devoir en premier lieux, configurer postfix pour qu'il accepte de travailler avec amavis. Pour ce faire nous éditions les deux fichier suivants :&lt;br /&gt;
&lt;br /&gt;
* /etc/postfix/master.cf&lt;br /&gt;
* /etc/postfix/main.cf&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour le fichier {{ File | /etc/postfix/master.cf }}, nous allons rajouter les lignes suivantes :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amavis unix - - - - 2 smtp&lt;br /&gt;
        -o smtp_data_done_timeout=1200&lt;br /&gt;
        -o smtp_send_xforward_command=yes&lt;br /&gt;
 &lt;br /&gt;
127.0.0.1:10025 inet n - - - - smtpd&lt;br /&gt;
        -o content_filter=&lt;br /&gt;
        -o local_recipient_maps=&lt;br /&gt;
        -o relay_recipient_maps=&lt;br /&gt;
        -o smtpd_restriction_classes=&lt;br /&gt;
        -o smtpd_client_restrictions=&lt;br /&gt;
        -o smtpd_helo_restrictions=&lt;br /&gt;
        -o smtpd_sender_restrictions=&lt;br /&gt;
        -o smtpd_recipient_restrictions=permit_mynetworks,reject&lt;br /&gt;
        -o mynetworks=127.0.0.0/8&lt;br /&gt;
        -o strict_rfc821_envelopes=yes&lt;br /&gt;
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks&lt;br /&gt;
        -o smtpd_bind_address=127.0.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour le fichier {{ File | /etc/postfix/main.cf }}, ajoutons également les lignes suivantes à la fin du fichier :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
content_filter = amavis:[127.0.0.1]:10024&lt;br /&gt;
receive_override_options = no_address_mappings&lt;br /&gt;
&lt;br /&gt;
smtpd_recipient_restrictions = permit_sasl_authenticated,&lt;br /&gt;
           permit_mynetworks,&lt;br /&gt;
           reject_unauth_destination,&lt;br /&gt;
           check_policy_service inet:127.0.0.1:60000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous devons activer les filtres, normalement il suffit de décommenter les lignes suivantes du fichier {{ File | /etc/amavis/conf.d/15-cintent_filter_mode }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
# You can modify this file to re-enable SPAM checking through spamassassin&lt;br /&gt;
# and to re-enable antivirus checking.&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Default antivirus checking mode&lt;br /&gt;
# Please note, that anti-virus checking is DISABLED by&lt;br /&gt;
# default.&lt;br /&gt;
# If You wish to enable it, please uncomment the following lines:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@bypass_virus_checks_maps = (&lt;br /&gt;
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Default SPAM checking mode&lt;br /&gt;
# Please note, that anti-spam checking is DISABLED by&lt;br /&gt;
# default.&lt;br /&gt;
# If You wish to enable it, please uncomment the following lines:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@bypass_spam_checks_maps = (&lt;br /&gt;
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);&lt;br /&gt;
&lt;br /&gt;
1;  # ensure a defined return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Il ne nous reste qu'a configurer la mise en quarantaine en éditant le fichier {{ File | /etc/amavis/conf.d/50-user }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Place your configuration directives here.  They will override those in&lt;br /&gt;
# earlier files.&lt;br /&gt;
#&lt;br /&gt;
# See /usr/share/doc/amavisd-new/ for documentation and examples of&lt;br /&gt;
# the directives you can use in this file&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory&lt;br /&gt;
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR&lt;br /&gt;
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory&lt;br /&gt;
# $spam_quarantine_to = &amp;quot;admin\@$mydomain&amp;quot;; # Send Spam to Adminstrator&lt;br /&gt;
# $spam_quarantine_to = undef;                   # Do nothing with Spam&lt;br /&gt;
$final_spam_destiny = D_DISCARD;&lt;br /&gt;
#$spam_admin = &amp;quot;admin\@$mydomain&amp;quot;;          # Where to send Notification&lt;br /&gt;
&lt;br /&gt;
#------------ Do not modify anything below this line -------------&lt;br /&gt;
1;  # ensure a defined return&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il nous faut pas '''oublier''' de créer le répertoire qui va accueillir les mails infectés ou considéré comme spam&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | mkdir /var/spool/virusmails&amp;lt;br&amp;gt;[root@ordi ~]# chown amavis:amavis /var/spool/virusmails }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | L'emplacement du dossier qui contiendra les mails infectés ou considéré comme spam est renseigné via la variable '''$QUARANTINEDIR''' }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Il reste encore l'installation et la configuration de spamassasin et clamav&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spamassassin ==&lt;br /&gt;
&lt;br /&gt;
Spamassassin est le logiciel qui comme son nom l'indique va permettre de détecter si les mails que l'ont reçoit sont des spams ou non&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Pour l'instant, l'installation se réalise avec la commande '''apt'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt-get install spamassassin }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
La configuration de spamassassin se réalise avec le fichier {{ File | /etc/default/spamassassin}} et {{ File | /etc/spamassassin/local.cf}}. Normalement, le fichier devrait ressembler à ceci. Tandis que le fichier {{ File | /etc/postfix/master.cf }} doit être modififié afin d'indiquer à postfix qu'il doit utiliser spamassasin&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== /etc/postfix/master.cf ====&lt;br /&gt;
Au début du fichier la section consacré à smtp doit ressembler à ceci :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Postfix master process configuration file.  For details on the format&lt;br /&gt;
# of the file, see the master(5) manual page (command: &amp;quot;man 5 master&amp;quot;).&lt;br /&gt;
#&lt;br /&gt;
# Do not forget to execute &amp;quot;postfix reload&amp;quot; after editing this file.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
# service type  private unpriv  chroot  wakeup  maxproc command + args&lt;br /&gt;
#               (yes)   (yes)   (yes)   (never) (100)&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
&lt;br /&gt;
smtp      inet  n       -       -       -       -       smtpd&lt;br /&gt;
   -o content_filter=spamassassin&lt;br /&gt;
   -o content_filter=dfilt:&lt;br /&gt;
dfilt     unix    -       n       n       -       -       pipe&lt;br /&gt;
    flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Avertissement | il est impératif que la ligne spamassassin soit avant la ligne dfit. Sans cela, le disclaimer ne sera pas mis pour les mails sortant }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== /etc/default/spamassassin ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/default/spamassassin&lt;br /&gt;
# Duncan Findlay&lt;br /&gt;
&lt;br /&gt;
# WARNING: please read README.spamd before using.&lt;br /&gt;
# There may be security risks.&lt;br /&gt;
&lt;br /&gt;
# Change to one to enable spamd&lt;br /&gt;
ENABLED=1&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# See man spamd for possible options. The -d option is automatically added.&lt;br /&gt;
SAHOME=&amp;quot;/var/lib/spamassassin/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# SpamAssassin uses a preforking model, so be careful! You need to&lt;br /&gt;
# make sure --max-children is not set to anything higher than 5,&lt;br /&gt;
# unless you know what you're doing.&lt;br /&gt;
&lt;br /&gt;
OPTIONS=&amp;quot;--create-prefs --max-children 5 --username spamd --helper-home-dir ${SAHOME} -s ${SAHOME}spamd.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Pid file&lt;br /&gt;
# Where should spamd write its PID to file? If you use the -u or&lt;br /&gt;
# --username option above, this needs to be writable by that user.&lt;br /&gt;
# Otherwise, the init script will not be able to shut spamd down.&lt;br /&gt;
PIDFILE=&amp;quot;${SAHOME}spamd.pid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Set nice level of spamd&lt;br /&gt;
#NICE=&amp;quot;--nicelevel 15&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Cronjob&lt;br /&gt;
# Set to anything but 0 to enable the cron job to automatically update&lt;br /&gt;
# spamassassin's rules on a nightly basis&lt;br /&gt;
CRON=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== /etc/spamassassin/local.cf ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is the right place to customize your installation of SpamAssassin.&lt;br /&gt;
#&lt;br /&gt;
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be&lt;br /&gt;
# tweaked.&lt;br /&gt;
#&lt;br /&gt;
# Only a small subset of options are listed below&lt;br /&gt;
#&lt;br /&gt;
###########################################################################&lt;br /&gt;
&lt;br /&gt;
#   Add *****SPAM***** to the Subject header of spam e-mails&lt;br /&gt;
#&lt;br /&gt;
 rewrite_header Subject *****SPAM - SPAM_SCORE_*****&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Save spam messages as a message/rfc822 MIME attachment instead of&lt;br /&gt;
#   modifying the original message (0: off, 2: use text/plain instead)&lt;br /&gt;
#&lt;br /&gt;
 report_safe 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Set which networks or hosts are considered 'trusted' by your mail&lt;br /&gt;
#   server (i.e. not spammers)&lt;br /&gt;
#&lt;br /&gt;
# trusted_networks 212.17.35.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Set file-locking method (flock is not safe over NFS, but is faster)&lt;br /&gt;
#&lt;br /&gt;
# lock_method flock&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Set the threshold at which a message is considered spam (default: 5.0)&lt;br /&gt;
#&lt;br /&gt;
 required_score 2.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Use Bayesian classifier (default: 1)&lt;br /&gt;
#&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
&lt;br /&gt;
#   Bayesian classifier auto-learning (default: 1)&lt;br /&gt;
#&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Set headers which may provide inappropriate cues to the Bayesian&lt;br /&gt;
#   classifier&lt;br /&gt;
#&lt;br /&gt;
# bayes_ignore_header X-Bogosity&lt;br /&gt;
# bayes_ignore_header X-Spam-Flag&lt;br /&gt;
# bayes_ignore_header X-Spam-Status&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Some shortcircuiting, if the plugin is enabled&lt;br /&gt;
# &lt;br /&gt;
ifplugin Mail::SpamAssassin::Plugin::Shortcircuit&lt;br /&gt;
#&lt;br /&gt;
#   default: strongly-whitelisted mails are *really* whitelisted now, if the&lt;br /&gt;
#   shortcircuiting plugin is active, causing early exit to save CPU load.&lt;br /&gt;
#   Uncomment to turn this on&lt;br /&gt;
#&lt;br /&gt;
# shortcircuit USER_IN_WHITELIST       on&lt;br /&gt;
# shortcircuit USER_IN_DEF_WHITELIST   on&lt;br /&gt;
# shortcircuit USER_IN_ALL_SPAM_TO     on&lt;br /&gt;
# shortcircuit SUBJECT_IN_WHITELIST    on&lt;br /&gt;
&lt;br /&gt;
#   the opposite; blacklisted mails can also save CPU&lt;br /&gt;
#&lt;br /&gt;
# shortcircuit USER_IN_BLACKLIST       on&lt;br /&gt;
# shortcircuit USER_IN_BLACKLIST_TO    on&lt;br /&gt;
# shortcircuit SUBJECT_IN_BLACKLIST    on&lt;br /&gt;
&lt;br /&gt;
#   if you have taken the time to correctly specify your &amp;quot;trusted_networks&amp;quot;,&lt;br /&gt;
#   this is another good way to save CPU&lt;br /&gt;
#&lt;br /&gt;
# shortcircuit ALL_TRUSTED             on&lt;br /&gt;
&lt;br /&gt;
#   and a well-trained bayes DB can save running rules, too&lt;br /&gt;
#&lt;br /&gt;
# shortcircuit BAYES_99                spam&lt;br /&gt;
# shortcircuit BAYES_00                ham&lt;br /&gt;
&lt;br /&gt;
# Enable or disable network checks&lt;br /&gt;
skip_rbl_checks         0&lt;br /&gt;
use_razor2              0&lt;br /&gt;
use_dcc                 0&lt;br /&gt;
use_pyzor               0&lt;br /&gt;
&lt;br /&gt;
endif # Mail::SpamAssassin::Plugin::Shortcircuit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par acquis de conscience, vérifier que le dossier renseigner par la variable SAHOME existe bien et qu'il appartienne bien à l'utilisateur spamd.&lt;br /&gt;
Si ce n'est pas le cas, exécutez les commandes suivantes :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | groupadd -g 5001 spamd&amp;lt;br&amp;gt;[root@ordi ~]# useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd&amp;lt;br&amp;gt;[root@ordi ~]# mkdir /var/lib/spamassassin&amp;lt;br&amp;gt;[root@ordi ~]# chown spamd:spamd /var/lib/spamassassin&amp;lt;br&amp;gt;[root@ordi ~]# chmod 755 /var/lib/spamassassin }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mise a jour de la base SPAM ===&lt;br /&gt;
&lt;br /&gt;
Pour mettre a jour la base anti-spam, il suffit d’exécuter la commande suivante : &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root |  sa-update -D }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | On peux exécuter cette commande dans une tache cron afin de mettre à jour la bas tous les soirs }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le service spamassassin est maintenant configurer.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ClamAV ==&lt;br /&gt;
&lt;br /&gt;
ClamAV est le logiciel anti-virus qui va scanner tous les mails que l'on reçoit&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Pour l'instant, l'installation se réalise avec la commande '''apt'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt-get install clamav clamav-daemon }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
La seule configuration à réalisé est de rajouter l'utilisateur clamav, qui a été crée lors de l'installation du paquet, au groupe amavis : &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | adduser clamav amavis&amp;lt;br&amp;gt;Ajout de l'utilisateur « clamav » au groupe « amavis »...&amp;lt;br&amp;gt;Ajout de l'utilisateur clamav au groupe amavis&amp;lt;br&amp;gt;Fait. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Test de Spamassassin et Clamav ==&lt;br /&gt;
&lt;br /&gt;
Avant de pouvoir tester le bon fonctionnement de Spamassassin et Clamv, il est nécessaire de démarrer/redémarrer les services dans l'ordre suivant :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/spamassassin restart&amp;lt;br&amp;gt;Starting SpamAssassin Mail Filter Daemon: spamd. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/amavis restart&amp;lt;br&amp;gt;Stopping amavisd: amavisd-new.&amp;lt;br&amp;gt;Starting amavisd: amavisd-new. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/clamav-daemon restart&amp;lt;br&amp;gt;Stopping ClamAV daemon: clamd.&amp;lt;br&amp;gt;Starting ClamAV daemon: clamd.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/postfix restart&amp;lt;br&amp;gt;Stopping Postfix Mail Transport Agent: postfix.&amp;lt;br&amp;gt;Starting Postfix Mail Transport Agent: postfix.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test de Spamassassin ===&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt&lt;br /&gt;
Il suffit de coller cette ligne dans un mail et de l'envoyer :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il sera détecté comme Spam si tout va bien&lt;br /&gt;
&lt;br /&gt;
=== Test de Clamav ===&lt;br /&gt;
&lt;br /&gt;
Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si tout se passe correctement, le mail sera placé en quarantaine.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Pour vérifier le bon fonctionnement de l'anti-spam et l'anti-virus, consulter le fichier log {{ File | /var/log/mail.log }}. On peux utiliser la commande ''tail -f /var/log/mail.log'' pour plus de faciliter }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Submission ==&lt;br /&gt;
&lt;br /&gt;
Les manipulations décrites ci-dessus permettent d'activer une authentification sécurisée sur le port 25/tcp. Or, dans le cadre de la lutte ant-virus et anti-spam, ce port est de plus en plus souvent filtré dans les réseaux, surtout les réseaux publics. Si nous proposons un service sur le port 25/tcp, il risque donc de ne pas être accessible depuis n'importe où...&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, on va configurer Postfix pour qu'il sache recevoir des connexions sur le port 587/tcp (submission). On imposera que ces connexions soient chiffrées en TLS et on imposera également une authentification SASL. Nous proposerons ainsi à nos utilisateurs un service leur permettant d'envoyer des mails depuis n'importe quel client de messagerie connecté à Internet (le port 587/tcp n'est pas filtré puisqu'il est censé toujours proposer des services avec authentification, donc pas (trop) de spam ni virus).&lt;br /&gt;
&lt;br /&gt;
Cette technique est décrite dans la RFC 2476.&lt;br /&gt;
&lt;br /&gt;
Pour activer le service, il suffit de le rajouter/décommenter dans le fichier /etc/postfix/master.cf :&lt;br /&gt;
&lt;br /&gt;
    # lignes à ajouter dans /etc/postfix/master.cf :&lt;br /&gt;
    # submission : on ouvre le port 587/tcp sur lequel on impose TLS&lt;br /&gt;
    # et on n'accepte que les clients authentifiés. Cela impose d'avoir&lt;br /&gt;
    # déjà configuré TLS et SASL, bien entendu.&lt;br /&gt;
    # service  type private unpriv  chroot  wakeup  maxproc command + args&lt;br /&gt;
    submission inet n       -       -       -       -       smtpd&lt;br /&gt;
            -o smtpd_tls_security_level=encrypt&lt;br /&gt;
            -o smtpd_client_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
&lt;br /&gt;
Notes :&lt;br /&gt;
&lt;br /&gt;
    sur les anciennes versions de Postfix (&amp;lt; 2.3), on indique smtpd_enforce_tls=yes au lieu de smtpd_tls_security_level=encrypt)&lt;br /&gt;
    ne pas oublier d'ouvrir le port 587/tcp vers le serveur au niveau du parefeu : c'est un service à ouvrir à tout Internet &lt;br /&gt;
&lt;br /&gt;
Ce service est notamment activé sur la messagerie de Montréal, vous trouverez le mode d'emploi côté client ici : MessagerieAufOrg/EnvoiSmtpSortant&lt;br /&gt;
&lt;br /&gt;
== Syslog-ng ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Pour installer Syslog, référencez vous à la page consacré à [[Syslog-ng]]&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
Le fichier {{ File | /etc/syslog-ng/syslog-ng.conf }} sur le '''serveur Postfix''' doit ressembler à ceci :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@version: 3.0&lt;br /&gt;
&lt;br /&gt;
######&lt;br /&gt;
# options&lt;br /&gt;
 &lt;br /&gt;
options {&lt;br /&gt;
        # disable the chained hostname format in logs&lt;br /&gt;
        # (default is enabled)&lt;br /&gt;
        chain_hostnames(0);&lt;br /&gt;
 &lt;br /&gt;
        # the time to wait before a died connection is re-established&lt;br /&gt;
        # (default is 60)&lt;br /&gt;
        time_reopen(10);&lt;br /&gt;
 &lt;br /&gt;
        # the time to wait before an idle destination file is closed&lt;br /&gt;
        # (default is 60)&lt;br /&gt;
        time_reap(360);&lt;br /&gt;
 &lt;br /&gt;
        # the number of lines buffered before written to file&lt;br /&gt;
        # you might want to increase this if your disk isn't catching with&lt;br /&gt;
        # all the log messages you get or if you want less disk activity&lt;br /&gt;
        # (say on a laptop)&lt;br /&gt;
        # (default is 0)&lt;br /&gt;
        #sync(0);&lt;br /&gt;
 &lt;br /&gt;
        # the number of lines fitting in the output queue&lt;br /&gt;
        log_fifo_size(2048);&lt;br /&gt;
 &lt;br /&gt;
        # enable or disable directory creation for destination files&lt;br /&gt;
        create_dirs(yes);&lt;br /&gt;
 &lt;br /&gt;
        # default owner, group, and permissions for log files&lt;br /&gt;
        # (defaults are 0, 0, 0600)&lt;br /&gt;
        owner(root);&lt;br /&gt;
        #group(adm);&lt;br /&gt;
        perm(0640);&lt;br /&gt;
 &lt;br /&gt;
        # default owner, group, and permissions for created directories&lt;br /&gt;
        # (defaults are 0, 0, 0700)&lt;br /&gt;
        dir_owner(root);&lt;br /&gt;
        #dir_group(root);&lt;br /&gt;
        dir_perm(0755);&lt;br /&gt;
 &lt;br /&gt;
        # enable or disable DNS usage&lt;br /&gt;
        # syslog-ng blocks on DNS queries, so enabling DNS may lead to&lt;br /&gt;
        # a Denial of Service attack&lt;br /&gt;
        # (default is yes)&lt;br /&gt;
        use_dns(no);&lt;br /&gt;
 &lt;br /&gt;
        # maximum length of message in bytes&lt;br /&gt;
        # this is only limited by the program listening on the /dev/log Unix&lt;br /&gt;
        # socket, glibc can handle arbitrary length log messages, but -- for&lt;br /&gt;
        # example -- syslogd accepts only 1024 bytes&lt;br /&gt;
        # (default is 2048)&lt;br /&gt;
        #log_msg_size(2048);&lt;br /&gt;
 &lt;br /&gt;
	#Disable statistic log messages.&lt;br /&gt;
	stats_freq(0);&lt;br /&gt;
 &lt;br /&gt;
	# Some program send log messages through a private implementation.&lt;br /&gt;
	# and sometimes that implementation is bad. If this happen syslog-ng&lt;br /&gt;
	# may recognise the program name as hostname. Whit this option&lt;br /&gt;
	# we tell the syslog-ng that if a hostname match this regexp than that&lt;br /&gt;
	# is not a real hostname.&lt;br /&gt;
	bad_hostname(&amp;quot;^gconfd$&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
	flush_lines (0);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
############################&lt;br /&gt;
# Sources&lt;br /&gt;
############################&lt;br /&gt;
# all known message sources&lt;br /&gt;
source s_all {&lt;br /&gt;
        # message generated by Syslog-NG&lt;br /&gt;
        #internal();&lt;br /&gt;
        # standard Linux log source (this is the default place for the syslog()&lt;br /&gt;
        # function to send logs to)&lt;br /&gt;
        unix-stream(&amp;quot;/dev/log&amp;quot;);&lt;br /&gt;
        # messages from the kernel&lt;br /&gt;
        #file(&amp;quot;/proc/kmsg&amp;quot; log_prefix(&amp;quot;kernel: &amp;quot;));&lt;br /&gt;
        # use the following line if you want to receive remote UDP logging messages&lt;br /&gt;
        # (this is equivalent to the &amp;quot;-r&amp;quot; syslogd flag)&lt;br /&gt;
        # udp();&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
source postfix {&lt;br /&gt;
	#file(&amp;quot;/var/log/mail.err&amp;quot; follow_freq(1) flags(no-parse));&lt;br /&gt;
	#file(&amp;quot;/var/log/mail.info&amp;quot; follow_freq(1) flags(no-parse));&lt;br /&gt;
	file(&amp;quot;/var/log/mail.log&amp;quot; follow_freq(1) flags(no-parse));&lt;br /&gt;
	#file(&amp;quot;/var/log/mail.warn&amp;quot; follow_freq(1) flags(no-parse));&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
###########################&lt;br /&gt;
# Destinations&lt;br /&gt;
###########################&lt;br /&gt;
#Serveur distant&lt;br /&gt;
destination srv_dist {&lt;br /&gt;
	udp (&amp;quot;192.168.100.20&amp;quot; port(514));&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
#Local&lt;br /&gt;
destination local_messages {&lt;br /&gt;
	file(&amp;quot;/var/log/syslog-ng/messages&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
destination postfix {&lt;br /&gt;
        file(&amp;quot;/var/log/syslog-ng/$HOST/postfix.log&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
################################&lt;br /&gt;
# Filters&lt;br /&gt;
################################&lt;br /&gt;
# all messages from the auth and authpriv facilities&lt;br /&gt;
filter f_auth { facility(auth, authpriv); };&lt;br /&gt;
 &lt;br /&gt;
# all messages except from the auth and authpriv facilities&lt;br /&gt;
filter f_syslog { not facility(auth, authpriv); };&lt;br /&gt;
 &lt;br /&gt;
# respectively: messages from the cron, daemon, kern, lpr, mail, news, user,&lt;br /&gt;
# and uucp facilities&lt;br /&gt;
filter f_cron { facility(cron); };&lt;br /&gt;
filter f_daemon { facility(daemon); };&lt;br /&gt;
filter f_kern { facility(kern); };&lt;br /&gt;
filter f_lpr { facility(lpr); };&lt;br /&gt;
filter f_mail { facility(mail); };&lt;br /&gt;
filter f_news { facility(news); };&lt;br /&gt;
filter f_user { facility(user); };&lt;br /&gt;
filter f_uucp { facility(uucp); };&lt;br /&gt;
 &lt;br /&gt;
# some filters to select messages of priority greater or equal to info, warn,&lt;br /&gt;
# and err&lt;br /&gt;
# (equivalents of syslogd's *.info, *.warn, and *.err)&lt;br /&gt;
filter f_at_least_info { level(info..emerg); };&lt;br /&gt;
filter f_at_least_notice { level(notice..emerg); };&lt;br /&gt;
filter f_at_least_warn { level(warn..emerg); };&lt;br /&gt;
filter f_at_least_err { level(err..emerg); };&lt;br /&gt;
filter f_at_least_crit { level(crit..emerg); };&lt;br /&gt;
 &lt;br /&gt;
# all messages of priority debug not coming from the auth, authpriv, news, and&lt;br /&gt;
# mail facilities&lt;br /&gt;
filter f_debug { level(debug) and not facility(auth, authpriv, news, mail); };&lt;br /&gt;
 &lt;br /&gt;
# all messages of info, notice, or warn priority not coming form the auth,&lt;br /&gt;
# authpriv, cron, daemon, mail, and news facilities&lt;br /&gt;
filter f_messages {&lt;br /&gt;
        level(info,notice,warn)&lt;br /&gt;
            and not facility(auth,authpriv,cron,daemon,mail,news);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
# messages with priority emerg&lt;br /&gt;
filter f_emerg { level(emerg); };&lt;br /&gt;
 &lt;br /&gt;
# complex filter for messages usually sent to the xconsole&lt;br /&gt;
filter f_xconsole {&lt;br /&gt;
    facility(daemon,mail)&lt;br /&gt;
        or level(debug,info,notice,warn)&lt;br /&gt;
        or (facility(news)&lt;br /&gt;
                and level(crit,err,notice));&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
###################################################&lt;br /&gt;
# Filtre &amp;quot;perso&amp;quot;&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
filter postfix { program(&amp;quot;postfix&amp;quot;) or program(&amp;quot;cyrus&amp;quot;); };&lt;br /&gt;
 &lt;br /&gt;
######&lt;br /&gt;
# logs&lt;br /&gt;
# order matters if you use &amp;quot;flags(final);&amp;quot; to mark the end of processing in a&lt;br /&gt;
# &amp;quot;log&amp;quot; statement&lt;br /&gt;
 &lt;br /&gt;
# these rules provide the same behavior as the commented original syslogd rules&lt;br /&gt;
 &lt;br /&gt;
#log {&lt;br /&gt;
#        source(s_all);&lt;br /&gt;
#	destination(srv_dist);&lt;br /&gt;
#	filter(f_auth);&lt;br /&gt;
#};&lt;br /&gt;
&lt;br /&gt;
log {&lt;br /&gt;
        source(s_all);&lt;br /&gt;
	filter(postfix);&lt;br /&gt;
        destination(postfix);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
log {&lt;br /&gt;
	source(s_all);&lt;br /&gt;
	destination(srv_dist);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
#log {&lt;br /&gt;
#	source(s_all);&lt;br /&gt;
#	destination(local_messages);&lt;br /&gt;
#};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Concernant la machine ayant le rôle de serveur log, Il faut modifier le fichier {{ File | /etc/syslog-ng/syslog-ng.conf }} en rajoutant les parties suivantes : &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
#Partie Destination&lt;br /&gt;
destination postfix {&lt;br /&gt;
        file(&amp;quot;/var/log/syslog-ng/$HOST/$DAY.$MONTH.$YEAR-postfix.log&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#Partie Filtre&lt;br /&gt;
filter postfix { program(&amp;quot;postfix&amp;quot;); };&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#Partie Log paths&lt;br /&gt;
log {&lt;br /&gt;
        source(local);&lt;br /&gt;
        filter(postfix);&lt;br /&gt;
        destination(postfix);&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
Pour la migration voir [[Imapsync|ICI]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== setaclmailbox: cyrus: lrswipcda: System I/O error ===&lt;br /&gt;
&lt;br /&gt;
Si on rencontre l'erreur suivante sur un utilisateur mail, il faut reconstruire sa boite mail.&lt;br /&gt;
Pour ce faire, il faut se connecter en tant qu'utilisateur cyrus :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su cyrus }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Reconstruire la boite mail :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/cyrreconstruct -rxf user.nomUtilisateur&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== testsaslauthd : &amp;quot;connect() : No such file or directory 0&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Si lors d'un redémarrage du serveur mail ou d'un autre service et que vous tentez de réaliser un '''testsaslauthd''', il se peut que l'erreur '''connect() : No such file or directory 0'''&lt;br /&gt;
&lt;br /&gt;
Il faut refaire un lien symbolique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -rf /var/run/saslauthd&lt;br /&gt;
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour automatiser le tout, on peux rajouter cette commande au fichier {{ File | /etc/rc.local }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Commande pour Postfix&lt;br /&gt;
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procédures ==&lt;br /&gt;
&lt;br /&gt;
=== Manipulation Queue ===&lt;br /&gt;
*Vider la queue : postsuper -d ALL&lt;br /&gt;
*Lister les messages : postqueue -p&lt;br /&gt;
*Supprimer message : postsuper -d ID ( L'ID est donné via la commande du dessus)&lt;br /&gt;
*Mettre un messages en attente (hold) : postsuper -h ID&lt;br /&gt;
*Remettre un messages en mode normale (actif) : postsuper -H ID&lt;br /&gt;
*Remettre en Queue un message : postsuper -r ID&lt;br /&gt;
*Pour tous les messages : postsuper -r ID&lt;br /&gt;
*Afficher le contenu d'un message : postcat -q ID&lt;br /&gt;
*Forcer l'envoie des messages en Queue (flush) : postqueue -f&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Créer nouvelle boite mail ===&lt;br /&gt;
{{ Avertissement | L'utilisateur doit d'abord être créée dans le LDAP }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour créer une nouvelle boite mail, il faut se connecter sur l'interface administration de cyrus : &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | cyradm --user cyrus localhost&amp;lt;br&amp;gt;Password: }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* --user: cyrus est l'administrateur du service cyrus&lt;br /&gt;
* localhost: Parce qu’on est connecté sur la machine où est installé cyrus&lt;br /&gt;
&lt;br /&gt;
Une fois connecter, on peux créer la nouvelle boite mail :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cm user.nomUtilisateur&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Avertissement | Toujours mettre user. avant le nom d'utilisateur sinon cela crée une boite mail partagée }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peux vérifier qu'elle a bien été créée en rentrant la commande ''lm'' (listmailbox)&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant donner tous les droits à l'utilisateur cyrus sur la boite mail crée. Sans cela, cyrus ne pourra pas la supprimer, lui assigner des quotas ...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setacl user.nomutilisateur cyrus all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas-ci, on assigne tous les droits à l'utilisateur cyrus sur la boite. C'est une question de faciliter pour la manipulation dans le futur des boites mails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour maintenant vérifier l'authentification, on utilise la commande testsaslauthd&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | testsaslauthd -u user -p password&amp;lt;br&amp;gt;0: OK &amp;quot;Success.&amp;quot; }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La partie authentification est réalisé. La dernière étape est de créer l'alias. On édite le fichier {{ File | /etc/aliases }} et on rajoute une ligne au format suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nomUtilisateur: nomUtilisateur@domaine&lt;br /&gt;
...&lt;br /&gt;
denis: denis@diouxx.be&lt;br /&gt;
devleeschauwer: ddevleeschauwer@diouxx.be&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut recharger la base d'alias :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | postalias /etc/aliases }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Supprimer boite mail ===&lt;br /&gt;
&lt;br /&gt;
Pour supprimer une boite mail, on doit, premièrement, se connecter à l'outil cyradm :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | cyradm --user cyrus localhsot&amp;lt;br&amp;gt;Password: }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour supprimer la boite mail, entrez la commande dm :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dm user.nomUtilisateur&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si une erreur ''&amp;quot;deletemailbox: Permission denied&amp;quot;'' apparait, c'est un problème de droits sur la boite. Pour régler cela, rentrez les commandes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
localhost&amp;gt; setacl user.test cyrus all&lt;br /&gt;
localhost&amp;gt; dm user.test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la suppression de la boite mail via la commande ''lm''&lt;br /&gt;
&lt;br /&gt;
Les démarches ci-dessus, expliquent comment supprimer une boite mail mais on peut aussi supprimer l’utilisateur. Quittez l'outil cyradm.&lt;br /&gt;
Pour supprimer l'utilisateur, on utilise la commande saslpasswd&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | saslpasswd -d nomUtilisateur }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peux vérifier la suppression effective via :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | sasldblistusers2 }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Il reste plus qu'a supprimer l'alias de l’utilisateur et recréer la base d'alias.&lt;br /&gt;
&lt;br /&gt;
* Éditez le fichier {{ File | /etc/aliases }} et supprimer la ligne correspondant au nom d'utilisateur&lt;br /&gt;
* Pour reconstruire la base d'alias, entrez la commande ''postalias /etc/aliases''&lt;br /&gt;
&lt;br /&gt;
=== Assigner/Modifier quotas ===&lt;br /&gt;
&lt;br /&gt;
Pour assigner ou modifier les quotas d'un utilisateur, tout se passe dans l'outil cyradm&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | cyradm --user cyrus loclahost&amp;lt;br&amp;gt;Password:  }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | La taille des quotas s'exprime en Ko. Donc si on spécifie 1024, cela veux dire qu'on assigne 1Mo de quotas à l'utilisateur. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
localhost&amp;gt; setquota user.nomUtilisateur 1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier le quota d'un utilisateur :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
localhost&amp;gt; listquota user.nomUtilisateur&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Whitelist/Blacklist ===&lt;br /&gt;
Pour ajouter une adresse mail à la whitelist, il suffit de la rajouter dans le fichier {{ File | /etc/spamassassin/local.cf }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
#WhiteList&lt;br /&gt;
#&lt;br /&gt;
whitelist_from  utilisateur@domaine&lt;br /&gt;
whitelist_from  *@domaine&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
#Blacklist&lt;br /&gt;
#&lt;br /&gt;
blacklist_from utilisateur@domaine&lt;br /&gt;
blacklist_from *@domaine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Restaurer Boit mail ===&lt;br /&gt;
Après avoir restauré la boite mail ( ou une partie de celle-ci ), il faut reconstituer l'indexation.&lt;br /&gt;
Pour ce faire, il faut se connecter en tant qu'utilisateur cyrus :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su cyrus }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Reconstruire la boite mail :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | /usr/sbin/cyrreconstruct -rxf user.nomUtilisateur }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Envoi d'un email lors d'une connexion SSH ===&lt;br /&gt;
Il est possible d'envoyer un mail lorsqu'une personne se connecte à un serveur.&lt;br /&gt;
&lt;br /&gt;
On installe d'abord le paquet '''mailutils''' qui permettra d'envoyer un mail.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo apt-get install mailutils }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A l'installation, on nous demandera de configurer postfix. On choisira une configuration '''Système satellite'''&lt;br /&gt;
* Nom de courrier : domain.be&lt;br /&gt;
* Serveur relais SMTP : smtp.domain.be&lt;br /&gt;
&lt;br /&gt;
Une fois la configuration faite, on peux tester l'envoi de mail via cette commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 'NOTIFICATION - Acces SSH en '` id | cut -d &amp;quot;(&amp;quot; -f2 | cut -d &amp;quot;)&amp;quot; -f1`' sur '`hostname`' le: ' `date` `who` | mail -s &amp;quot;NOTIFICATION - Connexion en &amp;quot;`id | cut -d '(' -f2 | cut -d ')' -f1`&amp;quot; via SSH depuis: `who | cut -d&amp;quot;(&amp;quot; -f2 | cut -d&amp;quot;)&amp;quot; -f1`&amp;quot; mail@domain.be&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour que l'on reçoive un mail lors d'une connexion en tant que root, il suffit de rajouter cette ligne au fichier {{ File | /root/.bashrc }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 'NOTIFICATION - Acces SSH en '` id | cut -d &amp;quot;(&amp;quot; -f2 | cut -d &amp;quot;)&amp;quot; -f1`' sur '`hostname`' le: ' `date` `who` | mail -s &amp;quot;NOTIFICATION - Connexion en &amp;quot;`id | cut -d '(' -f2 | cut -d ')' -f1`&amp;quot; via SSH depuis: `who | cut -d&amp;quot;(&amp;quot; -f2 | cut -d&amp;quot;)&amp;quot; -f1`&amp;quot; mail@domain.be&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant, des qu'on se connecte en root directement via '''ssh''' ou via la commande '''sudo su''', un mail est envoyé.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Système]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Postfix&amp;diff=271</id>
		<title>Postfix</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Postfix&amp;diff=271"/>
				<updated>2017-11-07T07:24:59Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Procédures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page permet de réaliser la mis en place ainsi que la configuration de Postfix }}&lt;br /&gt;
&lt;br /&gt;
Avant toute chose, il est nécessaire d'installer et configurer Cyrus-Imap&lt;br /&gt;
&lt;br /&gt;
== Cyrus Imap ==&lt;br /&gt;
&lt;br /&gt;
Pour l'installation et la configuration de Cyrus Imap, veuillez vous référencer à la [[Cyrus|page suivante]]&lt;br /&gt;
&lt;br /&gt;
== Postfix ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
La configuration de postfix est réalisé via deux fichiers&lt;br /&gt;
&lt;br /&gt;
* main.cf&lt;br /&gt;
* master.cf&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le fichier {{ File | main.cf }} qui permet de paramétrer postfix&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#########################################&lt;br /&gt;
#	REGLES GENERALES		#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
#La règle smtpd_banner définit le message d’accueil du serveur Postfix&lt;br /&gt;
#smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)&lt;br /&gt;
smtpd_banner = DIOUXX&lt;br /&gt;
&lt;br /&gt;
#Desactivation notification terminal&lt;br /&gt;
biff = no&lt;br /&gt;
&lt;br /&gt;
#La règle myhostname renseigne le nom de la machine sur laquelle s’exécute (est installé) Postfix.&lt;br /&gt;
myhostname = your hostname&lt;br /&gt;
&lt;br /&gt;
#La règle mail_name définit le nom du système de messagerie du serveur&lt;br /&gt;
mail_name = Postfix&lt;br /&gt;
&lt;br /&gt;
#La règle mydomain renseigne le nom de domaine auquel appartient la machine sur laquelle s’exécute Postfix.&lt;br /&gt;
mydomain = diouxx.be&lt;br /&gt;
&lt;br /&gt;
#La règle mydestination énumère tous les domaines pour lesquels le serveur Postfix acceptera les mails afin de les distribuer en local.&lt;br /&gt;
#&amp;quot;distribuer en local&amp;quot; signifie: livrer les mails à tous les utilisateurs ayant un compte UNIX ou un compte virtuel (c’est à dire simplement une BàL) sur une machine qui appartient à &lt;br /&gt;
#l’un des domaines de la liste de la règle mydestination.&lt;br /&gt;
#A la place de $mydomain on peut bien sûr mettre le nom de domaine en toute lettre !&lt;br /&gt;
mydestination = $myhostname, www.$mydomain, $mydomain, localhost, localhost.$mydomain&lt;br /&gt;
&lt;br /&gt;
inet_interfaces = all&lt;br /&gt;
&lt;br /&gt;
#proxy_interfaces = 193.190.248.8&lt;br /&gt;
&lt;br /&gt;
#################################&lt;br /&gt;
#	VIRTUAL DOMAIN		#&lt;br /&gt;
#################################&lt;br /&gt;
&lt;br /&gt;
#Le paramètre virtual_mailbox_domains indique à Postfix que test.pass.be est un domaine de boîtes-aux-lettres virtuelles.&lt;br /&gt;
#Si vous l'oubliez, Postfix rejetera le courrier (relais interdit) ou ne sera pas en mesure de le livrer (le courrier de exmple.com bouclera).&lt;br /&gt;
#virtual_mailbox_domains = test.pass.be&lt;br /&gt;
&lt;br /&gt;
#Le paramètre virtual_mailbox_base indique le répertoire de base pour toutes les boîtes aux lettres virtuelles.&lt;br /&gt;
#C'est un mécanisme évitant les erreurs : le courrier ne peut être livré n'importe où.&lt;br /&gt;
#virtual_mailbox_base = /var/spool/cyrus/mail&lt;br /&gt;
&lt;br /&gt;
# Le paramètre virtual_mailbox_maps indique la table des correspondances entre les adresses virtuelles et les boîtes-aux-lettres (ou les répertoires).&lt;br /&gt;
#virtual_mailbox_maps = hash:/etc/postfix/vmailbox&lt;br /&gt;
&lt;br /&gt;
#virtual_alias_domains = /etc/postfix/virtual_domains&lt;br /&gt;
&lt;br /&gt;
#Il est possible de mixer les alias virtuels avec des boîtes-aux-lettres virtuelles.&lt;br /&gt;
#virtual_alias_maps = hash:/etc/postfix/virtual&lt;br /&gt;
&lt;br /&gt;
#virtual_minimum_uid = 100&lt;br /&gt;
#virtual_uid_maps = static:5000&lt;br /&gt;
#virtual_gid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
##########################################&lt;br /&gt;
#	MASQUAGE DES NOMS D'HOTES	 #&lt;br /&gt;
##########################################&lt;br /&gt;
&lt;br /&gt;
#La règle myorigin renseigne la partie réseau de l’adresse d’enveloppe ou d’en-tête des mails qui seront envoyés par Postfix.&lt;br /&gt;
myorigin = $mydomain&lt;br /&gt;
&lt;br /&gt;
#La règle append_at_myorigin initialise ou non (yes/no) la réécriture des adresses en ajoutant à ces adresses&lt;br /&gt;
#append_at_myorigin = yes&lt;br /&gt;
&lt;br /&gt;
#La règle append_dot_mydomain initialise ou non la réécriture des adresses en ajoutant à ces adresses&lt;br /&gt;
#append_dot_mydomain = yes&lt;br /&gt;
&lt;br /&gt;
#La règle masquerade_domains définit les règles de supression des noms d’hôtes et/ou de sous-domaines dans les adresses d’enveloppe et les en-têtes de message de l’expéditeur&lt;br /&gt;
#(et non du destinataire!!!).&lt;br /&gt;
#masquerade_domains = admin.pass.be&lt;br /&gt;
&lt;br /&gt;
#La règle masquerade_exceptions définit les comptes pour lesquels ne s’appliqueront pas les règles de la directive masquerad_domains.&lt;br /&gt;
#masquerade_exceptions =&lt;br /&gt;
&lt;br /&gt;
#########################################&lt;br /&gt;
#	CONTROLE D ACCES RELAYAGE	#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
#La règle mynetworks énumère les réseaux ou adresses des machines qui peuvent utiliser le serveur postfix pour envoyer/relayer du courrier vers l’extérieur.&lt;br /&gt;
mynetworks = 127.0.0.0/8 &lt;br /&gt;
#mynetworks_style = class&lt;br /&gt;
&lt;br /&gt;
#La règle relay_domains indique les domaines et sous-domaines vers lesquels Postfix va relayer (faire suivre) le courrier.&lt;br /&gt;
relay_domains = $mydestination &lt;br /&gt;
&lt;br /&gt;
#La règle relayhost définit la passerelle SMTP qui est rellement connectée à Internet.&lt;br /&gt;
#Cette règle ne concerne que les mails SORTANT.&lt;br /&gt;
relayhost = &lt;br /&gt;
&lt;br /&gt;
#################################&lt;br /&gt;
#	CONFIGURATION TLS	#&lt;br /&gt;
#################################&lt;br /&gt;
smtp_use_tls=no&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
#smtpd_tls_security = may&lt;br /&gt;
smtpd_tls_CApath = /etc/postfix/tls&lt;br /&gt;
smtpd_tls_key_file = /etc/postfix/tls/postfix.key&lt;br /&gt;
smtpd_tls_cert_file = /etc/postfix/tls/postfix.crt&lt;br /&gt;
smtpd_tls_CAfile = /etc/postfix/tls/cacert.pem&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtpd_tls_received_header = yes&lt;br /&gt;
smtpd_tls_session_cache_timeout = 3600s&lt;br /&gt;
tls_random_source = dev:/dev/urandom&lt;br /&gt;
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache&lt;br /&gt;
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
smtp_use_tls = yes&lt;br /&gt;
smtp_tls_security_level = may&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
smtp_tls_note_starttls_offer = yes &lt;br /&gt;
&lt;br /&gt;
#########################################&lt;br /&gt;
#	CONFIGURATION SASL		#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
smtpd_sasl_auth_enable = yes&lt;br /&gt;
smtpd_sasl_local_domain = &lt;br /&gt;
smtpd_sasl_type = cyrus&lt;br /&gt;
smtpd_sasl_path = smtpd&lt;br /&gt;
smtpd_sasl_security_options = noanonymous&lt;br /&gt;
smtpd_sasl_authenticated_header = yes&lt;br /&gt;
broken_sasl_auth_clients = yes&lt;br /&gt;
&lt;br /&gt;
#########################################&lt;br /&gt;
#	TABLE DE RECHERCHES		#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
#La règle default_database_type définit le type de base de données que l’on souhaite utiliser.&lt;br /&gt;
#default_database_type = hash&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#	ALIAS		#&lt;br /&gt;
#########################&lt;br /&gt;
&lt;br /&gt;
#La règle alias_maps définit le type (hash, NIS, LDAP, etc...) et l’emplacement du fichier texte dont se servira la commande postalias ou newalises&lt;br /&gt;
#pour re/construire le(s) fichier(s) de base de données (.db) d’alias utilisés par l’agent de distribution local.&lt;br /&gt;
alias_maps = hash:/etc/aliases&lt;br /&gt;
&lt;br /&gt;
#La règle alias_database définit l’emplacement des fichiers texte dont se servira la commande newaliases pour construire les fichiers base de données d’alias,&lt;br /&gt;
#c’est à dire uniquement les fichiers qui doivent être indexés par la commande newaliases.&lt;br /&gt;
#alias_database = hash:/etc/aliases.db&lt;br /&gt;
alias_database = hash:/etc/aliases&lt;br /&gt;
&lt;br /&gt;
#La règle default_privs définit les privilèges de Postfix lors de la distribution en local à un alias.&lt;br /&gt;
#default_privs = nobody&lt;br /&gt;
&lt;br /&gt;
#La règle allow_mail_to_commands définit dans quel cadre Postfix doit délivrer le courrier à une commande.&lt;br /&gt;
#allow_mail_to_commands = alias,forward, include&lt;br /&gt;
&lt;br /&gt;
#La règle allow_mail_to_files définit dans quel cadre Postfix doit délivrer le courrier à un fichier.&lt;br /&gt;
#allow_mail_to_files = alias,forward, include&lt;br /&gt;
&lt;br /&gt;
#########################################################&lt;br /&gt;
#	REECRITURE ET/OU REDIRECTION D ADRESSES		#&lt;br /&gt;
#########################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#########################################&lt;br /&gt;
#	GESTION FILE D ATTENTE		#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
#La règle queue_directory définit l’emplacement du répertoire racine de la file d’attente de Postfix.&lt;br /&gt;
queue_directory = /var/spool/postfix&lt;br /&gt;
&lt;br /&gt;
#################################&lt;br /&gt;
#	DISTRIBUTION LOCALE	#&lt;br /&gt;
#################################&lt;br /&gt;
&lt;br /&gt;
mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp&lt;br /&gt;
&lt;br /&gt;
local_recipient_maps = $alias_maps&lt;br /&gt;
#local_recipient_maps =&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#	GESTION BAL	#&lt;br /&gt;
#########################&lt;br /&gt;
&lt;br /&gt;
home_mailbox = Maildir/&lt;br /&gt;
&lt;br /&gt;
#Limitation de la taille des BAL&lt;br /&gt;
mailbox_size_limit = 0&lt;br /&gt;
&lt;br /&gt;
#Taille maximal des messages&lt;br /&gt;
#Taille = 20 Mo&lt;br /&gt;
message_size_limit = 20480000&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#	AMAVIS		#&lt;br /&gt;
#########################&lt;br /&gt;
&lt;br /&gt;
content_filter = amavis:[127.0.0.1]:10024&lt;br /&gt;
receive_override_options = no_address_mappings&lt;br /&gt;
&lt;br /&gt;
smtpd_recipient_restrictions = permit_sasl_authenticated,&lt;br /&gt;
	   permit_mynetworks,&lt;br /&gt;
           reject_unauth_destination,&lt;br /&gt;
#           check_policy_service inet:127.0.0.1:60000&lt;br /&gt;
           check_policy_service inet:127.0.0.1:10023&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#	SECURITE	#&lt;br /&gt;
#########################&lt;br /&gt;
&lt;br /&gt;
#Bloque une partie de SPAM en obligeant la requete HELO&lt;br /&gt;
smtpd_helo_required = yes&lt;br /&gt;
&lt;br /&gt;
#Utilisation de postgrey &lt;br /&gt;
#check_policy_service = inet:127.0.0.1:10023&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Le fichier {{ File | master.cf }} permet de définir la manière dont postfix va communiquer via les différents protocoles qu'il accepte&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Postfix master process configuration file.  For details on the format&lt;br /&gt;
# of the file, see the master(5) manual page (command: &amp;quot;man 5 master&amp;quot;).&lt;br /&gt;
#&lt;br /&gt;
# Do not forget to execute &amp;quot;postfix reload&amp;quot; after editing this file.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
# service type  private unpriv  chroot  wakeup  maxproc command + args&lt;br /&gt;
#               (yes)   (yes)   (yes)   (never) (100)&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
smtp      inet  n       -       -       -       -       smtpd&lt;br /&gt;
#	-o content_filter=spamassassin&lt;br /&gt;
#smtp      inet  n       -       -       -       1       postscreen&lt;br /&gt;
#smtpd     pass  -       -       -       -       -       smtpd&lt;br /&gt;
#dnsblog   unix  -       -       -       -       0       dnsblog&lt;br /&gt;
#tlsproxy  unix  -       -       -       -       0       tlsproxy&lt;br /&gt;
submission inet n       -       -       -       -       smtpd&lt;br /&gt;
#  -o syslog_name=postfix/submission&lt;br /&gt;
  -o smtpd_tls_security_level=encrypt&lt;br /&gt;
#  -o smtpd_sasl_auth_enable=yes&lt;br /&gt;
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
#  -o milter_macro_daemon_name=ORIGINATING&lt;br /&gt;
smtps     inet  n       -       -       -       -       smtpd&lt;br /&gt;
#  -o syslog_name=postfix/smtps&lt;br /&gt;
  -o smtpd_tls_wrappermode=yes&lt;br /&gt;
  -o smtpd_sasl_auth_enable=yes&lt;br /&gt;
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
  -o smtpd_client_restrictions=permit_sasl_authenticated&lt;br /&gt;
  -o milter_macro_daemon_name=ORIGINATING&lt;br /&gt;
#628       inet  n       -       -       -       -       qmqpd&lt;br /&gt;
pickup    fifo  n       -       -       60      1       pickup&lt;br /&gt;
cleanup   unix  n       -       -       -       0       cleanup&lt;br /&gt;
qmgr      fifo  n       -       n       300     1       qmgr&lt;br /&gt;
#qmgr     fifo  n       -       n       300     1       oqmgr&lt;br /&gt;
tlsmgr    unix  -       -       -       1000?   1       tlsmgr&lt;br /&gt;
rewrite   unix  -       -       -       -       -       trivial-rewrite&lt;br /&gt;
bounce    unix  -       -       -       -       0       bounce&lt;br /&gt;
defer     unix  -       -       -       -       0       bounce&lt;br /&gt;
trace     unix  -       -       -       -       0       bounce&lt;br /&gt;
verify    unix  -       -       -       -       1       verify&lt;br /&gt;
flush     unix  n       -       -       1000?   0       flush&lt;br /&gt;
proxymap  unix  -       -       n       -       -       proxymap&lt;br /&gt;
proxywrite unix -       -       n       -       1       proxymap&lt;br /&gt;
smtp      unix  -       -       -       -       -       smtp&lt;br /&gt;
relay     unix  -       -       -       -       -       smtp&lt;br /&gt;
	-o smtp_fallback_relay=&lt;br /&gt;
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5&lt;br /&gt;
showq     unix  n       -       -       -       -       showq&lt;br /&gt;
error     unix  -       -       -       -       -       error&lt;br /&gt;
retry     unix  -       -       -       -       -       error&lt;br /&gt;
discard   unix  -       -       -       -       -       discard&lt;br /&gt;
local     unix  -       n       n       -       -       local&lt;br /&gt;
virtual   unix  -       n       n       -       -       virtual&lt;br /&gt;
lmtp      unix  -       -       n       -       -       lmtp&lt;br /&gt;
anvil     unix  -       -       -       -       1       anvil&lt;br /&gt;
scache    unix  -       -       -       -       1       scache&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
# Interfaces to non-Postfix software. Be sure to examine the manual&lt;br /&gt;
# pages of the non-Postfix software to find out what options it wants.&lt;br /&gt;
#&lt;br /&gt;
# Many of the following services use the Postfix pipe(8) delivery&lt;br /&gt;
# agent.  See the pipe(8) man page for information about ${recipient}&lt;br /&gt;
# and other message envelope options.&lt;br /&gt;
# ====================================================================&lt;br /&gt;
#&lt;br /&gt;
# maildrop. See the Postfix MAILDROP_README file for details.&lt;br /&gt;
# Also specify in main.cf: maildrop_destination_recipient_limit=1&lt;br /&gt;
#&lt;br /&gt;
maildrop  unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
#&lt;br /&gt;
# Recent Cyrus versions can use the existing &amp;quot;lmtp&amp;quot; master.cf entry.&lt;br /&gt;
#&lt;br /&gt;
# Specify in cyrus.conf:&lt;br /&gt;
#   lmtp    cmd=&amp;quot;lmtpd -a&amp;quot; listen=&amp;quot;localhost:lmtp&amp;quot; proto=tcp4&lt;br /&gt;
#&lt;br /&gt;
# Specify in main.cf one or more of the following:&lt;br /&gt;
#  mailbox_transport = lmtp:inet:localhost&lt;br /&gt;
#  virtual_transport = lmtp:inet:localhost&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
#&lt;br /&gt;
# Cyrus 2.1.5 (Amos Gouaux)&lt;br /&gt;
# Also specify in main.cf: cyrus_destination_recipient_limit=1&lt;br /&gt;
#&lt;br /&gt;
cyrus     unix  -       n       n       -       -       pipe&lt;br /&gt;
#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
# Old example of delivery via Cyrus.&lt;br /&gt;
#&lt;br /&gt;
#old-cyrus unix  -       n       n       -       -       pipe&lt;br /&gt;
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
#&lt;br /&gt;
# See the Postfix UUCP_README file for configuration details.&lt;br /&gt;
#&lt;br /&gt;
uucp      unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)&lt;br /&gt;
#&lt;br /&gt;
# Other external delivery methods.&lt;br /&gt;
#&lt;br /&gt;
ifmail    unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)&lt;br /&gt;
bsmtp     unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient&lt;br /&gt;
scalemail-backend unix	-	n	n	-	2	pipe&lt;br /&gt;
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}&lt;br /&gt;
mailman   unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py&lt;br /&gt;
  ${nexthop} ${user}&lt;br /&gt;
&lt;br /&gt;
#Amavis&lt;br /&gt;
amavis unix - - - - 2 smtp&lt;br /&gt;
        -o smtp_data_done_timeout=1200&lt;br /&gt;
        -o smtp_send_xforward_command=yes&lt;br /&gt;
 &lt;br /&gt;
127.0.0.1:10025 inet n - - - - smtpd&lt;br /&gt;
        -o content_filter=&lt;br /&gt;
        -o local_recipient_maps=&lt;br /&gt;
        -o relay_recipient_maps=&lt;br /&gt;
        -o smtpd_restriction_classes=&lt;br /&gt;
        -o smtpd_client_restrictions=&lt;br /&gt;
        -o smtpd_helo_restrictions=&lt;br /&gt;
        -o smtpd_sender_restrictions=&lt;br /&gt;
        -o smtpd_recipient_restrictions=permit_mynetworks,reject&lt;br /&gt;
        -o mynetworks=127.0.0.0/8&lt;br /&gt;
        -o strict_rfc821_envelopes=yes&lt;br /&gt;
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks&lt;br /&gt;
#        -o smtpd_bind_address=127.0.0.1&lt;br /&gt;
&lt;br /&gt;
#Spamassasin&lt;br /&gt;
spamassassin  unix  -   n     n     -   -   pipe&lt;br /&gt;
    user=spamd    argv=/usr/bin/spamc -f  -e&lt;br /&gt;
    /usr/sbin/sendmail -oi -f ${sender} ${recipient}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMTPD.conf ==&lt;br /&gt;
&lt;br /&gt;
Avant d'aller plus loin, il est important de veiller à ce que le fichier smtpd.conf soit créé dans /etc/postfix/sasl/ avec les paramètres&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pwcheck_method: saslauthd&lt;br /&gt;
mech_list: PLAIN LOGIN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En effet : l'utilisation de la balise &amp;quot;smtpd_sasl_path = variable&amp;quot; implique d'un fichier /etc/postfix/sasl/[variable].conf soit créé et instancié.&lt;br /&gt;
Ce fichier est utilisé directement par postfix pour configurer l'accès SASL. Sinon, des messages RCPT TO style Relay Acces Denied ou Acces Denied peuvent se produire.&lt;br /&gt;
&lt;br /&gt;
== [[Postfix-TLS]] ==&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
Le disclaimer est un service qui permet de rajouter un message (typiquement une clause de confidentialité) à la fin des mails. Dans la suite, nous verrons comment modifier le disclaimer afin qu'il n'ajoute un message que pour les mails sortants&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Pour l'instant, l'installation est réalisé grâce à la commande ''apt''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Console root | apt-get install altermime }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
Une fois installé, nous allons pouvoir configurer altermime mais avant cela, nous allons créer un utilisateur spécifique ainsi que les différents dossier dont doit disposer altermime&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
useradd -r -c &amp;quot;Postfix Filters&amp;quot; -d /var/spool/filter filter&lt;br /&gt;
mkdir /var/spool/filter&lt;br /&gt;
chown filter:filter /var/spool/filter&lt;br /&gt;
chmod 750 /var/spool/filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois cela réalisé, il nous faut créer le script disclaimer dans {{ File | /etc/postfix/disclaimer }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# Localize these.&lt;br /&gt;
INSPECT_DIR=/var/spool/filter&lt;br /&gt;
SENDMAIL=/usr/sbin/sendmail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Exit codes from &amp;lt;sysexits.h&amp;gt;&lt;br /&gt;
EX_TEMPFAIL=75&lt;br /&gt;
EX_UNAVAILABLE=69&lt;br /&gt;
&lt;br /&gt;
# Clean up when done or when aborting.&lt;br /&gt;
trap &amp;quot;rm -f in.$$&amp;quot; 0 1 2 3 15&lt;br /&gt;
&lt;br /&gt;
# Start processing.&lt;br /&gt;
cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit&lt;br /&gt;
$EX_TEMPFAIL; }&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt;in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }&lt;br /&gt;
&lt;br /&gt;
#Modification pour uniquement mails sortant&lt;br /&gt;
# obtain From address&lt;br /&gt;
#from_address=`grep -m 1 &amp;quot;From:&amp;quot; in.$$ | cut -d &amp;quot;&amp;lt;&amp;quot; -f 2 | cut -d &amp;quot;&amp;gt;&amp;quot; -f 1`&lt;br /&gt;
to_address=`grep -m 1 &amp;quot;To:&amp;quot; in.$$ | cut -d : -f 2 | cut -d @ -f 2`&lt;br /&gt;
&lt;br /&gt;
#echo $from_address &amp;gt; /tmp/from.txt&lt;br /&gt;
#echo $to_address &amp;gt; /tmp/to.txt&lt;br /&gt;
&lt;br /&gt;
if [ $to_address != &amp;quot;admin.diouxx.be&amp;quot; ]   &lt;br /&gt;
then&lt;br /&gt;
        /usr/bin/altermime --input=in.$$ \&lt;br /&gt;
                        --disclaimer=/etc/postfix/disclaimer.txt \&lt;br /&gt;
                        --disclaimer-html=/etc/postfix/disclaimer.html \&lt;br /&gt;
                        --xheader=&amp;quot;X-Copyrighted-Material: Please visit http://www.company.com/privacy.htm&amp;quot; || \&lt;br /&gt;
                                { echo Message content rejected; exit $EX_UNAVAILABLE; }&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
$SENDMAIL -oi &amp;quot;$@&amp;quot; &amp;lt;in.$$&lt;br /&gt;
&lt;br /&gt;
exit $?&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Note | La modification par rapport au script d'origine se situe au niveau du '''IF'''. En effet, le script va récupérer le champ du destinataire et vérifier si son adresse mail correspond au domaine du serveur postfix ou non. Si ce n'est pas le cas, il s'agit d'un mail sortant }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut également modifier le propriétaire du script ainsi que les droits&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Console root | chgrp filter /etc/postfix/disclaimer&amp;lt;br&amp;gt;[root@ordi ~]# chmod 750 /etc/postfix/disclaimer }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est nécessaire maintenant de créer le fichier {{ File | /etc/postfix/disclaimer.txt }} qui va contenir le message à rajouter aux mails sortant.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a modifier le fichier {{ File | /etc/postfix/master.cf }} afin de lui indiquer qu'il doit utiliser le service disclaimer pour envoyer les mails. Pour cela, il faut rajouter ces deux lignes si au début du fichier&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Postfix master process configuration file.  For details on the format&lt;br /&gt;
# of the file, see the master(5) manual page (command: &amp;quot;man 5 master&amp;quot;).&lt;br /&gt;
#&lt;br /&gt;
# Do not forget to execute &amp;quot;postfix reload&amp;quot; after editing this file.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
# service type  private unpriv  chroot  wakeup  maxproc command + args&lt;br /&gt;
#               (yes)   (yes)   (yes)   (never) (100)&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
smtp      inet  n       -       -       -       -       smtpd&lt;br /&gt;
   -o content_filter=dfilt:&lt;br /&gt;
dfilt     unix    -       n       n       -       -       pipe&lt;br /&gt;
    flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redemmarez postfix pour qu'il prenne en compte les modifications que l'on a apportés&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/postfix restart }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Amavis ==&lt;br /&gt;
&lt;br /&gt;
Amavis est le logiciel qui va permettre de réaliser le transport des mails de postfix jusqu'aux filtres anti-spam et antivirus. Il repassera le mail à postfix pour sa destination final seulement si ce mail est considéré comme &amp;quot;propre&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Pour l'instant, l'installation se réalise avec la commande '''apt'''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Console root | apt-get install amavis }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
Nous allons devoir en premier lieux, configurer postfix pour qu'il accepte de travailler avec amavis. Pour ce faire nous éditions les deux fichier suivants :&lt;br /&gt;
&lt;br /&gt;
* /etc/postfix/master.cf&lt;br /&gt;
* /etc/postfix/main.cf&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour le fichier {{ File | /etc/postfix/master.cf }}, nous allons rajouter les lignes suivantes :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amavis unix - - - - 2 smtp&lt;br /&gt;
        -o smtp_data_done_timeout=1200&lt;br /&gt;
        -o smtp_send_xforward_command=yes&lt;br /&gt;
 &lt;br /&gt;
127.0.0.1:10025 inet n - - - - smtpd&lt;br /&gt;
        -o content_filter=&lt;br /&gt;
        -o local_recipient_maps=&lt;br /&gt;
        -o relay_recipient_maps=&lt;br /&gt;
        -o smtpd_restriction_classes=&lt;br /&gt;
        -o smtpd_client_restrictions=&lt;br /&gt;
        -o smtpd_helo_restrictions=&lt;br /&gt;
        -o smtpd_sender_restrictions=&lt;br /&gt;
        -o smtpd_recipient_restrictions=permit_mynetworks,reject&lt;br /&gt;
        -o mynetworks=127.0.0.0/8&lt;br /&gt;
        -o strict_rfc821_envelopes=yes&lt;br /&gt;
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks&lt;br /&gt;
        -o smtpd_bind_address=127.0.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour le fichier {{ File | /etc/postfix/main.cf }}, ajoutons également les lignes suivantes à la fin du fichier :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
content_filter = amavis:[127.0.0.1]:10024&lt;br /&gt;
receive_override_options = no_address_mappings&lt;br /&gt;
&lt;br /&gt;
smtpd_recipient_restrictions = permit_sasl_authenticated,&lt;br /&gt;
           permit_mynetworks,&lt;br /&gt;
           reject_unauth_destination,&lt;br /&gt;
           check_policy_service inet:127.0.0.1:60000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous devons activer les filtres, normalement il suffit de décommenter les lignes suivantes du fichier {{ File | /etc/amavis/conf.d/15-cintent_filter_mode }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
# You can modify this file to re-enable SPAM checking through spamassassin&lt;br /&gt;
# and to re-enable antivirus checking.&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Default antivirus checking mode&lt;br /&gt;
# Please note, that anti-virus checking is DISABLED by&lt;br /&gt;
# default.&lt;br /&gt;
# If You wish to enable it, please uncomment the following lines:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@bypass_virus_checks_maps = (&lt;br /&gt;
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Default SPAM checking mode&lt;br /&gt;
# Please note, that anti-spam checking is DISABLED by&lt;br /&gt;
# default.&lt;br /&gt;
# If You wish to enable it, please uncomment the following lines:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@bypass_spam_checks_maps = (&lt;br /&gt;
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);&lt;br /&gt;
&lt;br /&gt;
1;  # ensure a defined return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Il ne nous reste qu'a configurer la mise en quarantaine en éditant le fichier {{ File | /etc/amavis/conf.d/50-user }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Place your configuration directives here.  They will override those in&lt;br /&gt;
# earlier files.&lt;br /&gt;
#&lt;br /&gt;
# See /usr/share/doc/amavisd-new/ for documentation and examples of&lt;br /&gt;
# the directives you can use in this file&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory&lt;br /&gt;
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR&lt;br /&gt;
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory&lt;br /&gt;
# $spam_quarantine_to = &amp;quot;admin\@$mydomain&amp;quot;; # Send Spam to Adminstrator&lt;br /&gt;
# $spam_quarantine_to = undef;                   # Do nothing with Spam&lt;br /&gt;
$final_spam_destiny = D_DISCARD;&lt;br /&gt;
#$spam_admin = &amp;quot;admin\@$mydomain&amp;quot;;          # Where to send Notification&lt;br /&gt;
&lt;br /&gt;
#------------ Do not modify anything below this line -------------&lt;br /&gt;
1;  # ensure a defined return&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il nous faut pas '''oublier''' de créer le répertoire qui va accueillir les mails infectés ou considéré comme spam&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | mkdir /var/spool/virusmails&amp;lt;br&amp;gt;[root@ordi ~]# chown amavis:amavis /var/spool/virusmails }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | L'emplacement du dossier qui contiendra les mails infectés ou considéré comme spam est renseigné via la variable '''$QUARANTINEDIR''' }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Il reste encore l'installation et la configuration de spamassasin et clamav&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spamassassin ==&lt;br /&gt;
&lt;br /&gt;
Spamassassin est le logiciel qui comme son nom l'indique va permettre de détecter si les mails que l'ont reçoit sont des spams ou non&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Pour l'instant, l'installation se réalise avec la commande '''apt'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt-get install spamassassin }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
La configuration de spamassassin se réalise avec le fichier {{ File | /etc/default/spamassassin}} et {{ File | /etc/spamassassin/local.cf}}. Normalement, le fichier devrait ressembler à ceci. Tandis que le fichier {{ File | /etc/postfix/master.cf }} doit être modififié afin d'indiquer à postfix qu'il doit utiliser spamassasin&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== /etc/postfix/master.cf ====&lt;br /&gt;
Au début du fichier la section consacré à smtp doit ressembler à ceci :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Postfix master process configuration file.  For details on the format&lt;br /&gt;
# of the file, see the master(5) manual page (command: &amp;quot;man 5 master&amp;quot;).&lt;br /&gt;
#&lt;br /&gt;
# Do not forget to execute &amp;quot;postfix reload&amp;quot; after editing this file.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
# service type  private unpriv  chroot  wakeup  maxproc command + args&lt;br /&gt;
#               (yes)   (yes)   (yes)   (never) (100)&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
&lt;br /&gt;
smtp      inet  n       -       -       -       -       smtpd&lt;br /&gt;
   -o content_filter=spamassassin&lt;br /&gt;
   -o content_filter=dfilt:&lt;br /&gt;
dfilt     unix    -       n       n       -       -       pipe&lt;br /&gt;
    flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Avertissement | il est impératif que la ligne spamassassin soit avant la ligne dfit. Sans cela, le disclaimer ne sera pas mis pour les mails sortant }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== /etc/default/spamassassin ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/default/spamassassin&lt;br /&gt;
# Duncan Findlay&lt;br /&gt;
&lt;br /&gt;
# WARNING: please read README.spamd before using.&lt;br /&gt;
# There may be security risks.&lt;br /&gt;
&lt;br /&gt;
# Change to one to enable spamd&lt;br /&gt;
ENABLED=1&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# See man spamd for possible options. The -d option is automatically added.&lt;br /&gt;
SAHOME=&amp;quot;/var/lib/spamassassin/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# SpamAssassin uses a preforking model, so be careful! You need to&lt;br /&gt;
# make sure --max-children is not set to anything higher than 5,&lt;br /&gt;
# unless you know what you're doing.&lt;br /&gt;
&lt;br /&gt;
OPTIONS=&amp;quot;--create-prefs --max-children 5 --username spamd --helper-home-dir ${SAHOME} -s ${SAHOME}spamd.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Pid file&lt;br /&gt;
# Where should spamd write its PID to file? If you use the -u or&lt;br /&gt;
# --username option above, this needs to be writable by that user.&lt;br /&gt;
# Otherwise, the init script will not be able to shut spamd down.&lt;br /&gt;
PIDFILE=&amp;quot;${SAHOME}spamd.pid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Set nice level of spamd&lt;br /&gt;
#NICE=&amp;quot;--nicelevel 15&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Cronjob&lt;br /&gt;
# Set to anything but 0 to enable the cron job to automatically update&lt;br /&gt;
# spamassassin's rules on a nightly basis&lt;br /&gt;
CRON=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== /etc/spamassassin/local.cf ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is the right place to customize your installation of SpamAssassin.&lt;br /&gt;
#&lt;br /&gt;
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be&lt;br /&gt;
# tweaked.&lt;br /&gt;
#&lt;br /&gt;
# Only a small subset of options are listed below&lt;br /&gt;
#&lt;br /&gt;
###########################################################################&lt;br /&gt;
&lt;br /&gt;
#   Add *****SPAM***** to the Subject header of spam e-mails&lt;br /&gt;
#&lt;br /&gt;
 rewrite_header Subject *****SPAM - SPAM_SCORE_*****&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Save spam messages as a message/rfc822 MIME attachment instead of&lt;br /&gt;
#   modifying the original message (0: off, 2: use text/plain instead)&lt;br /&gt;
#&lt;br /&gt;
 report_safe 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Set which networks or hosts are considered 'trusted' by your mail&lt;br /&gt;
#   server (i.e. not spammers)&lt;br /&gt;
#&lt;br /&gt;
# trusted_networks 212.17.35.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Set file-locking method (flock is not safe over NFS, but is faster)&lt;br /&gt;
#&lt;br /&gt;
# lock_method flock&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Set the threshold at which a message is considered spam (default: 5.0)&lt;br /&gt;
#&lt;br /&gt;
 required_score 2.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Use Bayesian classifier (default: 1)&lt;br /&gt;
#&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
&lt;br /&gt;
#   Bayesian classifier auto-learning (default: 1)&lt;br /&gt;
#&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Set headers which may provide inappropriate cues to the Bayesian&lt;br /&gt;
#   classifier&lt;br /&gt;
#&lt;br /&gt;
# bayes_ignore_header X-Bogosity&lt;br /&gt;
# bayes_ignore_header X-Spam-Flag&lt;br /&gt;
# bayes_ignore_header X-Spam-Status&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Some shortcircuiting, if the plugin is enabled&lt;br /&gt;
# &lt;br /&gt;
ifplugin Mail::SpamAssassin::Plugin::Shortcircuit&lt;br /&gt;
#&lt;br /&gt;
#   default: strongly-whitelisted mails are *really* whitelisted now, if the&lt;br /&gt;
#   shortcircuiting plugin is active, causing early exit to save CPU load.&lt;br /&gt;
#   Uncomment to turn this on&lt;br /&gt;
#&lt;br /&gt;
# shortcircuit USER_IN_WHITELIST       on&lt;br /&gt;
# shortcircuit USER_IN_DEF_WHITELIST   on&lt;br /&gt;
# shortcircuit USER_IN_ALL_SPAM_TO     on&lt;br /&gt;
# shortcircuit SUBJECT_IN_WHITELIST    on&lt;br /&gt;
&lt;br /&gt;
#   the opposite; blacklisted mails can also save CPU&lt;br /&gt;
#&lt;br /&gt;
# shortcircuit USER_IN_BLACKLIST       on&lt;br /&gt;
# shortcircuit USER_IN_BLACKLIST_TO    on&lt;br /&gt;
# shortcircuit SUBJECT_IN_BLACKLIST    on&lt;br /&gt;
&lt;br /&gt;
#   if you have taken the time to correctly specify your &amp;quot;trusted_networks&amp;quot;,&lt;br /&gt;
#   this is another good way to save CPU&lt;br /&gt;
#&lt;br /&gt;
# shortcircuit ALL_TRUSTED             on&lt;br /&gt;
&lt;br /&gt;
#   and a well-trained bayes DB can save running rules, too&lt;br /&gt;
#&lt;br /&gt;
# shortcircuit BAYES_99                spam&lt;br /&gt;
# shortcircuit BAYES_00                ham&lt;br /&gt;
&lt;br /&gt;
# Enable or disable network checks&lt;br /&gt;
skip_rbl_checks         0&lt;br /&gt;
use_razor2              0&lt;br /&gt;
use_dcc                 0&lt;br /&gt;
use_pyzor               0&lt;br /&gt;
&lt;br /&gt;
endif # Mail::SpamAssassin::Plugin::Shortcircuit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par acquis de conscience, vérifier que le dossier renseigner par la variable SAHOME existe bien et qu'il appartienne bien à l'utilisateur spamd.&lt;br /&gt;
Si ce n'est pas le cas, exécutez les commandes suivantes :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | groupadd -g 5001 spamd&amp;lt;br&amp;gt;[root@ordi ~]# useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd&amp;lt;br&amp;gt;[root@ordi ~]# mkdir /var/lib/spamassassin&amp;lt;br&amp;gt;[root@ordi ~]# chown spamd:spamd /var/lib/spamassassin&amp;lt;br&amp;gt;[root@ordi ~]# chmod 755 /var/lib/spamassassin }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mise a jour de la base SPAM ===&lt;br /&gt;
&lt;br /&gt;
Pour mettre a jour la base anti-spam, il suffit d’exécuter la commande suivante : &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root |  sa-update -D }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | On peux exécuter cette commande dans une tache cron afin de mettre à jour la bas tous les soirs }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le service spamassassin est maintenant configurer.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ClamAV ==&lt;br /&gt;
&lt;br /&gt;
ClamAV est le logiciel anti-virus qui va scanner tous les mails que l'on reçoit&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Pour l'instant, l'installation se réalise avec la commande '''apt'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt-get install clamav clamav-daemon }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
La seule configuration à réalisé est de rajouter l'utilisateur clamav, qui a été crée lors de l'installation du paquet, au groupe amavis : &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | adduser clamav amavis&amp;lt;br&amp;gt;Ajout de l'utilisateur « clamav » au groupe « amavis »...&amp;lt;br&amp;gt;Ajout de l'utilisateur clamav au groupe amavis&amp;lt;br&amp;gt;Fait. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Test de Spamassassin et Clamav ==&lt;br /&gt;
&lt;br /&gt;
Avant de pouvoir tester le bon fonctionnement de Spamassassin et Clamv, il est nécessaire de démarrer/redémarrer les services dans l'ordre suivant :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/spamassassin restart&amp;lt;br&amp;gt;Starting SpamAssassin Mail Filter Daemon: spamd. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/amavis restart&amp;lt;br&amp;gt;Stopping amavisd: amavisd-new.&amp;lt;br&amp;gt;Starting amavisd: amavisd-new. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/clamav-daemon restart&amp;lt;br&amp;gt;Stopping ClamAV daemon: clamd.&amp;lt;br&amp;gt;Starting ClamAV daemon: clamd.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/postfix restart&amp;lt;br&amp;gt;Stopping Postfix Mail Transport Agent: postfix.&amp;lt;br&amp;gt;Starting Postfix Mail Transport Agent: postfix.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test de Spamassassin ===&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt&lt;br /&gt;
Il suffit de coller cette ligne dans un mail et de l'envoyer :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il sera détecté comme Spam si tout va bien&lt;br /&gt;
&lt;br /&gt;
=== Test de Clamav ===&lt;br /&gt;
&lt;br /&gt;
Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si tout se passe correctement, le mail sera placé en quarantaine.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Pour vérifier le bon fonctionnement de l'anti-spam et l'anti-virus, consulter le fichier log {{ File | /var/log/mail.log }}. On peux utiliser la commande ''tail -f /var/log/mail.log'' pour plus de faciliter }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Submission ==&lt;br /&gt;
&lt;br /&gt;
Les manipulations décrites ci-dessus permettent d'activer une authentification sécurisée sur le port 25/tcp. Or, dans le cadre de la lutte ant-virus et anti-spam, ce port est de plus en plus souvent filtré dans les réseaux, surtout les réseaux publics. Si nous proposons un service sur le port 25/tcp, il risque donc de ne pas être accessible depuis n'importe où...&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, on va configurer Postfix pour qu'il sache recevoir des connexions sur le port 587/tcp (submission). On imposera que ces connexions soient chiffrées en TLS et on imposera également une authentification SASL. Nous proposerons ainsi à nos utilisateurs un service leur permettant d'envoyer des mails depuis n'importe quel client de messagerie connecté à Internet (le port 587/tcp n'est pas filtré puisqu'il est censé toujours proposer des services avec authentification, donc pas (trop) de spam ni virus).&lt;br /&gt;
&lt;br /&gt;
Cette technique est décrite dans la RFC 2476.&lt;br /&gt;
&lt;br /&gt;
Pour activer le service, il suffit de le rajouter/décommenter dans le fichier /etc/postfix/master.cf :&lt;br /&gt;
&lt;br /&gt;
    # lignes à ajouter dans /etc/postfix/master.cf :&lt;br /&gt;
    # submission : on ouvre le port 587/tcp sur lequel on impose TLS&lt;br /&gt;
    # et on n'accepte que les clients authentifiés. Cela impose d'avoir&lt;br /&gt;
    # déjà configuré TLS et SASL, bien entendu.&lt;br /&gt;
    # service  type private unpriv  chroot  wakeup  maxproc command + args&lt;br /&gt;
    submission inet n       -       -       -       -       smtpd&lt;br /&gt;
            -o smtpd_tls_security_level=encrypt&lt;br /&gt;
            -o smtpd_client_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
&lt;br /&gt;
Notes :&lt;br /&gt;
&lt;br /&gt;
    sur les anciennes versions de Postfix (&amp;lt; 2.3), on indique smtpd_enforce_tls=yes au lieu de smtpd_tls_security_level=encrypt)&lt;br /&gt;
    ne pas oublier d'ouvrir le port 587/tcp vers le serveur au niveau du parefeu : c'est un service à ouvrir à tout Internet &lt;br /&gt;
&lt;br /&gt;
Ce service est notamment activé sur la messagerie de Montréal, vous trouverez le mode d'emploi côté client ici : MessagerieAufOrg/EnvoiSmtpSortant&lt;br /&gt;
&lt;br /&gt;
== Syslog-ng ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Pour installer Syslog, référencez vous à la page consacré à [[Syslog-ng]]&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
Le fichier {{ File | /etc/syslog-ng/syslog-ng.conf }} sur le '''serveur Postfix''' doit ressembler à ceci :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@version: 3.0&lt;br /&gt;
&lt;br /&gt;
######&lt;br /&gt;
# options&lt;br /&gt;
 &lt;br /&gt;
options {&lt;br /&gt;
        # disable the chained hostname format in logs&lt;br /&gt;
        # (default is enabled)&lt;br /&gt;
        chain_hostnames(0);&lt;br /&gt;
 &lt;br /&gt;
        # the time to wait before a died connection is re-established&lt;br /&gt;
        # (default is 60)&lt;br /&gt;
        time_reopen(10);&lt;br /&gt;
 &lt;br /&gt;
        # the time to wait before an idle destination file is closed&lt;br /&gt;
        # (default is 60)&lt;br /&gt;
        time_reap(360);&lt;br /&gt;
 &lt;br /&gt;
        # the number of lines buffered before written to file&lt;br /&gt;
        # you might want to increase this if your disk isn't catching with&lt;br /&gt;
        # all the log messages you get or if you want less disk activity&lt;br /&gt;
        # (say on a laptop)&lt;br /&gt;
        # (default is 0)&lt;br /&gt;
        #sync(0);&lt;br /&gt;
 &lt;br /&gt;
        # the number of lines fitting in the output queue&lt;br /&gt;
        log_fifo_size(2048);&lt;br /&gt;
 &lt;br /&gt;
        # enable or disable directory creation for destination files&lt;br /&gt;
        create_dirs(yes);&lt;br /&gt;
 &lt;br /&gt;
        # default owner, group, and permissions for log files&lt;br /&gt;
        # (defaults are 0, 0, 0600)&lt;br /&gt;
        owner(root);&lt;br /&gt;
        #group(adm);&lt;br /&gt;
        perm(0640);&lt;br /&gt;
 &lt;br /&gt;
        # default owner, group, and permissions for created directories&lt;br /&gt;
        # (defaults are 0, 0, 0700)&lt;br /&gt;
        dir_owner(root);&lt;br /&gt;
        #dir_group(root);&lt;br /&gt;
        dir_perm(0755);&lt;br /&gt;
 &lt;br /&gt;
        # enable or disable DNS usage&lt;br /&gt;
        # syslog-ng blocks on DNS queries, so enabling DNS may lead to&lt;br /&gt;
        # a Denial of Service attack&lt;br /&gt;
        # (default is yes)&lt;br /&gt;
        use_dns(no);&lt;br /&gt;
 &lt;br /&gt;
        # maximum length of message in bytes&lt;br /&gt;
        # this is only limited by the program listening on the /dev/log Unix&lt;br /&gt;
        # socket, glibc can handle arbitrary length log messages, but -- for&lt;br /&gt;
        # example -- syslogd accepts only 1024 bytes&lt;br /&gt;
        # (default is 2048)&lt;br /&gt;
        #log_msg_size(2048);&lt;br /&gt;
 &lt;br /&gt;
	#Disable statistic log messages.&lt;br /&gt;
	stats_freq(0);&lt;br /&gt;
 &lt;br /&gt;
	# Some program send log messages through a private implementation.&lt;br /&gt;
	# and sometimes that implementation is bad. If this happen syslog-ng&lt;br /&gt;
	# may recognise the program name as hostname. Whit this option&lt;br /&gt;
	# we tell the syslog-ng that if a hostname match this regexp than that&lt;br /&gt;
	# is not a real hostname.&lt;br /&gt;
	bad_hostname(&amp;quot;^gconfd$&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
	flush_lines (0);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
############################&lt;br /&gt;
# Sources&lt;br /&gt;
############################&lt;br /&gt;
# all known message sources&lt;br /&gt;
source s_all {&lt;br /&gt;
        # message generated by Syslog-NG&lt;br /&gt;
        #internal();&lt;br /&gt;
        # standard Linux log source (this is the default place for the syslog()&lt;br /&gt;
        # function to send logs to)&lt;br /&gt;
        unix-stream(&amp;quot;/dev/log&amp;quot;);&lt;br /&gt;
        # messages from the kernel&lt;br /&gt;
        #file(&amp;quot;/proc/kmsg&amp;quot; log_prefix(&amp;quot;kernel: &amp;quot;));&lt;br /&gt;
        # use the following line if you want to receive remote UDP logging messages&lt;br /&gt;
        # (this is equivalent to the &amp;quot;-r&amp;quot; syslogd flag)&lt;br /&gt;
        # udp();&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
source postfix {&lt;br /&gt;
	#file(&amp;quot;/var/log/mail.err&amp;quot; follow_freq(1) flags(no-parse));&lt;br /&gt;
	#file(&amp;quot;/var/log/mail.info&amp;quot; follow_freq(1) flags(no-parse));&lt;br /&gt;
	file(&amp;quot;/var/log/mail.log&amp;quot; follow_freq(1) flags(no-parse));&lt;br /&gt;
	#file(&amp;quot;/var/log/mail.warn&amp;quot; follow_freq(1) flags(no-parse));&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
###########################&lt;br /&gt;
# Destinations&lt;br /&gt;
###########################&lt;br /&gt;
#Serveur distant&lt;br /&gt;
destination srv_dist {&lt;br /&gt;
	udp (&amp;quot;192.168.100.20&amp;quot; port(514));&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
#Local&lt;br /&gt;
destination local_messages {&lt;br /&gt;
	file(&amp;quot;/var/log/syslog-ng/messages&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
destination postfix {&lt;br /&gt;
        file(&amp;quot;/var/log/syslog-ng/$HOST/postfix.log&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
################################&lt;br /&gt;
# Filters&lt;br /&gt;
################################&lt;br /&gt;
# all messages from the auth and authpriv facilities&lt;br /&gt;
filter f_auth { facility(auth, authpriv); };&lt;br /&gt;
 &lt;br /&gt;
# all messages except from the auth and authpriv facilities&lt;br /&gt;
filter f_syslog { not facility(auth, authpriv); };&lt;br /&gt;
 &lt;br /&gt;
# respectively: messages from the cron, daemon, kern, lpr, mail, news, user,&lt;br /&gt;
# and uucp facilities&lt;br /&gt;
filter f_cron { facility(cron); };&lt;br /&gt;
filter f_daemon { facility(daemon); };&lt;br /&gt;
filter f_kern { facility(kern); };&lt;br /&gt;
filter f_lpr { facility(lpr); };&lt;br /&gt;
filter f_mail { facility(mail); };&lt;br /&gt;
filter f_news { facility(news); };&lt;br /&gt;
filter f_user { facility(user); };&lt;br /&gt;
filter f_uucp { facility(uucp); };&lt;br /&gt;
 &lt;br /&gt;
# some filters to select messages of priority greater or equal to info, warn,&lt;br /&gt;
# and err&lt;br /&gt;
# (equivalents of syslogd's *.info, *.warn, and *.err)&lt;br /&gt;
filter f_at_least_info { level(info..emerg); };&lt;br /&gt;
filter f_at_least_notice { level(notice..emerg); };&lt;br /&gt;
filter f_at_least_warn { level(warn..emerg); };&lt;br /&gt;
filter f_at_least_err { level(err..emerg); };&lt;br /&gt;
filter f_at_least_crit { level(crit..emerg); };&lt;br /&gt;
 &lt;br /&gt;
# all messages of priority debug not coming from the auth, authpriv, news, and&lt;br /&gt;
# mail facilities&lt;br /&gt;
filter f_debug { level(debug) and not facility(auth, authpriv, news, mail); };&lt;br /&gt;
 &lt;br /&gt;
# all messages of info, notice, or warn priority not coming form the auth,&lt;br /&gt;
# authpriv, cron, daemon, mail, and news facilities&lt;br /&gt;
filter f_messages {&lt;br /&gt;
        level(info,notice,warn)&lt;br /&gt;
            and not facility(auth,authpriv,cron,daemon,mail,news);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
# messages with priority emerg&lt;br /&gt;
filter f_emerg { level(emerg); };&lt;br /&gt;
 &lt;br /&gt;
# complex filter for messages usually sent to the xconsole&lt;br /&gt;
filter f_xconsole {&lt;br /&gt;
    facility(daemon,mail)&lt;br /&gt;
        or level(debug,info,notice,warn)&lt;br /&gt;
        or (facility(news)&lt;br /&gt;
                and level(crit,err,notice));&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
###################################################&lt;br /&gt;
# Filtre &amp;quot;perso&amp;quot;&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
filter postfix { program(&amp;quot;postfix&amp;quot;) or program(&amp;quot;cyrus&amp;quot;); };&lt;br /&gt;
 &lt;br /&gt;
######&lt;br /&gt;
# logs&lt;br /&gt;
# order matters if you use &amp;quot;flags(final);&amp;quot; to mark the end of processing in a&lt;br /&gt;
# &amp;quot;log&amp;quot; statement&lt;br /&gt;
 &lt;br /&gt;
# these rules provide the same behavior as the commented original syslogd rules&lt;br /&gt;
 &lt;br /&gt;
#log {&lt;br /&gt;
#        source(s_all);&lt;br /&gt;
#	destination(srv_dist);&lt;br /&gt;
#	filter(f_auth);&lt;br /&gt;
#};&lt;br /&gt;
&lt;br /&gt;
log {&lt;br /&gt;
        source(s_all);&lt;br /&gt;
	filter(postfix);&lt;br /&gt;
        destination(postfix);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
log {&lt;br /&gt;
	source(s_all);&lt;br /&gt;
	destination(srv_dist);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
#log {&lt;br /&gt;
#	source(s_all);&lt;br /&gt;
#	destination(local_messages);&lt;br /&gt;
#};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Concernant la machine ayant le rôle de serveur log, Il faut modifier le fichier {{ File | /etc/syslog-ng/syslog-ng.conf }} en rajoutant les parties suivantes : &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
#Partie Destination&lt;br /&gt;
destination postfix {&lt;br /&gt;
        file(&amp;quot;/var/log/syslog-ng/$HOST/$DAY.$MONTH.$YEAR-postfix.log&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#Partie Filtre&lt;br /&gt;
filter postfix { program(&amp;quot;postfix&amp;quot;); };&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#Partie Log paths&lt;br /&gt;
log {&lt;br /&gt;
        source(local);&lt;br /&gt;
        filter(postfix);&lt;br /&gt;
        destination(postfix);&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
Pour la migration voir [[Imapsync|ICI]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== setaclmailbox: cyrus: lrswipcda: System I/O error ===&lt;br /&gt;
&lt;br /&gt;
Si on rencontre l'erreur suivante sur un utilisateur mail, il faut reconstruire sa boite mail.&lt;br /&gt;
Pour ce faire, il faut se connecter en tant qu'utilisateur cyrus :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su cyrus }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Reconstruire la boite mail :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/cyrreconstruct -rxf user.nomUtilisateur&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== testsaslauthd : &amp;quot;connect() : No such file or directory 0&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Si lors d'un redémarrage du serveur mail ou d'un autre service et que vous tentez de réaliser un '''testsaslauthd''', il se peut que l'erreur '''connect() : No such file or directory 0'''&lt;br /&gt;
&lt;br /&gt;
Il faut refaire un lien symbolique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -rf /var/run/saslauthd&lt;br /&gt;
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour automatiser le tout, on peux rajouter cette commande au fichier {{ File | /etc/rc.local }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Commande pour Postfix&lt;br /&gt;
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procédures ==&lt;br /&gt;
&lt;br /&gt;
=== Manipulation Queue ===&lt;br /&gt;
*Vider la queue : postsuper -d ALL&lt;br /&gt;
*Lister les messages : postqueue -p&lt;br /&gt;
*Supprimer message : postsuper -d ID ( L'ID est donné via la commande du dessus)&lt;br /&gt;
*Mettre un messages en attente (hold) : postsuper -h ID&lt;br /&gt;
*Remettre un messages en mode normale (actif) : postsuper -H ID&lt;br /&gt;
*Remettre en Queue un message : postsuper -r ID&lt;br /&gt;
*Pour tous les messages : postsuper -r ID&lt;br /&gt;
*Afficher le contenu d'un message : postcat -q ID&lt;br /&gt;
*Forcer l'envoie des messages en Queue (flush) : postqueue -f&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Créer nouvelle boite mail ===&lt;br /&gt;
{{ Avertissement | L'utilisateur doit d'abord être créée dans le LDAP }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour créer une nouvelle boite mail, il faut se connecter sur l'interface administration de cyrus : &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | cyradm --user cyrus localhost&amp;lt;br&amp;gt;Password: }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* --user: cyrus est l'administrateur du service cyrus&lt;br /&gt;
* localhost: Parce qu’on est connecté sur la machine où est installé cyrus&lt;br /&gt;
&lt;br /&gt;
Une fois connecter, on peux créer la nouvelle boite mail :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cm user.nomUtilisateur&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Avertissement | Toujours mettre user. avant le nom d'utilisateur sinon cela crée une boite mail partagée }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peux vérifier qu'elle a bien été créée en rentrant la commande ''lm'' (listmailbox)&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant donner tous les droits à l'utilisateur cyrus sur la boite mail crée. Sans cela, cyrus ne pourra pas la supprimer, lui assigner des quotas ...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setacl user.nomutilisateur cyrus all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas-ci, on assigne tous les droits à l'utilisateur cyrus sur la boite. C'est une question de faciliter pour la manipulation dans le futur des boites mails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour maintenant vérifier l'authentification, on utilise la commande testsaslauthd&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | testsaslauthd -u user -p password&amp;lt;br&amp;gt;0: OK &amp;quot;Success.&amp;quot; }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La partie authentification est réalisé. La dernière étape est de créer l'alias. On édite le fichier {{ File | /etc/aliases }} et on rajoute une ligne au format suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nomUtilisateur: nomUtilisateur@domaine&lt;br /&gt;
...&lt;br /&gt;
denis: denis@diouxx.be&lt;br /&gt;
devleeschauwer: ddevleeschauwer@diouxx.be&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut recharger la base d'alias :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | postalias /etc/aliases }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Supprimer boite mail ===&lt;br /&gt;
&lt;br /&gt;
Pour supprimer une boite mail, on doit, premièrement, se connecter à l'outil cyradm :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | cyradm --user cyrus localhsot&amp;lt;br&amp;gt;Password: }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour supprimer la boite mail, entrez la commande dm :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dm user.nomUtilisateur&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si une erreur ''&amp;quot;deletemailbox: Permission denied&amp;quot;'' apparait, c'est un problème de droits sur la boite. Pour régler cela, rentrez les commandes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
localhost&amp;gt; setacl user.test cyrus all&lt;br /&gt;
localhost&amp;gt; dm user.test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la suppression de la boite mail via la commande ''lm''&lt;br /&gt;
&lt;br /&gt;
Les démarches ci-dessus, expliquent comment supprimer une boite mail mais on peut aussi supprimer l’utilisateur. Quittez l'outil cyradm.&lt;br /&gt;
Pour supprimer l'utilisateur, on utilise la commande saslpasswd&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | saslpasswd -d nomUtilisateur }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peux vérifier la suppression effective via :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | sasldblistusers2 }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Il reste plus qu'a supprimer l'alias de l’utilisateur et recréer la base d'alias.&lt;br /&gt;
&lt;br /&gt;
* Éditez le fichier {{ File | /etc/aliases }} et supprimer la ligne correspondant au nom d'utilisateur&lt;br /&gt;
* Pour reconstruire la base d'alias, entrez la commande ''postalias /etc/aliases''&lt;br /&gt;
&lt;br /&gt;
=== Assigner/Modifier quotas ===&lt;br /&gt;
&lt;br /&gt;
Pour assigner ou modifier les quotas d'un utilisateur, tout se passe dans l'outil cyradm&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | cyradm --user cyrus loclahost&amp;lt;br&amp;gt;Password:  }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | La taille des quotas s'exprime en Ko. Donc si on spécifie 1024, cela veux dire qu'on assigne 1Mo de quotas à l'utilisateur. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
localhost&amp;gt; setquota user.nomUtilisateur 1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier le quota d'un utilisateur :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
localhost&amp;gt; listquota user.nomUtilisateur&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Whitelist/Blacklist ===&lt;br /&gt;
Pour ajouter une adresse mail à la whitelist, il suffit de la rajouter dans le fichier {{ File | /etc/spamassassin/local.cf }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
#WhiteList&lt;br /&gt;
#&lt;br /&gt;
whitelist_from  utilisateur@domaine&lt;br /&gt;
whitelist_from  *@domaine&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
#Blacklist&lt;br /&gt;
#&lt;br /&gt;
blacklist_from utilisateur@domaine&lt;br /&gt;
blacklist_from *@domaine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Restaurer Boit mail ===&lt;br /&gt;
Après avoir restauré la boite mail ( ou une partie de celle-ci ), il faut reconstituer l'indexation.&lt;br /&gt;
Pour ce faire, il faut se connecter en tant qu'utilisateur cyrus :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su cyrus }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Reconstruire la boite mail :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | /usr/sbin/cyrreconstruct -rxf user.nomUtilisateur }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Envoi d'un email lors d'une connexion SSH ===&lt;br /&gt;
Il est possible d'envoyer un mail lorsqu'une personne se connecte à un serveur.&lt;br /&gt;
&lt;br /&gt;
On installe d'abord le paquet '''mailutils''' qui permettra d'envoyer un mail.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo apt-get install mailutils }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A l'installation, on nous demandera de configurer postfix. On choisira une configuration '''Système satellite'''&lt;br /&gt;
* Nom de courrier : domain.be&lt;br /&gt;
* Serveur relais SMTP : smtp.domain.be&lt;br /&gt;
&lt;br /&gt;
Une fois la configuration faite, on peux tester l'envoi de mail via cette commande :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 'NOTIFICATION - Acces SSH en '` id | cut -d &amp;quot;(&amp;quot; -f2 | cut -d &amp;quot;)&amp;quot; -f1`' sur '`hostname`' le: ' `date` `who` | mail -s &amp;quot;NOTIFICATION - Connexion en &amp;quot;`id | cut -d '(' -f2 | cut -d ')' -f1`&amp;quot; via SSH depuis: `who | cut -d&amp;quot;(&amp;quot; -f2 | cut -d&amp;quot;)&amp;quot; -f1`&amp;quot; mail@domain.be&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour que l'on reçoive un mail lors d'une connexion en tant que root, il suffit de rajouter cette ligne au fichier {{ File | /root/.bashrc }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 'NOTIFICATION - Acces SSH en '` id | cut -d &amp;quot;(&amp;quot; -f2 | cut -d &amp;quot;)&amp;quot; -f1`' sur '`hostname`' le: ' `date` `who` | mail -s &amp;quot;NOTIFICATION - Connexion en &amp;quot;`id | cut -d '(' -f2 | cut -d ')' -f1`&amp;quot; via SSH depuis: `who | cut -d&amp;quot;(&amp;quot; -f2 | cut -d&amp;quot;)&amp;quot; -f1`&amp;quot; mail@domain.be&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant, des qu'on se connecte en root directement via '''ssh''' ou via la commande '''sudo su''', un mail est envoyé.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Système]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=270</id>
		<title>Active Directory</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=270"/>
				<updated>2017-10-12T05:44:19Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }}&lt;br /&gt;
= Interaction =&lt;br /&gt;
== Intégration d'un serveur Linux à l'AD ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration du système avant intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On va d'abord mettre à jour le système&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt update &amp;amp;&amp;amp; apt upgrade -y }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | S'assurer d'avoir une connexion SSH en '''root''' car nous allons désactiver les autres sources d'authentifications s'il y en a déjà configurées. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Modifier le fichier {{ File | /etc/hosts }} pour que le nom de la machine correspondent au nom du domaine à rejoindre.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | nano /etc/hosts }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.1.1       yourmachine.domain.be yourmachine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Modifier les informations pour qu'elles correspondent à votre nom de machine et de domaine }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Au besoin, modifier le fichier {{ File | /etc/nsswitch.conf}} pour retirer toutes occurrences de connexion ldap&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* S'assurer que le dns pointe sur le serveur AD en modifiant au besoin le fichier {{ File | /etc/resolv.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domain domain.be&lt;br /&gt;
search domain.be&lt;br /&gt;
nameserver IP-AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Installation des paquets nécessaire à l'intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour installer et configurer les différents paquets nécessaire à l'authentification des utilisateurs avec notre AD, nous allons nous aider du script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script should join Debian Jessie (8) to an Active Directory domain.&lt;br /&gt;
echo &amp;quot;Please authenticate with your sudo password&amp;quot;&lt;br /&gt;
sudo -v&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which realmd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo apt install krb5-user adcli packagekit realmd -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which ntpd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo apt install ntp -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo mkdir -p /var/lib/samba/private&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter the domain you wish to join: &amp;quot;&lt;br /&gt;
read DOMAIN&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter a domain admin login to use: &amp;quot;&lt;br /&gt;
read ADMIN&lt;br /&gt;
&lt;br /&gt;
sudo realm join --user=$ADMIN $DOMAIN&lt;br /&gt;
&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    echo &amp;quot;AD join failed.  Please run 'journalctl -xn' to determine why.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable sssd&lt;br /&gt;
sudo systemctl start sssd&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;session required pam_mkhomedir.so skel=/etc/skel/ umask=0022&amp;quot; | sudo tee -a /etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
# configure sudo&lt;br /&gt;
sudo apt install libsss-sudo -y&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;%domain\ admins@$DOMAIN ALL=(ALL) ALL&amp;quot; | sudo tee -a /etc/sudoers.d/domain_admins&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;The computer is joined to the domain.  Please reboot, ensure that you are connected to the network, and you should be able to login with domain credentials.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de l’exécution du script, en plus de l'installation des paquets, il sera demandé de renseigné les informations suivantes :&lt;br /&gt;
* Le nom de domaine (ex: yourdomain.be)&lt;br /&gt;
* Le login de l'administrateur du domaine (ex: Administrator)&lt;br /&gt;
* Le mot de passe de l'administrateur du domaine&lt;br /&gt;
&lt;br /&gt;
Une fois le script terminé, nous allons pouvoir passer à la configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour autoriser l'authentification des utilisateurs via notre AD, nous allons devoir modifier différents fichiers&lt;br /&gt;
&lt;br /&gt;
* Le fichier {{ File | /etc/sssd/sssd.conf}} avec la ligne suivants :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 use_fully_qualified_names = False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Un redémarrage est nécessaire après cette modification.'''&lt;br /&gt;
&lt;br /&gt;
* Modifier la configuration du serveur SSH dans avec le fichier {{ File | /etc/ssh/sshd_config }} en activant les 3 variable suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Kerberos options&lt;br /&gt;
KerberosAuthentication yes&lt;br /&gt;
&lt;br /&gt;
# GSSAPI options&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Cette modification permet d'activer l' authentification kerberos pour le service SSH.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrer le service SSH et SSSD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | service ssh restart &amp;amp;&amp;amp; service sssd restart }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Vérification'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier le bon fonctionnement, nous allons pouvoir réaliser différents test&lt;br /&gt;
&lt;br /&gt;
* Vérifier que le serveur linux arrive à retrouver les informations d'un utilisateur dans l'AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | getent passwd user }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user:*:47401107:47400513:FirstName Name:/home/domain.be/user:/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Dans la commande ''getent'' changer '''user''' par le nom d'un utilisateur dans l'AD }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vérifier la création de la home directory &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su - user }}&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Création du répertoire « /home/domain.be/user »&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour terminer, vérifier si vous arrivez à vous connecter en SSH avec l'utilisateur AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh user@IP-serveur-linux }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=269</id>
		<title>Active Directory</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=269"/>
				<updated>2017-10-12T05:41:38Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }}&lt;br /&gt;
= Interaction =&lt;br /&gt;
== Intégration d'un serveur Linux à l'AD ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration du système avant intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On va d'abord mettre à jour le système&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt update &amp;amp;&amp;amp; apt upgrade -y }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | S'assurer d'avoir une connexion SSH en '''root''' car nous allons désactiver les autres sources d'authentifications s'il y en a déjà configurées. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Modifier le fichier {{ File | /etc/hosts }} pour que le nom de la machine correspondent au nom du domaine à rejoindre.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | nano /etc/hosts }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.1.1       yourmachine.domain.be yourmachine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Modifier les informations pour qu'elles correspondent à votre nom de machine et de domaine }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Au besoin, modifier le fichier {{ File | /etc/nsswitch.conf}} pour retirer toutes occurrences de connexion ldap&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* S'assurer que le dns pointe sur le serveur AD en modifiant au besoin le fichier {{ File | /etc/resolv.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domain domain.be&lt;br /&gt;
search domain.be&lt;br /&gt;
nameserver IP-AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Installation des paquets nécessaire à l'intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour installer et configurer les différents paquets nécessaire à l'authentification des utilisateurs avec notre AD, nous allons nous aider du script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script should join Debian Jessie (8) to an Active Directory domain.&lt;br /&gt;
echo &amp;quot;Please authenticate with your sudo password&amp;quot;&lt;br /&gt;
sudo -v&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which realmd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo apt install krb5-user adcli packagekit realmd -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which ntpd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo apt install ntp -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo mkdir -p /var/lib/samba/private&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter the domain you wish to join: &amp;quot;&lt;br /&gt;
read DOMAIN&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter a domain admin login to use: &amp;quot;&lt;br /&gt;
read ADMIN&lt;br /&gt;
&lt;br /&gt;
sudo realm join --user=$ADMIN $DOMAIN&lt;br /&gt;
&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    echo &amp;quot;AD join failed.  Please run 'journalctl -xn' to determine why.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable sssd&lt;br /&gt;
sudo systemctl start sssd&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;session required pam_mkhomedir.so skel=/etc/skel/ umask=0022&amp;quot; | sudo tee -a /etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
# configure sudo&lt;br /&gt;
sudo apt install libsss-sudo -y&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;%domain\ admins@$DOMAIN ALL=(ALL) ALL&amp;quot; | sudo tee -a /etc/sudoers.d/domain_admins&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;The computer is joined to the domain.  Please reboot, ensure that you are connected to the network, and you should be able to login with domain credentials.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de l’exécution du script, en plus de l'installation des paquets, il sera demandé de renseigné les informations suivantes :&lt;br /&gt;
* Le nom de domaine (ex: yourdomain.be)&lt;br /&gt;
* Le login de l'administrateur du domaine (ex: Administrator)&lt;br /&gt;
* Le mot de passe de l'administrateur du domaine&lt;br /&gt;
&lt;br /&gt;
Une fois le script terminé, nous allons pouvoir passer à la configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour autoriser l'authentification des utilisateurs via notre AD, nous allons devoir modifier différents fichiers&lt;br /&gt;
&lt;br /&gt;
* Le fichier {{ File | /etc/sssd/sssd.conf}} avec la ligne suivants :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 use_fully_qualified_names = False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Un redémarrage est nécessaire après cette modification.'''&lt;br /&gt;
&lt;br /&gt;
* Modifier la configuration du serveur SSH dans avec le fichier {{ File | /etc/ssh/sshd_config }} en activant les 3 variable suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Kerberos options&lt;br /&gt;
KerberosAuthentication yes&lt;br /&gt;
&lt;br /&gt;
# GSSAPI options&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Cette modification permet d'activer l' authentification kerberos pour le service SSH.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrer le service SSH et SSSF&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | service ssh restart &amp;amp;&amp;amp; service sssd restart }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Vérification'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier le bon fonctionnement, nous allons pouvoir réaliser différents test&lt;br /&gt;
&lt;br /&gt;
* Vérifier que le serveur linux arrive à retrouver les informations d'un utilisateur dans l'AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | getent passwd user }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user:*:47401107:47400513:FirstName Name:/home/domain.be/user:/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Dans la commande ''getent'' changer '''user''' par le nom d'un utilisateur dans l'AD }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vérifier la création de la home directory &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su - user }}&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Création du répertoire « /home/domain.be/user »&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour terminer, vérifier si vous arrivez à vous connecter en SSH avec l'utilisateur AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh user@IP-serveur-linux }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=268</id>
		<title>Active Directory</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=268"/>
				<updated>2017-06-27T10:14:17Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Intégration d'un serveur Linux à l'AD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }}&lt;br /&gt;
= Interaction =&lt;br /&gt;
== Intégration d'un serveur Linux à l'AD ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration du système avant intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On va d'abord mettre à jour le système&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt update &amp;amp;&amp;amp; apt upgrade -y }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | S'assurer d'avoir une connexion SSH en '''root''' car nous allons désactiver les autres sources d'authentifications s'il y en a déjà configurées. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Modifier le fichier {{ File | /etc/hosts }} pour que le nom de la machine correspondent au nom du domaine à rejoindre.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | nano /etc/hosts }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.1.1       yourmachine.domain.be yourmachine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Modifier les informations pour qu'elles correspondent à votre nom de machine et de domaine }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Au besoin, modifier le fichier {{ File | /etc/nsswitch.conf}} pour retirer toutes occurrences de connexion ldap&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* S'assurer que le dns pointe sur le serveur AD en modifiant au besoin le fichier {{ File | /etc/resolv.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domain domain.be&lt;br /&gt;
search domain.be&lt;br /&gt;
nameserver IP-AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Installation des paquets nécessaire à l'intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour installer et configurer les différents paquets nécessaire à l'authentification des utilisateurs avec notre AD, nous allons nous aider du script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script should join Debian Jessie (8) to an Active Directory domain.&lt;br /&gt;
echo &amp;quot;Please authenticate with your sudo password&amp;quot;&lt;br /&gt;
sudo -v&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which realmd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo apt install krb5-user adcli packagekit realmd -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which ntpd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo apt install ntp -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo mkdir -p /var/lib/samba/private&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter the domain you wish to join: &amp;quot;&lt;br /&gt;
read DOMAIN&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter a domain admin login to use: &amp;quot;&lt;br /&gt;
read ADMIN&lt;br /&gt;
&lt;br /&gt;
sudo realm join --user=$ADMIN $DOMAIN&lt;br /&gt;
&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    echo &amp;quot;AD join failed.  Please run 'journalctl -xn' to determine why.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable sssd&lt;br /&gt;
sudo systemctl start sssd&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;session required pam_mkhomedir.so skel=/etc/skel/ umask=0022&amp;quot; | sudo tee -a /etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
# configure sudo&lt;br /&gt;
sudo apt install libsss-sudo -y&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;%domain\ admins@$DOMAIN ALL=(ALL) ALL&amp;quot; | sudo tee -a /etc/sudoers.d/domain_admins&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;The computer is joined to the domain.  Please reboot, ensure that you are connected to the network, and you should be able to login with domain credentials.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de l’exécution du script, en plus de l'installation des paquets, il sera demandé de renseigné les informations suivantes :&lt;br /&gt;
* Le nom de domaine (ex: yourdomain.be)&lt;br /&gt;
* Le login de l'administrateur du domaine (ex: Administrator)&lt;br /&gt;
* Le mot de passe de l'administrateur du domaine&lt;br /&gt;
&lt;br /&gt;
Une fois le script terminé, nous allons pouvoir passer à la configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour autoriser l'authentification des utilisateurs via notre AD, nous allons devoir modifier différents fichiers&lt;br /&gt;
&lt;br /&gt;
* Le fichier {{ File | /etc/sssd/sssd.conf}} avec la ligne suivants :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 use_fully_qualified_names = False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Un redémarrage est nécessaire après cette modification.'''&lt;br /&gt;
&lt;br /&gt;
* Modifier la configuration du serveur SSH dans avec le fichier {{ File | /etc/ssh/sshd_config }} en activant les 3 variable suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Kerberos options&lt;br /&gt;
KerberosAuthentication yes&lt;br /&gt;
&lt;br /&gt;
# GSSAPI options&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Cette modification permet d'activer l' authentification kerberos pour le service SSH.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrer le service SSH&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | service ssh restart }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Vérification'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier le bon fonctionnement, nous allons pouvoir réaliser différents test&lt;br /&gt;
&lt;br /&gt;
* Vérifier que le serveur linux arrive à retrouver les informations d'un utilisateur dans l'AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | getent passwd user }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user:*:47401107:47400513:FirstName Name:/home/domain.be/user:/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Dans la commande ''getent'' changer '''user''' par le nom d'un utilisateur dans l'AD }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vérifier la création de la home directory &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su - user }}&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Création du répertoire « /home/domain.be/user »&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour terminer, vérifier si vous arrivez à vous connecter en SSH avec l'utilisateur AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh user@IP-serveur-linux }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=267</id>
		<title>Active Directory</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=267"/>
				<updated>2017-06-27T09:39:43Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }}&lt;br /&gt;
= Interaction =&lt;br /&gt;
== Intégration d'un serveur Linux à l'AD ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration du système avant intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On va d'abord mettre à jour le système&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt update &amp;amp;&amp;amp; apt upgrade -y }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | S'assurer d'avoir une connexion SSH en '''root''' car nous allons désactiver les autres sources d'authentifications s'il y en a déjà configurées. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Modifier le fichier {{ File | /etc/hosts }} pour que le nom de la machine correspondent au nom du domaine à rejoindre.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | nano /etc/hosts }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.1.1       yourmachine.domain.be yourmachine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Modifier les informations pour qu'elles correspondent à votre nom de machine et de domaine }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Au besoin, modifier le fichier {{ File | /etc/nsswitch.conf}} pour retirer toutes occurrences de connexion ldap&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* S'assurer que le dns pointe sur le serveur AD en modifiant au besoin le fichier {{ File | /etc/resolv.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domain domain.be&lt;br /&gt;
search domain.be&lt;br /&gt;
nameserver IP-AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Installation des paquets nécessaire à l'intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour installer et configurer les différents paquets nécessaire à l'authentification des utilisateurs avec notre AD, nous allons nous aider du script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script should join Debian Jessie (8) to an Active Directory domain.&lt;br /&gt;
echo &amp;quot;Please authenticate with your sudo password&amp;quot;&lt;br /&gt;
sudo -v&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which realmd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo apt install krb5-user adcli packagekit realmd -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which ntpd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo apt install ntp -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo mkdir -p /var/lib/samba/private&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter the domain you wish to join: &amp;quot;&lt;br /&gt;
read DOMAIN&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter a domain admin login to use: &amp;quot;&lt;br /&gt;
read ADMIN&lt;br /&gt;
&lt;br /&gt;
sudo realm join --user=$ADMIN $DOMAIN&lt;br /&gt;
&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    echo &amp;quot;AD join failed.  Please run 'journalctl -xn' to determine why.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable sssd&lt;br /&gt;
sudo systemctl start sssd&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;session required pam_mkhomedir.so skel=/etc/skel/ umask=0022&amp;quot; | sudo tee -a /etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
# configure sudo&lt;br /&gt;
sudo apt install libsss-sudo -y&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;%domain\ admins@$DOMAIN ALL=(ALL) ALL&amp;quot; | sudo tee -a /etc/sudoers.d/domain_admins&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;The computer is joined to the domain.  Please reboot, ensure that you are connected to the network, and you should be able to login with domain credentials.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de l’exécution du script, en plus de l'installation des paquets, il sera demandé de renseigné les informations suivantes :&lt;br /&gt;
* Le nom de domaine (ex: yourdomain.be)&lt;br /&gt;
* Le login de l'administrateur du domaine (ex: Administrator)&lt;br /&gt;
* Le mot de passe de l'administrateur du domaine&lt;br /&gt;
&lt;br /&gt;
Une fois le script terminé, nous allons pouvoir passer à la configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour autoriser l'authentification des utilisateurs via notre AD, nous allons devoir modifier différents fichiers&lt;br /&gt;
&lt;br /&gt;
* Le fichier {{ File | /etc/sssd/sssd.conf}} avec la ligne suivants :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 use_fully_qualified_names = False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un redémarrage est nécessaire après cette mmodification.&lt;br /&gt;
&lt;br /&gt;
* Modifier la configuration du serveur SSH dans avec le fichier {{ File | /etc/ssh/sshd_config }} en activant les 3 variable suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Kerberos options&lt;br /&gt;
KerberosAuthentication yes&lt;br /&gt;
&lt;br /&gt;
# GSSAPI options&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Cette modification permet d'activer l' authentification kerberos pour le service SSH.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrer le service SSH&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | service ssh restart }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Vérification'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier le bon fonctionnement, nous allons pouvoir réaliser différents test&lt;br /&gt;
&lt;br /&gt;
* Vérifier que le serveur linux arrive à retrouver les informations d'un utilisateur dans l'AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | getent passwd user }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user:*:47401107:47400513:FirstName Name:/home/domain.be/user:/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Dans la commande ''getent'' changer '''user''' par le nom d'un utilisateur dans l'AD }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vérifier la création de la home directory &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su - user }}&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Création du répertoire « /home/domain.be/user »&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour terminer, vérifier si vous arrivez à vous connecter en SSH avec l'utilisateur AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh user@IP-serveur-linux }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=266</id>
		<title>Active Directory</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=266"/>
				<updated>2017-06-23T06:55:22Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }}&lt;br /&gt;
= Interaction =&lt;br /&gt;
== Intégration d'un serveur Linux à l'AD ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration du système avant intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On va d'abord mettre à jour le système&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt update &amp;amp;&amp;amp; apt upgrade -y }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | S'assurer d'avoir une connexion SSH en '''root''' car nous allons désactiver les autres sources d'authentifications s'il y en a déjà configurées. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Modifier le fichier {{ File | /etc/hosts }} pour que le nom de la machine correspondent au nom du domaine à rejoindre.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | nano /etc/hosts }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.1.1       yourmachine.domain.be yourmachine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Modifier les informations pour qu'elles correspondent à votre nom de machine et de domaine }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Au besoin, modifier le fichier {{ File | /etc/nsswitch.conf}} pour retirer toutes occurrences de connexion ldap&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* S'assurer que le dns pointe sur le serveur AD en modifiant au besoin le fichier {{ File | /etc/resolv.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domain domain.be&lt;br /&gt;
search domain.be&lt;br /&gt;
nameserver IP-AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Installation des paquets nécessaire à l'intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour installer et configurer les différents paquets nécessaire à l'authentification des utilisateurs avec notre AD, nous allons nous aider du script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script should join Debian Jessie (8) to an Active Directory domain.&lt;br /&gt;
echo &amp;quot;Please authenticate with your sudo password&amp;quot;&lt;br /&gt;
sudo -v&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which realmd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install krb5-user adcli packagekit realmd -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which ntpd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install ntp -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo mkdir -p /var/lib/samba/private&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter the domain you wish to join: &amp;quot;&lt;br /&gt;
read DOMAIN&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter a domain admin login to use: &amp;quot;&lt;br /&gt;
read ADMIN&lt;br /&gt;
&lt;br /&gt;
sudo realm join --user=$ADMIN $DOMAIN&lt;br /&gt;
&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    echo &amp;quot;AD join failed.  Please run 'journalctl -xn' to determine why.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable sssd&lt;br /&gt;
sudo systemctl start sssd&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;session required pam_mkhomedir.so skel=/etc/skel/ umask=0022&amp;quot; | sudo tee -a /etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
# configure sudo&lt;br /&gt;
sudo aptitude install libsss-sudo -y&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;%domain\ admins@$DOMAIN ALL=(ALL) ALL&amp;quot; | sudo tee -a /etc/sudoers.d/domain_admins&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;The computer is joined to the domain.  Please reboot, ensure that you are connected to the network, and you should be able to login with domain credentials.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de l’exécution du script, en plus de l'installation des paquets, il sera demandé de renseigné les informations suivantes :&lt;br /&gt;
* Le nom de domaine (ex: yourdomain.be)&lt;br /&gt;
* Le login de l'administrateur du domaine (ex: Administrator)&lt;br /&gt;
* Le mot de passe de l'administrateur du domaine&lt;br /&gt;
&lt;br /&gt;
Une fois le script terminé, nous allons pouvoir passer à la configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour autoriser l'authentification des utilisateurs via notre AD, nous allons devoir modifier différents fichiers&lt;br /&gt;
&lt;br /&gt;
* Le fichier {{ File | /etc/sssd/sssd.conf}} avec la ligne suivants :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 use_fully_qualified_names = False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un redémarrage est nécessaire après cette mmodification.&lt;br /&gt;
&lt;br /&gt;
* Modifier la configuration du serveur SSH dans avec le fichier {{ File | /etc/ssh/sshd_config }} en activant les 3 variable suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Kerberos options&lt;br /&gt;
KerberosAuthentication yes&lt;br /&gt;
&lt;br /&gt;
# GSSAPI options&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Cette modification permet d'activer l' authentification kerberos pour le service SSH.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrer le service SSH&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | service ssh restart }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Vérification'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier le bon fonctionnement, nous allons pouvoir réaliser différents test&lt;br /&gt;
&lt;br /&gt;
* Vérifier que le serveur linux arrive à retrouver les informations d'un utilisateur dans l'AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | getent passwd user }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user:*:47401107:47400513:FirstName Name:/home/domain.be/user:/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Dans la commande ''getent'' changer '''user''' par le nom d'un utilisateur dans l'AD }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vérifier la création de la home directory &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su - user }}&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Création du répertoire « /home/domain.be/user »&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour terminer, vérifier si vous arrivez à vous connecter en SSH avec l'utilisateur AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh user@IP-serveur-linux }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=265</id>
		<title>Active Directory</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=265"/>
				<updated>2017-06-23T05:33:58Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Intégration d'un serveur Linux à l'AD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }}&lt;br /&gt;
= Interaction =&lt;br /&gt;
== Intégration d'un serveur Linux à l'AD ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration du système avant intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On va d'abord mettre à jour le système&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt update &amp;amp;&amp;amp; apt upgrade -y }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | S'assurer d'avoir une connexion SSH en '''root''' car nous allons désactiver les autres sources d'authentifications s'il y en a déjà configurées. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Modifier le fichier {{ File | /etc/hosts }} pour que le nom de la machine correspondent au nom du domaine à rejoindre.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | nano /etc/hosts }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.1.1       yourmachine.domain.be yourmachine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Modifier les informations pour qu'elles correspondent à votre nom de machine et de domaine }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* S'assurer que le dns pointe sur le serveur AD en modifiant au besoin le fichier {{ File | /etc/resolv.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domain domain.be&lt;br /&gt;
search domain.be&lt;br /&gt;
nameserver IP-AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Installation des paquets nécessaire à l'intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour installer et configurer les différents paquets nécessaire à l'authentification des utilisateurs avec notre AD, nous allons nous aider du script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script should join Debian Jessie (8) to an Active Directory domain.&lt;br /&gt;
echo &amp;quot;Please authenticate with your sudo password&amp;quot;&lt;br /&gt;
sudo -v&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which realmd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install krb5-user adcli packagekit realmd -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which ntpd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install ntp -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo mkdir -p /var/lib/samba/private&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter the domain you wish to join: &amp;quot;&lt;br /&gt;
read DOMAIN&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter a domain admin login to use: &amp;quot;&lt;br /&gt;
read ADMIN&lt;br /&gt;
&lt;br /&gt;
sudo realm join --user=$ADMIN $DOMAIN&lt;br /&gt;
&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    echo &amp;quot;AD join failed.  Please run 'journalctl -xn' to determine why.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable sssd&lt;br /&gt;
sudo systemctl start sssd&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;session required pam_mkhomedir.so skel=/etc/skel/ umask=0022&amp;quot; | sudo tee -a /etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
# configure sudo&lt;br /&gt;
sudo aptitude install libsss-sudo -y&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;%domain\ admins@$DOMAIN ALL=(ALL) ALL&amp;quot; | sudo tee -a /etc/sudoers.d/domain_admins&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;The computer is joined to the domain.  Please reboot, ensure that you are connected to the network, and you should be able to login with domain credentials.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de l’exécution du script, en plus de l'installation des paquets, il sera demandé de renseigné les informations suivantes :&lt;br /&gt;
* Le nom de domaine (ex: yourdomain.be)&lt;br /&gt;
* Le login de l'administrateur du domaine (ex: Administrator)&lt;br /&gt;
* Le mot de passe de l'administrateur du domaine&lt;br /&gt;
&lt;br /&gt;
Une fois le script terminé, nous allons pouvoir passer à la configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour autoriser l'authentification des utilisateurs via notre AD, nous allons devoir modifier différents fichiers&lt;br /&gt;
&lt;br /&gt;
* Le fichier {{ File | /etc/sssd/sssd.conf}} avec la ligne suivants :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 use_fully_qualified_names = False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un redémarrage est nécessaire après cette mmodification.&lt;br /&gt;
&lt;br /&gt;
* Modifier la configuration du serveur SSH dans avec le fichier {{ File | /etc/ssh/sshd_config }} en activant les 3 variable suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Kerberos options&lt;br /&gt;
KerberosAuthentication yes&lt;br /&gt;
&lt;br /&gt;
# GSSAPI options&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Cette modification permet d'activer l' authentification kerberos pour le service SSH.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrer le service SSH&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | service ssh restart }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Vérification'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier le bon fonctionnement, nous allons pouvoir réaliser différents test&lt;br /&gt;
&lt;br /&gt;
* Vérifier que le serveur linux arrive à retrouver les informations d'un utilisateur dans l'AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | getent passwd user }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user:*:47401107:47400513:FirstName Name:/home/domain.be/user:/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Dans la commande ''getent'' changer '''user''' par le nom d'un utilisateur dans l'AD }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vérifier la création de la home directory &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su - user }}&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Création du répertoire « /home/domain.be/user »&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour terminer, vérifier si vous arrivez à vous connecter en SSH avec l'utilisateur AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh user@IP-serveur-linux }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=264</id>
		<title>Active Directory</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=264"/>
				<updated>2017-06-21T12:42:49Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }}&lt;br /&gt;
= Interaction =&lt;br /&gt;
== Intégration d'un serveur Linux à l'AD ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration du système avant intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On va d'abord mettre à jour le système&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt update &amp;amp;&amp;amp; apt upgrade -y }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | S'assurer d'avoir une connexion SSH en '''root''' car nous allons désactiver les autres sources d'authentifications s'il y en a déjà configurées. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Modifier le fichier {{ File | /etc/hosts }} pour qu'il coïncide avec le serveur d'authentification.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | nano /etc/hosts }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.1.1       yourmachine.domain.be yourmachine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Modifier les informations pour qu'elles correspondent à votre nom de machine et de domaine }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* S'assurer que le dns pointe sur le serveur AD en modifiant au besoin le fichier {{ File | /etc/resolv.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domain domain.be&lt;br /&gt;
search domain.be&lt;br /&gt;
nameserver IP-AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Installation des paquets nécessaire à l'intégration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour installer et configurer les différents paquets nécessaire à l'authentification des utilisateurs avec notre AD, nous allons nous aider du script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script should join Debian Jessie (8) to an Active Directory domain.&lt;br /&gt;
echo &amp;quot;Please authenticate with your sudo password&amp;quot;&lt;br /&gt;
sudo -v&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which realmd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install krb5-user adcli packagekit realmd -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which ntpd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install ntp -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo mkdir -p /var/lib/samba/private&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter the domain you wish to join: &amp;quot;&lt;br /&gt;
read DOMAIN&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter a domain admin login to use: &amp;quot;&lt;br /&gt;
read ADMIN&lt;br /&gt;
&lt;br /&gt;
sudo realm join --user=$ADMIN $DOMAIN&lt;br /&gt;
&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    echo &amp;quot;AD join failed.  Please run 'journalctl -xn' to determine why.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable sssd&lt;br /&gt;
sudo systemctl start sssd&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;session required pam_mkhomedir.so skel=/etc/skel/ umask=0022&amp;quot; | sudo tee -a /etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
# configure sudo&lt;br /&gt;
sudo aptitude install libsss-sudo -y&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;%domain\ admins@$DOMAIN ALL=(ALL) ALL&amp;quot; | sudo tee -a /etc/sudoers.d/domain_admins&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;The computer is joined to the domain.  Please reboot, ensure that you are connected to the network, and you should be able to login with domain credentials.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de l’exécution du script, en plus de l'installation des paquets, il sera demandé de renseigné les informations suivantes :&lt;br /&gt;
* Le nom de domaine (ex: yourdomain.be)&lt;br /&gt;
* Le login de l'administrateur du domaine (ex: Administrator)&lt;br /&gt;
* Le mot de passe de l'administrateur du domaine&lt;br /&gt;
&lt;br /&gt;
Une fois le script terminé, nous allons pouvoir passer à la configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''Configuration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour autoriser l'authentification des utilisateurs via notre AD, nous allons devoir modifier différents fichiers&lt;br /&gt;
&lt;br /&gt;
* Le fichier {{ File | /etc/sssd/sssd.conf}} avec la ligne suivants :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 use_fully_qualified_names = False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un redémarrage est nécessaire après cette mmodification.&lt;br /&gt;
&lt;br /&gt;
* Modifier la configuration du serveur SSH dans avec le fichier {{ File | /etc/ssh/sshd_config }} en activant les 3 variable suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Kerberos options&lt;br /&gt;
KerberosAuthentication yes&lt;br /&gt;
&lt;br /&gt;
# GSSAPI options&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Cette modification permet d'activer l' authentification kerberos pour le service SSH.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrer le service SSH&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | service ssh restart }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Vérification'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier le bon fonctionnement, nous allons pouvoir réaliser différents test&lt;br /&gt;
&lt;br /&gt;
* Vérifier que le serveur linux arrive à retrouver les informations d'un utilisateur dans l'AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | getent passwd user }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user:*:47401107:47400513:FirstName Name:/home/domain.be/user:/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Dans la commande ''getent'' changer '''user''' par le nom d'un utilisateur dans l'AD }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vérifier la création de la home directory &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su - user }}&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Création du répertoire « /home/domain.be/user »&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour terminer, vérifier si vous arrivez à vous connecter en SSH avec l'utilisateur AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh user@IP-serveur-linux }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=263</id>
		<title>Active Directory</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=263"/>
				<updated>2017-06-21T12:38:27Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Vérification du fonctionnement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }}&lt;br /&gt;
= Interaction =&lt;br /&gt;
== Intégration d'un serveur Linux à l'AD ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration du système avant intégration ===&lt;br /&gt;
On va d'abord mettre à jour le système&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt update &amp;amp;&amp;amp; apt upgrade -y }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | S'assurer d'avoir une connexion SSH en '''root''' car nous allons désactiver les autres sources d'authentifications s'il y en a déjà configurées. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Modifier le fichier {{ File | /etc/hosts }} pour qu'il coïncide avec le serveur d'authentification.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | nano /etc/hosts }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.1.1       yourmachine.domain.be yourmachine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Modifier les informations pour qu'elles correspondent à votre nom de machine et de domaine }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* S'assurer que le dns pointe sur le serveur AD en modifiant au besoin le fichier {{ File | /etc/resolv.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domain domain.be&lt;br /&gt;
search domain.be&lt;br /&gt;
nameserver IP-AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation des paquets nécessaire à l'intégration ===&lt;br /&gt;
&lt;br /&gt;
Pour installer et configurer les différents paquets nécessaire à l'authentification des utilisateurs avec notre AD, nous allons nous aider du script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script should join Debian Jessie (8) to an Active Directory domain.&lt;br /&gt;
echo &amp;quot;Please authenticate with your sudo password&amp;quot;&lt;br /&gt;
sudo -v&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which realmd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install krb5-user adcli packagekit realmd -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which ntpd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install ntp -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo mkdir -p /var/lib/samba/private&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter the domain you wish to join: &amp;quot;&lt;br /&gt;
read DOMAIN&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter a domain admin login to use: &amp;quot;&lt;br /&gt;
read ADMIN&lt;br /&gt;
&lt;br /&gt;
sudo realm join --user=$ADMIN $DOMAIN&lt;br /&gt;
&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    echo &amp;quot;AD join failed.  Please run 'journalctl -xn' to determine why.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable sssd&lt;br /&gt;
sudo systemctl start sssd&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;session required pam_mkhomedir.so skel=/etc/skel/ umask=0022&amp;quot; | sudo tee -a /etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
# configure sudo&lt;br /&gt;
sudo aptitude install libsss-sudo -y&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;%domain\ admins@$DOMAIN ALL=(ALL) ALL&amp;quot; | sudo tee -a /etc/sudoers.d/domain_admins&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;The computer is joined to the domain.  Please reboot, ensure that you are connected to the network, and you should be able to login with domain credentials.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de l’exécution du script, en plus de l'installation des paquets, il sera demandé de renseigné les informations suivantes :&lt;br /&gt;
* Le nom de domaine (ex: yourdomain.be)&lt;br /&gt;
* Le login de l'administrateur du domaine (ex: Administrator)&lt;br /&gt;
* Le mot de passe de l'administrateur du domaine&lt;br /&gt;
&lt;br /&gt;
Une fois le script terminé, nous allons pouvoir passer à la configuration.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
Pour autoriser l'authentification des utilisateurs via notre AD, nous allons devoir modifier différents fichiers&lt;br /&gt;
&lt;br /&gt;
* Le fichier {{ File | /etc/sssd/sssd.conf}} avec la ligne suivants :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 use_fully_qualified_names = False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un redémarrage est nécessaire après cette mmodification.&lt;br /&gt;
&lt;br /&gt;
* Modifier la configuration du serveur SSH dans avec le fichier {{ File | /etc/ssh/sshd_config }} en activant les 3 variable suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Kerberos options&lt;br /&gt;
KerberosAuthentication yes&lt;br /&gt;
&lt;br /&gt;
# GSSAPI options&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Cette modification permet d'activer l' authentification kerberos pour le service SSH.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrer le service SSH&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | service ssh restart }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vérification ===&lt;br /&gt;
Pour vérifier le bon fonctionnement, nous allons pouvoir réaliser différents test&lt;br /&gt;
&lt;br /&gt;
* Vérifier que le serveur linux arrive à retrouver les informations d'un utilisateur dans l'AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | getent passwd user }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user:*:47401107:47400513:FirstName Name:/home/domain.be/user:/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Dans la commande ''getent'' changer '''user''' par le nom d'un utilisateur dans l'AD }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vérifier la création de la home directory &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su - user }}&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Création du répertoire « /home/domain.be/user »&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour terminer, vérifier si vous arrivez à vous connecter en SSH avec l'utilisateur AD&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh user@IP-serveur-linux }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=262</id>
		<title>Active Directory</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=262"/>
				<updated>2017-06-21T12:32:15Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* modification des fichiers de configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }}&lt;br /&gt;
= Interaction =&lt;br /&gt;
== Intégration d'un serveur Linux à l'AD ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration du système avant intégration ===&lt;br /&gt;
On va d'abord mettre à jour le système&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt update &amp;amp;&amp;amp; apt upgrade -y }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | S'assurer d'avoir une connexion SSH en '''root''' car nous allons désactiver les autres sources d'authentifications s'il y en a déjà configurées. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Modifier le fichier {{ File | /etc/hosts }} pour qu'il coïncide avec le serveur d'authentification.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | nano /etc/hosts }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.1.1       yourmachine.domain.be yourmachine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Modifier les informations pour qu'elles correspondent à votre nom de machine et de domaine }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* S'assurer que le dns pointe sur le serveur AD en modifiant au besoin le fichier {{ File | /etc/resolv.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domain domain.be&lt;br /&gt;
search domain.be&lt;br /&gt;
nameserver IP-AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation des paquets nécessaire à l'intégration ===&lt;br /&gt;
&lt;br /&gt;
Pour installer et configurer les différents paquets nécessaire à l'authentification des utilisateurs avec notre AD, nous allons nous aider du script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script should join Debian Jessie (8) to an Active Directory domain.&lt;br /&gt;
echo &amp;quot;Please authenticate with your sudo password&amp;quot;&lt;br /&gt;
sudo -v&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which realmd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install krb5-user adcli packagekit realmd -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which ntpd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install ntp -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo mkdir -p /var/lib/samba/private&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter the domain you wish to join: &amp;quot;&lt;br /&gt;
read DOMAIN&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter a domain admin login to use: &amp;quot;&lt;br /&gt;
read ADMIN&lt;br /&gt;
&lt;br /&gt;
sudo realm join --user=$ADMIN $DOMAIN&lt;br /&gt;
&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    echo &amp;quot;AD join failed.  Please run 'journalctl -xn' to determine why.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable sssd&lt;br /&gt;
sudo systemctl start sssd&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;session required pam_mkhomedir.so skel=/etc/skel/ umask=0022&amp;quot; | sudo tee -a /etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
# configure sudo&lt;br /&gt;
sudo aptitude install libsss-sudo -y&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;%domain\ admins@$DOMAIN ALL=(ALL) ALL&amp;quot; | sudo tee -a /etc/sudoers.d/domain_admins&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;The computer is joined to the domain.  Please reboot, ensure that you are connected to the network, and you should be able to login with domain credentials.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de l’exécution du script, en plus de l'installation des paquets, il sera demandé de renseigné les informations suivantes :&lt;br /&gt;
* Le nom de domaine (ex: yourdomain.be)&lt;br /&gt;
* Le login de l'administrateur du domaine (ex: Administrator)&lt;br /&gt;
* Le mot de passe de l'administrateur du domaine&lt;br /&gt;
&lt;br /&gt;
Une fois le script terminé, nous allons pouvoir passer à la configuration.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
Pour autoriser l'authentification des utilisateurs via notre AD, nous allons devoir modifier différents fichiers&lt;br /&gt;
&lt;br /&gt;
* Le fichier {{ File | /etc/sssd/sssd.conf}} avec la ligne suivants :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 use_fully_qualified_names = False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un redémarrage est nécessaire après cette mmodification.&lt;br /&gt;
&lt;br /&gt;
* Modifier la configuration du serveur SSH dans avec le fichier {{ File | /etc/ssh/sshd_config }} en activant les 3 variable suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Kerberos options&lt;br /&gt;
KerberosAuthentication yes&lt;br /&gt;
&lt;br /&gt;
# GSSAPI options&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Cette modification permet d'activer l' authentification kerberos pour le service SSH.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrer le service SSH&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | service ssh restart }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vérification du fonctionnement ===&lt;br /&gt;
Pour verrifier le bon fonctionnement &lt;br /&gt;
&lt;br /&gt;
taper getent passwd nom_du_user&lt;br /&gt;
{{ Console root | getent passwd mdaniel }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdaniel:*:47401107:47400513:Maxime Daniel:/home/test.pass.be/mdaniel:/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
autres commandes &lt;br /&gt;
&lt;br /&gt;
{{ Console root | su - mdaniel }} &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Création du répertoire « /home/test.pass.be/mdaniel »&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test d'un connexion ssh avec le user AD&lt;br /&gt;
{{ Console | ssh mdaniel@192.168.100.6 }}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mdaniel@192.168.100.6's password: &lt;br /&gt;
mdaniel@test-debprox:~$ &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ Console | pwd }}&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;/home/test.pass.be/mdaniel &amp;lt;/pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=261</id>
		<title>Active Directory</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=261"/>
				<updated>2017-06-21T12:26:51Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* installation des package nécessaire à l'intégration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }}&lt;br /&gt;
= Interaction =&lt;br /&gt;
== Intégration d'un serveur Linux à l'AD ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration du système avant intégration ===&lt;br /&gt;
On va d'abord mettre à jour le système&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt update &amp;amp;&amp;amp; apt upgrade -y }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | S'assurer d'avoir une connexion SSH en '''root''' car nous allons désactiver les autres sources d'authentifications s'il y en a déjà configurées. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Modifier le fichier {{ File | /etc/hosts }} pour qu'il coïncide avec le serveur d'authentification.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | nano /etc/hosts }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.1.1       yourmachine.domain.be yourmachine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Modifier les informations pour qu'elles correspondent à votre nom de machine et de domaine }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* S'assurer que le dns pointe sur le serveur AD en modifiant au besoin le fichier {{ File | /etc/resolv.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domain domain.be&lt;br /&gt;
search domain.be&lt;br /&gt;
nameserver IP-AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation des paquets nécessaire à l'intégration ===&lt;br /&gt;
&lt;br /&gt;
Pour installer et configurer les différents paquets nécessaire à l'authentification des utilisateurs avec notre AD, nous allons nous aider du script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script should join Debian Jessie (8) to an Active Directory domain.&lt;br /&gt;
echo &amp;quot;Please authenticate with your sudo password&amp;quot;&lt;br /&gt;
sudo -v&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which realmd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install krb5-user adcli packagekit realmd -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which ntpd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install ntp -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo mkdir -p /var/lib/samba/private&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter the domain you wish to join: &amp;quot;&lt;br /&gt;
read DOMAIN&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter a domain admin login to use: &amp;quot;&lt;br /&gt;
read ADMIN&lt;br /&gt;
&lt;br /&gt;
sudo realm join --user=$ADMIN $DOMAIN&lt;br /&gt;
&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    echo &amp;quot;AD join failed.  Please run 'journalctl -xn' to determine why.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable sssd&lt;br /&gt;
sudo systemctl start sssd&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;session required pam_mkhomedir.so skel=/etc/skel/ umask=0022&amp;quot; | sudo tee -a /etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
# configure sudo&lt;br /&gt;
sudo aptitude install libsss-sudo -y&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;%domain\ admins@$DOMAIN ALL=(ALL) ALL&amp;quot; | sudo tee -a /etc/sudoers.d/domain_admins&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;The computer is joined to the domain.  Please reboot, ensure that you are connected to the network, and you should be able to login with domain credentials.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de l’exécution du script, en plus de l'installation des paquets, il sera demandé de renseigné les informations suivantes :&lt;br /&gt;
* Le nom de domaine (ex: yourdomain.be)&lt;br /&gt;
* Le login de l'administrateur du domaine (ex: Administrator)&lt;br /&gt;
* Le mot de passe de l'administrateur du domaine&lt;br /&gt;
&lt;br /&gt;
Une fois le script terminé, nous allons pouvoir passer à la configuration.&lt;br /&gt;
&lt;br /&gt;
=== modification des fichiers de configuration ===&lt;br /&gt;
allez dans le fichier /etc/sssd/sssd.conf modifier la ligne suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 use_fully_qualified_names = False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Faire un reboot system.&lt;br /&gt;
&lt;br /&gt;
Afin de pour voir se connecter en ssh à la machine, activer le autehntifcation kerberos.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration du serveur ssh dans /etc/ssh/sshd_config en activant les 3 variable suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Kerberos options&lt;br /&gt;
KerberosAuthentication yes&lt;br /&gt;
&lt;br /&gt;
# GSSAPI options&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
redémarrer les service SSH&lt;br /&gt;
&lt;br /&gt;
{{ Console root | service ssh restart }}&lt;br /&gt;
&lt;br /&gt;
=== Vérification du fonctionnement ===&lt;br /&gt;
Pour verrifier le bon fonctionnement &lt;br /&gt;
&lt;br /&gt;
taper getent passwd nom_du_user&lt;br /&gt;
{{ Console root | getent passwd mdaniel }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdaniel:*:47401107:47400513:Maxime Daniel:/home/test.pass.be/mdaniel:/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
autres commandes &lt;br /&gt;
&lt;br /&gt;
{{ Console root | su - mdaniel }} &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Création du répertoire « /home/test.pass.be/mdaniel »&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test d'un connexion ssh avec le user AD&lt;br /&gt;
{{ Console | ssh mdaniel@192.168.100.6 }}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mdaniel@192.168.100.6's password: &lt;br /&gt;
mdaniel@test-debprox:~$ &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ Console | pwd }}&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;/home/test.pass.be/mdaniel &amp;lt;/pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=260</id>
		<title>Active Directory</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=260"/>
				<updated>2017-06-21T12:21:46Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }}&lt;br /&gt;
= Interaction =&lt;br /&gt;
== Intégration d'un serveur Linux à l'AD ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration du système avant intégration ===&lt;br /&gt;
On va d'abord mettre à jour le système&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt update &amp;amp;&amp;amp; apt upgrade -y }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | S'assurer d'avoir une connexion SSH en '''root''' car nous allons désactiver les autres sources d'authentifications s'il y en a déjà configurées. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Modifier le fichier {{ File | /etc/hosts }} pour qu'il coïncide avec le serveur d'authentification.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | nano /etc/hosts }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.1.1       yourmachine.domain.be yourmachine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Modifier les informations pour qu'elles correspondent à votre nom de machine et de domaine }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* S'assurer que le dns pointe sur le serveur AD en modifiant au besoin le fichier {{ File | /etc/resolv.conf}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domain domain.be&lt;br /&gt;
search domain.be&lt;br /&gt;
nameserver IP-AD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== installation des package nécessaire à l'intégration ===&lt;br /&gt;
&lt;br /&gt;
Executer le script suivant.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script should join Debian Jessie (8) to an Active Directory domain.&lt;br /&gt;
echo &amp;quot;Please authenticate with your sudo password&amp;quot;&lt;br /&gt;
sudo -v&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which realmd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install krb5-user adcli packagekit realmd -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which ntpd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install ntp -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo mkdir -p /var/lib/samba/private&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter the domain you wish to join: &amp;quot;&lt;br /&gt;
read DOMAIN&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter a domain admin login to use: &amp;quot;&lt;br /&gt;
read ADMIN&lt;br /&gt;
&lt;br /&gt;
sudo realm join --user=$ADMIN $DOMAIN&lt;br /&gt;
&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    echo &amp;quot;AD join failed.  Please run 'journalctl -xn' to determine why.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable sssd&lt;br /&gt;
sudo systemctl start sssd&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;session required pam_mkhomedir.so skel=/etc/skel/ umask=0022&amp;quot; | sudo tee -a /etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
# configure sudo&lt;br /&gt;
sudo aptitude install libsss-sudo -y&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;%domain\ admins@$DOMAIN ALL=(ALL) ALL&amp;quot; | sudo tee -a /etc/sudoers.d/domain_admins&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;The computer is joined to the domain.  Please reboot, ensure that you are connected to the network, and you should be able to login with domain credentials.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entrer le Domaine le user admins pour le domaine.&lt;br /&gt;
&lt;br /&gt;
Une fois le scripte terminé passer à la configuration.&lt;br /&gt;
&lt;br /&gt;
=== modification des fichiers de configuration ===&lt;br /&gt;
allez dans le fichier /etc/sssd/sssd.conf modifier la ligne suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 use_fully_qualified_names = False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Faire un reboot system.&lt;br /&gt;
&lt;br /&gt;
Afin de pour voir se connecter en ssh à la machine, activer le autehntifcation kerberos.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration du serveur ssh dans /etc/ssh/sshd_config en activant les 3 variable suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Kerberos options&lt;br /&gt;
KerberosAuthentication yes&lt;br /&gt;
&lt;br /&gt;
# GSSAPI options&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
redémarrer les service SSH&lt;br /&gt;
&lt;br /&gt;
{{ Console root | service ssh restart }}&lt;br /&gt;
&lt;br /&gt;
=== Vérification du fonctionnement ===&lt;br /&gt;
Pour verrifier le bon fonctionnement &lt;br /&gt;
&lt;br /&gt;
taper getent passwd nom_du_user&lt;br /&gt;
{{ Console root | getent passwd mdaniel }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdaniel:*:47401107:47400513:Maxime Daniel:/home/test.pass.be/mdaniel:/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
autres commandes &lt;br /&gt;
&lt;br /&gt;
{{ Console root | su - mdaniel }} &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Création du répertoire « /home/test.pass.be/mdaniel »&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test d'un connexion ssh avec le user AD&lt;br /&gt;
{{ Console | ssh mdaniel@192.168.100.6 }}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mdaniel@192.168.100.6's password: &lt;br /&gt;
mdaniel@test-debprox:~$ &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ Console | pwd }}&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;/home/test.pass.be/mdaniel &amp;lt;/pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=259</id>
		<title>Active Directory</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Active_Directory&amp;diff=259"/>
				<updated>2017-06-21T12:16:16Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : Page créée avec « {{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }} = Interaction = == Intégra... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble 'information sur l'installation,configuration, interaction avec l'Active Directory Windows }}&lt;br /&gt;
= Interaction =&lt;br /&gt;
== Intégration d'un serveur Linux à l'AD ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration du système avant intégration ===&lt;br /&gt;
Mettre à jour le système &lt;br /&gt;
 {{ Console root | apt update &amp;amp; apt upgrade -y }}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S'assurer d'une connexion SSH en root car nous allons désactiver le autre source d'authentification au besoin.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier hosts pour qu'il coïncide avec le serveur d'authentification.&lt;br /&gt;
{{ Console root | nano /etc/hosts }} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.1.1       test-debprox.test.pass.be test-debprox&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modififier les /etc/nsswitch.conf au besoin.&lt;br /&gt;
&lt;br /&gt;
S'assurer que le dns pointe bien sur le serveur AD &lt;br /&gt;
Au besoin modifier le fichier /etc/resolv.conf &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
domain test.pass.be&lt;br /&gt;
search test.pass.be&lt;br /&gt;
nameserver 192.168.100.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== installation des package nécessaire à l'intégration ===&lt;br /&gt;
&lt;br /&gt;
Executer le script suivant.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script should join Debian Jessie (8) to an Active Directory domain.&lt;br /&gt;
echo &amp;quot;Please authenticate with your sudo password&amp;quot;&lt;br /&gt;
sudo -v&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which realmd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install krb5-user adcli packagekit realmd -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! $(sudo which ntpd 2&amp;gt;/dev/null); then&lt;br /&gt;
    sudo aptitude install ntp -y&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo mkdir -p /var/lib/samba/private&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter the domain you wish to join: &amp;quot;&lt;br /&gt;
read DOMAIN&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Please enter a domain admin login to use: &amp;quot;&lt;br /&gt;
read ADMIN&lt;br /&gt;
&lt;br /&gt;
sudo realm join --user=$ADMIN $DOMAIN&lt;br /&gt;
&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    echo &amp;quot;AD join failed.  Please run 'journalctl -xn' to determine why.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
sudo systemctl enable sssd&lt;br /&gt;
sudo systemctl start sssd&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;session required pam_mkhomedir.so skel=/etc/skel/ umask=0022&amp;quot; | sudo tee -a /etc/pam.d/common-session&lt;br /&gt;
&lt;br /&gt;
# configure sudo&lt;br /&gt;
sudo aptitude install libsss-sudo -y&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;%domain\ admins@$DOMAIN ALL=(ALL) ALL&amp;quot; | sudo tee -a /etc/sudoers.d/domain_admins&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;The computer is joined to the domain.  Please reboot, ensure that you are connected to the network, and you should be able to login with domain credentials.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entrer le Domaine le user admins pour le domaine.&lt;br /&gt;
&lt;br /&gt;
Une fois le scripte terminé passer à la configuration.&lt;br /&gt;
&lt;br /&gt;
=== modification des fichiers de configuration ===&lt;br /&gt;
allez dans le fichier /etc/sssd/sssd.conf modifier la ligne suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 use_fully_qualified_names = False&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Faire un reboot system.&lt;br /&gt;
&lt;br /&gt;
Afin de pour voir se connecter en ssh à la machine, activer le autehntifcation kerberos.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration du serveur ssh dans /etc/ssh/sshd_config en activant les 3 variable suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Kerberos options&lt;br /&gt;
KerberosAuthentication yes&lt;br /&gt;
&lt;br /&gt;
# GSSAPI options&lt;br /&gt;
GSSAPIAuthentication yes&lt;br /&gt;
GSSAPICleanupCredentials yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
redémarrer les service SSH&lt;br /&gt;
&lt;br /&gt;
{{ Console root | service ssh restart }}&lt;br /&gt;
&lt;br /&gt;
=== Vérification du fonctionnement ===&lt;br /&gt;
Pour verrifier le bon fonctionnement &lt;br /&gt;
&lt;br /&gt;
taper getent passwd nom_du_user&lt;br /&gt;
{{ Console root | getent passwd mdaniel }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdaniel:*:47401107:47400513:Maxime Daniel:/home/test.pass.be/mdaniel:/bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
autres commandes &lt;br /&gt;
&lt;br /&gt;
{{ Console root | su - mdaniel }} &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Création du répertoire « /home/test.pass.be/mdaniel »&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test d'un connexion ssh avec le user AD&lt;br /&gt;
{{ Console | ssh mdaniel@192.168.100.6 }}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mdaniel@192.168.100.6's password: &lt;br /&gt;
mdaniel@test-debprox:~$ &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ Console | pwd }}&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;/home/test.pass.be/mdaniel &amp;lt;/pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
[[Catégorie:Windows Server]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Postfix&amp;diff=258</id>
		<title>Postfix</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Postfix&amp;diff=258"/>
				<updated>2016-12-30T15:19:11Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page permet de réaliser la mis en place ainsi que la configuration de Postfix }}&lt;br /&gt;
&lt;br /&gt;
Avant toute chose, il est nécessaire d'installer et configurer Cyrus-Imap&lt;br /&gt;
&lt;br /&gt;
== Cyrus Imap ==&lt;br /&gt;
&lt;br /&gt;
Pour l'installation et la configuration de Cyrus Imap, veuillez vous référencer à la [[Cyrus|page suivante]]&lt;br /&gt;
&lt;br /&gt;
== Postfix ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
La configuration de postfix est réalisé via deux fichiers&lt;br /&gt;
&lt;br /&gt;
* main.cf&lt;br /&gt;
* master.cf&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le fichier {{ File | main.cf }} qui permet de paramétrer postfix&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#########################################&lt;br /&gt;
#	REGLES GENERALES		#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
#La règle smtpd_banner définit le message d’accueil du serveur Postfix&lt;br /&gt;
#smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)&lt;br /&gt;
smtpd_banner = DIOUXX&lt;br /&gt;
&lt;br /&gt;
#Desactivation notification terminal&lt;br /&gt;
biff = no&lt;br /&gt;
&lt;br /&gt;
#La règle myhostname renseigne le nom de la machine sur laquelle s’exécute (est installé) Postfix.&lt;br /&gt;
myhostname = your hostname&lt;br /&gt;
&lt;br /&gt;
#La règle mail_name définit le nom du système de messagerie du serveur&lt;br /&gt;
mail_name = Postfix&lt;br /&gt;
&lt;br /&gt;
#La règle mydomain renseigne le nom de domaine auquel appartient la machine sur laquelle s’exécute Postfix.&lt;br /&gt;
mydomain = diouxx.be&lt;br /&gt;
&lt;br /&gt;
#La règle mydestination énumère tous les domaines pour lesquels le serveur Postfix acceptera les mails afin de les distribuer en local.&lt;br /&gt;
#&amp;quot;distribuer en local&amp;quot; signifie: livrer les mails à tous les utilisateurs ayant un compte UNIX ou un compte virtuel (c’est à dire simplement une BàL) sur une machine qui appartient à &lt;br /&gt;
#l’un des domaines de la liste de la règle mydestination.&lt;br /&gt;
#A la place de $mydomain on peut bien sûr mettre le nom de domaine en toute lettre !&lt;br /&gt;
mydestination = $myhostname, www.$mydomain, $mydomain, localhost, localhost.$mydomain&lt;br /&gt;
&lt;br /&gt;
inet_interfaces = all&lt;br /&gt;
&lt;br /&gt;
#proxy_interfaces = 193.190.248.8&lt;br /&gt;
&lt;br /&gt;
#################################&lt;br /&gt;
#	VIRTUAL DOMAIN		#&lt;br /&gt;
#################################&lt;br /&gt;
&lt;br /&gt;
#Le paramètre virtual_mailbox_domains indique à Postfix que test.pass.be est un domaine de boîtes-aux-lettres virtuelles.&lt;br /&gt;
#Si vous l'oubliez, Postfix rejetera le courrier (relais interdit) ou ne sera pas en mesure de le livrer (le courrier de exmple.com bouclera).&lt;br /&gt;
#virtual_mailbox_domains = test.pass.be&lt;br /&gt;
&lt;br /&gt;
#Le paramètre virtual_mailbox_base indique le répertoire de base pour toutes les boîtes aux lettres virtuelles.&lt;br /&gt;
#C'est un mécanisme évitant les erreurs : le courrier ne peut être livré n'importe où.&lt;br /&gt;
#virtual_mailbox_base = /var/spool/cyrus/mail&lt;br /&gt;
&lt;br /&gt;
# Le paramètre virtual_mailbox_maps indique la table des correspondances entre les adresses virtuelles et les boîtes-aux-lettres (ou les répertoires).&lt;br /&gt;
#virtual_mailbox_maps = hash:/etc/postfix/vmailbox&lt;br /&gt;
&lt;br /&gt;
#virtual_alias_domains = /etc/postfix/virtual_domains&lt;br /&gt;
&lt;br /&gt;
#Il est possible de mixer les alias virtuels avec des boîtes-aux-lettres virtuelles.&lt;br /&gt;
#virtual_alias_maps = hash:/etc/postfix/virtual&lt;br /&gt;
&lt;br /&gt;
#virtual_minimum_uid = 100&lt;br /&gt;
#virtual_uid_maps = static:5000&lt;br /&gt;
#virtual_gid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
##########################################&lt;br /&gt;
#	MASQUAGE DES NOMS D'HOTES	 #&lt;br /&gt;
##########################################&lt;br /&gt;
&lt;br /&gt;
#La règle myorigin renseigne la partie réseau de l’adresse d’enveloppe ou d’en-tête des mails qui seront envoyés par Postfix.&lt;br /&gt;
myorigin = $mydomain&lt;br /&gt;
&lt;br /&gt;
#La règle append_at_myorigin initialise ou non (yes/no) la réécriture des adresses en ajoutant à ces adresses&lt;br /&gt;
#append_at_myorigin = yes&lt;br /&gt;
&lt;br /&gt;
#La règle append_dot_mydomain initialise ou non la réécriture des adresses en ajoutant à ces adresses&lt;br /&gt;
#append_dot_mydomain = yes&lt;br /&gt;
&lt;br /&gt;
#La règle masquerade_domains définit les règles de supression des noms d’hôtes et/ou de sous-domaines dans les adresses d’enveloppe et les en-têtes de message de l’expéditeur&lt;br /&gt;
#(et non du destinataire!!!).&lt;br /&gt;
#masquerade_domains = admin.pass.be&lt;br /&gt;
&lt;br /&gt;
#La règle masquerade_exceptions définit les comptes pour lesquels ne s’appliqueront pas les règles de la directive masquerad_domains.&lt;br /&gt;
#masquerade_exceptions =&lt;br /&gt;
&lt;br /&gt;
#########################################&lt;br /&gt;
#	CONTROLE D ACCES RELAYAGE	#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
#La règle mynetworks énumère les réseaux ou adresses des machines qui peuvent utiliser le serveur postfix pour envoyer/relayer du courrier vers l’extérieur.&lt;br /&gt;
mynetworks = 127.0.0.0/8 &lt;br /&gt;
#mynetworks_style = class&lt;br /&gt;
&lt;br /&gt;
#La règle relay_domains indique les domaines et sous-domaines vers lesquels Postfix va relayer (faire suivre) le courrier.&lt;br /&gt;
relay_domains = $mydestination &lt;br /&gt;
&lt;br /&gt;
#La règle relayhost définit la passerelle SMTP qui est rellement connectée à Internet.&lt;br /&gt;
#Cette règle ne concerne que les mails SORTANT.&lt;br /&gt;
relayhost = &lt;br /&gt;
&lt;br /&gt;
#################################&lt;br /&gt;
#	CONFIGURATION TLS	#&lt;br /&gt;
#################################&lt;br /&gt;
smtp_use_tls=no&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
#smtpd_tls_security = may&lt;br /&gt;
smtpd_tls_CApath = /etc/postfix/tls&lt;br /&gt;
smtpd_tls_key_file = /etc/postfix/tls/postfix.key&lt;br /&gt;
smtpd_tls_cert_file = /etc/postfix/tls/postfix.crt&lt;br /&gt;
smtpd_tls_CAfile = /etc/postfix/tls/cacert.pem&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtpd_tls_received_header = yes&lt;br /&gt;
smtpd_tls_session_cache_timeout = 3600s&lt;br /&gt;
tls_random_source = dev:/dev/urandom&lt;br /&gt;
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache&lt;br /&gt;
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
smtp_use_tls = yes&lt;br /&gt;
smtp_tls_security_level = may&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
smtp_tls_note_starttls_offer = yes &lt;br /&gt;
&lt;br /&gt;
#########################################&lt;br /&gt;
#	CONFIGURATION SASL		#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
smtpd_sasl_auth_enable = yes&lt;br /&gt;
smtpd_sasl_local_domain = &lt;br /&gt;
smtpd_sasl_type = cyrus&lt;br /&gt;
smtpd_sasl_path = smtpd&lt;br /&gt;
smtpd_sasl_security_options = noanonymous&lt;br /&gt;
smtpd_sasl_authenticated_header = yes&lt;br /&gt;
broken_sasl_auth_clients = yes&lt;br /&gt;
&lt;br /&gt;
#########################################&lt;br /&gt;
#	TABLE DE RECHERCHES		#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
#La règle default_database_type définit le type de base de données que l’on souhaite utiliser.&lt;br /&gt;
#default_database_type = hash&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#	ALIAS		#&lt;br /&gt;
#########################&lt;br /&gt;
&lt;br /&gt;
#La règle alias_maps définit le type (hash, NIS, LDAP, etc...) et l’emplacement du fichier texte dont se servira la commande postalias ou newalises&lt;br /&gt;
#pour re/construire le(s) fichier(s) de base de données (.db) d’alias utilisés par l’agent de distribution local.&lt;br /&gt;
alias_maps = hash:/etc/aliases&lt;br /&gt;
&lt;br /&gt;
#La règle alias_database définit l’emplacement des fichiers texte dont se servira la commande newaliases pour construire les fichiers base de données d’alias,&lt;br /&gt;
#c’est à dire uniquement les fichiers qui doivent être indexés par la commande newaliases.&lt;br /&gt;
#alias_database = hash:/etc/aliases.db&lt;br /&gt;
alias_database = hash:/etc/aliases&lt;br /&gt;
&lt;br /&gt;
#La règle default_privs définit les privilèges de Postfix lors de la distribution en local à un alias.&lt;br /&gt;
#default_privs = nobody&lt;br /&gt;
&lt;br /&gt;
#La règle allow_mail_to_commands définit dans quel cadre Postfix doit délivrer le courrier à une commande.&lt;br /&gt;
#allow_mail_to_commands = alias,forward, include&lt;br /&gt;
&lt;br /&gt;
#La règle allow_mail_to_files définit dans quel cadre Postfix doit délivrer le courrier à un fichier.&lt;br /&gt;
#allow_mail_to_files = alias,forward, include&lt;br /&gt;
&lt;br /&gt;
#########################################################&lt;br /&gt;
#	REECRITURE ET/OU REDIRECTION D ADRESSES		#&lt;br /&gt;
#########################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#########################################&lt;br /&gt;
#	GESTION FILE D ATTENTE		#&lt;br /&gt;
#########################################&lt;br /&gt;
&lt;br /&gt;
#La règle queue_directory définit l’emplacement du répertoire racine de la file d’attente de Postfix.&lt;br /&gt;
queue_directory = /var/spool/postfix&lt;br /&gt;
&lt;br /&gt;
#################################&lt;br /&gt;
#	DISTRIBUTION LOCALE	#&lt;br /&gt;
#################################&lt;br /&gt;
&lt;br /&gt;
mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp&lt;br /&gt;
&lt;br /&gt;
local_recipient_maps = $alias_maps&lt;br /&gt;
#local_recipient_maps =&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#	GESTION BAL	#&lt;br /&gt;
#########################&lt;br /&gt;
&lt;br /&gt;
home_mailbox = Maildir/&lt;br /&gt;
&lt;br /&gt;
#Limitation de la taille des BAL&lt;br /&gt;
mailbox_size_limit = 0&lt;br /&gt;
&lt;br /&gt;
#Taille maximal des messages&lt;br /&gt;
#Taille = 20 Mo&lt;br /&gt;
message_size_limit = 20480000&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#	AMAVIS		#&lt;br /&gt;
#########################&lt;br /&gt;
&lt;br /&gt;
content_filter = amavis:[127.0.0.1]:10024&lt;br /&gt;
receive_override_options = no_address_mappings&lt;br /&gt;
&lt;br /&gt;
smtpd_recipient_restrictions = permit_sasl_authenticated,&lt;br /&gt;
	   permit_mynetworks,&lt;br /&gt;
           reject_unauth_destination,&lt;br /&gt;
#           check_policy_service inet:127.0.0.1:60000&lt;br /&gt;
           check_policy_service inet:127.0.0.1:10023&lt;br /&gt;
&lt;br /&gt;
#########################&lt;br /&gt;
#	SECURITE	#&lt;br /&gt;
#########################&lt;br /&gt;
&lt;br /&gt;
#Bloque une partie de SPAM en obligeant la requete HELO&lt;br /&gt;
smtpd_helo_required = yes&lt;br /&gt;
&lt;br /&gt;
#Utilisation de postgrey &lt;br /&gt;
#check_policy_service = inet:127.0.0.1:10023&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Le fichier {{ File | master.cf }} permet de définir la manière dont postfix va communiquer via les différents protocoles qu'il accepte&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Postfix master process configuration file.  For details on the format&lt;br /&gt;
# of the file, see the master(5) manual page (command: &amp;quot;man 5 master&amp;quot;).&lt;br /&gt;
#&lt;br /&gt;
# Do not forget to execute &amp;quot;postfix reload&amp;quot; after editing this file.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
# service type  private unpriv  chroot  wakeup  maxproc command + args&lt;br /&gt;
#               (yes)   (yes)   (yes)   (never) (100)&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
smtp      inet  n       -       -       -       -       smtpd&lt;br /&gt;
#	-o content_filter=spamassassin&lt;br /&gt;
#smtp      inet  n       -       -       -       1       postscreen&lt;br /&gt;
#smtpd     pass  -       -       -       -       -       smtpd&lt;br /&gt;
#dnsblog   unix  -       -       -       -       0       dnsblog&lt;br /&gt;
#tlsproxy  unix  -       -       -       -       0       tlsproxy&lt;br /&gt;
submission inet n       -       -       -       -       smtpd&lt;br /&gt;
#  -o syslog_name=postfix/submission&lt;br /&gt;
  -o smtpd_tls_security_level=encrypt&lt;br /&gt;
#  -o smtpd_sasl_auth_enable=yes&lt;br /&gt;
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
#  -o milter_macro_daemon_name=ORIGINATING&lt;br /&gt;
smtps     inet  n       -       -       -       -       smtpd&lt;br /&gt;
#  -o syslog_name=postfix/smtps&lt;br /&gt;
  -o smtpd_tls_wrappermode=yes&lt;br /&gt;
  -o smtpd_sasl_auth_enable=yes&lt;br /&gt;
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
  -o smtpd_client_restrictions=permit_sasl_authenticated&lt;br /&gt;
  -o milter_macro_daemon_name=ORIGINATING&lt;br /&gt;
#628       inet  n       -       -       -       -       qmqpd&lt;br /&gt;
pickup    fifo  n       -       -       60      1       pickup&lt;br /&gt;
cleanup   unix  n       -       -       -       0       cleanup&lt;br /&gt;
qmgr      fifo  n       -       n       300     1       qmgr&lt;br /&gt;
#qmgr     fifo  n       -       n       300     1       oqmgr&lt;br /&gt;
tlsmgr    unix  -       -       -       1000?   1       tlsmgr&lt;br /&gt;
rewrite   unix  -       -       -       -       -       trivial-rewrite&lt;br /&gt;
bounce    unix  -       -       -       -       0       bounce&lt;br /&gt;
defer     unix  -       -       -       -       0       bounce&lt;br /&gt;
trace     unix  -       -       -       -       0       bounce&lt;br /&gt;
verify    unix  -       -       -       -       1       verify&lt;br /&gt;
flush     unix  n       -       -       1000?   0       flush&lt;br /&gt;
proxymap  unix  -       -       n       -       -       proxymap&lt;br /&gt;
proxywrite unix -       -       n       -       1       proxymap&lt;br /&gt;
smtp      unix  -       -       -       -       -       smtp&lt;br /&gt;
relay     unix  -       -       -       -       -       smtp&lt;br /&gt;
	-o smtp_fallback_relay=&lt;br /&gt;
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5&lt;br /&gt;
showq     unix  n       -       -       -       -       showq&lt;br /&gt;
error     unix  -       -       -       -       -       error&lt;br /&gt;
retry     unix  -       -       -       -       -       error&lt;br /&gt;
discard   unix  -       -       -       -       -       discard&lt;br /&gt;
local     unix  -       n       n       -       -       local&lt;br /&gt;
virtual   unix  -       n       n       -       -       virtual&lt;br /&gt;
lmtp      unix  -       -       n       -       -       lmtp&lt;br /&gt;
anvil     unix  -       -       -       -       1       anvil&lt;br /&gt;
scache    unix  -       -       -       -       1       scache&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
# Interfaces to non-Postfix software. Be sure to examine the manual&lt;br /&gt;
# pages of the non-Postfix software to find out what options it wants.&lt;br /&gt;
#&lt;br /&gt;
# Many of the following services use the Postfix pipe(8) delivery&lt;br /&gt;
# agent.  See the pipe(8) man page for information about ${recipient}&lt;br /&gt;
# and other message envelope options.&lt;br /&gt;
# ====================================================================&lt;br /&gt;
#&lt;br /&gt;
# maildrop. See the Postfix MAILDROP_README file for details.&lt;br /&gt;
# Also specify in main.cf: maildrop_destination_recipient_limit=1&lt;br /&gt;
#&lt;br /&gt;
maildrop  unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
#&lt;br /&gt;
# Recent Cyrus versions can use the existing &amp;quot;lmtp&amp;quot; master.cf entry.&lt;br /&gt;
#&lt;br /&gt;
# Specify in cyrus.conf:&lt;br /&gt;
#   lmtp    cmd=&amp;quot;lmtpd -a&amp;quot; listen=&amp;quot;localhost:lmtp&amp;quot; proto=tcp4&lt;br /&gt;
#&lt;br /&gt;
# Specify in main.cf one or more of the following:&lt;br /&gt;
#  mailbox_transport = lmtp:inet:localhost&lt;br /&gt;
#  virtual_transport = lmtp:inet:localhost&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
#&lt;br /&gt;
# Cyrus 2.1.5 (Amos Gouaux)&lt;br /&gt;
# Also specify in main.cf: cyrus_destination_recipient_limit=1&lt;br /&gt;
#&lt;br /&gt;
cyrus     unix  -       n       n       -       -       pipe&lt;br /&gt;
#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
# Old example of delivery via Cyrus.&lt;br /&gt;
#&lt;br /&gt;
#old-cyrus unix  -       n       n       -       -       pipe&lt;br /&gt;
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}&lt;br /&gt;
#&lt;br /&gt;
# ====================================================================&lt;br /&gt;
#&lt;br /&gt;
# See the Postfix UUCP_README file for configuration details.&lt;br /&gt;
#&lt;br /&gt;
uucp      unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)&lt;br /&gt;
#&lt;br /&gt;
# Other external delivery methods.&lt;br /&gt;
#&lt;br /&gt;
ifmail    unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)&lt;br /&gt;
bsmtp     unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient&lt;br /&gt;
scalemail-backend unix	-	n	n	-	2	pipe&lt;br /&gt;
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}&lt;br /&gt;
mailman   unix  -       n       n       -       -       pipe&lt;br /&gt;
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py&lt;br /&gt;
  ${nexthop} ${user}&lt;br /&gt;
&lt;br /&gt;
#Amavis&lt;br /&gt;
amavis unix - - - - 2 smtp&lt;br /&gt;
        -o smtp_data_done_timeout=1200&lt;br /&gt;
        -o smtp_send_xforward_command=yes&lt;br /&gt;
 &lt;br /&gt;
127.0.0.1:10025 inet n - - - - smtpd&lt;br /&gt;
        -o content_filter=&lt;br /&gt;
        -o local_recipient_maps=&lt;br /&gt;
        -o relay_recipient_maps=&lt;br /&gt;
        -o smtpd_restriction_classes=&lt;br /&gt;
        -o smtpd_client_restrictions=&lt;br /&gt;
        -o smtpd_helo_restrictions=&lt;br /&gt;
        -o smtpd_sender_restrictions=&lt;br /&gt;
        -o smtpd_recipient_restrictions=permit_mynetworks,reject&lt;br /&gt;
        -o mynetworks=127.0.0.0/8&lt;br /&gt;
        -o strict_rfc821_envelopes=yes&lt;br /&gt;
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks&lt;br /&gt;
#        -o smtpd_bind_address=127.0.0.1&lt;br /&gt;
&lt;br /&gt;
#Spamassasin&lt;br /&gt;
spamassassin  unix  -   n     n     -   -   pipe&lt;br /&gt;
    user=spamd    argv=/usr/bin/spamc -f  -e&lt;br /&gt;
    /usr/sbin/sendmail -oi -f ${sender} ${recipient}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SMTPD.conf ==&lt;br /&gt;
&lt;br /&gt;
Avant d'aller plus loin, il est important de veiller à ce que le fichier smtpd.conf soit créé dans /etc/postfix/sasl/ avec les paramètres&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pwcheck_method: saslauthd&lt;br /&gt;
mech_list: PLAIN LOGIN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
En effet : l'utilisation de la balise &amp;quot;smtpd_sasl_path = variable&amp;quot; implique d'un fichier /etc/postfix/sasl/[variable].conf soit créé et instancié.&lt;br /&gt;
Ce fichier est utilisé directement par postfix pour configurer l'accès SASL. Sinon, des messages RCPT TO style Relay Acces Denied ou Acces Denied peuvent se produire.&lt;br /&gt;
&lt;br /&gt;
== [[Postfix-TLS]] ==&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
Le disclaimer est un service qui permet de rajouter un message (typiquement une clause de confidentialité) à la fin des mails. Dans la suite, nous verrons comment modifier le disclaimer afin qu'il n'ajoute un message que pour les mails sortants&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Pour l'instant, l'installation est réalisé grâce à la commande ''apt''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Console root | apt-get install altermime }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
Une fois installé, nous allons pouvoir configurer altermime mais avant cela, nous allons créer un utilisateur spécifique ainsi que les différents dossier dont doit disposer altermime&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
useradd -r -c &amp;quot;Postfix Filters&amp;quot; -d /var/spool/filter filter&lt;br /&gt;
mkdir /var/spool/filter&lt;br /&gt;
chown filter:filter /var/spool/filter&lt;br /&gt;
chmod 750 /var/spool/filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois cela réalisé, il nous faut créer le script disclaimer dans {{ File | /etc/postfix/disclaimer }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# Localize these.&lt;br /&gt;
INSPECT_DIR=/var/spool/filter&lt;br /&gt;
SENDMAIL=/usr/sbin/sendmail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Exit codes from &amp;lt;sysexits.h&amp;gt;&lt;br /&gt;
EX_TEMPFAIL=75&lt;br /&gt;
EX_UNAVAILABLE=69&lt;br /&gt;
&lt;br /&gt;
# Clean up when done or when aborting.&lt;br /&gt;
trap &amp;quot;rm -f in.$$&amp;quot; 0 1 2 3 15&lt;br /&gt;
&lt;br /&gt;
# Start processing.&lt;br /&gt;
cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit&lt;br /&gt;
$EX_TEMPFAIL; }&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt;in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }&lt;br /&gt;
&lt;br /&gt;
#Modification pour uniquement mails sortant&lt;br /&gt;
# obtain From address&lt;br /&gt;
#from_address=`grep -m 1 &amp;quot;From:&amp;quot; in.$$ | cut -d &amp;quot;&amp;lt;&amp;quot; -f 2 | cut -d &amp;quot;&amp;gt;&amp;quot; -f 1`&lt;br /&gt;
to_address=`grep -m 1 &amp;quot;To:&amp;quot; in.$$ | cut -d : -f 2 | cut -d @ -f 2`&lt;br /&gt;
&lt;br /&gt;
#echo $from_address &amp;gt; /tmp/from.txt&lt;br /&gt;
#echo $to_address &amp;gt; /tmp/to.txt&lt;br /&gt;
&lt;br /&gt;
if [ $to_address != &amp;quot;admin.diouxx.be&amp;quot; ]   &lt;br /&gt;
then&lt;br /&gt;
        /usr/bin/altermime --input=in.$$ \&lt;br /&gt;
                        --disclaimer=/etc/postfix/disclaimer.txt \&lt;br /&gt;
                        --disclaimer-html=/etc/postfix/disclaimer.html \&lt;br /&gt;
                        --xheader=&amp;quot;X-Copyrighted-Material: Please visit http://www.company.com/privacy.htm&amp;quot; || \&lt;br /&gt;
                                { echo Message content rejected; exit $EX_UNAVAILABLE; }&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
$SENDMAIL -oi &amp;quot;$@&amp;quot; &amp;lt;in.$$&lt;br /&gt;
&lt;br /&gt;
exit $?&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Note | La modification par rapport au script d'origine se situe au niveau du '''IF'''. En effet, le script va récupérer le champ du destinataire et vérifier si son adresse mail correspond au domaine du serveur postfix ou non. Si ce n'est pas le cas, il s'agit d'un mail sortant }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut également modifier le propriétaire du script ainsi que les droits&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Console root | chgrp filter /etc/postfix/disclaimer&amp;lt;br&amp;gt;[root@ordi ~]# chmod 750 /etc/postfix/disclaimer }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est nécessaire maintenant de créer le fichier {{ File | /etc/postfix/disclaimer.txt }} qui va contenir le message à rajouter aux mails sortant.&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a modifier le fichier {{ File | /etc/postfix/master.cf }} afin de lui indiquer qu'il doit utiliser le service disclaimer pour envoyer les mails. Pour cela, il faut rajouter ces deux lignes si au début du fichier&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Postfix master process configuration file.  For details on the format&lt;br /&gt;
# of the file, see the master(5) manual page (command: &amp;quot;man 5 master&amp;quot;).&lt;br /&gt;
#&lt;br /&gt;
# Do not forget to execute &amp;quot;postfix reload&amp;quot; after editing this file.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
# service type  private unpriv  chroot  wakeup  maxproc command + args&lt;br /&gt;
#               (yes)   (yes)   (yes)   (never) (100)&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
smtp      inet  n       -       -       -       -       smtpd&lt;br /&gt;
   -o content_filter=dfilt:&lt;br /&gt;
dfilt     unix    -       n       n       -       -       pipe&lt;br /&gt;
    flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redemmarez postfix pour qu'il prenne en compte les modifications que l'on a apportés&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/postfix restart }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Amavis ==&lt;br /&gt;
&lt;br /&gt;
Amavis est le logiciel qui va permettre de réaliser le transport des mails de postfix jusqu'aux filtres anti-spam et antivirus. Il repassera le mail à postfix pour sa destination final seulement si ce mail est considéré comme &amp;quot;propre&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Pour l'instant, l'installation se réalise avec la commande '''apt'''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ Console root | apt-get install amavis }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
Nous allons devoir en premier lieux, configurer postfix pour qu'il accepte de travailler avec amavis. Pour ce faire nous éditions les deux fichier suivants :&lt;br /&gt;
&lt;br /&gt;
* /etc/postfix/master.cf&lt;br /&gt;
* /etc/postfix/main.cf&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour le fichier {{ File | /etc/postfix/master.cf }}, nous allons rajouter les lignes suivantes :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
amavis unix - - - - 2 smtp&lt;br /&gt;
        -o smtp_data_done_timeout=1200&lt;br /&gt;
        -o smtp_send_xforward_command=yes&lt;br /&gt;
 &lt;br /&gt;
127.0.0.1:10025 inet n - - - - smtpd&lt;br /&gt;
        -o content_filter=&lt;br /&gt;
        -o local_recipient_maps=&lt;br /&gt;
        -o relay_recipient_maps=&lt;br /&gt;
        -o smtpd_restriction_classes=&lt;br /&gt;
        -o smtpd_client_restrictions=&lt;br /&gt;
        -o smtpd_helo_restrictions=&lt;br /&gt;
        -o smtpd_sender_restrictions=&lt;br /&gt;
        -o smtpd_recipient_restrictions=permit_mynetworks,reject&lt;br /&gt;
        -o mynetworks=127.0.0.0/8&lt;br /&gt;
        -o strict_rfc821_envelopes=yes&lt;br /&gt;
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks&lt;br /&gt;
        -o smtpd_bind_address=127.0.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour le fichier {{ File | /etc/postfix/main.cf }}, ajoutons également les lignes suivantes à la fin du fichier :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
content_filter = amavis:[127.0.0.1]:10024&lt;br /&gt;
receive_override_options = no_address_mappings&lt;br /&gt;
&lt;br /&gt;
smtpd_recipient_restrictions = permit_sasl_authenticated,&lt;br /&gt;
           permit_mynetworks,&lt;br /&gt;
           reject_unauth_destination,&lt;br /&gt;
           check_policy_service inet:127.0.0.1:60000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous devons activer les filtres, normalement il suffit de décommenter les lignes suivantes du fichier {{ File | /etc/amavis/conf.d/15-cintent_filter_mode }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
# You can modify this file to re-enable SPAM checking through spamassassin&lt;br /&gt;
# and to re-enable antivirus checking.&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Default antivirus checking mode&lt;br /&gt;
# Please note, that anti-virus checking is DISABLED by&lt;br /&gt;
# default.&lt;br /&gt;
# If You wish to enable it, please uncomment the following lines:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@bypass_virus_checks_maps = (&lt;br /&gt;
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Default SPAM checking mode&lt;br /&gt;
# Please note, that anti-spam checking is DISABLED by&lt;br /&gt;
# default.&lt;br /&gt;
# If You wish to enable it, please uncomment the following lines:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@bypass_spam_checks_maps = (&lt;br /&gt;
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);&lt;br /&gt;
&lt;br /&gt;
1;  # ensure a defined return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Il ne nous reste qu'a configurer la mise en quarantaine en éditant le fichier {{ File | /etc/amavis/conf.d/50-user }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Place your configuration directives here.  They will override those in&lt;br /&gt;
# earlier files.&lt;br /&gt;
#&lt;br /&gt;
# See /usr/share/doc/amavisd-new/ for documentation and examples of&lt;br /&gt;
# the directives you can use in this file&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
$QUARANTINEDIR = '/var/spool/virusmails';              # Quarantine Directory&lt;br /&gt;
$spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR&lt;br /&gt;
$spam_quarantine_to = 'spam-quarantine';         # Put Spam in Quarantine Directory&lt;br /&gt;
# $spam_quarantine_to = &amp;quot;admin\@$mydomain&amp;quot;; # Send Spam to Adminstrator&lt;br /&gt;
# $spam_quarantine_to = undef;                   # Do nothing with Spam&lt;br /&gt;
$final_spam_destiny = D_DISCARD;&lt;br /&gt;
#$spam_admin = &amp;quot;admin\@$mydomain&amp;quot;;          # Where to send Notification&lt;br /&gt;
&lt;br /&gt;
#------------ Do not modify anything below this line -------------&lt;br /&gt;
1;  # ensure a defined return&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il nous faut pas '''oublier''' de créer le répertoire qui va accueillir les mails infectés ou considéré comme spam&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | mkdir /var/spool/virusmails&amp;lt;br&amp;gt;[root@ordi ~]# chown amavis:amavis /var/spool/virusmails }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | L'emplacement du dossier qui contiendra les mails infectés ou considéré comme spam est renseigné via la variable '''$QUARANTINEDIR''' }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Il reste encore l'installation et la configuration de spamassasin et clamav&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spamassassin ==&lt;br /&gt;
&lt;br /&gt;
Spamassassin est le logiciel qui comme son nom l'indique va permettre de détecter si les mails que l'ont reçoit sont des spams ou non&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Pour l'instant, l'installation se réalise avec la commande '''apt'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt-get install spamassassin }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
La configuration de spamassassin se réalise avec le fichier {{ File | /etc/default/spamassassin}} et {{ File | /etc/spamassassin/local.cf}}. Normalement, le fichier devrait ressembler à ceci. Tandis que le fichier {{ File | /etc/postfix/master.cf }} doit être modififié afin d'indiquer à postfix qu'il doit utiliser spamassasin&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== /etc/postfix/master.cf ====&lt;br /&gt;
Au début du fichier la section consacré à smtp doit ressembler à ceci :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Postfix master process configuration file.  For details on the format&lt;br /&gt;
# of the file, see the master(5) manual page (command: &amp;quot;man 5 master&amp;quot;).&lt;br /&gt;
#&lt;br /&gt;
# Do not forget to execute &amp;quot;postfix reload&amp;quot; after editing this file.&lt;br /&gt;
#&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
# service type  private unpriv  chroot  wakeup  maxproc command + args&lt;br /&gt;
#               (yes)   (yes)   (yes)   (never) (100)&lt;br /&gt;
# ==========================================================================&lt;br /&gt;
&lt;br /&gt;
smtp      inet  n       -       -       -       -       smtpd&lt;br /&gt;
   -o content_filter=spamassassin&lt;br /&gt;
   -o content_filter=dfilt:&lt;br /&gt;
dfilt     unix    -       n       n       -       -       pipe&lt;br /&gt;
    flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Avertissement | il est impératif que la ligne spamassassin soit avant la ligne dfit. Sans cela, le disclaimer ne sera pas mis pour les mails sortant }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== /etc/default/spamassassin ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/default/spamassassin&lt;br /&gt;
# Duncan Findlay&lt;br /&gt;
&lt;br /&gt;
# WARNING: please read README.spamd before using.&lt;br /&gt;
# There may be security risks.&lt;br /&gt;
&lt;br /&gt;
# Change to one to enable spamd&lt;br /&gt;
ENABLED=1&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# See man spamd for possible options. The -d option is automatically added.&lt;br /&gt;
SAHOME=&amp;quot;/var/lib/spamassassin/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# SpamAssassin uses a preforking model, so be careful! You need to&lt;br /&gt;
# make sure --max-children is not set to anything higher than 5,&lt;br /&gt;
# unless you know what you're doing.&lt;br /&gt;
&lt;br /&gt;
OPTIONS=&amp;quot;--create-prefs --max-children 5 --username spamd --helper-home-dir ${SAHOME} -s ${SAHOME}spamd.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Pid file&lt;br /&gt;
# Where should spamd write its PID to file? If you use the -u or&lt;br /&gt;
# --username option above, this needs to be writable by that user.&lt;br /&gt;
# Otherwise, the init script will not be able to shut spamd down.&lt;br /&gt;
PIDFILE=&amp;quot;${SAHOME}spamd.pid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Set nice level of spamd&lt;br /&gt;
#NICE=&amp;quot;--nicelevel 15&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Cronjob&lt;br /&gt;
# Set to anything but 0 to enable the cron job to automatically update&lt;br /&gt;
# spamassassin's rules on a nightly basis&lt;br /&gt;
CRON=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== /etc/spamassassin/local.cf ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is the right place to customize your installation of SpamAssassin.&lt;br /&gt;
#&lt;br /&gt;
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be&lt;br /&gt;
# tweaked.&lt;br /&gt;
#&lt;br /&gt;
# Only a small subset of options are listed below&lt;br /&gt;
#&lt;br /&gt;
###########################################################################&lt;br /&gt;
&lt;br /&gt;
#   Add *****SPAM***** to the Subject header of spam e-mails&lt;br /&gt;
#&lt;br /&gt;
 rewrite_header Subject *****SPAM - SPAM_SCORE_*****&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Save spam messages as a message/rfc822 MIME attachment instead of&lt;br /&gt;
#   modifying the original message (0: off, 2: use text/plain instead)&lt;br /&gt;
#&lt;br /&gt;
 report_safe 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Set which networks or hosts are considered 'trusted' by your mail&lt;br /&gt;
#   server (i.e. not spammers)&lt;br /&gt;
#&lt;br /&gt;
# trusted_networks 212.17.35.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Set file-locking method (flock is not safe over NFS, but is faster)&lt;br /&gt;
#&lt;br /&gt;
# lock_method flock&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Set the threshold at which a message is considered spam (default: 5.0)&lt;br /&gt;
#&lt;br /&gt;
 required_score 2.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Use Bayesian classifier (default: 1)&lt;br /&gt;
#&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
&lt;br /&gt;
#   Bayesian classifier auto-learning (default: 1)&lt;br /&gt;
#&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Set headers which may provide inappropriate cues to the Bayesian&lt;br /&gt;
#   classifier&lt;br /&gt;
#&lt;br /&gt;
# bayes_ignore_header X-Bogosity&lt;br /&gt;
# bayes_ignore_header X-Spam-Flag&lt;br /&gt;
# bayes_ignore_header X-Spam-Status&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#   Some shortcircuiting, if the plugin is enabled&lt;br /&gt;
# &lt;br /&gt;
ifplugin Mail::SpamAssassin::Plugin::Shortcircuit&lt;br /&gt;
#&lt;br /&gt;
#   default: strongly-whitelisted mails are *really* whitelisted now, if the&lt;br /&gt;
#   shortcircuiting plugin is active, causing early exit to save CPU load.&lt;br /&gt;
#   Uncomment to turn this on&lt;br /&gt;
#&lt;br /&gt;
# shortcircuit USER_IN_WHITELIST       on&lt;br /&gt;
# shortcircuit USER_IN_DEF_WHITELIST   on&lt;br /&gt;
# shortcircuit USER_IN_ALL_SPAM_TO     on&lt;br /&gt;
# shortcircuit SUBJECT_IN_WHITELIST    on&lt;br /&gt;
&lt;br /&gt;
#   the opposite; blacklisted mails can also save CPU&lt;br /&gt;
#&lt;br /&gt;
# shortcircuit USER_IN_BLACKLIST       on&lt;br /&gt;
# shortcircuit USER_IN_BLACKLIST_TO    on&lt;br /&gt;
# shortcircuit SUBJECT_IN_BLACKLIST    on&lt;br /&gt;
&lt;br /&gt;
#   if you have taken the time to correctly specify your &amp;quot;trusted_networks&amp;quot;,&lt;br /&gt;
#   this is another good way to save CPU&lt;br /&gt;
#&lt;br /&gt;
# shortcircuit ALL_TRUSTED             on&lt;br /&gt;
&lt;br /&gt;
#   and a well-trained bayes DB can save running rules, too&lt;br /&gt;
#&lt;br /&gt;
# shortcircuit BAYES_99                spam&lt;br /&gt;
# shortcircuit BAYES_00                ham&lt;br /&gt;
&lt;br /&gt;
# Enable or disable network checks&lt;br /&gt;
skip_rbl_checks         0&lt;br /&gt;
use_razor2              0&lt;br /&gt;
use_dcc                 0&lt;br /&gt;
use_pyzor               0&lt;br /&gt;
&lt;br /&gt;
endif # Mail::SpamAssassin::Plugin::Shortcircuit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par acquis de conscience, vérifier que le dossier renseigner par la variable SAHOME existe bien et qu'il appartienne bien à l'utilisateur spamd.&lt;br /&gt;
Si ce n'est pas le cas, exécutez les commandes suivantes :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | groupadd -g 5001 spamd&amp;lt;br&amp;gt;[root@ordi ~]# useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd&amp;lt;br&amp;gt;[root@ordi ~]# mkdir /var/lib/spamassassin&amp;lt;br&amp;gt;[root@ordi ~]# chown spamd:spamd /var/lib/spamassassin&amp;lt;br&amp;gt;[root@ordi ~]# chmod 755 /var/lib/spamassassin }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mise a jour de la base SPAM ===&lt;br /&gt;
&lt;br /&gt;
Pour mettre a jour la base anti-spam, il suffit d’exécuter la commande suivante : &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root |  sa-update -D }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | On peux exécuter cette commande dans une tache cron afin de mettre à jour la bas tous les soirs }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le service spamassassin est maintenant configurer.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ClamAV ==&lt;br /&gt;
&lt;br /&gt;
ClamAV est le logiciel anti-virus qui va scanner tous les mails que l'on reçoit&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Pour l'instant, l'installation se réalise avec la commande '''apt'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | apt-get install clamav clamav-daemon }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
La seule configuration à réalisé est de rajouter l'utilisateur clamav, qui a été crée lors de l'installation du paquet, au groupe amavis : &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | adduser clamav amavis&amp;lt;br&amp;gt;Ajout de l'utilisateur « clamav » au groupe « amavis »...&amp;lt;br&amp;gt;Ajout de l'utilisateur clamav au groupe amavis&amp;lt;br&amp;gt;Fait. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Test de Spamassassin et Clamav ==&lt;br /&gt;
&lt;br /&gt;
Avant de pouvoir tester le bon fonctionnement de Spamassassin et Clamv, il est nécessaire de démarrer/redémarrer les services dans l'ordre suivant :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/spamassassin restart&amp;lt;br&amp;gt;Starting SpamAssassin Mail Filter Daemon: spamd. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/amavis restart&amp;lt;br&amp;gt;Stopping amavisd: amavisd-new.&amp;lt;br&amp;gt;Starting amavisd: amavisd-new. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/clamav-daemon restart&amp;lt;br&amp;gt;Stopping ClamAV daemon: clamd.&amp;lt;br&amp;gt;Starting ClamAV daemon: clamd.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | /etc/init.d/postfix restart&amp;lt;br&amp;gt;Stopping Postfix Mail Transport Agent: postfix.&amp;lt;br&amp;gt;Starting Postfix Mail Transport Agent: postfix.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test de Spamassassin ===&lt;br /&gt;
&lt;br /&gt;
Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt&lt;br /&gt;
Il suffit de coller cette ligne dans un mail et de l'envoyer :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il sera détecté comme Spam si tout va bien&lt;br /&gt;
&lt;br /&gt;
=== Test de Clamav ===&lt;br /&gt;
&lt;br /&gt;
Vous procèderez de la même manière, avec le code suivant, récupéré sur [http://www.eicar.org/anti_virus_test_file.htm www.eicar.org] :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si tout se passe correctement, le mail sera placé en quarantaine.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Pour vérifier le bon fonctionnement de l'anti-spam et l'anti-virus, consulter le fichier log {{ File | /var/log/mail.log }}. On peux utiliser la commande ''tail -f /var/log/mail.log'' pour plus de faciliter }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Submission ==&lt;br /&gt;
&lt;br /&gt;
Les manipulations décrites ci-dessus permettent d'activer une authentification sécurisée sur le port 25/tcp. Or, dans le cadre de la lutte ant-virus et anti-spam, ce port est de plus en plus souvent filtré dans les réseaux, surtout les réseaux publics. Si nous proposons un service sur le port 25/tcp, il risque donc de ne pas être accessible depuis n'importe où...&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, on va configurer Postfix pour qu'il sache recevoir des connexions sur le port 587/tcp (submission). On imposera que ces connexions soient chiffrées en TLS et on imposera également une authentification SASL. Nous proposerons ainsi à nos utilisateurs un service leur permettant d'envoyer des mails depuis n'importe quel client de messagerie connecté à Internet (le port 587/tcp n'est pas filtré puisqu'il est censé toujours proposer des services avec authentification, donc pas (trop) de spam ni virus).&lt;br /&gt;
&lt;br /&gt;
Cette technique est décrite dans la RFC 2476.&lt;br /&gt;
&lt;br /&gt;
Pour activer le service, il suffit de le rajouter/décommenter dans le fichier /etc/postfix/master.cf :&lt;br /&gt;
&lt;br /&gt;
    # lignes à ajouter dans /etc/postfix/master.cf :&lt;br /&gt;
    # submission : on ouvre le port 587/tcp sur lequel on impose TLS&lt;br /&gt;
    # et on n'accepte que les clients authentifiés. Cela impose d'avoir&lt;br /&gt;
    # déjà configuré TLS et SASL, bien entendu.&lt;br /&gt;
    # service  type private unpriv  chroot  wakeup  maxproc command + args&lt;br /&gt;
    submission inet n       -       -       -       -       smtpd&lt;br /&gt;
            -o smtpd_tls_security_level=encrypt&lt;br /&gt;
            -o smtpd_client_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
&lt;br /&gt;
Notes :&lt;br /&gt;
&lt;br /&gt;
    sur les anciennes versions de Postfix (&amp;lt; 2.3), on indique smtpd_enforce_tls=yes au lieu de smtpd_tls_security_level=encrypt)&lt;br /&gt;
    ne pas oublier d'ouvrir le port 587/tcp vers le serveur au niveau du parefeu : c'est un service à ouvrir à tout Internet &lt;br /&gt;
&lt;br /&gt;
Ce service est notamment activé sur la messagerie de Montréal, vous trouverez le mode d'emploi côté client ici : MessagerieAufOrg/EnvoiSmtpSortant&lt;br /&gt;
&lt;br /&gt;
== Syslog-ng ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Pour installer Syslog, référencez vous à la page consacré à [[Syslog-ng]]&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
Le fichier {{ File | /etc/syslog-ng/syslog-ng.conf }} sur le '''serveur Postfix''' doit ressembler à ceci :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@version: 3.0&lt;br /&gt;
&lt;br /&gt;
######&lt;br /&gt;
# options&lt;br /&gt;
 &lt;br /&gt;
options {&lt;br /&gt;
        # disable the chained hostname format in logs&lt;br /&gt;
        # (default is enabled)&lt;br /&gt;
        chain_hostnames(0);&lt;br /&gt;
 &lt;br /&gt;
        # the time to wait before a died connection is re-established&lt;br /&gt;
        # (default is 60)&lt;br /&gt;
        time_reopen(10);&lt;br /&gt;
 &lt;br /&gt;
        # the time to wait before an idle destination file is closed&lt;br /&gt;
        # (default is 60)&lt;br /&gt;
        time_reap(360);&lt;br /&gt;
 &lt;br /&gt;
        # the number of lines buffered before written to file&lt;br /&gt;
        # you might want to increase this if your disk isn't catching with&lt;br /&gt;
        # all the log messages you get or if you want less disk activity&lt;br /&gt;
        # (say on a laptop)&lt;br /&gt;
        # (default is 0)&lt;br /&gt;
        #sync(0);&lt;br /&gt;
 &lt;br /&gt;
        # the number of lines fitting in the output queue&lt;br /&gt;
        log_fifo_size(2048);&lt;br /&gt;
 &lt;br /&gt;
        # enable or disable directory creation for destination files&lt;br /&gt;
        create_dirs(yes);&lt;br /&gt;
 &lt;br /&gt;
        # default owner, group, and permissions for log files&lt;br /&gt;
        # (defaults are 0, 0, 0600)&lt;br /&gt;
        owner(root);&lt;br /&gt;
        #group(adm);&lt;br /&gt;
        perm(0640);&lt;br /&gt;
 &lt;br /&gt;
        # default owner, group, and permissions for created directories&lt;br /&gt;
        # (defaults are 0, 0, 0700)&lt;br /&gt;
        dir_owner(root);&lt;br /&gt;
        #dir_group(root);&lt;br /&gt;
        dir_perm(0755);&lt;br /&gt;
 &lt;br /&gt;
        # enable or disable DNS usage&lt;br /&gt;
        # syslog-ng blocks on DNS queries, so enabling DNS may lead to&lt;br /&gt;
        # a Denial of Service attack&lt;br /&gt;
        # (default is yes)&lt;br /&gt;
        use_dns(no);&lt;br /&gt;
 &lt;br /&gt;
        # maximum length of message in bytes&lt;br /&gt;
        # this is only limited by the program listening on the /dev/log Unix&lt;br /&gt;
        # socket, glibc can handle arbitrary length log messages, but -- for&lt;br /&gt;
        # example -- syslogd accepts only 1024 bytes&lt;br /&gt;
        # (default is 2048)&lt;br /&gt;
        #log_msg_size(2048);&lt;br /&gt;
 &lt;br /&gt;
	#Disable statistic log messages.&lt;br /&gt;
	stats_freq(0);&lt;br /&gt;
 &lt;br /&gt;
	# Some program send log messages through a private implementation.&lt;br /&gt;
	# and sometimes that implementation is bad. If this happen syslog-ng&lt;br /&gt;
	# may recognise the program name as hostname. Whit this option&lt;br /&gt;
	# we tell the syslog-ng that if a hostname match this regexp than that&lt;br /&gt;
	# is not a real hostname.&lt;br /&gt;
	bad_hostname(&amp;quot;^gconfd$&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
	flush_lines (0);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
############################&lt;br /&gt;
# Sources&lt;br /&gt;
############################&lt;br /&gt;
# all known message sources&lt;br /&gt;
source s_all {&lt;br /&gt;
        # message generated by Syslog-NG&lt;br /&gt;
        #internal();&lt;br /&gt;
        # standard Linux log source (this is the default place for the syslog()&lt;br /&gt;
        # function to send logs to)&lt;br /&gt;
        unix-stream(&amp;quot;/dev/log&amp;quot;);&lt;br /&gt;
        # messages from the kernel&lt;br /&gt;
        #file(&amp;quot;/proc/kmsg&amp;quot; log_prefix(&amp;quot;kernel: &amp;quot;));&lt;br /&gt;
        # use the following line if you want to receive remote UDP logging messages&lt;br /&gt;
        # (this is equivalent to the &amp;quot;-r&amp;quot; syslogd flag)&lt;br /&gt;
        # udp();&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
source postfix {&lt;br /&gt;
	#file(&amp;quot;/var/log/mail.err&amp;quot; follow_freq(1) flags(no-parse));&lt;br /&gt;
	#file(&amp;quot;/var/log/mail.info&amp;quot; follow_freq(1) flags(no-parse));&lt;br /&gt;
	file(&amp;quot;/var/log/mail.log&amp;quot; follow_freq(1) flags(no-parse));&lt;br /&gt;
	#file(&amp;quot;/var/log/mail.warn&amp;quot; follow_freq(1) flags(no-parse));&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
###########################&lt;br /&gt;
# Destinations&lt;br /&gt;
###########################&lt;br /&gt;
#Serveur distant&lt;br /&gt;
destination srv_dist {&lt;br /&gt;
	udp (&amp;quot;192.168.100.20&amp;quot; port(514));&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
#Local&lt;br /&gt;
destination local_messages {&lt;br /&gt;
	file(&amp;quot;/var/log/syslog-ng/messages&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
destination postfix {&lt;br /&gt;
        file(&amp;quot;/var/log/syslog-ng/$HOST/postfix.log&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
################################&lt;br /&gt;
# Filters&lt;br /&gt;
################################&lt;br /&gt;
# all messages from the auth and authpriv facilities&lt;br /&gt;
filter f_auth { facility(auth, authpriv); };&lt;br /&gt;
 &lt;br /&gt;
# all messages except from the auth and authpriv facilities&lt;br /&gt;
filter f_syslog { not facility(auth, authpriv); };&lt;br /&gt;
 &lt;br /&gt;
# respectively: messages from the cron, daemon, kern, lpr, mail, news, user,&lt;br /&gt;
# and uucp facilities&lt;br /&gt;
filter f_cron { facility(cron); };&lt;br /&gt;
filter f_daemon { facility(daemon); };&lt;br /&gt;
filter f_kern { facility(kern); };&lt;br /&gt;
filter f_lpr { facility(lpr); };&lt;br /&gt;
filter f_mail { facility(mail); };&lt;br /&gt;
filter f_news { facility(news); };&lt;br /&gt;
filter f_user { facility(user); };&lt;br /&gt;
filter f_uucp { facility(uucp); };&lt;br /&gt;
 &lt;br /&gt;
# some filters to select messages of priority greater or equal to info, warn,&lt;br /&gt;
# and err&lt;br /&gt;
# (equivalents of syslogd's *.info, *.warn, and *.err)&lt;br /&gt;
filter f_at_least_info { level(info..emerg); };&lt;br /&gt;
filter f_at_least_notice { level(notice..emerg); };&lt;br /&gt;
filter f_at_least_warn { level(warn..emerg); };&lt;br /&gt;
filter f_at_least_err { level(err..emerg); };&lt;br /&gt;
filter f_at_least_crit { level(crit..emerg); };&lt;br /&gt;
 &lt;br /&gt;
# all messages of priority debug not coming from the auth, authpriv, news, and&lt;br /&gt;
# mail facilities&lt;br /&gt;
filter f_debug { level(debug) and not facility(auth, authpriv, news, mail); };&lt;br /&gt;
 &lt;br /&gt;
# all messages of info, notice, or warn priority not coming form the auth,&lt;br /&gt;
# authpriv, cron, daemon, mail, and news facilities&lt;br /&gt;
filter f_messages {&lt;br /&gt;
        level(info,notice,warn)&lt;br /&gt;
            and not facility(auth,authpriv,cron,daemon,mail,news);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
# messages with priority emerg&lt;br /&gt;
filter f_emerg { level(emerg); };&lt;br /&gt;
 &lt;br /&gt;
# complex filter for messages usually sent to the xconsole&lt;br /&gt;
filter f_xconsole {&lt;br /&gt;
    facility(daemon,mail)&lt;br /&gt;
        or level(debug,info,notice,warn)&lt;br /&gt;
        or (facility(news)&lt;br /&gt;
                and level(crit,err,notice));&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
###################################################&lt;br /&gt;
# Filtre &amp;quot;perso&amp;quot;&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
filter postfix { program(&amp;quot;postfix&amp;quot;) or program(&amp;quot;cyrus&amp;quot;); };&lt;br /&gt;
 &lt;br /&gt;
######&lt;br /&gt;
# logs&lt;br /&gt;
# order matters if you use &amp;quot;flags(final);&amp;quot; to mark the end of processing in a&lt;br /&gt;
# &amp;quot;log&amp;quot; statement&lt;br /&gt;
 &lt;br /&gt;
# these rules provide the same behavior as the commented original syslogd rules&lt;br /&gt;
 &lt;br /&gt;
#log {&lt;br /&gt;
#        source(s_all);&lt;br /&gt;
#	destination(srv_dist);&lt;br /&gt;
#	filter(f_auth);&lt;br /&gt;
#};&lt;br /&gt;
&lt;br /&gt;
log {&lt;br /&gt;
        source(s_all);&lt;br /&gt;
	filter(postfix);&lt;br /&gt;
        destination(postfix);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
log {&lt;br /&gt;
	source(s_all);&lt;br /&gt;
	destination(srv_dist);&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
#log {&lt;br /&gt;
#	source(s_all);&lt;br /&gt;
#	destination(local_messages);&lt;br /&gt;
#};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Concernant la machine ayant le rôle de serveur log, Il faut modifier le fichier {{ File | /etc/syslog-ng/syslog-ng.conf }} en rajoutant les parties suivantes : &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
#Partie Destination&lt;br /&gt;
destination postfix {&lt;br /&gt;
        file(&amp;quot;/var/log/syslog-ng/$HOST/$DAY.$MONTH.$YEAR-postfix.log&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#Partie Filtre&lt;br /&gt;
filter postfix { program(&amp;quot;postfix&amp;quot;); };&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
#Partie Log paths&lt;br /&gt;
log {&lt;br /&gt;
        source(local);&lt;br /&gt;
        filter(postfix);&lt;br /&gt;
        destination(postfix);&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
Pour la migration voir [[Imapsync|ICI]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== setaclmailbox: cyrus: lrswipcda: System I/O error ===&lt;br /&gt;
&lt;br /&gt;
Si on rencontre l'erreur suivante sur un utilisateur mail, il faut reconstruire sa boite mail.&lt;br /&gt;
Pour ce faire, il faut se connecter en tant qu'utilisateur cyrus :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su cyrus }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Reconstruire la boite mail :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/sbin/cyrreconstruct -rxf user.nomUtilisateur&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== testsaslauthd : &amp;quot;connect() : No such file or directory 0&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Si lors d'un redémarrage du serveur mail ou d'un autre service et que vous tentez de réaliser un '''testsaslauthd''', il se peut que l'erreur '''connect() : No such file or directory 0'''&lt;br /&gt;
&lt;br /&gt;
Il faut refaire un lien symbolique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -rf /var/run/saslauthd&lt;br /&gt;
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour automatiser le tout, on peux rajouter cette commande au fichier {{ File | /etc/rc.local }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Commande pour Postfix&lt;br /&gt;
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procédures ==&lt;br /&gt;
&lt;br /&gt;
=== Manipulation Queue ===&lt;br /&gt;
*Vider la queue : postsuper -d ALL&lt;br /&gt;
*Lister les messages : postqueue -p&lt;br /&gt;
*Supprimer message : postsuper -d ID ( L'ID est donné via la commande du dessus)&lt;br /&gt;
*Mettre un messages en attente (hold) : postsuper -h ID&lt;br /&gt;
*Remettre un messages en mode normale (actif) : postsuper -H ID&lt;br /&gt;
*Remettre en Queue un message : postsuper -r ID&lt;br /&gt;
*Pour tous les messages : postsuper -r ID&lt;br /&gt;
*Afficher le contenu d'un message : postcat -q ID&lt;br /&gt;
*Forcer l'envoie des messages en Queue (flush) : postqueue -f&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Créer nouvelle boite mail ===&lt;br /&gt;
{{ Avertissement | L'utilisateur doit d'abord être créée dans le LDAP }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour créer une nouvelle boite mail, il faut se connecter sur l'interface administration de cyrus : &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | cyradm --user cyrus localhost&amp;lt;br&amp;gt;Password: }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* --user: cyrus est l'administrateur du service cyrus&lt;br /&gt;
* localhost: Parce qu’on est connecté sur la machine où est installé cyrus&lt;br /&gt;
&lt;br /&gt;
Une fois connecter, on peux créer la nouvelle boite mail :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cm user.nomUtilisateur&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Avertissement | Toujours mettre user. avant le nom d'utilisateur sinon cela crée une boite mail partagée }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peux vérifier qu'elle a bien été créée en rentrant la commande ''lm'' (listmailbox)&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant donner tous les droits à l'utilisateur cyrus sur la boite mail crée. Sans cela, cyrus ne pourra pas la supprimer, lui assigner des quotas ...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setacl user.nomutilisateur cyrus all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas-ci, on assigne tous les droits à l'utilisateur cyrus sur la boite. C'est une question de faciliter pour la manipulation dans le futur des boites mails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour maintenant vérifier l'authentification, on utilise la commande testsaslauthd&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | testsaslauthd -u user -p password&amp;lt;br&amp;gt;0: OK &amp;quot;Success.&amp;quot; }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La partie authentification est réalisé. La dernière étape est de créer l'alias. On édite le fichier {{ File | /etc/aliases }} et on rajoute une ligne au format suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nomUtilisateur: nomUtilisateur@domaine&lt;br /&gt;
...&lt;br /&gt;
denis: denis@diouxx.be&lt;br /&gt;
devleeschauwer: ddevleeschauwer@diouxx.be&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut recharger la base d'alias :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | postalias /etc/aliases }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Supprimer boite mail ===&lt;br /&gt;
&lt;br /&gt;
Pour supprimer une boite mail, on doit, premièrement, se connecter à l'outil cyradm :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | cyradm --user cyrus localhsot&amp;lt;br&amp;gt;Password: }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour supprimer la boite mail, entrez la commande dm :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dm user.nomUtilisateur&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si une erreur ''&amp;quot;deletemailbox: Permission denied&amp;quot;'' apparait, c'est un problème de droits sur la boite. Pour régler cela, rentrez les commandes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
localhost&amp;gt; setacl user.test cyrus all&lt;br /&gt;
localhost&amp;gt; dm user.test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la suppression de la boite mail via la commande ''lm''&lt;br /&gt;
&lt;br /&gt;
Les démarches ci-dessus, expliquent comment supprimer une boite mail mais on peut aussi supprimer l’utilisateur. Quittez l'outil cyradm.&lt;br /&gt;
Pour supprimer l'utilisateur, on utilise la commande saslpasswd&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | saslpasswd -d nomUtilisateur }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peux vérifier la suppression effective via :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | sasldblistusers2 }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Il reste plus qu'a supprimer l'alias de l’utilisateur et recréer la base d'alias.&lt;br /&gt;
&lt;br /&gt;
* Éditez le fichier {{ File | /etc/aliases }} et supprimer la ligne correspondant au nom d'utilisateur&lt;br /&gt;
* Pour reconstruire la base d'alias, entrez la commande ''postalias /etc/aliases''&lt;br /&gt;
&lt;br /&gt;
=== Assigner/Modifier quotas ===&lt;br /&gt;
&lt;br /&gt;
Pour assigner ou modifier les quotas d'un utilisateur, tout se passe dans l'outil cyradm&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | cyradm --user cyrus loclahost&amp;lt;br&amp;gt;Password:  }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | La taille des quotas s'exprime en Ko. Donc si on spécifie 1024, cela veux dire qu'on assigne 1Mo de quotas à l'utilisateur. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
localhost&amp;gt; setquota user.nomUtilisateur 1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier le quota d'un utilisateur :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
localhost&amp;gt; listquota user.nomUtilisateur&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Whitelist/Blacklist ===&lt;br /&gt;
Pour ajouter une adresse mail à la whitelist, il suffit de la rajouter dans le fichier {{ File | /etc/spamassassin/local.cf }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
#WhiteList&lt;br /&gt;
#&lt;br /&gt;
whitelist_from  utilisateur@domaine&lt;br /&gt;
whitelist_from  *@domaine&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
#Blacklist&lt;br /&gt;
#&lt;br /&gt;
blacklist_from utilisateur@domaine&lt;br /&gt;
blacklist_from *@domaine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Restaurer Boit mail ===&lt;br /&gt;
Après avoir restauré la boite mail ( ou une partie de celle-ci ), il faut reconstituer l'indexation.&lt;br /&gt;
Pour ce faire, il faut se connecter en tant qu'utilisateur cyrus :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | su cyrus }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Reconstruire la boite mail :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | /usr/sbin/cyrreconstruct -rxf user.nomUtilisateur }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Système]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Raspberry:Astuces&amp;diff=257</id>
		<title>Raspberry:Astuces</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Raspberry:Astuces&amp;diff=257"/>
				<updated>2016-09-23T07:28:06Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Script au démarrage ==&lt;br /&gt;
&lt;br /&gt;
Pour lancer un script au démarrage du Raspberry, il faut l'ajouter au fichier {{ File | 1=.config/lxsession/LXDE-pi/autostart }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@lxpanel --profile LXDE-pi&lt;br /&gt;
@pcmanfm --desktop --profile LXDE-pi&lt;br /&gt;
@xscreensaver -no-splash&lt;br /&gt;
@sh ${HOME}/.config/lxsession/LXDE-pi/autokey.sh&lt;br /&gt;
@xset s noblank&lt;br /&gt;
@xset s off&lt;br /&gt;
@xset -dpms&lt;br /&gt;
@/home/pi/script-at-boot.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script python au démarrage ==&lt;br /&gt;
&lt;br /&gt;
Pour lancer un script python au démarrage, j'ai trouvé l'astuce suivante :&lt;br /&gt;
&lt;br /&gt;
On crée un fichier ''.desktop'' dans le dossier {{ File | /home/pi/.config/autostart/ }} qui portera le nom de l'application.&lt;br /&gt;
Dans mon cas, ca sera {{ File | button-refresh.py }}. Voici le contenu :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Type=Application&lt;br /&gt;
Name=button-refresh&lt;br /&gt;
Comment=&lt;br /&gt;
Exec= sudo python /home/pi/button-refresh.py&lt;br /&gt;
StartupNotify=false&lt;br /&gt;
Terminal=true&lt;br /&gt;
Hidden=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''&lt;br /&gt;
Sources''&lt;br /&gt;
* http://raspberrypi.stackexchange.com/questions/4123/running-a-python-script-at-startup&lt;br /&gt;
&lt;br /&gt;
== Exemple d'action au démarrage ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#VNC&lt;br /&gt;
x11vnc -forever -display :0 &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
#Lecture video&lt;br /&gt;
#omxplayer --loop Tomorrowland_2012_official_aftermovie.mp4&lt;br /&gt;
&lt;br /&gt;
#Lecture video sur ecran raspberry 7&lt;br /&gt;
#omxplayer --win &amp;quot;0 0 840 480 &amp;quot; --loop Tomorrowland_2012_official_aftermovie.mp4&lt;br /&gt;
&lt;br /&gt;
#Script refresh&lt;br /&gt;
#sudo python /home/pi/button-refresh.py &amp;amp;&lt;br /&gt;
&lt;br /&gt;
#Navigateur Web&lt;br /&gt;
#iceweasel http://192.168.1.1/Piano/piano/index.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Désactiver la mise en veille de l'écran ==&lt;br /&gt;
&lt;br /&gt;
Pour désactiver la mise en veille de l'écran, il faut éditer le fichier {{ File | /etc/lightdm/lightdm.conf}} et ajouter ou modifier la ligne suivante dans la section ''SeatDefaults''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[SeatDefaults]&lt;br /&gt;
xserver-command=X -s 0 -dpms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Sources''&lt;br /&gt;
* http://www.raspberry-projects.com/pi/pi-operating-systems/raspbian/gui/disable-screen-sleep&lt;br /&gt;
* http://www.geeks3d.com/hacklab/20160108/how-to-disable-the-blank-screen-on-raspberry-pi-raspbian/&lt;br /&gt;
&lt;br /&gt;
== Rotation de l'écran ==&lt;br /&gt;
&lt;br /&gt;
Pour changer l'orientation de l'affichage, il faut ajouter au fichier {{ File | /boot/config.txt}} la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
display_rotate=x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Où x peut prendre les valeurs suivantes :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Valeur !! Orientation&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Normal&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 90°&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 180°&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 270°&lt;br /&gt;
|-&lt;br /&gt;
| 0x10000 || Horizontal Flip&lt;br /&gt;
|-&lt;br /&gt;
| 0x20000 || Vertical Flip&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Sources''&lt;br /&gt;
* http://elinux.org/RPiconfig&lt;br /&gt;
&lt;br /&gt;
== Connaitre température ==&lt;br /&gt;
&lt;br /&gt;
Il est possible de connaitre la température de son Raspberry via la ligne de commande :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/opt/vc/bin/vcgencmd measure_temp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ /opt/vc/bin/vcgencmd measure_temp&lt;br /&gt;
temp=58.4'C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il est possible de réaliser un alias dans le fichier {{ File | .bashrc }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
alias temp='/opt/vc/bin/vcgencmd measure_temp'&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | source .bashrc }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Maintenant on peut utiliser la commande ''temp'' pour afficher la température&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ temp&lt;br /&gt;
temp=58.4'C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Catégorie:Raspberry]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Script_rsync_distant&amp;diff=256</id>
		<title>Script rsync distant</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Script_rsync_distant&amp;diff=256"/>
				<updated>2016-09-20T08:43:04Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Ce script permet de réaliser un rsync d'un dossier local vers un dossier distant via SSH }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#Auteur : DiouxX&lt;br /&gt;
#Date : 28/07/2016&lt;br /&gt;
&lt;br /&gt;
#Description&lt;br /&gt;
#-----------&lt;br /&gt;
#Script permettant de réaliser un rsync des fichiers de la graphiste&lt;br /&gt;
&lt;br /&gt;
#Historique modification&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#Couleur affichage&lt;br /&gt;
VERT=&amp;quot;\\033[1;32m&amp;quot;&lt;br /&gt;
NORMAL=&amp;quot;\\033[0;39m&amp;quot;&lt;br /&gt;
ROUGE=&amp;quot;\\033[1;31m&amp;quot;&lt;br /&gt;
ROSE=&amp;quot;\\033[1;35m&amp;quot;&lt;br /&gt;
BLEU=&amp;quot;\\033[1;34m&amp;quot;&lt;br /&gt;
BLANC=&amp;quot;\\033[0;02m&amp;quot;&lt;br /&gt;
BLANCLAIR=&amp;quot;\\033[1;08m&amp;quot;&lt;br /&gt;
JAUNE=&amp;quot;\\033[1;33m&amp;quot;&lt;br /&gt;
CYAN=&amp;quot;\\033[1;36m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Variables globales&lt;br /&gt;
#Hote de stcokage&lt;br /&gt;
HOST_DESTINATION=192.168.1.1&lt;br /&gt;
HOST_ALIVE=0&lt;br /&gt;
&lt;br /&gt;
#Dossier source local a sauvegarder&lt;br /&gt;
SOURCE_FOLDER_PRODUCTION=/mnt/backup-production/&lt;br /&gt;
#Emplacement du dossier distant&lt;br /&gt;
DESTINATION_FOLDER_PRODUCTION=root@$HOST_DESTINATION:/mnt/stockage/backup-production/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Fichiers LOGS&lt;br /&gt;
DATE=`date +&amp;quot;%Y&amp;quot;-&amp;quot;%m&amp;quot;-&amp;quot;%d&amp;quot;`&lt;br /&gt;
LOG_FILE_PRODUCTION=/tmp/rsync-production-$DATE.log&lt;br /&gt;
#Emplacement du fichier de log distant&lt;br /&gt;
LOG_FILE_PRODUCTION_REMOTE=/var/log/rsync-production/rsync-production-$DATE.log&lt;br /&gt;
REMOTE_LOG=root@$HOST_DESTINATION&lt;br /&gt;
&lt;br /&gt;
#On redirige toutes les sorties du script dans le fichier de LOG&lt;br /&gt;
exec 1&amp;gt;&amp;amp;2 &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION&lt;br /&gt;
&lt;br /&gt;
#Fonction d'horodatage pour les log&lt;br /&gt;
#$1 = Texte a afficher apres l'horodatage&lt;br /&gt;
function horodate(){&lt;br /&gt;
        horodate=`date +&amp;quot;\n%d&amp;quot;/&amp;quot;%m&amp;quot;/&amp;quot;%Y&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;:&amp;quot;%S -- &amp;quot;`&lt;br /&gt;
        echo -e &amp;quot;$horodate$1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Fonction testant le ping d'un hôte&lt;br /&gt;
#$1 = Adresse IP/Nom DNS a tester&lt;br /&gt;
function check_host_alive(){&lt;br /&gt;
        echo -e &amp;quot;Check Host Alive $1&amp;quot;&lt;br /&gt;
        ping $1 -c5 -q &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
        if [ $? != 1 ]&lt;br /&gt;
        then&lt;br /&gt;
                echo -e &amp;quot;PING \t$VERT[OK]$NORMAL&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo -e &amp;quot;PING \t$ROUGE[KO]$NORMAL&amp;quot;&lt;br /&gt;
                HOST_ALIVE=1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Debut du script&lt;br /&gt;
horodate &amp;quot;Start RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Test si le serveur de stockage est joignable&lt;br /&gt;
#Indirectement, ca verifie si la machine a du reseaux&lt;br /&gt;
check_host_alive $HOST_DESTINATION&lt;br /&gt;
&lt;br /&gt;
if [ $HOST_ALIVE != 1 ]&lt;br /&gt;
then&lt;br /&gt;
        #Check si un rsync est déja lancé&lt;br /&gt;
        #Version Linux&lt;br /&gt;
#       case &amp;quot;$(pidof rsync | wc -w)&amp;quot; in&lt;br /&gt;
#        0)      echo -e &amp;quot;$VERT\tOn fait le rsync$NORMAL&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
#                /usr/bin/rsync -e ssh -avz --delete-after $SOURCE_FOLDER_PRODUCTION $DESTINATION_FOLDER_PRODUCTION &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION&lt;br /&gt;
#&lt;br /&gt;
#                #Fin du script&lt;br /&gt;
#                horodate &amp;quot;END RSYNC&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
#                #Ecriture fichier log distant&lt;br /&gt;
#                cat $LOG_FILE_PRODUCTION | ssh $REMOTE_LOG &amp;quot;cat &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION_REMOTE&amp;quot;&lt;br /&gt;
#                #Suppression fichier log local&lt;br /&gt;
#                rm $LOG_FILE_PRODUCTION&lt;br /&gt;
#                ;;&lt;br /&gt;
#&lt;br /&gt;
#        *)      echo -e &amp;quot;$ROUGE\tUn rsync est déja en train de tourner$NORMAL&amp;quot;&lt;br /&gt;
#                ;;&lt;br /&gt;
#        esac&lt;br /&gt;
&lt;br /&gt;
        #Version MacOS&lt;br /&gt;
        #pgrep exits with 0 if there is a process matching $PROCESS_NAME running, otherwise it exist with 1.&lt;br /&gt;
        if pgrep rsync;&lt;br /&gt;
        then&lt;br /&gt;
                echo -e &amp;quot;$ROUGE\tUn rsync est déja en train de tourner$NORMAL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        else&lt;br /&gt;
                echo -e &amp;quot;$VERT\tOn fait le rsync$NORMAL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
                /usr/bin/rsync -e ssh -avz --no-perms --no-owner --no-group $SOURCE_FOLDER_PRODUCTION $DESTINATION_FOLDER_PRODUCTION &amp;gt;&amp;gt; $LOG_FILE_PRODU                                                                                      CTION&lt;br /&gt;
&lt;br /&gt;
                #Fin du script&lt;br /&gt;
                horodate &amp;quot;END RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
                #Ecriture fichier log distant&lt;br /&gt;
                cat $LOG_FILE_PRODUCTION | ssh $REMOTE_LOG &amp;quot;cat &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION_REMOTE&amp;quot;&lt;br /&gt;
                #Suppression fichier log local&lt;br /&gt;
                rm $LOG_FILE_PRODUCTION&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
        echo -e &amp;quot;$ROUGE\tPas de réseaux =&amp;gt; Pas de RSYNC$NORMAL&amp;quot;&lt;br /&gt;
        #Fin du script&lt;br /&gt;
        horodate &amp;quot;END RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Catégorie:Scripts System]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Owncloud&amp;diff=255</id>
		<title>Owncloud</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Owncloud&amp;diff=255"/>
				<updated>2016-09-09T12:13:47Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Mise à jour */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page permet d'installer et configurer le service Owncloud }}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Prérequis ===&lt;br /&gt;
&lt;br /&gt;
==== Database ====&lt;br /&gt;
&lt;br /&gt;
Owncloud se connecte à une base de donnée ( MySQL, PostgreSQL, SQLite). Dans notre exemple, nous allons utilisé MySQL.&lt;br /&gt;
Vous pouvez créer la base de donnée soit avec un outil graphique ou en ligne de commande :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE SCHEMA `ownclouddb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ownclouddb : est le nom de la DB&lt;br /&gt;
* utf8 : est le type d'encodage de la DB&lt;br /&gt;
&lt;br /&gt;
On crée également un utilisateur spécifique pour la connexion à la base de données.&lt;br /&gt;
&lt;br /&gt;
==== Serveur Web ====&lt;br /&gt;
&lt;br /&gt;
Pour installé Owncloud, le serveur qui va l'accueillir à besoin de plusieurs paquets installé '''apache2''' et '''php5'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo apt-get install apache2 php5 php5-cli php5-commin php5-curl php5-gd php5-imagick php5-ldap php5-mysql php5-odbc php5-pgsql php5-xlmrpc libapache2-mod-php5 }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Owncloud==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
On récupère la dernière version de owncloud que l'on va placer dans le répertoire du serveur web&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | cd /var/www &amp;amp;&amp;amp; sudo wget http://download.owncloud.org/community/owncloud-latest.tar.bz2 &amp;amp;&amp;amp; sudo tar -xjf owncloud-latest.tar.bz2&amp;lt;br&amp;gt;[root@ordi ~]# sudo chown -R www-data:www-data owncloud }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Une fois désarchivé, vous devriez avoir accès à owncloud soit via l'adresse IP du serveur http://IP/owncloud ou via le nom DNS que vous aurez configuré comme décrit [[Owncloud#Apache|ici]]&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
&lt;br /&gt;
Nous allons configurer 2 virtual hosts au point de vue apache afin de rediriger toutes les requêtes '''http''' vers la version '''https''' d'owncloud&lt;br /&gt;
&lt;br /&gt;
===== cloud.conf =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo nano /etc/apache2/sites-enables/cloud.conf}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
        ServerName cloud.domain.be&lt;br /&gt;
        RedirectMatch ^/$ https://cloud.domain.be/&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On active le vhosts :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo a2ensite cloud.conf }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Il est possible qu'il soit nécessaire d'activer le mode rewrite d'apache '''sudo a2enmod rewrite''' }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== cloud_ssl.conf =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo nano /etc/apache2/sites-enables/cloud_ssl.conf}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
        ServerName cloud.domain.be&lt;br /&gt;
        DocumentRoot /var/www/owncloud&lt;br /&gt;
        #RedirectMatch ^/$ https://cloud.domain.be/owncloud&lt;br /&gt;
&lt;br /&gt;
        SSLEngine On&lt;br /&gt;
        SSLCertificateFile    /etc/apache2/ssl/cloud.domain.be.crt&lt;br /&gt;
        SSLCertificateKeyFile /etc/apache2/ssl/cloud.domain.be.key&lt;br /&gt;
        SSLCACertificateFile  /etc/apache2/ssl/cacert.pem&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;Directory /var/www/owncloud&amp;gt;&lt;br /&gt;
                Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
                AllowOverride All&lt;br /&gt;
                Order allow,deny&lt;br /&gt;
                Allow from all&lt;br /&gt;
                # add any possibly required additional directives here&lt;br /&gt;
                # e.g. the Satisfy directive (see below for details):&lt;br /&gt;
                Satisfy Any&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        ErrorLog /var/log/apache2/error-cloud.log&lt;br /&gt;
&lt;br /&gt;
        # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
        # alert, emerg.&lt;br /&gt;
        LogLevel warn&lt;br /&gt;
&lt;br /&gt;
        CustomLog /var/log/apache2/access-cloud.log combined&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | La partie concernant la création des certificats ssl n'est pas vue dans cette documentation.&amp;lt;br&amp;gt;Reportez-vous à la documentation sur [[Postfix-tls]] }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On active le vhosts :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo a2ensite cloud_ssl.conf }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PHP ====&lt;br /&gt;
&lt;br /&gt;
On peut modifier certaines valeurs du fichier {{ File | /etc/php5/apache2/php.ini }} afin d'accélerer la vitesse d'affichage de l'interface web :&lt;br /&gt;
&lt;br /&gt;
* Le paramètre '''realpath_cache_size'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Determines the size of the realpath cache to be used by PHP. This value should&lt;br /&gt;
; be increased on systems where PHP opens many files to reflect the quantity of&lt;br /&gt;
; the file operations performed.&lt;br /&gt;
; http://php.net/realpath-cache-size&lt;br /&gt;
;realpath_cache_size = 16k&lt;br /&gt;
realpath_cache_size = 512k&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Paramètre relatif aux téléchargement de fichiers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Whether to allow HTTP file uploads.&lt;br /&gt;
; http://php.net/file-uploads&lt;br /&gt;
file_uploads = On&lt;br /&gt;
&lt;br /&gt;
; Temporary directory for HTTP uploaded files (will use system default if not&lt;br /&gt;
; specified).&lt;br /&gt;
; http://php.net/upload-tmp-dir&lt;br /&gt;
;upload_tmp_dir =&lt;br /&gt;
&lt;br /&gt;
; Maximum allowed size for uploaded files.&lt;br /&gt;
; http://php.net/upload-max-filesize&lt;br /&gt;
upload_max_filesize = 1024 M&lt;br /&gt;
&lt;br /&gt;
; Maximum number of files that can be uploaded via a single request&lt;br /&gt;
max_file_uploads = 20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Administrateur et base de donnée ===&lt;br /&gt;
&lt;br /&gt;
Une fois arrivé sur la page pour la première fois, vous devez compléter les informations concernant l'utilisateur administrateur et les informations de connexion pour la base de données.&lt;br /&gt;
[[Fichier:Owncloud-config-startup.png|centré]]&lt;br /&gt;
&lt;br /&gt;
=== Authentification OpenLDAP ===&lt;br /&gt;
&lt;br /&gt;
Pour mettre en place l'authentification LDAP, il faut ajouter une application. Pour ce faire, on se rend dans le panneau d'administration&lt;br /&gt;
[[Fichier:Owncloud-panel-admin.png|centré]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Et on clique sur la croix permettant d’accéder aux applications disponibles.&lt;br /&gt;
[[Fichier:Owncloud-add-applications.png|centré]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On choisis '''LDAP user and group backend''' et on active l'application&lt;br /&gt;
[[Fichier:Owncloud-app-ldap.png|centré]]&lt;br /&gt;
[[Fichier:Owncloud-ldap-enable.png|centré]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Maintenant, si on retourne dans la panneau d'administration, on retrouve différents champs qui vont nous permettre de configurer l'authentification via LDAP.&lt;br /&gt;
On remplit d'abord les infos de connexion au serveur LDAP :&lt;br /&gt;
[[Fichier:Owncloud-ldap-server.png|centré]]&lt;br /&gt;
On sélectionne dans la fenêtre suivante, les classes d'objets pour les utilisateurs pouvant se connecter à Owncloud.&lt;br /&gt;
Cela permet de restreindre éventuellement l'accès à Owncloud aux utilisateurs ne possédant pas ces différentes classes d'objets.&lt;br /&gt;
[[Fichier:Owncloud-ldap-classe-user.png|centré]]&lt;br /&gt;
Dans la fenêtre suivante, on spécifie via quel attribut les utilisateurs vont pouvoir se connecter : nom d'utilisateur et/ou adresse email et les champs correspondant dans le LDAP&lt;br /&gt;
[[Fichier:Owncloud-ldap-login-attributs.png|centré]]&lt;br /&gt;
&lt;br /&gt;
=== fail2ban ===&lt;br /&gt;
&lt;br /&gt;
Pour mettre en place fail2ban pour owncloud, nous allons devoir modifier un peu le code source de Owncloud. Pas de panique, cela n'engendre aucun dysfonctionnement à Owncloud.&lt;br /&gt;
&lt;br /&gt;
Tout d'abord, on va créé un fichier de log spécifique :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo touch /var/log/owncloud-fail.log &amp;amp;&amp;amp; sudo chown www-data:www-data /var/log/owncloud-fail.log }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On va insérer un code dans la fonction '''checkPassword''' du fichier {{ File | /var/www/owncloud/lib/private/user/database.php}}, juste avant le “return false”.&lt;br /&gt;
Ce qui donne ceci :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=php&amp;gt;&lt;br /&gt;
else {&lt;br /&gt;
                        $today = new DateTime();&lt;br /&gt;
                        date_timezone_set($today, timezone_open('Europe/Paris'));&lt;br /&gt;
                        $IPClient= $_SERVER['REMOTE_ADDR'];     &lt;br /&gt;
                        $logAuth = fopen('/var/log/owncloud-fail.log', 'a+');&lt;br /&gt;
                        fputs($logAuth, date_format($today, 'Y/m/d H:i:s') . &amp;quot; Password check failed for: \t&amp;quot; . $&lt;br /&gt;
                        fclose($logAuth);&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On passe à présent à la création de la prison Fail2ban dans {{ File | /etc/fail2ban/filter.d/owncloud.conf }}&lt;br /&gt;
&amp;lt;pre&amp;gt;	&lt;br /&gt;
#Owncloud jail&lt;br /&gt;
[Definition]&lt;br /&gt;
failregex = &amp;lt;HOST&amp;gt;$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On test que la regex match bien. (Effectuez une erreur de login sur l’interface avant)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | fail2ban-regex /var/log/owncloud-fail.log /etc/fail2ban/filter.d/owncloud.conf }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On ajoute cette prison à la configuration dans {{ File | /etc/fail2ban/jail.conf }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[owncloud]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = http,https&lt;br /&gt;
filter = owncloud&lt;br /&gt;
logpath = /var/log/owncloud-fail.log&lt;br /&gt;
maxretry = 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redémarre fail2ban pour prendre en compte les nouveaux changements&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo service fail2ban restart }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Avertissement | Il faut quand même garder en tête que les lignes dans le php seront à réécrire à chaque mise à jour de Owncloud. }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Envoi de mail===&lt;br /&gt;
&lt;br /&gt;
S'il n'y a pas de serveur mail installé sur le même serveur que l'instance OwnCloud, il est nécessaire de préciser un serveur SMTP pour qu'OwnCloud puisse envoyer des emails.&lt;br /&gt;
&lt;br /&gt;
Il nous faut éditer le fichier {{ File | /var/www/owncloud/config/config.php}} et rajouter les paramètres suivants :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  'mail_smtpmode'  =&amp;gt; 'smtp',&lt;br /&gt;
  'mail_smtphost'  =&amp;gt; 'IP_server',&lt;br /&gt;
  'mail_smtpport'  =&amp;gt; 25,&lt;br /&gt;
  'mail_smtptimeout'  =&amp;gt; 30,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* mail_smtphost : l'IP ou le nom DNS du serveur SMTP&lt;br /&gt;
* mail_smtpport : le numéro de port du serveur SMTP&lt;br /&gt;
* mail_smtptimeout : si un scanner de malware ou SPAM tourne sur le serveur SMTP, il est nécessaire d'augmenter le timeout SMTP ( 30s ou 60s ont l'air d’être des valeurs corrects)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== An unhandled exception has been thrown ===&lt;br /&gt;
&lt;br /&gt;
Si après une tentative de mise à jour d'Owncloud, vous trouvez le message d'erreur suivant lors du processus : '''An unhandled exception has been thrown'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1598 Binary logging not possible.&lt;br /&gt;
Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog &lt;br /&gt;
mode 'STATEMENT'' in /srv/www/owncloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:91&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
la procédure suivante pourrait résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
Il s'agirait d'une variable global de MySQL a modifié.&lt;br /&gt;
On se connecte à son serveur MySQL et on rentre la command suivante :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql&amp;gt; SET GLOBAL binlog_format = 'MIXED';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite, sur le serveur Owncloud, dans le dossier owncloud, on rentre les commandes suivantes :&lt;br /&gt;
&lt;br /&gt;
Cette commande, retire le mode maintenance du serveur&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo -u www-data php occ maintenance:mode --off }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande réalise la mise à jour du serveur&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 {{ Console root | sudo -u www-data php occ upgrade }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si tout se passe correctement, vous deviez avoir une sortie console comme ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Turned on maintenance mode&lt;br /&gt;
Checked database schema update&lt;br /&gt;
Checked database schema update for apps&lt;br /&gt;
Updated database&lt;br /&gt;
Turned off maintenance mode&lt;br /&gt;
Update successful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sources :&lt;br /&gt;
* https://github.com/owncloud/core/issues/16008&lt;br /&gt;
* https://dev.mysql.com/doc/refman/5.5/en/binary-log-setting.html&lt;br /&gt;
* https://dev.mysql.com/doc/refman/5.6/en/binary-log-setting.html&lt;br /&gt;
* https://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html#troubleshooting&lt;br /&gt;
&lt;br /&gt;
=== After update to 8.1 an error message appears, that not internet access is available. ===&lt;br /&gt;
&lt;br /&gt;
# copy &amp;quot;config/ca-bundle.crt&amp;quot; in the zip of the owncloud server download file&lt;br /&gt;
# put it in the &amp;quot;config/&amp;quot; directory of my owncloud instance (for me &amp;quot;/var/www/config&amp;quot; as absolute path)&lt;br /&gt;
&lt;br /&gt;
that's all, afterwards the warning was gone.&lt;br /&gt;
&lt;br /&gt;
Source : &lt;br /&gt;
* https://github.com/owncloud/core/issues/17448&lt;br /&gt;
&lt;br /&gt;
=== General error: 1598 Binary logging not possible. ===&lt;br /&gt;
Se connecter à Mysql ou PHPMyAdmin et exécuter la requête SQL suivante :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SET GLOBAL binlog_format = 'ROW';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source :&lt;br /&gt;
* https://forum.owncloud.org/viewtopic.php?t=29456&amp;amp;p=92408&lt;br /&gt;
&lt;br /&gt;
== Procédures ==&lt;br /&gt;
&lt;br /&gt;
=== Mise à jour ===&lt;br /&gt;
On se rend dans le dossier du répertoire web&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | cd /var/www/html }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On réalise un backup du dossier&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo rsync -a owncloud/ owncloud_bkp`date +&amp;quot;%Y%m%d&amp;quot;`/ }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On réalise un backup de la base de donnée&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=mysqldump --lock-tables -h [server] -u [username] -p[password] ownclouddb &amp;gt; owncloud-sqlbkp_`date +&amp;quot;%Y%m%d&amp;quot;`.bak }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Pour SQLite&lt;br /&gt;
sqlite3 data/owncloud.db .dump &amp;gt; owncloud-sqlbkp_`date +&amp;quot;%Y%m%d&amp;quot;`.bak&lt;br /&gt;
Pour PostgreSQL&lt;br /&gt;
PGPASSWORD=&amp;quot;password&amp;quot; pg_dump owncloud -h [server] -U [username] -f owncloud-sqlbkp_`date +&amp;quot;%Y%m%d&amp;quot;`.bak&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
On supprime tous les dossier sauf le dossier config et data&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=cd owncloud&amp;lt;br&amp;gt;[root@ordi ~]# ll&amp;lt;br&amp;gt;[root@ordi ~]# sudo find . -mindepth 1 -maxdepth 1 ! -path ./data ! -path ./config -exec rm -rf {} \;&amp;lt;br&amp;gt;[root@ordi ~]# ll }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On télécharge et désarchive la derniere version&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=cd ..&amp;lt;br&amp;gt;[root@ordi ~]# sudo wget http://download.owncloud.org/community/owncloud-latest.tar.bz2&amp;lt;br&amp;gt;[root@ordi ~]# sudo tar -xjf owncloud-latest.tar.bz2&amp;lt;br&amp;gt;[root@ordi ~]# ls owncloud }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On remet les droits correct&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo chown -R www-data:www-data owncloud }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il se peut, si votre instance owncloud possède une taille importante, que le message suivant apparaisse quand vous essayer de vous reconnecter à l'interface web&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Fichier:Owncloud-update-grande-instance.png|centré]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas comme indiqué, il est nécessaire de passer en ligne de commande pour réaliser l'update.&lt;br /&gt;
On se rend dans le dossier {{ File | owncloud}} et on exécute la commande suivante :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | sudo -u www-data php occ upgrade }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La mise à jour se réalisera en mode console.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Applicatifs]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Fichier:Owncloud-update-grande-instance.png&amp;diff=254</id>
		<title>Fichier:Owncloud-update-grande-instance.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Fichier:Owncloud-update-grande-instance.png&amp;diff=254"/>
				<updated>2016-09-09T12:10:13Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Script_rsync_distant&amp;diff=253</id>
		<title>Script rsync distant</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Script_rsync_distant&amp;diff=253"/>
				<updated>2016-09-09T06:21:13Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Ce script permet de réaliser un rsync d'un dossier local vers un dossier distant via SSH }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#Auteur : DiouxX&lt;br /&gt;
#Date : 28/07/2016&lt;br /&gt;
&lt;br /&gt;
#Description&lt;br /&gt;
#-----------&lt;br /&gt;
#Script permettant de réaliser un rsync des fichiers de la graphiste&lt;br /&gt;
&lt;br /&gt;
#Historique modification&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#Couleur affichage&lt;br /&gt;
VERT=&amp;quot;\\033[1;32m&amp;quot;&lt;br /&gt;
NORMAL=&amp;quot;\\033[0;39m&amp;quot;&lt;br /&gt;
ROUGE=&amp;quot;\\033[1;31m&amp;quot;&lt;br /&gt;
ROSE=&amp;quot;\\033[1;35m&amp;quot;&lt;br /&gt;
BLEU=&amp;quot;\\033[1;34m&amp;quot;&lt;br /&gt;
BLANC=&amp;quot;\\033[0;02m&amp;quot;&lt;br /&gt;
BLANCLAIR=&amp;quot;\\033[1;08m&amp;quot;&lt;br /&gt;
JAUNE=&amp;quot;\\033[1;33m&amp;quot;&lt;br /&gt;
CYAN=&amp;quot;\\033[1;36m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Variables globales&lt;br /&gt;
#Hote de stcokage&lt;br /&gt;
HOST_DESTINATION=192.168.1.1&lt;br /&gt;
HOST_ALIVE=0&lt;br /&gt;
&lt;br /&gt;
#Dossier source local a sauvegarder&lt;br /&gt;
SOURCE_FOLDER_PRODUCTION=/mnt/backup-production/&lt;br /&gt;
#Emplacement du dossier distant&lt;br /&gt;
DESTINATION_FOLDER_PRODUCTION=root@$HOST_DESTINATION:/mnt/stockage/backup-production/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Fichiers LOGS&lt;br /&gt;
DATE=`date +&amp;quot;%Y&amp;quot;-&amp;quot;%m&amp;quot;-&amp;quot;%d&amp;quot;`&lt;br /&gt;
LOG_FILE_PRODUCTION=/tmp/rsync-production-$DATE.log&lt;br /&gt;
#Emplacement du fichier de log distant&lt;br /&gt;
LOG_FILE_PRODUCTION_REMOTE=/var/log/rsync-production/rsync-production-$DATE.log&lt;br /&gt;
REMOTE_LOG=root@$HOST_DESTINATION&lt;br /&gt;
&lt;br /&gt;
#On redirige toutes les sorties du script dans le fichier de LOG&lt;br /&gt;
exec 1&amp;gt;&amp;amp;2 &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION&lt;br /&gt;
&lt;br /&gt;
#Fonction d'horodatage pour les log&lt;br /&gt;
#$1 = Texte a afficher apres l'horodatage&lt;br /&gt;
function horodate(){&lt;br /&gt;
        horodate=`date +&amp;quot;\n%d&amp;quot;/&amp;quot;%m&amp;quot;/&amp;quot;%Y&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;:&amp;quot;%S -- &amp;quot;`&lt;br /&gt;
        echo -e &amp;quot;$horodate$1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Fonction testant le ping d'un hôte&lt;br /&gt;
#$1 = Adresse IP/Nom DNS a tester&lt;br /&gt;
function check_host_alive(){&lt;br /&gt;
        echo -e &amp;quot;Check Host Alive $1&amp;quot;&lt;br /&gt;
        ping $1 -c5 -q &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
        if [ $? != 1 ]&lt;br /&gt;
        then&lt;br /&gt;
                echo -e &amp;quot;PING \t$VERT[OK]$NORMAL&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo -e &amp;quot;PING \t$ROUGE[KO]$NORMAL&amp;quot;&lt;br /&gt;
                HOST_ALIVE=1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Debut du script&lt;br /&gt;
horodate &amp;quot;Start RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Test si le serveur de stockage est joignable&lt;br /&gt;
#Indirectement, ca verifie si la machine a du reseaux&lt;br /&gt;
check_host_alive $HOST_DESTINATION&lt;br /&gt;
&lt;br /&gt;
if [ $HOST_ALIVE != 1 ]&lt;br /&gt;
then&lt;br /&gt;
        #Check si un rsync est déja lancé&lt;br /&gt;
        case &amp;quot;$(pidof rsync | wc -w)&amp;quot; in&lt;br /&gt;
        0)      echo -e &amp;quot;$VERT\tOn fait le rsync$NORMAL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
                /usr/bin/rsync -e ssh -avz --delete-after $SOURCE_FOLDER_PRODUCTION $DESTINATION_FOLDER_PRODUCTION &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION&lt;br /&gt;
&lt;br /&gt;
                #Fin du script&lt;br /&gt;
                horodate &amp;quot;END RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
                #Ecriture fichier log distant&lt;br /&gt;
                cat $LOG_FILE_PRODUCTION | ssh $REMOTE_LOG &amp;quot;cat &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION_REMOTE&amp;quot;&lt;br /&gt;
                #Suppression fichier log local&lt;br /&gt;
                rm $LOG_FILE_PRODUCTION&lt;br /&gt;
                ;;&lt;br /&gt;
&lt;br /&gt;
        *)      echo -e &amp;quot;$ROUGE\tUn rsync est déja en train de tourner$NORMAL&amp;quot;&lt;br /&gt;
                ;;&lt;br /&gt;
        esac&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
        echo -e &amp;quot;$ROUGE\tPas de réseaux =&amp;gt; Pas de RSYNC$NORMAL&amp;quot;&lt;br /&gt;
        #Fin du script&lt;br /&gt;
        horodate &amp;quot;END RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Catégorie:Scripts System]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Script_rsync_distant&amp;diff=252</id>
		<title>Script rsync distant</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Script_rsync_distant&amp;diff=252"/>
				<updated>2016-08-30T07:39:18Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Ce script permet de réaliser un rsync d'un dossier local vers un dossier distant via SSH }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#Auteur : DiouxX&lt;br /&gt;
#Date : 28/07/2016&lt;br /&gt;
&lt;br /&gt;
#Description&lt;br /&gt;
#-----------&lt;br /&gt;
#Script permettant de réaliser un rsync des fichiers de la graphiste&lt;br /&gt;
&lt;br /&gt;
#Historique modification&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#Couleur affichage&lt;br /&gt;
VERT=&amp;quot;\\033[1;32m&amp;quot;&lt;br /&gt;
NORMAL=&amp;quot;\\033[0;39m&amp;quot;&lt;br /&gt;
ROUGE=&amp;quot;\\033[1;31m&amp;quot;&lt;br /&gt;
ROSE=&amp;quot;\\033[1;35m&amp;quot;&lt;br /&gt;
BLEU=&amp;quot;\\033[1;34m&amp;quot;&lt;br /&gt;
BLANC=&amp;quot;\\033[0;02m&amp;quot;&lt;br /&gt;
BLANCLAIR=&amp;quot;\\033[1;08m&amp;quot;&lt;br /&gt;
JAUNE=&amp;quot;\\033[1;33m&amp;quot;&lt;br /&gt;
CYAN=&amp;quot;\\033[1;36m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Variables globales&lt;br /&gt;
#Hote de stcokage&lt;br /&gt;
HOST_DESTINATION=192.168.1.1&lt;br /&gt;
HOST_ALIVE=0&lt;br /&gt;
&lt;br /&gt;
#Dossier source local a sauvegarder&lt;br /&gt;
SOURCE_FOLDER_PRODUCTION=/mnt/backup-production/&lt;br /&gt;
#Emplacement du dossier distant&lt;br /&gt;
DESTINATION_FOLDER_PRODUCTION=root@$HOST_DESTINATION:/mnt/stockage/backup-production/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Fichiers LOGS&lt;br /&gt;
DATE=`date +&amp;quot;%Y&amp;quot;-&amp;quot;%m&amp;quot;-&amp;quot;%d&amp;quot;`&lt;br /&gt;
LOG_FILE_PRODUCTION=/tmp/rsync-production-$DATE.log&lt;br /&gt;
#Emplacement du fichier de log distant&lt;br /&gt;
LOG_FILE_PRODUCTION_REMOTE=/var/log/rsync-production/rsync-production-$DATE.log&lt;br /&gt;
REMOTE_LOG=root@$HOST_DESTINATION&lt;br /&gt;
&lt;br /&gt;
#On redirige toutes les sorties du script dans le fichier de LOG&lt;br /&gt;
exec 1&amp;gt;&amp;amp;2 &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION&lt;br /&gt;
&lt;br /&gt;
#Fonction d'horodatage pour les log&lt;br /&gt;
#$1 = Texte a afficher apres l'horodatage&lt;br /&gt;
function horodate(){&lt;br /&gt;
        horodate=`date +&amp;quot;\n%d&amp;quot;/&amp;quot;%m&amp;quot;/&amp;quot;%Y&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;:&amp;quot;%S -- &amp;quot;`&lt;br /&gt;
        echo -e &amp;quot;$horodate$1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Fonction testant le ping d'un hôte&lt;br /&gt;
#$1 = Adresse IP/Nom DNS a tester&lt;br /&gt;
function check_host_alive(){&lt;br /&gt;
        echo -e &amp;quot;Check Host Alive $1&amp;quot;&lt;br /&gt;
        ping $1 -c5 -q &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
        if [ $? != 1 ]&lt;br /&gt;
        then&lt;br /&gt;
                echo -e &amp;quot;PING \t$VERT[OK]$NORMAL&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo -e &amp;quot;PING \t$ROUGE[KO]$NORMAL&amp;quot;&lt;br /&gt;
                HOST_ALIVE=1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Debut du script&lt;br /&gt;
horodate &amp;quot;Start RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Test si le serveur de stockage est joignable&lt;br /&gt;
#Indirectement, ca verifie si la machine a du reseaux&lt;br /&gt;
check_host_alive $HOST_DESTINATION&lt;br /&gt;
&lt;br /&gt;
if [ $HOST_ALIVE != 1 ]&lt;br /&gt;
then&lt;br /&gt;
        #Check si un rsync est déja lancé&lt;br /&gt;
        case &amp;quot;$(pidof mongod | wc -w)&amp;quot; in&lt;br /&gt;
        0)      echo -e &amp;quot;$VERT\tOn fait le rsync$NORMAL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
                /usr/bin/rsync -e ssh -avz --delete-after $SOURCE_FOLDER_PRODUCTION $DESTINATION_FOLDER_PRODUCTION &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION&lt;br /&gt;
&lt;br /&gt;
                #Fin du script&lt;br /&gt;
                horodate &amp;quot;END RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
                #Ecriture fichier log distant&lt;br /&gt;
                cat $LOG_FILE_PRODUCTION | ssh $REMOTE_LOG &amp;quot;cat &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION_REMOTE&amp;quot;&lt;br /&gt;
                #Suppression fichier log local&lt;br /&gt;
                rm $LOG_FILE_PRODUCTION&lt;br /&gt;
                ;;&lt;br /&gt;
&lt;br /&gt;
        *)      echo -e &amp;quot;$ROUGE\tUn rsync est déja en train de tourner$NORMAL&amp;quot;&lt;br /&gt;
                ;;&lt;br /&gt;
        esac&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
        echo -e &amp;quot;$ROUGE\tPas de réseaux =&amp;gt; Pas de RSYNC$NORMAL&amp;quot;&lt;br /&gt;
        #Fin du script&lt;br /&gt;
        horodate &amp;quot;END RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Catégorie:Scripts System]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Script_rsync_distant&amp;diff=251</id>
		<title>Script rsync distant</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Script_rsync_distant&amp;diff=251"/>
				<updated>2016-07-28T15:59:46Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Ce script permet de réaliser un rsync d'un dossier local vers un dossier distant via SSH }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#Auteur : DiouxX&lt;br /&gt;
#Date : 28/07/2016&lt;br /&gt;
&lt;br /&gt;
#Description&lt;br /&gt;
#-----------&lt;br /&gt;
#Script permettant de réaliser un rsync des fichiers de la graphiste&lt;br /&gt;
&lt;br /&gt;
#Historique modification&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#Couleur affichage&lt;br /&gt;
VERT=&amp;quot;\\033[1;32m&amp;quot;&lt;br /&gt;
NORMAL=&amp;quot;\\033[0;39m&amp;quot;&lt;br /&gt;
ROUGE=&amp;quot;\\033[1;31m&amp;quot;&lt;br /&gt;
ROSE=&amp;quot;\\033[1;35m&amp;quot;&lt;br /&gt;
BLEU=&amp;quot;\\033[1;34m&amp;quot;&lt;br /&gt;
BLANC=&amp;quot;\\033[0;02m&amp;quot;&lt;br /&gt;
BLANCLAIR=&amp;quot;\\033[1;08m&amp;quot;&lt;br /&gt;
JAUNE=&amp;quot;\\033[1;33m&amp;quot;&lt;br /&gt;
CYAN=&amp;quot;\\033[1;36m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Variables globales&lt;br /&gt;
#Hote de stcokage&lt;br /&gt;
HOST_DESTINATION=192.168.1.1&lt;br /&gt;
HOST_ALIVE=0&lt;br /&gt;
&lt;br /&gt;
#Dossier source local a sauvegarder&lt;br /&gt;
SOURCE_FOLDER_PRODUCTION=/mnt/backup-production/&lt;br /&gt;
#Emplacement du dossier distant&lt;br /&gt;
DESTINATION_FOLDER_PRODUCTION=root@$HOST_DESTINATION:/mnt/stockage/backup-production/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Fichiers LOGS&lt;br /&gt;
DATE=`date +&amp;quot;%Y&amp;quot;-&amp;quot;%m&amp;quot;-&amp;quot;%d&amp;quot;`&lt;br /&gt;
LOG_FILE_PRODUCTION=/tmp/rsync-production-$DATE.log&lt;br /&gt;
#Emplacement du fichier de log distant&lt;br /&gt;
LOG_FILE_PRODUCTION_REMOTE=/var/log/rsync-production/rsync-production-$DATE.log&lt;br /&gt;
REMOTE_LOG=root@$HOST_DESTINATION&lt;br /&gt;
&lt;br /&gt;
#On redirige toutes les sorties du script dans le fichier de LOG&lt;br /&gt;
exec 1&amp;gt;&amp;amp;2 &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION&lt;br /&gt;
&lt;br /&gt;
#Fonction d'horodatage pour les log&lt;br /&gt;
#$1 = Texte a afficher apres l'horodatage&lt;br /&gt;
function horodate(){&lt;br /&gt;
        horodate=`date +&amp;quot;\n%d&amp;quot;/&amp;quot;%m&amp;quot;/&amp;quot;%Y&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;:&amp;quot;%S -- &amp;quot;`&lt;br /&gt;
        echo -e &amp;quot;$horodate$1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Fonction testant le ping d'un hôte&lt;br /&gt;
#$1 = Adresse IP/Nom DNS a tester&lt;br /&gt;
function check_host_alive(){&lt;br /&gt;
        echo -e &amp;quot;Check Host Alive $1&amp;quot;&lt;br /&gt;
        ping $1 -c5 -q &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
        if [ $? != 1 ]&lt;br /&gt;
        then&lt;br /&gt;
                echo -e &amp;quot;PING \t$VERT[OK]$NORMAL&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo -e &amp;quot;PING \t$ROUGE[KO]$NORMAL&amp;quot;&lt;br /&gt;
                HOST_ALIVE=1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Debut du script&lt;br /&gt;
horodate &amp;quot;Start RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Test si le serveur de stockage est joignable&lt;br /&gt;
#Indirectement, ca verifie si la machine a du reseaux&lt;br /&gt;
check_host_alive $HOST_DESTINATION&lt;br /&gt;
&lt;br /&gt;
if [ $HOST_ALIVE != 1 ]&lt;br /&gt;
then&lt;br /&gt;
        echo -e &amp;quot;$VERT\tOn fait le rsync$NORMAL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        /usr/bin/rsync -e ssh -avz --delete-after $SOURCE_FOLDER_PRODUCTION $DESTINATION_FOLDER_PRODUCTION &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION&lt;br /&gt;
&lt;br /&gt;
        #Fin du script&lt;br /&gt;
        horodate &amp;quot;END RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        #Ecriture fichier log distant&lt;br /&gt;
        cat $LOG_FILE_PRODUCTION | ssh $REMOTE_LOG &amp;quot;cat &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION_REMOTE&amp;quot;&lt;br /&gt;
        #Suppression fichier log local&lt;br /&gt;
        rm $LOG_FILE_PRODUCTION&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
        echo -e &amp;quot;$ROUGE\tPas de réseaux =&amp;gt; Pas de RSYNC$NORMAL&amp;quot;&lt;br /&gt;
        #Fin du script&lt;br /&gt;
        horodate &amp;quot;END RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Catégorie:Scripts System]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Script_rsync_distant&amp;diff=250</id>
		<title>Script rsync distant</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Script_rsync_distant&amp;diff=250"/>
				<updated>2016-07-28T15:57:24Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : Page créée avec « {{ Introduction | Ce script permet de réaliser un rsync d'un dossier local vers un dossier distant via SSH }} &amp;lt;br&amp;gt; &amp;lt;syntaxhighlight lang=bash&amp;gt; #!/bin/bash  #Auteur : Diou... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Ce script permet de réaliser un rsync d'un dossier local vers un dossier distant via SSH }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#Auteur : DiouxX&lt;br /&gt;
#Date : 28/07/2016&lt;br /&gt;
&lt;br /&gt;
#Description&lt;br /&gt;
#-----------&lt;br /&gt;
#Script permettant de réaliser un rsync des fichiers de la graphiste&lt;br /&gt;
&lt;br /&gt;
#Historique modification&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#Couleur affichage&lt;br /&gt;
VERT=&amp;quot;\\033[1;32m&amp;quot;&lt;br /&gt;
NORMAL=&amp;quot;\\033[0;39m&amp;quot;&lt;br /&gt;
ROUGE=&amp;quot;\\033[1;31m&amp;quot;&lt;br /&gt;
ROSE=&amp;quot;\\033[1;35m&amp;quot;&lt;br /&gt;
BLEU=&amp;quot;\\033[1;34m&amp;quot;&lt;br /&gt;
BLANC=&amp;quot;\\033[0;02m&amp;quot;&lt;br /&gt;
BLANCLAIR=&amp;quot;\\033[1;08m&amp;quot;&lt;br /&gt;
JAUNE=&amp;quot;\\033[1;33m&amp;quot;&lt;br /&gt;
CYAN=&amp;quot;\\033[1;36m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Variables globales&lt;br /&gt;
#Hote de stcokage&lt;br /&gt;
HOST_DESTINATION=192.168.1.39&lt;br /&gt;
HOST_ALIVE=0&lt;br /&gt;
&lt;br /&gt;
#Dossier source local a sauvegarder&lt;br /&gt;
SOURCE_FOLDER_PRODUCTION=/mnt/backup-production/&lt;br /&gt;
#Emplacement du dossier distant&lt;br /&gt;
DESTINATION_FOLDER_PRODUCTION=root@$HOST_DESTINATION:/srv/share/pass/stockage/informatique/test-backup-cmonnoye/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Fichiers LOGS&lt;br /&gt;
DATE=`date +&amp;quot;%Y&amp;quot;-&amp;quot;%m&amp;quot;-&amp;quot;%d&amp;quot;`&lt;br /&gt;
LOG_FILE_PRODUCTION=/tmp/rsync-graphiste-production-$DATE.log&lt;br /&gt;
#Emplacement du fichier de log distant&lt;br /&gt;
LOG_FILE_PRODUCTION_REMOTE=/var/log/rsync-graphiste/rsync-graphiste-production-$DATE.log&lt;br /&gt;
REMOTE_LOG=root@$HOST_DESTINATION&lt;br /&gt;
&lt;br /&gt;
#On redirige toutes les sorties du script dans le fichier de LOG&lt;br /&gt;
exec 1&amp;gt;&amp;amp;2 &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION&lt;br /&gt;
&lt;br /&gt;
#Fonction d'horodatage pour les log&lt;br /&gt;
#$1 = Texte a afficher apres m'horodatage&lt;br /&gt;
function horodate(){&lt;br /&gt;
        horodate=`date +&amp;quot;\n%d&amp;quot;/&amp;quot;%m&amp;quot;/&amp;quot;%Y&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;:&amp;quot;%S -- &amp;quot;`&lt;br /&gt;
        echo -e &amp;quot;$horodate$1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Fonction testant le ping d'un hôte&lt;br /&gt;
#$1 = Adresse IP/Nom DNS a tester&lt;br /&gt;
function check_host_alive(){&lt;br /&gt;
        echo -e &amp;quot;Check Host Alive $1&amp;quot;&lt;br /&gt;
        ping $1 -c5 -q &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
        if [ $? != 1 ]&lt;br /&gt;
        then&lt;br /&gt;
                echo -e &amp;quot;PING \t$VERT[OK]$NORMAL&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                echo -e &amp;quot;PING \t$ROUGE[KO]$NORMAL&amp;quot;&lt;br /&gt;
                HOST_ALIVE=1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Debut du script&lt;br /&gt;
horodate &amp;quot;Start RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Test si le serveur de stockage est joignable&lt;br /&gt;
#Indirectement, ca verifie si la machine a du reseaux&lt;br /&gt;
check_host_alive $HOST_DESTINATION&lt;br /&gt;
&lt;br /&gt;
if [ $HOST_ALIVE != 1 ]&lt;br /&gt;
then&lt;br /&gt;
        echo -e &amp;quot;$VERT\tOn fait le rsync$NORMAL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        /usr/bin/rsync -e ssh -avz --delete-after $SOURCE_FOLDER_PRODUCTION $DESTINATION_FOLDER_PRODUCTION &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION&lt;br /&gt;
&lt;br /&gt;
        #Fin du script&lt;br /&gt;
        horodate &amp;quot;END RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        #Ecriture fichier log distant&lt;br /&gt;
        cat $LOG_FILE_PRODUCTION | ssh $REMOTE_LOG &amp;quot;cat &amp;gt;&amp;gt; $LOG_FILE_PRODUCTION_REMOTE&amp;quot;&lt;br /&gt;
        #Suppression fichier log local&lt;br /&gt;
        rm $LOG_FILE_PRODUCTION&lt;br /&gt;
&lt;br /&gt;
else&lt;br /&gt;
        echo -e &amp;quot;$ROUGE\tPas de réseaux =&amp;gt; Pas de RSYNC$NORMAL&amp;quot;&lt;br /&gt;
        #Fin du script&lt;br /&gt;
        horodate &amp;quot;END RSYNC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Catégorie:Scripts System]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Mount-partage&amp;diff=249</id>
		<title>Mount-partage</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Mount-partage&amp;diff=249"/>
				<updated>2016-07-28T15:56:52Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Ce script permet de monter des partages réseaux en vérifiant d'abord si l'hôte distant est démarré }}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
#Auteur : DiouxX&lt;br /&gt;
#Date : 13/08/2015&lt;br /&gt;
 &lt;br /&gt;
#Description&lt;br /&gt;
#-----------&lt;br /&gt;
#Script lancé au demarrage du serveur pour e?monter les différenets parages&lt;br /&gt;
#N'est pas mis dans /etc/fstab pour ne pas empêcher le serveur de demarrer si&lt;br /&gt;
#les bornes ne sont pas allumées&lt;br /&gt;
 &lt;br /&gt;
#Historique modification&lt;br /&gt;
# 15/09/2015 : Ajout de variables pour les dossier a monter&lt;br /&gt;
 &lt;br /&gt;
#Couleur affichage&lt;br /&gt;
VERT=&amp;quot;\\033[1;32m&amp;quot; &lt;br /&gt;
NORMAL=&amp;quot;\\033[0;39m&amp;quot; &lt;br /&gt;
ROUGE=&amp;quot;\\033[1;31m&amp;quot; &lt;br /&gt;
ROSE=&amp;quot;\\033[1;35m&amp;quot; &lt;br /&gt;
BLEU=&amp;quot;\\033[1;34m&amp;quot; &lt;br /&gt;
BLANC=&amp;quot;\\033[0;02m&amp;quot; &lt;br /&gt;
BLANCLAIR=&amp;quot;\\033[1;08m&amp;quot; &lt;br /&gt;
JAUNE=&amp;quot;\\033[1;33m&amp;quot; &lt;br /&gt;
CYAN=&amp;quot;\\033[1;36m&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
#Variables globales&lt;br /&gt;
COUPLE0_IP=192.168.7.34&lt;br /&gt;
COUPLE0_MOUNT_DISTANT=&amp;quot;/var/tmp/k8055_c1&amp;quot;&lt;br /&gt;
COUPLE0_MOUNT_LOCAL=&amp;quot;/var/tmp/laver-eau/k8055_c1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
COUPLE1_IP=192.168.7.35&lt;br /&gt;
COUPLE1_MOUNT_DISTANT=&amp;quot;/var/tmp/k8055_c1&amp;quot;&lt;br /&gt;
COUPLE1_MOUNT_LOCAL=&amp;quot;/var/tmp/conso-eau/k8055_c2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
HOST_ALIVE=0&lt;br /&gt;
 &lt;br /&gt;
#Fonction testant le ping d'un hôte&lt;br /&gt;
#$1 = Adresse IP/Nom DNS a tester&lt;br /&gt;
 &lt;br /&gt;
function check_host_alive(){&lt;br /&gt;
	echo -e &amp;quot;Check Host Alive $1&amp;quot;&lt;br /&gt;
	ping $1 -c5 -q &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
	if [ $? != 1 ]&lt;br /&gt;
	then&lt;br /&gt;
		echo -e &amp;quot;PING \t$VERT[OK]$NORMAL&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		echo -e &amp;quot;PING \t$ROUGE[KO]$NORMAL&amp;quot;&lt;br /&gt;
		HOST_ALIVE=1&lt;br /&gt;
	fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
#Fonction pour monter les partages&lt;br /&gt;
#Elle appelle la fonction check_host_alive avant de faire le montage&lt;br /&gt;
#$1 = Adresse IP/Nom DNS a tester&lt;br /&gt;
#$2 = Premier parametre pour la commande mount&lt;br /&gt;
#$3 = Second parametre pour la commande mount&lt;br /&gt;
 &lt;br /&gt;
function mount_shared_folder {&lt;br /&gt;
	check_host_alive $1&lt;br /&gt;
	if [ $HOST_ALIVE != 1 ]&lt;br /&gt;
	then&lt;br /&gt;
		echo -e &amp;quot;$VERT\tOn fait le montage mount $2 $3 $NORMAL&amp;quot;&lt;br /&gt;
		mount $2 $3&lt;br /&gt;
	else&lt;br /&gt;
		echo -e &amp;quot;$ROUGE\tOn ne fait pas le montage mount $2 $3 $NORMAL&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
mount_shared_folder $COUPLE0_IP $COUPLE0_IP:$COUPLE0_MOUNT_DISTANT $COUPLE0_MOUNT_LOCAL&lt;br /&gt;
mount_shared_folder $COUPLE1_IP $COUPLE1_IP:$COUPLE1_MOUNT_DISTANT $COUPLE1_MOUNT_LOCAL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Catégorie:Scripts System]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Openldap_ajouter_attribut&amp;diff=248</id>
		<title>Openldap ajouter attribut</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Openldap_ajouter_attribut&amp;diff=248"/>
				<updated>2016-06-15T09:27:47Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Ce script permet de modifier une liste d'utilisateur LDAP }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Dans ce cas-ci, nous ajoutons un attribut &amp;quot;quotaCloud&amp;quot; aux users }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#Script pour modifier une liste d'utilisateur compris dans un fichier texte&lt;br /&gt;
&lt;br /&gt;
#Construction du fichier contenant la liste des users avec seulement leur dn&lt;br /&gt;
#vers le fichier listUsersDn.txt&lt;br /&gt;
ldapsearch -LLL -xvD &amp;quot;cn=admin,dc=be&amp;quot; -w PASSWORD -b &amp;quot;ou=Users,dc=domain,dc=be&amp;quot; -H ldap://ldap.domain.be &amp;quot;(objectClass=VotreObkectClassPourTrier)&amp;quot; uid=* uid | grep dn &amp;gt; /tmp/listUsersDn.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Lecture ligne par ligne du fichier listUsersDn.txt &amp;amp; rajout des arguments necessaire&lt;br /&gt;
#Fichier termine : modifyFinal.txt&lt;br /&gt;
while read line&lt;br /&gt;
do&lt;br /&gt;
        echo -e &amp;quot;$line\nchangetype: modify\nadd: quotaCloud\nquotaCloud: 5368709121\n&amp;quot; &amp;gt;&amp;gt; /tmp/modifyFinal.txt&lt;br /&gt;
done &amp;lt; /tmp/listUsersDn.txt&lt;br /&gt;
&lt;br /&gt;
echo -e &amp;quot;Construction fichier modifyFinal\t[OK]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm -vf /tmp/listUsersDn.txt&lt;br /&gt;
&lt;br /&gt;
#Modification des entrees dans le serveur&lt;br /&gt;
#ldapmodify -xvD &amp;quot;cn=admin,dc=be&amp;quot; -w PASSWORD -H ldap://ldap.domain.be -f /tmp/modifyFinal.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Scripts System]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Openldap_ajouter_attribut&amp;diff=247</id>
		<title>Openldap ajouter attribut</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Openldap_ajouter_attribut&amp;diff=247"/>
				<updated>2016-06-15T09:24:22Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : Page créée avec « {{ Introduction | Ce script permet de modifier une liste d'utilisateur LDAP }}  &amp;lt;br&amp;gt; {{ Note | Dans ce cas-ci, nous ajoutons un attribut &amp;quot;quotaCloud&amp;quot; aux users }} &amp;lt;br&amp;gt;  &amp;lt;s... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Ce script permet de modifier une liste d'utilisateur LDAP }} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Dans ce cas-ci, nous ajoutons un attribut &amp;quot;quotaCloud&amp;quot; aux users }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#Script pour modifier une liste d'utilisateur compris dans un fichier texte&lt;br /&gt;
&lt;br /&gt;
#Construction du fichier contenant la liste des users avec seulement leur dn&lt;br /&gt;
#vers le fichier listUsersDn.txt&lt;br /&gt;
ldapsearch -LLL -xvD &amp;quot;cn=admin,dc=be&amp;quot; -w multi/2004 -b &amp;quot;ou=Users,dc=admin,dc=pass,dc=be&amp;quot; -H ldap://192.168.100.34 &amp;quot;(objectClass=PASS)&amp;quot; uid=* uid | grep dn &amp;gt; /tmp/listUsersDn.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Lecture ligne par ligne du fichier listUsersDn.txt &amp;amp; rajout des arguments necessaire&lt;br /&gt;
#Fichier termine : modifyFinal.txt&lt;br /&gt;
while read line&lt;br /&gt;
do&lt;br /&gt;
        echo -e &amp;quot;$line\nchangetype: modify\nadd: quotaCloud\nquotaCloud: 5368709121\n&amp;quot; &amp;gt;&amp;gt; /tmp/modifyFinal.txt&lt;br /&gt;
done &amp;lt; /tmp/listUsersDn.txt&lt;br /&gt;
&lt;br /&gt;
echo -e &amp;quot;Construction fichier modifyFinal\t[OK]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rm -vf /tmp/listUsersDn.txt&lt;br /&gt;
&lt;br /&gt;
#Modification des entrees dans le serveur&lt;br /&gt;
#ldapmodify -xvD &amp;quot;cn=admin,dc=be&amp;quot; -w multi/2004 -H ldap://192.168.100.34 -f /tmp/modifyFinal.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Scripts System]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Scripts_PowerCLI&amp;diff=246</id>
		<title>Scripts PowerCLI</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Scripts_PowerCLI&amp;diff=246"/>
				<updated>2016-05-24T10:23:34Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Rapport violation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble de scripts PowerCLI/Powershell }}&lt;br /&gt;
&lt;br /&gt;
==VM==&lt;br /&gt;
&lt;br /&gt;
=== Listing VM et taille ===&lt;br /&gt;
&lt;br /&gt;
* Script pour lister les VMs et leur taille de disque dur&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;mail@domain.be&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;report-vmware@domain.be&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;mail.domain.be&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
$PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Conexion au serveur&lt;br /&gt;
$connexion = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
$date = Get-Date -Format yyyy.MM.dd&lt;br /&gt;
$file = &amp;quot;C:\Rapport-VMware\&amp;quot;+$date+&amp;quot;-report-vm-size.csv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Recupération de toutes les VM&lt;br /&gt;
$listVm = Get-VM &amp;quot;*test*&amp;quot;&lt;br /&gt;
$report=@()&lt;br /&gt;
&lt;br /&gt;
foreach ($vm in $listVm)&lt;br /&gt;
{&lt;br /&gt;
    $report += $vm | Select-Object Name,@{n=&amp;quot;Provisionedspace(GB)&amp;quot;; E={[math]::round($_.ProvisionedSpaceGB)}}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$report&lt;br /&gt;
$report | Export-Csv -Path $file&lt;br /&gt;
&lt;br /&gt;
Disconnect-VIServer $connexion -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Snapshot==&lt;br /&gt;
&lt;br /&gt;
=== Liste VM et leurs snapshots ===&lt;br /&gt;
&lt;br /&gt;
* Script pour lister les VMs ayant un snapshot&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
#Server VSphere&lt;br /&gt;
$server = &amp;quot;adresse-VCenter&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Connexion au vsphere&lt;br /&gt;
$connexion = Connect-VIServer -Server $server -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
#Liste des VM avec le nom du snapshot et la description&lt;br /&gt;
Get-VM | Get-Snapshot | Select VM,Name,Description&lt;br /&gt;
&lt;br /&gt;
pause&lt;br /&gt;
&lt;br /&gt;
Disconnect-VIServer -Server $connexion -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Script pour réaliser un rapport des snapshot et l'envoyer par mai&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;nagios@pass.be&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;report-vmware@pass.be&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;mail.pass.be&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$Header = @&amp;quot;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
TABLE {border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}&lt;br /&gt;
TR:Hover TD {Background-Color: #C1D5F8;}&lt;br /&gt;
TH {border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color: #6495ED;}&lt;br /&gt;
TD {border-width: 1px;padding: 3px;border-style: solid;border-color: black;}&lt;br /&gt;
.odd  { background-color:#ffffff; }&lt;br /&gt;
.even { background-color:#dddddd; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;&lt;br /&gt;
Snapshot Report - $VIServer&lt;br /&gt;
&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;quot;@&lt;br /&gt;
&lt;br /&gt;
Function Set-AlternatingRows {&lt;br /&gt;
    [CmdletBinding()]&lt;br /&gt;
         Param(&lt;br /&gt;
             [Parameter(Mandatory=$True,ValueFromPipeline=$True)]&lt;br /&gt;
             [object[]]$HTMLDocument,&lt;br /&gt;
      &lt;br /&gt;
             [Parameter(Mandatory=$True)]&lt;br /&gt;
             [string]$CSSEvenClass,&lt;br /&gt;
      &lt;br /&gt;
             [Parameter(Mandatory=$True)]&lt;br /&gt;
             [string]$CSSOddClass&lt;br /&gt;
         )&lt;br /&gt;
     Begin {&lt;br /&gt;
         $ClassName = $CSSEvenClass&lt;br /&gt;
     }&lt;br /&gt;
     Process {&lt;br /&gt;
         [string]$Line = $HTMLDocument&lt;br /&gt;
         $Line = $Line.Replace(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;,&amp;quot;&amp;lt;tr class=&amp;quot;&amp;quot;$ClassName&amp;quot;&amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
         If ($ClassName -eq $CSSEvenClass)&lt;br /&gt;
         {    $ClassName = $CSSOddClass&lt;br /&gt;
         }&lt;br /&gt;
         Else&lt;br /&gt;
         {    $ClassName = $CSSEvenClass&lt;br /&gt;
         }&lt;br /&gt;
         $Line = $Line.Replace(&amp;quot;&amp;lt;table&amp;gt;&amp;quot;,&amp;quot;&amp;lt;table width=&amp;quot;&amp;quot;50%&amp;quot;&amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
         Return $Line&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Desactiver la securité &lt;br /&gt;
#Set-ExecutionPolicy RemoteSigned&lt;br /&gt;
&lt;br /&gt;
#Chargement du module Vmware&lt;br /&gt;
If (-not (Get-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue))&lt;br /&gt;
{   Try { Add-PSSnapin VMware.VimAutomation.Core -ErrorAction Stop }&lt;br /&gt;
    Catch { Throw &amp;quot;Problem loading VMware.VimAutomation.Core snapin because &amp;quot;&amp;quot;$($Error[1])&amp;quot;&amp;quot;&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
$PathCredentialFile &lt;br /&gt;
&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Affectation de la variable VIServer&lt;br /&gt;
$VIServer = $credential.Host&lt;br /&gt;
&lt;br /&gt;
#Connexion au vsphere&lt;br /&gt;
$connection = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
$Report = Get-VM | Get-Snapshot | Select VM,Name,Description,@{Label=&amp;quot;Size&amp;quot;;Expression={&amp;quot;{0:N2} GB&amp;quot; -f ($_.SizeGB)}},Created&lt;br /&gt;
If (-not $Report)&lt;br /&gt;
{  $Report = New-Object PSObject -Property @{&lt;br /&gt;
      VM = &amp;quot;No snapshots found on any VM's controlled by $VIServer&amp;quot;&lt;br /&gt;
      Name = &amp;quot;&amp;quot;&lt;br /&gt;
      Description = &amp;quot;&amp;quot;&lt;br /&gt;
      Size = &amp;quot;&amp;quot;&lt;br /&gt;
      Created = &amp;quot;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$Report = $Report | Select VM,Name,Description,Size,Created | ConvertTo-Html -Head $Header -PreContent &amp;quot;&amp;lt;p&amp;gt;&amp;lt;h2&amp;gt;Snapshot Report - $VIServer&amp;lt;/h2&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;br&amp;gt;&amp;quot; | Set-AlternatingRows -CSSEvenClass even -CSSOddClass odd&lt;br /&gt;
	&lt;br /&gt;
#Si on veut enregistrer le rapport à un endroit&lt;br /&gt;
#$Report | Out-File $PathToReport\SnapShotReport.html&lt;br /&gt;
&lt;br /&gt;
#Fonction d'envoi de mail&lt;br /&gt;
$MailSplat = @{&lt;br /&gt;
    To         = $To&lt;br /&gt;
    From       = $From&lt;br /&gt;
    Subject    = &amp;quot;$VIServer Snapshot Report&amp;quot;&lt;br /&gt;
    Body       = ($Report | Out-String)&lt;br /&gt;
    BodyAsHTML = $true&lt;br /&gt;
    SMTPServer = $SMTPServer&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Send-MailMessage @MailSplat&lt;br /&gt;
&lt;br /&gt;
#Deconnexion du VIServer sans prompt&lt;br /&gt;
Disconnect-VIServer -Server $connection -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datastore==&lt;br /&gt;
&lt;br /&gt;
=== Liste des VM par datastore ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    [boolean]$ExportCsv = $false,&lt;br /&gt;
    [string]$DirecteoryCsv = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#Variables static&lt;br /&gt;
$date = Get-Date -Format yyyy.MM.dd&lt;br /&gt;
$fileNameCSV = &amp;quot;&amp;quot;+$date+&amp;quot;-report-datastore-vm.csv&amp;quot;&lt;br /&gt;
#Tableau récupérant le contenu a exporter&lt;br /&gt;
$content=@()&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
#Affichage de debug pour le fichier credential&lt;br /&gt;
#$PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Création de l'objet avec les informations de connexion&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Conexion au serveur&lt;br /&gt;
$connexion = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
#Récupération des datastore et des VMs associées.&lt;br /&gt;
Get-Datacenter | Get-Datastore | Foreach-Object {&lt;br /&gt;
    $datastore= $_.Name&lt;br /&gt;
    $content += $_ | Get-VM | Select-Object @{n='DataStore';e={$datastore}},Name&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if($ExportCsv)&lt;br /&gt;
{&lt;br /&gt;
    write-Host &amp;quot;Export en CSV&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #Ficher CSV de sortie&lt;br /&gt;
    if ( $DirecteoryCsv -eq &amp;quot;&amp;quot; )&lt;br /&gt;
    {&lt;br /&gt;
        $FileCsv = &amp;quot;.\&amp;quot;+$fileNameCSV&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        $FileCsv = $DirecteoryCsv+&amp;quot;\&amp;quot;+$fileNameCSV&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #Export du contenu en CSV&lt;br /&gt;
    $content | Export-Csv -Path $FileCsv -NoTypeInformation&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$content&lt;br /&gt;
&lt;br /&gt;
Disconnect-VIServer -Server $connexion -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Replication ==&lt;br /&gt;
=== Rapport réplication complet ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
#$credential = Get-VICredentialStoreItem -File $CredentialFile&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
$PathCredentialFile &lt;br /&gt;
&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Affectation de la variable VIServer&lt;br /&gt;
$VIServer = $credential.Host&lt;br /&gt;
&lt;br /&gt;
#Connexion au vsphere&lt;br /&gt;
$connection = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
#Récupérer tous les events lié à la réplication&lt;br /&gt;
Get-VIEvent -MaxSamples ([int]::MaxValue) | Where { $_.EventTypeId -match &amp;quot;hbr|rpo&amp;quot; } | Select CreatedTime, FullFormattedMessage, @{Name=&amp;quot;VMName&amp;quot;;Expression={$_.Vm.Name}} | export-csv -NoTypeInformation -Path ([Environment]::GetFolderPath(&amp;quot;Desktop&amp;quot;) + &amp;quot;\HBR-RPOEvents.csv&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Deconnexion du VIServer sans prompt&lt;br /&gt;
Disconnect-VIServer -Server $connection -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rapport violation ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
#$credential = Get-VICredentialStoreItem -File $CredentialFile&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
$PathCredentialFile &lt;br /&gt;
&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Affectation de la variable VIServer&lt;br /&gt;
$VIServer = $credential.Host&lt;br /&gt;
&lt;br /&gt;
#Connexion au vsphere&lt;br /&gt;
$connection = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
Write-Host &amp;quot;[$(Get-Date)] Retrieving VMs&amp;quot;&lt;br /&gt;
$VMs = Get-VM&lt;br /&gt;
 &lt;br /&gt;
$Results = @()&lt;br /&gt;
Foreach ($VM in $VMs) {&lt;br /&gt;
   Write-Host &amp;quot;[$(Get-Date)] Retrieving events for $($VM.name)&amp;quot;&lt;br /&gt;
   $Events = Get-VIEvent -MaxSamples ([int]::MaxValue) -Entity $VM&lt;br /&gt;
   Write-Host &amp;quot;[$(Get-Date)] Filtering RPO events for $($VM.name)&amp;quot;&lt;br /&gt;
   $RPOEvents = $Events | where { $_.EventTypeID -match &amp;quot;rpo&amp;quot; } | Where { $_.Vm.Name -eq $VM.Name } | Select EventTypeId, CreatedTime, FullFormattedMessage, @{Name=&amp;quot;VMName&amp;quot;;Expression={$_.Vm.Name}} | Sort CreatedTime&lt;br /&gt;
   if ($RPOEvents) {&lt;br /&gt;
      $Count = 0&lt;br /&gt;
      Write-Host &amp;quot;[$(Get-Date)] Finding replication results for $($VM.Name)&amp;quot;&lt;br /&gt;
      do {&lt;br /&gt;
         $details = &amp;quot;&amp;quot; | Select VMName, ViolationStart, ViolationEnd, Mins&lt;br /&gt;
         if ($RPOEvents[$count].EventTypeID -match &amp;quot;Violated&amp;quot;) {&lt;br /&gt;
            If (-not $details.Start) {&lt;br /&gt;
               $Details.VMName = $RPOEvents[$Count].VMName&lt;br /&gt;
               $Details.ViolationStart = $RPOEvents[$Count].CreatedTime&lt;br /&gt;
               Do {&lt;br /&gt;
               $Count++&lt;br /&gt;
               } until (($RPOEvents[$Count].EventTypeID -match &amp;quot;Restored&amp;quot;) -or ($Count -gt $RPOEvents.Count))&lt;br /&gt;
               if ($RPOEvents[$count].EventTypeID -match &amp;quot;Restored&amp;quot;) {&lt;br /&gt;
                  $details.ViolationEnd = $RPOEvents[$Count].CreatedTime&lt;br /&gt;
                  $Time = $details.ViolationEnd - $details.ViolationStart&lt;br /&gt;
                  $details.Mins = &amp;quot;{0:N2}&amp;quot; -f $Time.TotalMinutes&lt;br /&gt;
               } Else {&lt;br /&gt;
                  $details.ViolationEnd = &amp;quot;No End Date&amp;quot;&lt;br /&gt;
                  $details.Mins = &amp;quot;N/A&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
         $Results += $details&lt;br /&gt;
         $Count++&lt;br /&gt;
      } until ($count -gt $RPOEvents.Count)&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
$Results | export-csv -NoTypeInformation -Path ([Environment]::GetFolderPath(&amp;quot;Desktop&amp;quot;) + &amp;quot;\ViolationReport.csv&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Deconnexion du VIServer sans prompt&lt;br /&gt;
Disconnect-VIServer -Server $connection -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:PowerCLI]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Scripts_PowerCLI&amp;diff=245</id>
		<title>Scripts PowerCLI</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Scripts_PowerCLI&amp;diff=245"/>
				<updated>2016-05-24T10:23:18Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Rapport réplication complet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble de scripts PowerCLI/Powershell }}&lt;br /&gt;
&lt;br /&gt;
==VM==&lt;br /&gt;
&lt;br /&gt;
=== Listing VM et taille ===&lt;br /&gt;
&lt;br /&gt;
* Script pour lister les VMs et leur taille de disque dur&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;mail@domain.be&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;report-vmware@domain.be&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;mail.domain.be&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
$PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Conexion au serveur&lt;br /&gt;
$connexion = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
$date = Get-Date -Format yyyy.MM.dd&lt;br /&gt;
$file = &amp;quot;C:\Rapport-VMware\&amp;quot;+$date+&amp;quot;-report-vm-size.csv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Recupération de toutes les VM&lt;br /&gt;
$listVm = Get-VM &amp;quot;*test*&amp;quot;&lt;br /&gt;
$report=@()&lt;br /&gt;
&lt;br /&gt;
foreach ($vm in $listVm)&lt;br /&gt;
{&lt;br /&gt;
    $report += $vm | Select-Object Name,@{n=&amp;quot;Provisionedspace(GB)&amp;quot;; E={[math]::round($_.ProvisionedSpaceGB)}}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$report&lt;br /&gt;
$report | Export-Csv -Path $file&lt;br /&gt;
&lt;br /&gt;
Disconnect-VIServer $connexion -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Snapshot==&lt;br /&gt;
&lt;br /&gt;
=== Liste VM et leurs snapshots ===&lt;br /&gt;
&lt;br /&gt;
* Script pour lister les VMs ayant un snapshot&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
#Server VSphere&lt;br /&gt;
$server = &amp;quot;adresse-VCenter&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Connexion au vsphere&lt;br /&gt;
$connexion = Connect-VIServer -Server $server -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
#Liste des VM avec le nom du snapshot et la description&lt;br /&gt;
Get-VM | Get-Snapshot | Select VM,Name,Description&lt;br /&gt;
&lt;br /&gt;
pause&lt;br /&gt;
&lt;br /&gt;
Disconnect-VIServer -Server $connexion -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Script pour réaliser un rapport des snapshot et l'envoyer par mai&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;nagios@pass.be&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;report-vmware@pass.be&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;mail.pass.be&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$Header = @&amp;quot;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
TABLE {border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}&lt;br /&gt;
TR:Hover TD {Background-Color: #C1D5F8;}&lt;br /&gt;
TH {border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color: #6495ED;}&lt;br /&gt;
TD {border-width: 1px;padding: 3px;border-style: solid;border-color: black;}&lt;br /&gt;
.odd  { background-color:#ffffff; }&lt;br /&gt;
.even { background-color:#dddddd; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;&lt;br /&gt;
Snapshot Report - $VIServer&lt;br /&gt;
&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;quot;@&lt;br /&gt;
&lt;br /&gt;
Function Set-AlternatingRows {&lt;br /&gt;
    [CmdletBinding()]&lt;br /&gt;
         Param(&lt;br /&gt;
             [Parameter(Mandatory=$True,ValueFromPipeline=$True)]&lt;br /&gt;
             [object[]]$HTMLDocument,&lt;br /&gt;
      &lt;br /&gt;
             [Parameter(Mandatory=$True)]&lt;br /&gt;
             [string]$CSSEvenClass,&lt;br /&gt;
      &lt;br /&gt;
             [Parameter(Mandatory=$True)]&lt;br /&gt;
             [string]$CSSOddClass&lt;br /&gt;
         )&lt;br /&gt;
     Begin {&lt;br /&gt;
         $ClassName = $CSSEvenClass&lt;br /&gt;
     }&lt;br /&gt;
     Process {&lt;br /&gt;
         [string]$Line = $HTMLDocument&lt;br /&gt;
         $Line = $Line.Replace(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;,&amp;quot;&amp;lt;tr class=&amp;quot;&amp;quot;$ClassName&amp;quot;&amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
         If ($ClassName -eq $CSSEvenClass)&lt;br /&gt;
         {    $ClassName = $CSSOddClass&lt;br /&gt;
         }&lt;br /&gt;
         Else&lt;br /&gt;
         {    $ClassName = $CSSEvenClass&lt;br /&gt;
         }&lt;br /&gt;
         $Line = $Line.Replace(&amp;quot;&amp;lt;table&amp;gt;&amp;quot;,&amp;quot;&amp;lt;table width=&amp;quot;&amp;quot;50%&amp;quot;&amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
         Return $Line&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Desactiver la securité &lt;br /&gt;
#Set-ExecutionPolicy RemoteSigned&lt;br /&gt;
&lt;br /&gt;
#Chargement du module Vmware&lt;br /&gt;
If (-not (Get-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue))&lt;br /&gt;
{   Try { Add-PSSnapin VMware.VimAutomation.Core -ErrorAction Stop }&lt;br /&gt;
    Catch { Throw &amp;quot;Problem loading VMware.VimAutomation.Core snapin because &amp;quot;&amp;quot;$($Error[1])&amp;quot;&amp;quot;&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
$PathCredentialFile &lt;br /&gt;
&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Affectation de la variable VIServer&lt;br /&gt;
$VIServer = $credential.Host&lt;br /&gt;
&lt;br /&gt;
#Connexion au vsphere&lt;br /&gt;
$connection = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
$Report = Get-VM | Get-Snapshot | Select VM,Name,Description,@{Label=&amp;quot;Size&amp;quot;;Expression={&amp;quot;{0:N2} GB&amp;quot; -f ($_.SizeGB)}},Created&lt;br /&gt;
If (-not $Report)&lt;br /&gt;
{  $Report = New-Object PSObject -Property @{&lt;br /&gt;
      VM = &amp;quot;No snapshots found on any VM's controlled by $VIServer&amp;quot;&lt;br /&gt;
      Name = &amp;quot;&amp;quot;&lt;br /&gt;
      Description = &amp;quot;&amp;quot;&lt;br /&gt;
      Size = &amp;quot;&amp;quot;&lt;br /&gt;
      Created = &amp;quot;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$Report = $Report | Select VM,Name,Description,Size,Created | ConvertTo-Html -Head $Header -PreContent &amp;quot;&amp;lt;p&amp;gt;&amp;lt;h2&amp;gt;Snapshot Report - $VIServer&amp;lt;/h2&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;br&amp;gt;&amp;quot; | Set-AlternatingRows -CSSEvenClass even -CSSOddClass odd&lt;br /&gt;
	&lt;br /&gt;
#Si on veut enregistrer le rapport à un endroit&lt;br /&gt;
#$Report | Out-File $PathToReport\SnapShotReport.html&lt;br /&gt;
&lt;br /&gt;
#Fonction d'envoi de mail&lt;br /&gt;
$MailSplat = @{&lt;br /&gt;
    To         = $To&lt;br /&gt;
    From       = $From&lt;br /&gt;
    Subject    = &amp;quot;$VIServer Snapshot Report&amp;quot;&lt;br /&gt;
    Body       = ($Report | Out-String)&lt;br /&gt;
    BodyAsHTML = $true&lt;br /&gt;
    SMTPServer = $SMTPServer&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Send-MailMessage @MailSplat&lt;br /&gt;
&lt;br /&gt;
#Deconnexion du VIServer sans prompt&lt;br /&gt;
Disconnect-VIServer -Server $connection -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datastore==&lt;br /&gt;
&lt;br /&gt;
=== Liste des VM par datastore ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    [boolean]$ExportCsv = $false,&lt;br /&gt;
    [string]$DirecteoryCsv = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#Variables static&lt;br /&gt;
$date = Get-Date -Format yyyy.MM.dd&lt;br /&gt;
$fileNameCSV = &amp;quot;&amp;quot;+$date+&amp;quot;-report-datastore-vm.csv&amp;quot;&lt;br /&gt;
#Tableau récupérant le contenu a exporter&lt;br /&gt;
$content=@()&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
#Affichage de debug pour le fichier credential&lt;br /&gt;
#$PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Création de l'objet avec les informations de connexion&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Conexion au serveur&lt;br /&gt;
$connexion = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
#Récupération des datastore et des VMs associées.&lt;br /&gt;
Get-Datacenter | Get-Datastore | Foreach-Object {&lt;br /&gt;
    $datastore= $_.Name&lt;br /&gt;
    $content += $_ | Get-VM | Select-Object @{n='DataStore';e={$datastore}},Name&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if($ExportCsv)&lt;br /&gt;
{&lt;br /&gt;
    write-Host &amp;quot;Export en CSV&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #Ficher CSV de sortie&lt;br /&gt;
    if ( $DirecteoryCsv -eq &amp;quot;&amp;quot; )&lt;br /&gt;
    {&lt;br /&gt;
        $FileCsv = &amp;quot;.\&amp;quot;+$fileNameCSV&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        $FileCsv = $DirecteoryCsv+&amp;quot;\&amp;quot;+$fileNameCSV&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #Export du contenu en CSV&lt;br /&gt;
    $content | Export-Csv -Path $FileCsv -NoTypeInformation&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$content&lt;br /&gt;
&lt;br /&gt;
Disconnect-VIServer -Server $connexion -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Replication ==&lt;br /&gt;
=== Rapport réplication complet ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
#$credential = Get-VICredentialStoreItem -File $CredentialFile&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
$PathCredentialFile &lt;br /&gt;
&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Affectation de la variable VIServer&lt;br /&gt;
$VIServer = $credential.Host&lt;br /&gt;
&lt;br /&gt;
#Connexion au vsphere&lt;br /&gt;
$connection = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
#Récupérer tous les events lié à la réplication&lt;br /&gt;
Get-VIEvent -MaxSamples ([int]::MaxValue) | Where { $_.EventTypeId -match &amp;quot;hbr|rpo&amp;quot; } | Select CreatedTime, FullFormattedMessage, @{Name=&amp;quot;VMName&amp;quot;;Expression={$_.Vm.Name}} | export-csv -NoTypeInformation -Path ([Environment]::GetFolderPath(&amp;quot;Desktop&amp;quot;) + &amp;quot;\HBR-RPOEvents.csv&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Deconnexion du VIServer sans prompt&lt;br /&gt;
Disconnect-VIServer -Server $connection -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rapport violation ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;devleeschauwer@pass.be&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;report-vmware@pass.be&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;mail.pass.be&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
#$credential = Get-VICredentialStoreItem -File $CredentialFile&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
$PathCredentialFile &lt;br /&gt;
&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Affectation de la variable VIServer&lt;br /&gt;
$VIServer = $credential.Host&lt;br /&gt;
&lt;br /&gt;
#Connexion au vsphere&lt;br /&gt;
$connection = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
Write-Host &amp;quot;[$(Get-Date)] Retrieving VMs&amp;quot;&lt;br /&gt;
$VMs = Get-VM&lt;br /&gt;
 &lt;br /&gt;
$Results = @()&lt;br /&gt;
Foreach ($VM in $VMs) {&lt;br /&gt;
   Write-Host &amp;quot;[$(Get-Date)] Retrieving events for $($VM.name)&amp;quot;&lt;br /&gt;
   $Events = Get-VIEvent -MaxSamples ([int]::MaxValue) -Entity $VM&lt;br /&gt;
   Write-Host &amp;quot;[$(Get-Date)] Filtering RPO events for $($VM.name)&amp;quot;&lt;br /&gt;
   $RPOEvents = $Events | where { $_.EventTypeID -match &amp;quot;rpo&amp;quot; } | Where { $_.Vm.Name -eq $VM.Name } | Select EventTypeId, CreatedTime, FullFormattedMessage, @{Name=&amp;quot;VMName&amp;quot;;Expression={$_.Vm.Name}} | Sort CreatedTime&lt;br /&gt;
   if ($RPOEvents) {&lt;br /&gt;
      $Count = 0&lt;br /&gt;
      Write-Host &amp;quot;[$(Get-Date)] Finding replication results for $($VM.Name)&amp;quot;&lt;br /&gt;
      do {&lt;br /&gt;
         $details = &amp;quot;&amp;quot; | Select VMName, ViolationStart, ViolationEnd, Mins&lt;br /&gt;
         if ($RPOEvents[$count].EventTypeID -match &amp;quot;Violated&amp;quot;) {&lt;br /&gt;
            If (-not $details.Start) {&lt;br /&gt;
               $Details.VMName = $RPOEvents[$Count].VMName&lt;br /&gt;
               $Details.ViolationStart = $RPOEvents[$Count].CreatedTime&lt;br /&gt;
               Do {&lt;br /&gt;
               $Count++&lt;br /&gt;
               } until (($RPOEvents[$Count].EventTypeID -match &amp;quot;Restored&amp;quot;) -or ($Count -gt $RPOEvents.Count))&lt;br /&gt;
               if ($RPOEvents[$count].EventTypeID -match &amp;quot;Restored&amp;quot;) {&lt;br /&gt;
                  $details.ViolationEnd = $RPOEvents[$Count].CreatedTime&lt;br /&gt;
                  $Time = $details.ViolationEnd - $details.ViolationStart&lt;br /&gt;
                  $details.Mins = &amp;quot;{0:N2}&amp;quot; -f $Time.TotalMinutes&lt;br /&gt;
               } Else {&lt;br /&gt;
                  $details.ViolationEnd = &amp;quot;No End Date&amp;quot;&lt;br /&gt;
                  $details.Mins = &amp;quot;N/A&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
         $Results += $details&lt;br /&gt;
         $Count++&lt;br /&gt;
      } until ($count -gt $RPOEvents.Count)&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
$Results | export-csv -NoTypeInformation -Path ([Environment]::GetFolderPath(&amp;quot;Desktop&amp;quot;) + &amp;quot;\ViolationReport.csv&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Deconnexion du VIServer sans prompt&lt;br /&gt;
Disconnect-VIServer -Server $connection -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:PowerCLI]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Scripts_PowerCLI&amp;diff=244</id>
		<title>Scripts PowerCLI</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Scripts_PowerCLI&amp;diff=244"/>
				<updated>2016-05-24T10:22:22Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Datastore */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page regroupe un ensemble de scripts PowerCLI/Powershell }}&lt;br /&gt;
&lt;br /&gt;
==VM==&lt;br /&gt;
&lt;br /&gt;
=== Listing VM et taille ===&lt;br /&gt;
&lt;br /&gt;
* Script pour lister les VMs et leur taille de disque dur&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;mail@domain.be&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;report-vmware@domain.be&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;mail.domain.be&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
$PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Conexion au serveur&lt;br /&gt;
$connexion = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
$date = Get-Date -Format yyyy.MM.dd&lt;br /&gt;
$file = &amp;quot;C:\Rapport-VMware\&amp;quot;+$date+&amp;quot;-report-vm-size.csv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Recupération de toutes les VM&lt;br /&gt;
$listVm = Get-VM &amp;quot;*test*&amp;quot;&lt;br /&gt;
$report=@()&lt;br /&gt;
&lt;br /&gt;
foreach ($vm in $listVm)&lt;br /&gt;
{&lt;br /&gt;
    $report += $vm | Select-Object Name,@{n=&amp;quot;Provisionedspace(GB)&amp;quot;; E={[math]::round($_.ProvisionedSpaceGB)}}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$report&lt;br /&gt;
$report | Export-Csv -Path $file&lt;br /&gt;
&lt;br /&gt;
Disconnect-VIServer $connexion -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Snapshot==&lt;br /&gt;
&lt;br /&gt;
=== Liste VM et leurs snapshots ===&lt;br /&gt;
&lt;br /&gt;
* Script pour lister les VMs ayant un snapshot&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
#Server VSphere&lt;br /&gt;
$server = &amp;quot;adresse-VCenter&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#Connexion au vsphere&lt;br /&gt;
$connexion = Connect-VIServer -Server $server -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
#Liste des VM avec le nom du snapshot et la description&lt;br /&gt;
Get-VM | Get-Snapshot | Select VM,Name,Description&lt;br /&gt;
&lt;br /&gt;
pause&lt;br /&gt;
&lt;br /&gt;
Disconnect-VIServer -Server $connexion -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Script pour réaliser un rapport des snapshot et l'envoyer par mai&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;nagios@pass.be&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;report-vmware@pass.be&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;mail.pass.be&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
$Header = @&amp;quot;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
TABLE {border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}&lt;br /&gt;
TR:Hover TD {Background-Color: #C1D5F8;}&lt;br /&gt;
TH {border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color: #6495ED;}&lt;br /&gt;
TD {border-width: 1px;padding: 3px;border-style: solid;border-color: black;}&lt;br /&gt;
.odd  { background-color:#ffffff; }&lt;br /&gt;
.even { background-color:#dddddd; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;&lt;br /&gt;
Snapshot Report - $VIServer&lt;br /&gt;
&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;quot;@&lt;br /&gt;
&lt;br /&gt;
Function Set-AlternatingRows {&lt;br /&gt;
    [CmdletBinding()]&lt;br /&gt;
         Param(&lt;br /&gt;
             [Parameter(Mandatory=$True,ValueFromPipeline=$True)]&lt;br /&gt;
             [object[]]$HTMLDocument,&lt;br /&gt;
      &lt;br /&gt;
             [Parameter(Mandatory=$True)]&lt;br /&gt;
             [string]$CSSEvenClass,&lt;br /&gt;
      &lt;br /&gt;
             [Parameter(Mandatory=$True)]&lt;br /&gt;
             [string]$CSSOddClass&lt;br /&gt;
         )&lt;br /&gt;
     Begin {&lt;br /&gt;
         $ClassName = $CSSEvenClass&lt;br /&gt;
     }&lt;br /&gt;
     Process {&lt;br /&gt;
         [string]$Line = $HTMLDocument&lt;br /&gt;
         $Line = $Line.Replace(&amp;quot;&amp;lt;tr&amp;gt;&amp;quot;,&amp;quot;&amp;lt;tr class=&amp;quot;&amp;quot;$ClassName&amp;quot;&amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
         If ($ClassName -eq $CSSEvenClass)&lt;br /&gt;
         {    $ClassName = $CSSOddClass&lt;br /&gt;
         }&lt;br /&gt;
         Else&lt;br /&gt;
         {    $ClassName = $CSSEvenClass&lt;br /&gt;
         }&lt;br /&gt;
         $Line = $Line.Replace(&amp;quot;&amp;lt;table&amp;gt;&amp;quot;,&amp;quot;&amp;lt;table width=&amp;quot;&amp;quot;50%&amp;quot;&amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
         Return $Line&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Desactiver la securité &lt;br /&gt;
#Set-ExecutionPolicy RemoteSigned&lt;br /&gt;
&lt;br /&gt;
#Chargement du module Vmware&lt;br /&gt;
If (-not (Get-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue))&lt;br /&gt;
{   Try { Add-PSSnapin VMware.VimAutomation.Core -ErrorAction Stop }&lt;br /&gt;
    Catch { Throw &amp;quot;Problem loading VMware.VimAutomation.Core snapin because &amp;quot;&amp;quot;$($Error[1])&amp;quot;&amp;quot;&amp;quot; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
$PathCredentialFile &lt;br /&gt;
&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Affectation de la variable VIServer&lt;br /&gt;
$VIServer = $credential.Host&lt;br /&gt;
&lt;br /&gt;
#Connexion au vsphere&lt;br /&gt;
$connection = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
$Report = Get-VM | Get-Snapshot | Select VM,Name,Description,@{Label=&amp;quot;Size&amp;quot;;Expression={&amp;quot;{0:N2} GB&amp;quot; -f ($_.SizeGB)}},Created&lt;br /&gt;
If (-not $Report)&lt;br /&gt;
{  $Report = New-Object PSObject -Property @{&lt;br /&gt;
      VM = &amp;quot;No snapshots found on any VM's controlled by $VIServer&amp;quot;&lt;br /&gt;
      Name = &amp;quot;&amp;quot;&lt;br /&gt;
      Description = &amp;quot;&amp;quot;&lt;br /&gt;
      Size = &amp;quot;&amp;quot;&lt;br /&gt;
      Created = &amp;quot;&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$Report = $Report | Select VM,Name,Description,Size,Created | ConvertTo-Html -Head $Header -PreContent &amp;quot;&amp;lt;p&amp;gt;&amp;lt;h2&amp;gt;Snapshot Report - $VIServer&amp;lt;/h2&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;br&amp;gt;&amp;quot; | Set-AlternatingRows -CSSEvenClass even -CSSOddClass odd&lt;br /&gt;
	&lt;br /&gt;
#Si on veut enregistrer le rapport à un endroit&lt;br /&gt;
#$Report | Out-File $PathToReport\SnapShotReport.html&lt;br /&gt;
&lt;br /&gt;
#Fonction d'envoi de mail&lt;br /&gt;
$MailSplat = @{&lt;br /&gt;
    To         = $To&lt;br /&gt;
    From       = $From&lt;br /&gt;
    Subject    = &amp;quot;$VIServer Snapshot Report&amp;quot;&lt;br /&gt;
    Body       = ($Report | Out-String)&lt;br /&gt;
    BodyAsHTML = $true&lt;br /&gt;
    SMTPServer = $SMTPServer&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Send-MailMessage @MailSplat&lt;br /&gt;
&lt;br /&gt;
#Deconnexion du VIServer sans prompt&lt;br /&gt;
Disconnect-VIServer -Server $connection -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Datastore==&lt;br /&gt;
&lt;br /&gt;
=== Liste des VM par datastore ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    [boolean]$ExportCsv = $false,&lt;br /&gt;
    [string]$DirecteoryCsv = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#Variables static&lt;br /&gt;
$date = Get-Date -Format yyyy.MM.dd&lt;br /&gt;
$fileNameCSV = &amp;quot;&amp;quot;+$date+&amp;quot;-report-datastore-vm.csv&amp;quot;&lt;br /&gt;
#Tableau récupérant le contenu a exporter&lt;br /&gt;
$content=@()&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
#Affichage de debug pour le fichier credential&lt;br /&gt;
#$PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Création de l'objet avec les informations de connexion&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Conexion au serveur&lt;br /&gt;
$connexion = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
#Récupération des datastore et des VMs associées.&lt;br /&gt;
Get-Datacenter | Get-Datastore | Foreach-Object {&lt;br /&gt;
    $datastore= $_.Name&lt;br /&gt;
    $content += $_ | Get-VM | Select-Object @{n='DataStore';e={$datastore}},Name&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if($ExportCsv)&lt;br /&gt;
{&lt;br /&gt;
    write-Host &amp;quot;Export en CSV&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #Ficher CSV de sortie&lt;br /&gt;
    if ( $DirecteoryCsv -eq &amp;quot;&amp;quot; )&lt;br /&gt;
    {&lt;br /&gt;
        $FileCsv = &amp;quot;.\&amp;quot;+$fileNameCSV&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        $FileCsv = $DirecteoryCsv+&amp;quot;\&amp;quot;+$fileNameCSV&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #Export du contenu en CSV&lt;br /&gt;
    $content | Export-Csv -Path $FileCsv -NoTypeInformation&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$content&lt;br /&gt;
&lt;br /&gt;
Disconnect-VIServer -Server $connexion -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Replication ==&lt;br /&gt;
=== Rapport réplication complet ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;devleeschauwer@pass.be&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;report-vmware@pass.be&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;mail.pass.be&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
#$credential = Get-VICredentialStoreItem -File $CredentialFile&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
$PathCredentialFile &lt;br /&gt;
&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Affectation de la variable VIServer&lt;br /&gt;
$VIServer = $credential.Host&lt;br /&gt;
&lt;br /&gt;
#Connexion au vsphere&lt;br /&gt;
$connection = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
#Récupérer tous les events lié à la réplication&lt;br /&gt;
Get-VIEvent -MaxSamples ([int]::MaxValue) | Where { $_.EventTypeId -match &amp;quot;hbr|rpo&amp;quot; } | Select CreatedTime, FullFormattedMessage, @{Name=&amp;quot;VMName&amp;quot;;Expression={$_.Vm.Name}} | export-csv -NoTypeInformation -Path ([Environment]::GetFolderPath(&amp;quot;Desktop&amp;quot;) + &amp;quot;\HBR-RPOEvents.csv&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Deconnexion du VIServer sans prompt&lt;br /&gt;
Disconnect-VIServer -Server $connection -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rapport violation ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=powershell&amp;gt;&lt;br /&gt;
Param (&lt;br /&gt;
    [Alias(&amp;quot;Host&amp;quot;)]&lt;br /&gt;
    [string]$VIServer = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$User = &amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$Password=&amp;quot;&amp;quot;,&lt;br /&gt;
    [string]$PathToReport,&lt;br /&gt;
    [string]$CredentialFile=&amp;quot;credential-vsphere.xml&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
    [string]$To = &amp;quot;devleeschauwer@pass.be&amp;quot;,&lt;br /&gt;
    [string]$From = &amp;quot;report-vmware@pass.be&amp;quot;,&lt;br /&gt;
    [string]$SMTPServer = &amp;quot;mail.pass.be&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
#$credential = Get-VICredentialStoreItem -File $CredentialFile&lt;br /&gt;
#Récupération du fichier avec les identifiants&lt;br /&gt;
$PathCredentialFile = Split-Path $Script:MyInvocation.MyCommand.Path -Parent&lt;br /&gt;
$PathCredentialFile += &amp;quot;\&amp;quot; + $CredentialFile&lt;br /&gt;
$PathCredentialFile &lt;br /&gt;
&lt;br /&gt;
$credential = Get-VICredentialStoreItem -File $PathCredentialFile&lt;br /&gt;
&lt;br /&gt;
#Affectation de la variable VIServer&lt;br /&gt;
$VIServer = $credential.Host&lt;br /&gt;
&lt;br /&gt;
#Connexion au vsphere&lt;br /&gt;
$connection = Connect-VIServer -Server $credential.Host -User $credential.User -Password $credential.Password -WarningAction SilentlyContinue&lt;br /&gt;
&lt;br /&gt;
Write-Host &amp;quot;[$(Get-Date)] Retrieving VMs&amp;quot;&lt;br /&gt;
$VMs = Get-VM&lt;br /&gt;
 &lt;br /&gt;
$Results = @()&lt;br /&gt;
Foreach ($VM in $VMs) {&lt;br /&gt;
   Write-Host &amp;quot;[$(Get-Date)] Retrieving events for $($VM.name)&amp;quot;&lt;br /&gt;
   $Events = Get-VIEvent -MaxSamples ([int]::MaxValue) -Entity $VM&lt;br /&gt;
   Write-Host &amp;quot;[$(Get-Date)] Filtering RPO events for $($VM.name)&amp;quot;&lt;br /&gt;
   $RPOEvents = $Events | where { $_.EventTypeID -match &amp;quot;rpo&amp;quot; } | Where { $_.Vm.Name -eq $VM.Name } | Select EventTypeId, CreatedTime, FullFormattedMessage, @{Name=&amp;quot;VMName&amp;quot;;Expression={$_.Vm.Name}} | Sort CreatedTime&lt;br /&gt;
   if ($RPOEvents) {&lt;br /&gt;
      $Count = 0&lt;br /&gt;
      Write-Host &amp;quot;[$(Get-Date)] Finding replication results for $($VM.Name)&amp;quot;&lt;br /&gt;
      do {&lt;br /&gt;
         $details = &amp;quot;&amp;quot; | Select VMName, ViolationStart, ViolationEnd, Mins&lt;br /&gt;
         if ($RPOEvents[$count].EventTypeID -match &amp;quot;Violated&amp;quot;) {&lt;br /&gt;
            If (-not $details.Start) {&lt;br /&gt;
               $Details.VMName = $RPOEvents[$Count].VMName&lt;br /&gt;
               $Details.ViolationStart = $RPOEvents[$Count].CreatedTime&lt;br /&gt;
               Do {&lt;br /&gt;
               $Count++&lt;br /&gt;
               } until (($RPOEvents[$Count].EventTypeID -match &amp;quot;Restored&amp;quot;) -or ($Count -gt $RPOEvents.Count))&lt;br /&gt;
               if ($RPOEvents[$count].EventTypeID -match &amp;quot;Restored&amp;quot;) {&lt;br /&gt;
                  $details.ViolationEnd = $RPOEvents[$Count].CreatedTime&lt;br /&gt;
                  $Time = $details.ViolationEnd - $details.ViolationStart&lt;br /&gt;
                  $details.Mins = &amp;quot;{0:N2}&amp;quot; -f $Time.TotalMinutes&lt;br /&gt;
               } Else {&lt;br /&gt;
                  $details.ViolationEnd = &amp;quot;No End Date&amp;quot;&lt;br /&gt;
                  $details.Mins = &amp;quot;N/A&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
         }&lt;br /&gt;
         $Results += $details&lt;br /&gt;
         $Count++&lt;br /&gt;
      } until ($count -gt $RPOEvents.Count)&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
$Results | export-csv -NoTypeInformation -Path ([Environment]::GetFolderPath(&amp;quot;Desktop&amp;quot;) + &amp;quot;\ViolationReport.csv&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Deconnexion du VIServer sans prompt&lt;br /&gt;
Disconnect-VIServer -Server $connection -Force -Confirm:$false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:PowerCLI]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Github&amp;diff=238</id>
		<title>Github</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Github&amp;diff=238"/>
				<updated>2016-04-14T18:59:11Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Déport distant avec port SSH différent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | 1=Un billet qui me sert d’aide mémoire sur l’utilisation « git » et de mon compte sur « GitHub ». }}&lt;br /&gt;
&lt;br /&gt;
==  Git en quelques mots ==&lt;br /&gt;
&lt;br /&gt;
Git est un logiciel de gestion de version qui permet de gérer une arborescence de fichiers tout en gardant un historique complet des différentes modifications effectuées. De ce point de vue, il offre les mêmes fonctionnalités que CVS ou Subversion.&lt;br /&gt;
&lt;br /&gt;
Git se caractérise principalement par son aspect décentralisé. En effet, git utilise à la fois un dépôt local et un dépôt distant. Pour travailler, il faut dans un premier temps « forker » un dépôt distant. Ceci permet de récupérer l’ensemble des fichiers présents sur le dépôt distant ainsi que l’historique associé.&lt;br /&gt;
&lt;br /&gt;
Une fois le dépôt distant « forker », on peut travailler en local tout comme on le ferait avec un gestionnaire de version classique. Il est ensuite possible de proposer sa contribution au dépôt distant (pull request).&lt;br /&gt;
&lt;br /&gt;
Ce mode de fonctionnement permet de profiter d’un gestionnaire de version pour effectuer son développement en local et de proposer un ensemble de modifications cohérentes et fonctionnelles sur le dépôt distant.&lt;br /&gt;
&lt;br /&gt;
== Préparer son espace de travail sous « GitHub » ==&lt;br /&gt;
&lt;br /&gt;
J’utilise « GitHub » pour héberger mes différents fichiers. La création du compte « GitHub » n’est pas détaillée dans ce billet. Cette étape ne présente aucune difficulté et n’est réalisée qu’une seule et unique fois. Seule la procédure d’échange de clefs est détaillée ici.&lt;br /&gt;
&lt;br /&gt;
=== Générer un couple de clefs privée/publique ===&lt;br /&gt;
&lt;br /&gt;
La génération des clefs privées et publiques se fait en tapant la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh-keygen -t rsa }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de la génération, il vous sera demandé une « passphrase ». Il faut bien noter cette dernière car elle sera à nouveau demandée lors de la connexion à « GitHub ».&lt;br /&gt;
&lt;br /&gt;
Si vous avez laissé les options par défaut, la clef se trouve dans le fichier « ~/.ssh/id_rsa.pub ».&lt;br /&gt;
&lt;br /&gt;
=== Exporter sa clef vers « GitHub » ===&lt;br /&gt;
&lt;br /&gt;
Suivre les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
    * se connecter sur « GitHub » avec votre compte ;&lt;br /&gt;
    * aller dans « settings » (icône en forme d’engrenage en haut à droite) ;&lt;br /&gt;
    * sélectionner dans le menu de gauche « SSH keys » ;&lt;br /&gt;
    * cliquer sur « Add SSH key » ;&lt;br /&gt;
    * donner un nom à la clef et recopier le contenu du fichier contenant la clef dans la zone de texte « Key ». Si vous avez laissé les options par défaut, la clef se trouve dans le fichier « ~/.ssh/id_rsa.pub »&lt;br /&gt;
&lt;br /&gt;
=== Tester le bon fonctionnement de la clef ===&lt;br /&gt;
&lt;br /&gt;
Dans un terminal, taper les commandes suivantes (cf. doc github) :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh -T git@github.com }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sortie doit ressembler au texte ci-dessous :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hi yopland! You've successfully authenticated, but GitHub does not provide shell access.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si le message fait référence à votre login, c’est gagné.&lt;br /&gt;
&lt;br /&gt;
=== Gestion des clefs avec « ssh-agent » ===&lt;br /&gt;
&lt;br /&gt;
L’utilisation d’un agent, évite d’avoir à retaper la « passphrase » à chaque fois que l’on sollicite l’utilisation de la clé privée. Les clefs et les « passphrases » associées sont stockées en mémoire par l’agent et restituées selon les besoins.&lt;br /&gt;
&lt;br /&gt;
Taper la commande suivante et renseigner la « passphrase » :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh-add }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tester le bon fonctionnement en essayant de se connecter sur le serveur. Il ne devrait pas être nécessaire de redonner la « passphrase ».&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh -T git@github.com }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour lister les clefs chargées par l’agent :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh-add -l }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour supprimer de l’agent la clef stockée dans « ~/.ssh/id_rsa »  :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh-add -d ~/.ssh/id_rsa }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Commandes principales ==&lt;br /&gt;
=== Dépôt local ===&lt;br /&gt;
==== Initialiser un dépôt git en local ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git init }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Lister les fichiers gérés par git ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git status }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Ajouter un ou des fichiers au dépôt local ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git add fichier&lt;br /&gt;
git add '*.txt'&lt;br /&gt;
git add .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Renseigner son identité ====&lt;br /&gt;
&lt;br /&gt;
Pour suivre les différentes modifications sur le serveur distant, il est nécessaire de renseigner son identité sur son dépôt.&lt;br /&gt;
&lt;br /&gt;
Pour effectuer cette déclaration de manière globale (valable pour tous les dépôt locaux), taper les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;you@example.com&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour effectuer cette déclaration uniquement pour le dépôt en cours, taper les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git config user.email &amp;quot;you@example.com&amp;quot;&lt;br /&gt;
git config user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Pousser les modifications effectuées vers le dépôt local (commit) ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git commit -m &amp;quot;message&amp;quot; }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Suivre les différentes actions ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git log }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Création d’un dépôt sur github ===&lt;br /&gt;
&lt;br /&gt;
Afin de recevoir les différents fichiers de ce billet, je me suis créé un dépôt « try_git ».  Cette étape se fait via l’interface d’administration de « GitHub ».&lt;br /&gt;
&lt;br /&gt;
Afin d’héberger différents projets, il est tout à fait possible de créer plusieurs dépôt sur un même compte.&lt;br /&gt;
&lt;br /&gt;
==== Déclarer un dépôt distant ====&lt;br /&gt;
&lt;br /&gt;
Afin d’éviter d’avoir à saisir l’URL complète du dépôt, il est possible de créer un alias.&lt;br /&gt;
&lt;br /&gt;
    * mon dépôt distant est hébergé sur « github » ;&lt;br /&gt;
    * pour les tests le nom de mon dépôt distant est « try_git » ;&lt;br /&gt;
    * le nom de mon compte est « DiouxX » ;&lt;br /&gt;
    * la référence « locale » au dépôt distant est « origin ».&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git remote add origin git@github.com:DiouxX/try_git.git}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Il est maintenant possible d’utiliser « origin » en lieu et place de l’URL complète.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | le nom origin est utilis&amp;amp; par convention. On peut bien évidemment le remplacer par n'importe quel nom/alias }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Dépot distant avec port SSH différent ====&lt;br /&gt;
&lt;br /&gt;
Si le dépôt distant utilise un port SSH différent de celui par défaut, il faut créer ou modifier le fichier {{ File | .ssh/config}} en y ajoutant les paramètres suivants :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hostname git.domaine.be&lt;br /&gt;
Port lePortSSH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Pousser les modifications locales vers le dépôt distant ====&lt;br /&gt;
&lt;br /&gt;
    * nom sous lequel est référencé le dépôt distant : origin&lt;br /&gt;
    * branche utilisée : master&lt;br /&gt;
    * option « -u » : permet de sauvegarder les paramètres et ainsi ne pas avoir à les saisir à nouveau lors de la prochaine commande&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git push -u origin master }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Récupérer les modifications effectuées ====&lt;br /&gt;
&lt;br /&gt;
Il est possible de récupérer les modifications effectuées sur le dépôt distant de deux manières différentes :&lt;br /&gt;
&lt;br /&gt;
    * en effectuant une fusion directement sur l’espace de travail ;&lt;br /&gt;
    * en stockant les données sur une nouvelle branche.&lt;br /&gt;
&lt;br /&gt;
Récupérer les modifications effectuées sur le dépôt distant et fusionner les modifications sur notre espace de travail&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git pull origin master }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérer les modifications effectuées sur le dépôt distant sans effectuer de fusion (les données seront stockées sous leur propre branche)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git fetch origin }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lister les dépôts distants ====&lt;br /&gt;
&lt;br /&gt;
    * l’option « -v » permet de visualiser les urls associées à chaque nom court;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git remote -v }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Autres commandes ===&lt;br /&gt;
==== Récupérer les différences entre la copie locale et le dépôt ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git diff HEAD }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Récupérer les dernières modifications que l’on vient d’effectuer ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git diff --staged }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cloner un dépot ====&lt;br /&gt;
&lt;br /&gt;
Cloner un dépôt entier :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git clone url }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cloner une branche :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git clone -b branche url }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
    * http://carnetdevol.shost.ca/wordpress/aide-memoire-git/&lt;br /&gt;
    * documentation git : http://git-scm.com/&lt;br /&gt;
    * un livre en français : http://git-scm.com/book/fr/v1&lt;br /&gt;
    * un très bon tutoriel : https://try.github.io/levels/1/challenges/1&lt;br /&gt;
    * le site de gitub : https://github.com&lt;br /&gt;
    * utilisation de ssh : http://www.linux-france.org/prj/edu/archinet/systeme/ch13s03.html&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Github&amp;diff=237</id>
		<title>Github</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Github&amp;diff=237"/>
				<updated>2016-04-14T18:58:46Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Création d’un dépôt sur github */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | 1=Un billet qui me sert d’aide mémoire sur l’utilisation « git » et de mon compte sur « GitHub ». }}&lt;br /&gt;
&lt;br /&gt;
==  Git en quelques mots ==&lt;br /&gt;
&lt;br /&gt;
Git est un logiciel de gestion de version qui permet de gérer une arborescence de fichiers tout en gardant un historique complet des différentes modifications effectuées. De ce point de vue, il offre les mêmes fonctionnalités que CVS ou Subversion.&lt;br /&gt;
&lt;br /&gt;
Git se caractérise principalement par son aspect décentralisé. En effet, git utilise à la fois un dépôt local et un dépôt distant. Pour travailler, il faut dans un premier temps « forker » un dépôt distant. Ceci permet de récupérer l’ensemble des fichiers présents sur le dépôt distant ainsi que l’historique associé.&lt;br /&gt;
&lt;br /&gt;
Une fois le dépôt distant « forker », on peut travailler en local tout comme on le ferait avec un gestionnaire de version classique. Il est ensuite possible de proposer sa contribution au dépôt distant (pull request).&lt;br /&gt;
&lt;br /&gt;
Ce mode de fonctionnement permet de profiter d’un gestionnaire de version pour effectuer son développement en local et de proposer un ensemble de modifications cohérentes et fonctionnelles sur le dépôt distant.&lt;br /&gt;
&lt;br /&gt;
== Préparer son espace de travail sous « GitHub » ==&lt;br /&gt;
&lt;br /&gt;
J’utilise « GitHub » pour héberger mes différents fichiers. La création du compte « GitHub » n’est pas détaillée dans ce billet. Cette étape ne présente aucune difficulté et n’est réalisée qu’une seule et unique fois. Seule la procédure d’échange de clefs est détaillée ici.&lt;br /&gt;
&lt;br /&gt;
=== Générer un couple de clefs privée/publique ===&lt;br /&gt;
&lt;br /&gt;
La génération des clefs privées et publiques se fait en tapant la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh-keygen -t rsa }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de la génération, il vous sera demandé une « passphrase ». Il faut bien noter cette dernière car elle sera à nouveau demandée lors de la connexion à « GitHub ».&lt;br /&gt;
&lt;br /&gt;
Si vous avez laissé les options par défaut, la clef se trouve dans le fichier « ~/.ssh/id_rsa.pub ».&lt;br /&gt;
&lt;br /&gt;
=== Exporter sa clef vers « GitHub » ===&lt;br /&gt;
&lt;br /&gt;
Suivre les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
    * se connecter sur « GitHub » avec votre compte ;&lt;br /&gt;
    * aller dans « settings » (icône en forme d’engrenage en haut à droite) ;&lt;br /&gt;
    * sélectionner dans le menu de gauche « SSH keys » ;&lt;br /&gt;
    * cliquer sur « Add SSH key » ;&lt;br /&gt;
    * donner un nom à la clef et recopier le contenu du fichier contenant la clef dans la zone de texte « Key ». Si vous avez laissé les options par défaut, la clef se trouve dans le fichier « ~/.ssh/id_rsa.pub »&lt;br /&gt;
&lt;br /&gt;
=== Tester le bon fonctionnement de la clef ===&lt;br /&gt;
&lt;br /&gt;
Dans un terminal, taper les commandes suivantes (cf. doc github) :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh -T git@github.com }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sortie doit ressembler au texte ci-dessous :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hi yopland! You've successfully authenticated, but GitHub does not provide shell access.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si le message fait référence à votre login, c’est gagné.&lt;br /&gt;
&lt;br /&gt;
=== Gestion des clefs avec « ssh-agent » ===&lt;br /&gt;
&lt;br /&gt;
L’utilisation d’un agent, évite d’avoir à retaper la « passphrase » à chaque fois que l’on sollicite l’utilisation de la clé privée. Les clefs et les « passphrases » associées sont stockées en mémoire par l’agent et restituées selon les besoins.&lt;br /&gt;
&lt;br /&gt;
Taper la commande suivante et renseigner la « passphrase » :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh-add }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Tester le bon fonctionnement en essayant de se connecter sur le serveur. Il ne devrait pas être nécessaire de redonner la « passphrase ».&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh -T git@github.com }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour lister les clefs chargées par l’agent :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh-add -l }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour supprimer de l’agent la clef stockée dans « ~/.ssh/id_rsa »  :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | ssh-add -d ~/.ssh/id_rsa }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Commandes principales ==&lt;br /&gt;
=== Dépôt local ===&lt;br /&gt;
==== Initialiser un dépôt git en local ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git init }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Lister les fichiers gérés par git ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git status }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Ajouter un ou des fichiers au dépôt local ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git add fichier&lt;br /&gt;
git add '*.txt'&lt;br /&gt;
git add .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Renseigner son identité ====&lt;br /&gt;
&lt;br /&gt;
Pour suivre les différentes modifications sur le serveur distant, il est nécessaire de renseigner son identité sur son dépôt.&lt;br /&gt;
&lt;br /&gt;
Pour effectuer cette déclaration de manière globale (valable pour tous les dépôt locaux), taper les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.email &amp;quot;you@example.com&amp;quot;&lt;br /&gt;
git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour effectuer cette déclaration uniquement pour le dépôt en cours, taper les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git config user.email &amp;quot;you@example.com&amp;quot;&lt;br /&gt;
git config user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Pousser les modifications effectuées vers le dépôt local (commit) ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git commit -m &amp;quot;message&amp;quot; }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Suivre les différentes actions ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git log }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Création d’un dépôt sur github ===&lt;br /&gt;
&lt;br /&gt;
Afin de recevoir les différents fichiers de ce billet, je me suis créé un dépôt « try_git ».  Cette étape se fait via l’interface d’administration de « GitHub ».&lt;br /&gt;
&lt;br /&gt;
Afin d’héberger différents projets, il est tout à fait possible de créer plusieurs dépôt sur un même compte.&lt;br /&gt;
&lt;br /&gt;
==== Déclarer un dépôt distant ====&lt;br /&gt;
&lt;br /&gt;
Afin d’éviter d’avoir à saisir l’URL complète du dépôt, il est possible de créer un alias.&lt;br /&gt;
&lt;br /&gt;
    * mon dépôt distant est hébergé sur « github » ;&lt;br /&gt;
    * pour les tests le nom de mon dépôt distant est « try_git » ;&lt;br /&gt;
    * le nom de mon compte est « DiouxX » ;&lt;br /&gt;
    * la référence « locale » au dépôt distant est « origin ».&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git remote add origin git@github.com:DiouxX/try_git.git}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Il est maintenant possible d’utiliser « origin » en lieu et place de l’URL complète.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | le nom origin est utilis&amp;amp; par convention. On peut bien évidemment le remplacer par n'importe quel nom/alias }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Déport distant avec port SSH différent ====&lt;br /&gt;
&lt;br /&gt;
Si le dépot distant utilise un port SSH différent de celui par défaut, il faut créer ou modifier le fichier {{ File | .ssh/config}} en y ajoutant les paramètres suivants :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hostname git.domaine.be&lt;br /&gt;
Port lePortSSH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Pousser les modifications locales vers le dépôt distant ====&lt;br /&gt;
&lt;br /&gt;
    * nom sous lequel est référencé le dépôt distant : origin&lt;br /&gt;
    * branche utilisée : master&lt;br /&gt;
    * option « -u » : permet de sauvegarder les paramètres et ainsi ne pas avoir à les saisir à nouveau lors de la prochaine commande&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git push -u origin master }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Récupérer les modifications effectuées ====&lt;br /&gt;
&lt;br /&gt;
Il est possible de récupérer les modifications effectuées sur le dépôt distant de deux manières différentes :&lt;br /&gt;
&lt;br /&gt;
    * en effectuant une fusion directement sur l’espace de travail ;&lt;br /&gt;
    * en stockant les données sur une nouvelle branche.&lt;br /&gt;
&lt;br /&gt;
Récupérer les modifications effectuées sur le dépôt distant et fusionner les modifications sur notre espace de travail&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git pull origin master }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérer les modifications effectuées sur le dépôt distant sans effectuer de fusion (les données seront stockées sous leur propre branche)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git fetch origin }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lister les dépôts distants ====&lt;br /&gt;
&lt;br /&gt;
    * l’option « -v » permet de visualiser les urls associées à chaque nom court;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git remote -v }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Autres commandes ===&lt;br /&gt;
==== Récupérer les différences entre la copie locale et le dépôt ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git diff HEAD }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Récupérer les dernières modifications que l’on vient d’effectuer ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git diff --staged }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cloner un dépot ====&lt;br /&gt;
&lt;br /&gt;
Cloner un dépôt entier :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git clone url }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cloner une branche :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | git clone -b branche url }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Références ==&lt;br /&gt;
&lt;br /&gt;
    * http://carnetdevol.shost.ca/wordpress/aide-memoire-git/&lt;br /&gt;
    * documentation git : http://git-scm.com/&lt;br /&gt;
    * un livre en français : http://git-scm.com/book/fr/v1&lt;br /&gt;
    * un très bon tutoriel : https://try.github.io/levels/1/challenges/1&lt;br /&gt;
    * le site de gitub : https://github.com&lt;br /&gt;
    * utilisation de ssh : http://www.linux-france.org/prj/edu/archinet/systeme/ch13s03.html&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Raspberry:Astuces&amp;diff=236</id>
		<title>Raspberry:Astuces</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Raspberry:Astuces&amp;diff=236"/>
				<updated>2016-03-22T15:01:33Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Exemple d'action au démarrage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Script au démarrage ==&lt;br /&gt;
&lt;br /&gt;
Pour lancer un script au démarrage du Raspberry, il faut l'ajouter au fichier {{ File | 1=.config/lxsession/LXDE-pi/autostart }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@lxpanel --profile LXDE-pi&lt;br /&gt;
@pcmanfm --desktop --profile LXDE-pi&lt;br /&gt;
@xscreensaver -no-splash&lt;br /&gt;
@sh ${HOME}/.config/lxsession/LXDE-pi/autokey.sh&lt;br /&gt;
@xset s noblank&lt;br /&gt;
@xset s off&lt;br /&gt;
@xset -dpms&lt;br /&gt;
@/home/pi/script-at-boot.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script python au démarrage ==&lt;br /&gt;
&lt;br /&gt;
Pour lancer un script python au démarrage, j'ai trouvé l'astuce suivante :&lt;br /&gt;
&lt;br /&gt;
On crée un fichier ''.desktop'' dans le dossier {{ File | /home/pi/.config/autostart/ }} qui portera le nom de l'application.&lt;br /&gt;
Dans mon cas, ca sera {{ File | button-refresh.py }}. Voici le contenu :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Type=Application&lt;br /&gt;
Name=button-refresh&lt;br /&gt;
Comment=&lt;br /&gt;
Exec= sudo python /home/pi/button-refresh.py&lt;br /&gt;
StartupNotify=false&lt;br /&gt;
Terminal=true&lt;br /&gt;
Hidden=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''&lt;br /&gt;
Sources''&lt;br /&gt;
* http://raspberrypi.stackexchange.com/questions/4123/running-a-python-script-at-startup&lt;br /&gt;
&lt;br /&gt;
== Exemple d'action au démarrage ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#VNC&lt;br /&gt;
x11vnc -forever -display :0 &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
#Lecture video&lt;br /&gt;
#omxplayer --loop Tomorrowland_2012_official_aftermovie.mp4&lt;br /&gt;
&lt;br /&gt;
#Lecture video sur ecran raspberry 7&lt;br /&gt;
#omxplayer --win &amp;quot;0 0 840 480 &amp;quot; --loop Tomorrowland_2012_official_aftermovie.mp4&lt;br /&gt;
&lt;br /&gt;
#Script refresh&lt;br /&gt;
#sudo python /home/pi/button-refresh.py &amp;amp;&lt;br /&gt;
&lt;br /&gt;
#Navigateur Web&lt;br /&gt;
#iceweasel http://192.168.1.1/Piano/piano/index.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Désactiver la mise en veille de l'écran ==&lt;br /&gt;
&lt;br /&gt;
Pour désactiver la mise en veille de l'écran, il faut éditer le fichier {{ File | /etc/lightdm/lightdm.conf}} et ajouter ou modifier la ligne suivante&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xserver-command=X -s 0 dpms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Sources''&lt;br /&gt;
* http://www.raspberry-projects.com/pi/pi-operating-systems/raspbian/gui/disable-screen-sleep&lt;br /&gt;
&lt;br /&gt;
== Rotation de l'écran ==&lt;br /&gt;
&lt;br /&gt;
Pour changer l'orientation de l'affichage, il faut ajouter au fichier {{ File | /boot/config.txt}} la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
display_rotate=x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Où x peut prendre les valeurs suivantes :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Valeur !! Orientation&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Normal&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 90°&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 180°&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 270°&lt;br /&gt;
|-&lt;br /&gt;
| 0x10000 || Horizontal Flip&lt;br /&gt;
|-&lt;br /&gt;
| 0x20000 || Vertical Flip&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Sources''&lt;br /&gt;
* http://elinux.org/RPiconfig&lt;br /&gt;
&lt;br /&gt;
== Connaitre température ==&lt;br /&gt;
&lt;br /&gt;
Il est possible de connaitre la température de son Raspberry via la ligne de commande :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/opt/vc/bin/vcgencmd measure_temp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ /opt/vc/bin/vcgencmd measure_temp&lt;br /&gt;
temp=58.4'C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il est possible de réaliser un alias dans le fichier {{ File | .bashrc }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
alias temp='/opt/vc/bin/vcgencmd measure_temp'&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | source .bashrc }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Maintenant on peut utiliser la commande ''temp'' pour afficher la température&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ temp&lt;br /&gt;
temp=58.4'C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Catégorie:Raspberry]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Raspberry:Astuces&amp;diff=235</id>
		<title>Raspberry:Astuces</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Raspberry:Astuces&amp;diff=235"/>
				<updated>2016-03-22T15:00:45Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Script au démarrage ==&lt;br /&gt;
&lt;br /&gt;
Pour lancer un script au démarrage du Raspberry, il faut l'ajouter au fichier {{ File | 1=.config/lxsession/LXDE-pi/autostart }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@lxpanel --profile LXDE-pi&lt;br /&gt;
@pcmanfm --desktop --profile LXDE-pi&lt;br /&gt;
@xscreensaver -no-splash&lt;br /&gt;
@sh ${HOME}/.config/lxsession/LXDE-pi/autokey.sh&lt;br /&gt;
@xset s noblank&lt;br /&gt;
@xset s off&lt;br /&gt;
@xset -dpms&lt;br /&gt;
@/home/pi/script-at-boot.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script python au démarrage ==&lt;br /&gt;
&lt;br /&gt;
Pour lancer un script python au démarrage, j'ai trouvé l'astuce suivante :&lt;br /&gt;
&lt;br /&gt;
On crée un fichier ''.desktop'' dans le dossier {{ File | /home/pi/.config/autostart/ }} qui portera le nom de l'application.&lt;br /&gt;
Dans mon cas, ca sera {{ File | button-refresh.py }}. Voici le contenu :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Type=Application&lt;br /&gt;
Name=button-refresh&lt;br /&gt;
Comment=&lt;br /&gt;
Exec= sudo python /home/pi/button-refresh.py&lt;br /&gt;
StartupNotify=false&lt;br /&gt;
Terminal=true&lt;br /&gt;
Hidden=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''&lt;br /&gt;
Sources''&lt;br /&gt;
* http://raspberrypi.stackexchange.com/questions/4123/running-a-python-script-at-startup&lt;br /&gt;
&lt;br /&gt;
== Exemple d'action au démarrage ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#VNC&lt;br /&gt;
x11vnc -forever -display :0 &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
#Lecture video&lt;br /&gt;
#omxplayer --loop Tomorrowland_2012_official_aftermovie.mp4&lt;br /&gt;
&lt;br /&gt;
#Lecture video sur ecran raspberry 7&lt;br /&gt;
#omxplayer --win &amp;quot;0 0 840 480 &amp;quot; --loop Tomorrowland_2012_official_aftermovie.mp4&lt;br /&gt;
&lt;br /&gt;
#Script refresh&lt;br /&gt;
#sudo python /home/pi/button-refresh.py &amp;amp;&lt;br /&gt;
&lt;br /&gt;
#Navigateur Web&lt;br /&gt;
#iceweasel http://192.168.100.7/Piano/piano/index.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Désactiver la mise en veille de l'écran ==&lt;br /&gt;
&lt;br /&gt;
Pour désactiver la mise en veille de l'écran, il faut éditer le fichier {{ File | /etc/lightdm/lightdm.conf}} et ajouter ou modifier la ligne suivante&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xserver-command=X -s 0 dpms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Sources''&lt;br /&gt;
* http://www.raspberry-projects.com/pi/pi-operating-systems/raspbian/gui/disable-screen-sleep&lt;br /&gt;
&lt;br /&gt;
== Rotation de l'écran ==&lt;br /&gt;
&lt;br /&gt;
Pour changer l'orientation de l'affichage, il faut ajouter au fichier {{ File | /boot/config.txt}} la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
display_rotate=x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Où x peut prendre les valeurs suivantes :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Valeur !! Orientation&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Normal&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 90°&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 180°&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 270°&lt;br /&gt;
|-&lt;br /&gt;
| 0x10000 || Horizontal Flip&lt;br /&gt;
|-&lt;br /&gt;
| 0x20000 || Vertical Flip&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Sources''&lt;br /&gt;
* http://elinux.org/RPiconfig&lt;br /&gt;
&lt;br /&gt;
== Connaitre température ==&lt;br /&gt;
&lt;br /&gt;
Il est possible de connaitre la température de son Raspberry via la ligne de commande :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/opt/vc/bin/vcgencmd measure_temp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ /opt/vc/bin/vcgencmd measure_temp&lt;br /&gt;
temp=58.4'C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il est possible de réaliser un alias dans le fichier {{ File | .bashrc }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
alias temp='/opt/vc/bin/vcgencmd measure_temp'&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | source .bashrc }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Maintenant on peut utiliser la commande ''temp'' pour afficher la température&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ temp&lt;br /&gt;
temp=58.4'C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Catégorie:Raspberry]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Raspberry:Astuces&amp;diff=234</id>
		<title>Raspberry:Astuces</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Raspberry:Astuces&amp;diff=234"/>
				<updated>2016-03-22T14:59:48Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Rotation de l'écran */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Script au démarrage ==&lt;br /&gt;
&lt;br /&gt;
Pour lancer un script au démarrage du Raspberry, il faut l'ajouter au fichier {{ File | 1=.config/lxsession/LXDE-pi/autostart }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@lxpanel --profile LXDE-pi&lt;br /&gt;
@pcmanfm --desktop --profile LXDE-pi&lt;br /&gt;
@xscreensaver -no-splash&lt;br /&gt;
@sh ${HOME}/.config/lxsession/LXDE-pi/autokey.sh&lt;br /&gt;
@xset s noblank&lt;br /&gt;
@xset s off&lt;br /&gt;
@xset -dpms&lt;br /&gt;
@/home/pi/script-at-boot.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script python au démarrage ==&lt;br /&gt;
&lt;br /&gt;
Pour lancer un script python au démarrage, j'ai trouvé l'astuce suivante :&lt;br /&gt;
&lt;br /&gt;
On crée un fichier ''.desktop'' dans le dossier {{ File | /home/pi/.config/autostart/ }} qui portera le nom de l'application.&lt;br /&gt;
Dans mon cas, ca sera {{ File | button-refresh.py }}. Voici le contenu :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Type=Application&lt;br /&gt;
Name=button-refresh&lt;br /&gt;
Comment=&lt;br /&gt;
Exec= sudo python /home/pi/button-refresh.py&lt;br /&gt;
StartupNotify=false&lt;br /&gt;
Terminal=true&lt;br /&gt;
Hidden=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''&lt;br /&gt;
Sources''&lt;br /&gt;
* http://raspberrypi.stackexchange.com/questions/4123/running-a-python-script-at-startup&lt;br /&gt;
&lt;br /&gt;
== Exemple d'action au démarrage ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#VNC&lt;br /&gt;
x11vnc -forever -display :0 &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
#Lecture video&lt;br /&gt;
#omxplayer --loop Tomorrowland_2012_official_aftermovie.mp4&lt;br /&gt;
&lt;br /&gt;
#Lecture video sur ecran raspberry 7&lt;br /&gt;
#omxplayer --win &amp;quot;0 0 840 480 &amp;quot; --loop Tomorrowland_2012_official_aftermovie.mp4&lt;br /&gt;
&lt;br /&gt;
#Script refresh&lt;br /&gt;
#sudo python /home/pi/button-refresh.py &amp;amp;&lt;br /&gt;
&lt;br /&gt;
#Navigateur Web&lt;br /&gt;
#iceweasel http://192.168.100.7/Piano/piano/index.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Désactiver la mise en veille de l'écran ==&lt;br /&gt;
&lt;br /&gt;
Pour désactiver la mise en veille de l'écran, il faut éditer le fichier {{ File | /etc/lightdm/lightdm.conf}} et ajouter ou modifier la ligne suivante&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xserver-command=X -s 0 dpms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rotation de l'écran ==&lt;br /&gt;
&lt;br /&gt;
Pour changer l'orientation de l'affichage, il faut ajouter au fichier {{ File | /boot/config.txt}} la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
display_rotate=x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Où x peut prendre les valeurs suivantes :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Valeur !! Orientation&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Normal&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 90°&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 180°&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 270°&lt;br /&gt;
|-&lt;br /&gt;
| 0x10000 || Horizontal Flip&lt;br /&gt;
|-&lt;br /&gt;
| 0x20000 || Vertical Flip&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Sources''&lt;br /&gt;
* http://elinux.org/RPiconfig&lt;br /&gt;
&lt;br /&gt;
== Connaitre température ==&lt;br /&gt;
&lt;br /&gt;
Il est possible de connaitre la température de son Raspberry via la ligne de commande :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/opt/vc/bin/vcgencmd measure_temp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ /opt/vc/bin/vcgencmd measure_temp&lt;br /&gt;
temp=58.4'C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il est possible de réaliser un alias dans le fichier {{ File | .bashrc }}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
alias temp='/opt/vc/bin/vcgencmd measure_temp'&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console | source .bashrc }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Maintenant on peut utiliser la commande ''temp'' pour afficher la température&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ temp&lt;br /&gt;
temp=58.4'C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Catégorie:Raspberry]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=233</id>
		<title>Gitlab</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=233"/>
				<updated>2016-03-10T13:21:36Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page reprend l'installation et la configuration de GitLab}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
== Configuration ==&lt;br /&gt;
== Mise à jour ==&lt;br /&gt;
&lt;br /&gt;
=== Backup ===&lt;br /&gt;
&lt;br /&gt;
Avant de réaliser la mise à jour, on va réaliser une sauvegarde de Gitlab.&lt;br /&gt;
&lt;br /&gt;
On peut soit utilisé l'outil fournit avec &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas, on peut le réaliser de manière manuel.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Je vais utiliser 2 scripts que j'ai réalisé pour sauvegarder [https://github.com/DiouxX/script_backup_applicatif l'applicatif] et [https://github.com/DiouxX/script_backup_postgresql la base de donnée] }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Gitlab&lt;br /&gt;
script_backup_applicatif -s /srv/git -f /opt/backup/Gitlab -v&lt;br /&gt;
&lt;br /&gt;
#Postgresql&lt;br /&gt;
script_backup_postgresql -u git -h localhost -p 5434 -d gitlabhq_production -f /opt/backup/Gitlab/ -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Stop serveur ===&lt;br /&gt;
{{Console root | sudo service gitlab stop }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Récupération des sources ===&lt;br /&gt;
&lt;br /&gt;
*On récupère le code de la dernière branche stable de Gitlab&lt;br /&gt;
&lt;br /&gt;
Dans la commande suivante, on remplace LATEST_TAG avec la dernière version de Gitlab. Pour exemple, v8.5.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H git fetch --all&lt;br /&gt;
sudo -u git -H git checkout -- Gemfile.lock db/schema.rb&lt;br /&gt;
sudo -u git -H git checkout LATEST_TAG -b LATEST_TAG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version de gitlab-shell correspondante&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-shell&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout v`cat /home/git/gitlab/GITLAB_SHELL_VERSION` -b v`cat /home/git/gitlab/GITLAB_SHELL_VERSION`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version gitlab-workhorse correspondante&lt;br /&gt;
{{ Note | Personnellement, je n'ai pas gitlab-worhorse d'installé }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-workhorse&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION` -b `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION`&lt;br /&gt;
sudo -u git -H make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation des librairies, dependances, migraton ect ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
&lt;br /&gt;
# PostgreSQL&lt;br /&gt;
sudo -u git -H bundle install --without development test mysql --deployment&lt;br /&gt;
&lt;br /&gt;
# MySQL&lt;br /&gt;
sudo -u git -H bundle install --without development test postgres --deployment&lt;br /&gt;
&lt;br /&gt;
# Optional: clean up old gems&lt;br /&gt;
sudo -u git -H bundle clean&lt;br /&gt;
&lt;br /&gt;
# Run database migrations&lt;br /&gt;
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
# Clean up assets and cache&lt;br /&gt;
sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Démarrage de l'application ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo service gitlab start&lt;br /&gt;
sudo service apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vérification ===&lt;br /&gt;
&lt;br /&gt;
On vérifie si GitLab et son environnement sont configuré correctement :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour être sur qu'il ne manque rien, on lance la vérification suivante :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si tout est vert, alors la mise à jour s'est correctement déroulée.&lt;br /&gt;
&lt;br /&gt;
=== Sources ===&lt;br /&gt;
* https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/patch_versions.md&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Applicatifs]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=232</id>
		<title>Gitlab</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=232"/>
				<updated>2016-03-10T13:20:51Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Démarrage de l'application */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page reprend l'installation et la configuration de GitLab}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
== Configuration ==&lt;br /&gt;
== Mise à jour ==&lt;br /&gt;
&lt;br /&gt;
=== Backup ===&lt;br /&gt;
&lt;br /&gt;
Avant de réaliser la mise à jour, on va réaliser une sauvegarde de Gitlab.&lt;br /&gt;
&lt;br /&gt;
On peut soit utilisé l'outil fournit avec &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas, on peut le réaliser de manière manuel.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Je vais utiliser 2 scripts que j'ai réalisé pour sauvegarder [https://github.com/DiouxX/script_backup_applicatif l'applicatif] et [https://github.com/DiouxX/script_backup_postgresql la base de donnée] }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Gitlab&lt;br /&gt;
script_backup_applicatif -s /srv/git -f /opt/backup/Gitlab -v&lt;br /&gt;
&lt;br /&gt;
#Postgresql&lt;br /&gt;
script_backup_postgresql -u git -h localhost -p 5434 -d gitlabhq_production -f /opt/backup/Gitlab/ -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Stop serveur ===&lt;br /&gt;
{{Console root | sudo service gitlab stop }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Récupération des sources ===&lt;br /&gt;
&lt;br /&gt;
*On récupère le code de la dernière branche stable de Gitlab&lt;br /&gt;
&lt;br /&gt;
Dans la commande suivante, on remplace LATEST_TAG avec la dernière version de Gitlab. Pour exemple, v8.5.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H git fetch --all&lt;br /&gt;
sudo -u git -H git checkout -- Gemfile.lock db/schema.rb&lt;br /&gt;
sudo -u git -H git checkout LATEST_TAG -b LATEST_TAG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version de gitlab-shell correspondante&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-shell&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout v`cat /home/git/gitlab/GITLAB_SHELL_VERSION` -b v`cat /home/git/gitlab/GITLAB_SHELL_VERSION`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version gitlab-workhorse correspondante&lt;br /&gt;
{{ Note | Personnellement, je n'ai pas gitlab-worhorse d'installé }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-workhorse&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION` -b `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION`&lt;br /&gt;
sudo -u git -H make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation des librairies, dependances, migraton ect ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
&lt;br /&gt;
# PostgreSQL&lt;br /&gt;
sudo -u git -H bundle install --without development test mysql --deployment&lt;br /&gt;
&lt;br /&gt;
# MySQL&lt;br /&gt;
sudo -u git -H bundle install --without development test postgres --deployment&lt;br /&gt;
&lt;br /&gt;
# Optional: clean up old gems&lt;br /&gt;
sudo -u git -H bundle clean&lt;br /&gt;
&lt;br /&gt;
# Run database migrations&lt;br /&gt;
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
# Clean up assets and cache&lt;br /&gt;
sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Démarrage de l'application ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo service gitlab start&lt;br /&gt;
sudo service apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vérification ===&lt;br /&gt;
&lt;br /&gt;
On vérifie si GitLab et son environnement sont configuré correctement :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour être sur qu'il ne manque rien, on lance la vérification suivante :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si tout est vert, alors la mise à jour s'est correctement déroulée.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Applicatifs]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=231</id>
		<title>Gitlab</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=231"/>
				<updated>2016-03-10T13:19:59Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Mise à jour */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page reprend l'installation et la configuration de GitLab}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
== Configuration ==&lt;br /&gt;
== Mise à jour ==&lt;br /&gt;
&lt;br /&gt;
=== Backup ===&lt;br /&gt;
&lt;br /&gt;
Avant de réaliser la mise à jour, on va réaliser une sauvegarde de Gitlab.&lt;br /&gt;
&lt;br /&gt;
On peut soit utilisé l'outil fournit avec &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas, on peut le réaliser de manière manuel.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Je vais utiliser 2 scripts que j'ai réalisé pour sauvegarder [https://github.com/DiouxX/script_backup_applicatif l'applicatif] et [https://github.com/DiouxX/script_backup_postgresql la base de donnée] }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Gitlab&lt;br /&gt;
script_backup_applicatif -s /srv/git -f /opt/backup/Gitlab -v&lt;br /&gt;
&lt;br /&gt;
#Postgresql&lt;br /&gt;
script_backup_postgresql -u git -h localhost -p 5434 -d gitlabhq_production -f /opt/backup/Gitlab/ -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Stop serveur ===&lt;br /&gt;
{{Console root | sudo service gitlab stop }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Récupération des sources ===&lt;br /&gt;
&lt;br /&gt;
*On récupère le code de la dernière branche stable de Gitlab&lt;br /&gt;
&lt;br /&gt;
Dans la commande suivante, on remplace LATEST_TAG avec la dernière version de Gitlab. Pour exemple, v8.5.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H git fetch --all&lt;br /&gt;
sudo -u git -H git checkout -- Gemfile.lock db/schema.rb&lt;br /&gt;
sudo -u git -H git checkout LATEST_TAG -b LATEST_TAG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version de gitlab-shell correspondante&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-shell&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout v`cat /home/git/gitlab/GITLAB_SHELL_VERSION` -b v`cat /home/git/gitlab/GITLAB_SHELL_VERSION`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version gitlab-workhorse correspondante&lt;br /&gt;
{{ Note | Personnellement, je n'ai pas gitlab-worhorse d'installé }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-workhorse&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION` -b `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION`&lt;br /&gt;
sudo -u git -H make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation des librairies, dependances, migraton ect ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
&lt;br /&gt;
# PostgreSQL&lt;br /&gt;
sudo -u git -H bundle install --without development test mysql --deployment&lt;br /&gt;
&lt;br /&gt;
# MySQL&lt;br /&gt;
sudo -u git -H bundle install --without development test postgres --deployment&lt;br /&gt;
&lt;br /&gt;
# Optional: clean up old gems&lt;br /&gt;
sudo -u git -H bundle clean&lt;br /&gt;
&lt;br /&gt;
# Run database migrations&lt;br /&gt;
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
# Clean up assets and cache&lt;br /&gt;
sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Démarrage de l'application ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo service gitlab start&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vérification ===&lt;br /&gt;
&lt;br /&gt;
On vérifie si GitLab et son environnement sont configuré correctement :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour être sur qu'il ne manque rien, on lance la vérification suivante :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si tout est vert, alors la mise à jour s'est correctement déroulée.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Applicatifs]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=230</id>
		<title>Gitlab</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=230"/>
				<updated>2016-03-10T13:18:18Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Mise à jour */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page reprend l'installation et la configuration de GitLab}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
== Configuration ==&lt;br /&gt;
== Mise à jour ==&lt;br /&gt;
&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
Avant de réaliser la mise à jour, on va réaliser une sauvegarde de Gitlab.&lt;br /&gt;
&lt;br /&gt;
On peut soit utilisé l'outil fournit avec &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas, on peut le réaliser de manière manuel.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Je vais utiliser 2 scripts que j'ai réalisé pour sauvegarder [https://github.com/DiouxX/script_backup_applicatif l'applicatif] et [https://github.com/DiouxX/script_backup_postgresql la base de donnée] }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Gitlab&lt;br /&gt;
script_backup_applicatif -s /srv/git -f /opt/backup/Gitlab -v&lt;br /&gt;
&lt;br /&gt;
#Postgresql&lt;br /&gt;
script_backup_postgresql -u git -h localhost -p 5434 -d gitlabhq_production -f /opt/backup/Gitlab/ -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Stop server&lt;br /&gt;
{{Console root | sudo service gitlab stop }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On récupère le code de la dernière branche stable de Gitlab&lt;br /&gt;
&lt;br /&gt;
Dans la commande suivante, on remplace LATEST_TAG avec la dernière version de Gitlab. Pour exemple, v8.5.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H git fetch --all&lt;br /&gt;
sudo -u git -H git checkout -- Gemfile.lock db/schema.rb&lt;br /&gt;
sudo -u git -H git checkout LATEST_TAG -b LATEST_TAG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version de gitlab-shell correspondante&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-shell&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout v`cat /home/git/gitlab/GITLAB_SHELL_VERSION` -b v`cat /home/git/gitlab/GITLAB_SHELL_VERSION`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version gitlab-workhorse correspondante&lt;br /&gt;
{{ Note | Personnellement, je n'ai pas gitlab-worhorse d'installé }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-workhorse&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION` -b `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION`&lt;br /&gt;
sudo -u git -H make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Installation des librairies, dependances, migraton ect&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
&lt;br /&gt;
# PostgreSQL&lt;br /&gt;
sudo -u git -H bundle install --without development test mysql --deployment&lt;br /&gt;
&lt;br /&gt;
# MySQL&lt;br /&gt;
sudo -u git -H bundle install --without development test postgres --deployment&lt;br /&gt;
&lt;br /&gt;
# Optional: clean up old gems&lt;br /&gt;
sudo -u git -H bundle clean&lt;br /&gt;
&lt;br /&gt;
# Run database migrations&lt;br /&gt;
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
# Clean up assets and cache&lt;br /&gt;
sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Démarrage de l'application&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo service gitlab start&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On vérifie le statut de l'application&lt;br /&gt;
&lt;br /&gt;
On vérifie si GitLab et son environnement sont configuré correctement :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour être sur qu'il ne manque rien, on lance la vérification suivante :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si tout est vert, alors la mise à jour s'est correctement déroulée.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Applicatifs]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=229</id>
		<title>Gitlab</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=229"/>
				<updated>2016-03-10T13:17:18Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Mise à jour */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page reprend l'installation et la configuration de GitLab}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
== Configuration ==&lt;br /&gt;
== Mise à jour ==&lt;br /&gt;
&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
Avant de réaliser la mise à jour, on va réaliser une sauvegarde de Gitlab.&lt;br /&gt;
&lt;br /&gt;
On peut soit utilisé l'outil fournit avec &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas, on peut le réaliser de manière manuel.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Je vais utiliser 2 scripts que j'ai réalisé pour sauvegarder [https://github.com/DiouxX/script_backup_applicatif l'applicatif] et [https://github.com/DiouxX/script_backup_postgresql la base de donnée] }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Gitlab&lt;br /&gt;
script_backup_applicatif -s /srv/git -f /opt/backup/Gitlab -v&lt;br /&gt;
&lt;br /&gt;
#Postgresql&lt;br /&gt;
script_backup_postgresql -u git -h localhost -p 5434 -d gitlabhq_production -f /opt/backup/Gitlab/ -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Stop server&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Console root | sudo service gitlab stop }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On récupère le code de la dernière branche stable de Gitlab&lt;br /&gt;
&lt;br /&gt;
Dans la commande suivante, on remplace LATEST_TAG avec la dernière version de Gitlab. Pour exemple, v8.5.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H git fetch --all&lt;br /&gt;
sudo -u git -H git checkout -- Gemfile.lock db/schema.rb&lt;br /&gt;
sudo -u git -H git checkout LATEST_TAG -b LATEST_TAG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version de gitlab-shell correspondante&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-shell&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout v`cat /home/git/gitlab/GITLAB_SHELL_VERSION` -b v`cat /home/git/gitlab/GITLAB_SHELL_VERSION`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version gitlab-workhorse correspondante&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Personnellement, je n'ai pas gitlab-worhorse d'installé }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-workhorse&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION` -b `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION`&lt;br /&gt;
sudo -u git -H make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Installation des librairies, dependances, migraton ect&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
&lt;br /&gt;
# PostgreSQL&lt;br /&gt;
sudo -u git -H bundle install --without development test mysql --deployment&lt;br /&gt;
&lt;br /&gt;
# MySQL&lt;br /&gt;
sudo -u git -H bundle install --without development test postgres --deployment&lt;br /&gt;
&lt;br /&gt;
# Optional: clean up old gems&lt;br /&gt;
sudo -u git -H bundle clean&lt;br /&gt;
&lt;br /&gt;
# Run database migrations&lt;br /&gt;
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
# Clean up assets and cache&lt;br /&gt;
sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Démarrage de l'application&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo service gitlab start&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On vérifie le statut de l'application&lt;br /&gt;
&lt;br /&gt;
On vérifie si GitLab et son environnement sont configuré correctement :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour être sur qu'il ne manque rien, on lance la vérification suivante :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si tout est vert, alors la mise à jour s'est correctement déroulée.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Applicatifs]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=228</id>
		<title>Gitlab</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=228"/>
				<updated>2016-03-10T13:17:04Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Mise à jour */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page reprend l'installation et la configuration de GitLab}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
== Configuration ==&lt;br /&gt;
== Mise à jour ==&lt;br /&gt;
&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
Avant de réaliser la mise à jour, on va réaliser une sauvegarde de Gitlab.&lt;br /&gt;
&lt;br /&gt;
On peut soit utilisé l'outil fournit avec &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas, on peut le réaliser de manière manuel.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Je vais utiliser 2 scripts que j'ai réalisé pour sauvegarder [https://github.com/DiouxX/script_backup_applicatif l'applicatif] et [https://github.com/DiouxX/script_backup_postgresql la base de donnée] }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Gitlab&lt;br /&gt;
script_backup_applicatif -s /srv/git -f /opt/backup/Gitlab -v&lt;br /&gt;
&lt;br /&gt;
#Postgresql&lt;br /&gt;
script_backup_postgresql -u git -h localhost -p 5434 -d gitlabhq_production -f /opt/backup/Gitlab/ -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Stop server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Console root | sudo service gitlab stop }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On récupère le code de la dernière branche stable de Gitlab&lt;br /&gt;
&lt;br /&gt;
Dans la commande suivante, on remplace LATEST_TAG avec la dernière version de Gitlab. Pour exemple, v8.5.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H git fetch --all&lt;br /&gt;
sudo -u git -H git checkout -- Gemfile.lock db/schema.rb&lt;br /&gt;
sudo -u git -H git checkout LATEST_TAG -b LATEST_TAG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version de gitlab-shell correspondante&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-shell&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout v`cat /home/git/gitlab/GITLAB_SHELL_VERSION` -b v`cat /home/git/gitlab/GITLAB_SHELL_VERSION`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version gitlab-workhorse correspondante&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Personnellement, je n'ai pas gitlab-worhorse d'installé }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-workhorse&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION` -b `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION`&lt;br /&gt;
sudo -u git -H make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Installation des librairies, dependances, migraton ect&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
&lt;br /&gt;
# PostgreSQL&lt;br /&gt;
sudo -u git -H bundle install --without development test mysql --deployment&lt;br /&gt;
&lt;br /&gt;
# MySQL&lt;br /&gt;
sudo -u git -H bundle install --without development test postgres --deployment&lt;br /&gt;
&lt;br /&gt;
# Optional: clean up old gems&lt;br /&gt;
sudo -u git -H bundle clean&lt;br /&gt;
&lt;br /&gt;
# Run database migrations&lt;br /&gt;
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
# Clean up assets and cache&lt;br /&gt;
sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Démarrage de l'application&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo service gitlab start&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On vérifie le statut de l'application&lt;br /&gt;
&lt;br /&gt;
On vérifie si GitLab et son environnement sont configuré correctement :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour être sur qu'il ne manque rien, on lance la vérification suivante :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | 1=sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si tout est vert, alors la mise à jour s'est correctement déroulée.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Applicatifs]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=227</id>
		<title>Gitlab</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=227"/>
				<updated>2016-03-10T13:15:26Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : /* Mise à jour */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page reprend l'installation et la configuration de GitLab}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
== Configuration ==&lt;br /&gt;
== Mise à jour ==&lt;br /&gt;
&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
Avant de réaliser la mise à jour, on va réaliser une sauvegarde de Gitlab.&lt;br /&gt;
&lt;br /&gt;
On peut soit utilisé l'outil fournit avec &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas, on peut le réaliser de manière manuel.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Je vais utiliser 2 scripts que j'ai réalisé pour sauvegarder [https://github.com/DiouxX/script_backup_applicatif l'applicatif] et [https://github.com/DiouxX/script_backup_postgresql la base de donnée] }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Gitlab&lt;br /&gt;
script_backup_applicatif -s /srv/git -f /opt/backup/Gitlab -v&lt;br /&gt;
&lt;br /&gt;
#Postgresql&lt;br /&gt;
script_backup_postgresql -u git -h localhost -p 5434 -d gitlabhq_production -f /opt/backup/Gitlab/ -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Stop server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Console root | sudo service gitlab stop }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On récupère le code de la dernière branche stable de Gitlab&lt;br /&gt;
&lt;br /&gt;
Dans la commande suivante, on remplace LATEST_TAG avec la dernière version de Gitlab. Pour exemple, v8.5.4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H git fetch --all&lt;br /&gt;
sudo -u git -H git checkout -- Gemfile.lock db/schema.rb&lt;br /&gt;
sudo -u git -H git checkout LATEST_TAG -b LATEST_TAG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version de gitlab-shell correspondante&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-shell&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout v`cat /home/git/gitlab/GITLAB_SHELL_VERSION` -b v`cat /home/git/gitlab/GITLAB_SHELL_VERSION`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* On met à jour la version gitlab-workhorse correspondante&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Personnellement, je n'ai pas gitlab-worhorse d'installé }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab-workhorse&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION` -b `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION`&lt;br /&gt;
sudo -u git -H make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Installation des librairies, dependances, migraton ect&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
&lt;br /&gt;
# PostgreSQL&lt;br /&gt;
sudo -u git -H bundle install --without development test mysql --deployment&lt;br /&gt;
&lt;br /&gt;
# MySQL&lt;br /&gt;
sudo -u git -H bundle install --without development test postgres --deployment&lt;br /&gt;
&lt;br /&gt;
# Optional: clean up old gems&lt;br /&gt;
sudo -u git -H bundle clean&lt;br /&gt;
&lt;br /&gt;
# Run database migrations&lt;br /&gt;
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
# Clean up assets and cache&lt;br /&gt;
sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Démarrage de l'application&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo service gitlab start&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* On vérifie le statut de l'application&lt;br /&gt;
&lt;br /&gt;
On vérifie si GitLab et son environnement sont configuré correctement :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour être sur qu'il ne manque rien, on lance la vérification suivante :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Console root | sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si tout est vert, alors la mise à jour s'est correctement déroulée.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Applicatifs]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	<entry>
		<id>http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=226</id>
		<title>Gitlab</title>
		<link rel="alternate" type="text/html" href="http://wiki.diouxx.be/index.php?title=Gitlab&amp;diff=226"/>
				<updated>2016-03-10T13:01:11Z</updated>
		
		<summary type="html">&lt;p&gt;Ddevleeschauwer : Page créée avec « {{ Introduction | Cette page reprend l'installation et la configuration de GitLab}}  == Installation == == Configuration == == Mise à jour ==  * Backup  Avant de réalise... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Introduction | Cette page reprend l'installation et la configuration de GitLab}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
== Configuration ==&lt;br /&gt;
== Mise à jour ==&lt;br /&gt;
&lt;br /&gt;
* Backup&lt;br /&gt;
&lt;br /&gt;
Avant de réaliser la mise à jour, on va réaliser une sauvegarde de Gitlab.&lt;br /&gt;
&lt;br /&gt;
On peut soit utilisé l'outil fournit avec &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas, on peut le réaliser de manière manuel.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ Note | Je vais utiliser 2 scripts que j'ai réalisé pour sauvegarder [https://github.com/DiouxX/script_backup_applicatif l'applicatif] et [https://github.com/DiouxX/script_backup_postgresql la base de donnée] }}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Gitlab&lt;br /&gt;
script_backup_applicatif -s /srv/git -f /opt/backup/Gitlab -v&lt;br /&gt;
&lt;br /&gt;
#Postgresql&lt;br /&gt;
script_backup_postgresql -u git -h localhost -p 5434 -d gitlabhq_production -f /opt/backup/Gitlab/ -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. Stop server&lt;br /&gt;
&lt;br /&gt;
sudo service gitlab stop&lt;br /&gt;
&lt;br /&gt;
2. Get latest code for the stable branch&lt;br /&gt;
&lt;br /&gt;
In the commands below, replace LATEST_TAG with the latest GitLab tag you want to update to, for example v8.0.3. Use git tag -l 'v*.[0-9]' --sort='v:refname' to see a list of all tags. Make sure to update patch versions only (check your current version with cat VERSION).&lt;br /&gt;
&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
sudo -u git -H git fetch --all&lt;br /&gt;
sudo -u git -H git checkout -- Gemfile.lock db/schema.rb&lt;br /&gt;
sudo -u git -H git checkout LATEST_TAG -b LATEST_TAG&lt;br /&gt;
&lt;br /&gt;
3. Update gitlab-shell to the corresponding version&lt;br /&gt;
&lt;br /&gt;
cd /home/git/gitlab-shell&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout v`cat /home/git/gitlab/GITLAB_SHELL_VERSION` -b v`cat /home/git/gitlab/GITLAB_SHELL_VERSION`&lt;br /&gt;
&lt;br /&gt;
4. Update gitlab-workhorse to the corresponding version&lt;br /&gt;
&lt;br /&gt;
cd /home/git/gitlab-workhorse&lt;br /&gt;
sudo -u git -H git fetch&lt;br /&gt;
sudo -u git -H git checkout `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION` -b `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION`&lt;br /&gt;
sudo -u git -H make&lt;br /&gt;
&lt;br /&gt;
5. Install libs, migrations, etc.&lt;br /&gt;
&lt;br /&gt;
cd /home/git/gitlab&lt;br /&gt;
&lt;br /&gt;
# PostgreSQL&lt;br /&gt;
sudo -u git -H bundle install --without development test mysql --deployment&lt;br /&gt;
&lt;br /&gt;
# MySQL&lt;br /&gt;
sudo -u git -H bundle install --without development test postgres --deployment&lt;br /&gt;
&lt;br /&gt;
# Optional: clean up old gems&lt;br /&gt;
sudo -u git -H bundle clean&lt;br /&gt;
&lt;br /&gt;
# Run database migrations&lt;br /&gt;
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
# Clean up assets and cache&lt;br /&gt;
sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
6. Start application&lt;br /&gt;
&lt;br /&gt;
sudo service gitlab start&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
&lt;br /&gt;
7. Check application status&lt;br /&gt;
&lt;br /&gt;
Check if GitLab and its environment are configured correctly:&lt;br /&gt;
&lt;br /&gt;
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
To make sure you didn't miss anything run a more thorough check with:&lt;br /&gt;
&lt;br /&gt;
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
If all items are green, then congratulations upgrade complete!&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Applicatifs]]&lt;/div&gt;</summary>
		<author><name>Ddevleeschauwer</name></author>	</entry>

	</feed>