# Howto [dns, dhcp, serveur web, mta]

## bouleetbil

J'ai passé pas mal de temps à configurer mon réseau que se soit pour chercher de la documentation ou la configuration. Je met donc ici tous ce que j'ai fais. J'ai essayé d'être a peu pres clair.

Alors soit bonne lecture soit bonne sieste  :Smile: 

Si des erreurs se sont glissées n'hésitez pas à me prevenir.  :Laughing: 

Une partie de la Documentation est tirée en parti 

de Formation Debian GNU/Linux 

de https://vogelweith.homeftp.net/debian_server/mails.php

de la documentation gentoo

et de mes expériences  :Wink: 

Configuration reseau coté serveur

1. Serveur DHCP 

2. Serveur DNS (bind)

3. Serveur de mails (postfix)

4. Serveur de mailing-listes (ecartis)

5. Serveur Web (Apache / Php / mysql) 

6. FTP (proftpd)

7. Mirroir GENTOO

8. Antispam (Spamassassin)

9. Antivirus (clamav)

10. Firewall et partage de connexion Internet (iptables)

11. Messagerie instantanée (Jabber)

1. Serveur DHCP

1.1 Installer le serveur DHCP

Plusieurs serveur DHCP sont disponibles, j'ai installé le serveur DHCP de l'Internet Software Consortium :

# emerge dhcp

Il faut modifier le fichier /etc/dhcp/dhcpd.conf afin de lister les interfaces réseaux

1.2 Configurer le serveur DHCP

La configuration du serveur DHCP se fait dans le fichier /etc/dhcp/dhcpd.conf

Exemple de configuration:

```
# /etc/dhcp/dhcpd.conf

# Consultez "man dhcpd.conf" pour avoir toutes les informations sur les options

# DEBUT des options GLOBALES

# Les options globales s'appliqueront par défaut à tous les sous-réseaux

# Nom de domaine

option domain-name "exemple.org";

# Adresses des serveurs DNS (séparées par une virgule)

option domain-name-servers 192.168.0.4, 192.168.0.5;

# Durée du bail en secondes

default-lease-time 6000;

max-lease-time 6000;

# Le serveur DHCP est autoritaire pour les sous-réseaux déclarés ci-dessous

authoritative;

# FIN des options GLOBALES

# DEBUT de la déclaration des sous-réseaux et des machines

# Déclaration du sous-réseau 192.168.0.0/255.255.255.0

subnet 192.168.0.0 netmask 255.255.255.0

{

  # Plage d'adresses à attribuer pour les machines non déclarées

  range 192.168.0.100 192.168.0.200;

  # Adresse du routeur

  option routers 192.168.0.1;

}

# Déclaration de la machine "ordi1"

# La déclaration d'une machine permet de lui attribuer une adresse IP fixe

host ordi1

{

  # Adresse MAC de la machine

  hardware ethernet 00:d0:59:c9:22:06;

  # Adresse IP à attribuer

  fixed-address 192.168.0.12;

}

# FIN de la déclaration des sous-réseaux et des machines
```

Lancement au démarrage du serveur dhcp :

# rc-update add dhcp default

2. Configurer le serveur DNS

 2.1. Installation et fichiers de configuration

# emerge bind

# emerge bind-tools

Les fichiers de configuration de Bind se trouvent dans le répertoire /etc/bind/. On trouve aussi le fichier /var/bind/root.cache, qui contient les adresses IP des serveurs DNS racines (i.e. les serveurs centraux du système DNS), et le fichier named.conf qui est le fichier de configuration principal de Bind.

Le répertoire /var/bind/ est destiné à accueillir les fichiers de zone pour ceux qui veulent configurer un serveur DNS primaire ou secondaire.

Dans /etc/conf.d/domainname indiquer votre domaine.

Dans /etc/conf.d/hosts indiquer le nom de la machine

127.0.0.1 tuxgentoo frogdev.dyndns.org 

 2.2. Configurer un serveur indépendant

Par défaut, Bind est configuré en tant que serveur DNS "indépendant", qui n'est primaire ou secondaire pour aucun domaine. Quel est l'intérêt d'un tel serveur ? Faire office de cache DNS. En effet, le serveur DNS va retenir dans son cache les correspondances IP-DNS demandées par les clients, et ne sera pas obligé d'aller chercher chaque fois auprès des autres serveurs DNS la réponse aux requêtes.

Par exemple, si vous trouvez que le serveur DNS de votre fournisseur d'accès est trop long à répondre, vous aurez intérêt à installer un serveur DNS sur votre ordinateur et configurer votre système pour qu'il interroge en priorité le serveur local. Pour optimizer les temps de requêtes, configurez votre serveur DNS pour qu'il demande les enregistrements qu'il n'a pas dans son cache aux serveurs DNS de votre fournisseur d'accès au lieu d'aller les demander lui-même auprès des autres serveurs DNS.

Pour cela, éditez le fichier named.conf et décommentez les lignes de la sous-section forwarders de la section options en y inscrivant les adresses IPs des serveurs DNS de votre fournisseur d'accès. Le début du fichier named.conf ressemble alors à cela :

```

options {

        directory "/var/bind";

        forwarders {

                80.10.246.230;

                80.10.246.129;

         };

        auth-nxdomain no;

};

```

où 80.10.246.230 et 80.10.246.129 sont les adresses IPs des serveurs DNS de votre fournisseur d'accès.

Modifiez le fichier /etc/resolv.conf et mettez votre serveur en première position dans la liste des serveurs DNS:

```

nameserver 192.168.0.3

nameserver 80.10.246.230

nameserver 80.10.246.129

```

2.3. Configurer un serveur DNS primaire pour une zone

Vous avez acheté un nom de domaine et vous souhaitez héberger votre DNS primaire ? Il vous faut configurer votre Bind comme autoritaire (ou master) pour votre domaine et donner à l'organisme auquel vous avez acheté votre domaine l'adresse IP de votre serveur.

Modification de named.conf

Ajoutez à la fin du fichier named.conf les lignes suivantes :

```

zone "mondomaine.org" {

        type master;

        file "mondomaine.org.zone";

};

```

   où :

     mondomaine.org est le nom de domaine pour lequel votre serveur sera primaire,

     mondomaine.org.zone désigne le fichier /var/bind/mondomaine.org.zone où seront stockés les enregistrements de la zone.

Exemple du fichier zone fichier de zone

```

; /var/cache/bind/mondomaine.org.zone

; Fichier de zone "type" pour le domaine "mondomaine.org"

; Utiliser la commande

; "named-checkzone mondomaine.org /var/bind/mondomaine.org.zone"

; pour vérifier la validité du fichier de zone.

; Utiliser la commande "named-checkconf" pour vérifier la validité du fichier

; de configuration /etc/bind/named.conf

; ATTENTION : ne pas oublier de mettre à jour le "serial" à chaque

; modification des enresgitrements de ce fichier.

; ATTENTION : dans les fichiers de zone, les noms DNS complets doivent se

; terminer par des points (par exemple "master.mondomaine.org.")

; Tous les noms DNS qui ne sont pas complets (i.e. qui ne se terminent

; pas par un point) se terminent implicitement par "mondomaine.org."

; TTL (Time To Live) par défaut.

; Le TTL permet de dire aux serveurs DNS tiers qu'ils ne devront pas

; garder les enregistrements de notre zone en cache au dela de cette

; durée. On met une journée (86400 secondes).

$TTL 86400

; ENREGISTREMENT "SOA" (Start Of a zone of Authority).

; Cet enregistrement donne le nom du serveur DNS primaire et l'adresse mail

; à laquelle on peut joindre l'administrateur du domaine.

; Par exemple, le serveur DNS primaire s'appellera "master" et

; l'adresse mail de l'administrateur sera <root@master.mondomaine.org>

@   IN   SOA   master.mondomaine.org.   root.dns.mondomaine.org. (

; Serial (ou "Numéro de série") de la zone.

; Il permet aux serveurs secondaires de savoir s'ils ont besoin

; de se mettre à jour en faisant un transfert de zone avec le serveur

; primaire ou non en comparant leurs "serial" pour cette zone.

; Par convention, il est constitué de la date du jour au format AAAAMMJJ

; suivi du nombre de modifications déjà effectuées sur le fichier de zone

; dans la journée + 1.

; Par exemple, nous sommes le 13 septembre 2005, et c'est la deuxième fois

; que je modifie le fichier de zone aujourd'hui :

   2005090132

; Refresh.

; Intervalle de temps en secondes pendant lequel les serveurs DNS

; secondaires attendent avant de vérifier (et éventuellement de

; mettre à jour) l'enregistrement SOA du serveur DNS primaire.

; On met un 1 journée (86400 secondes).

   86400

; Retry.

; Intervalle de temps en secondes durant lequel les serveurs DNS

; secondaires attendent avant de réessayer une requête vers le serveur DNS

; primaire si ce dernier n'est pas accessible.

; On met 5 minutes (300 secondes).

   300

; Expire.

; Intervalle de temps en secondes durant lequel les serveurs DNS

; secondaires attendent avant de rejeter les informations de zones s'ils

; n'ont pas pu contacter le serveur DNS primaire.

; On met 1 mois (2592000 secondes).

      2592000

; TTL (Time To Live) minimum.

; Durée minimum du TTL d'un enregistrement DNS de la zone.

; On met 1 journée (86400 secondes).

   86400

)

; ENREGISTREMENTS "NS"

; Ces enregistrements donnent les noms DNS des serveurs primaires

; et secondaires

mondomaine.org.      IN   NS   ns0

mondomaine.org.      IN   NS   ns1

; ENREGISTREMENTS "A"

; Les enregistrements "A" donnent les correspondances DNS <-> IP classiques

; Pour qu'une requête DNS "ordi1.mondomaine.org" renvoie "12.42.112.201"

ordi1      IN   A   12.42.112.201

ordi2      IN   A   12.42.112.202

ordi3      IN   A   12.42.112.203

ns0      IN   A   12.42.102.188

ns1      IN   A   42.128.241.12

; ENREGISTREMENTS "CNAME"

; Le champ "CNAME" est utilisé pour faire des "alias DNS",

; c'est-à-dire avoir une IP qui répond à plusieurs noms DNS.

; Par exemple, pour qu'une requête DNS "www.mondomaine.org" renvoie

; aussi l'IP d'ordi1" :

www      IN   CNAME   ordi1

mailhost   IN   CNAME   ordi1

ftp      IN   CNAME   ordi2

irc      IN   CNAME   ordi3

; ENREGISTREMENTS "MX"

; Le champ "MX" est utilisé pour les envois de mail.

; Quand un serveur de mail doit envoyer un mail à l'adresse

; <bouleetbil@frogdev.dyndns.org>, il fait une requête DNS de type "MX" sur

; "frogdev.dyndns.org". Il obtient en retour une liste d'adresses IP classées

; avec des priorités. Il essaye alors d'envoyer le mail au serveur

; principale, s'il est injoignable au serveur secondaire, etc...

; Pour les adresses @mondomaine.org, le serveur principal est "ordi1",

; le serveur secondaire est "ordi2" et le tertiaire est "ordi3" :

mondomaine.org.      IN   MX   10   ordi1

mondomaine.org.      IN   MX   20   ordi2

mondomaine.org.      IN   MX   30   ordi3

; ATTENTION : on ne met pas de "MX" sur un "CNAME",

; mais uniquement sur un "A" !

; Si on veut inclure un autre fichier de ce fichier :

;$INCLUDE nom_de_l'autre_fichier

```

2.4 Vérifications et relance

Vérifiez que vous n'avez pas fait d'erreur de syntaxe dans le fichier named.conf :

# named-checkconf

Si la commande n'affiche rien, c'est que le fichier named.conf est valide. Ensuite, vérifiez la syntaxe du fichier de zone :

# named-checkzone mondomaine.org /var/bind/mondomaine.org.zone

zone mondomaine.org/IN: loaded serial 2005091302

OK

Si la commande n'affiche aucun message d'erreur, alors il n'y a pas d'erreur de syntaxe dans le fichier de zone. Vous pouvez alors dire à Bind de relire son fichier de configuration :

# /etc/init.d/named start

# rc-update add named default

Note : Attention, si vous faites un restart au lieu d'un reload, le cache de votre serveur DNS se videra !

2.5 Configurer un serveur secondaire pour une zone

Il faut modifier named.conf

Rajoutez à la fin du fichier named.conf les lignes suivantes :

zone "domaine-ami.org" {

        type slave;

        file "domaine-ami.org.zone";

        masters { 12.42.112.242; };

};

où :

    domaine-ami.org est le nom de domaine pour lequel votre serveur sera secondaire

    domaine-ami.org.zone désigne le fichier /var/cache/bind/domaine-ami.org.zone où sera écrite la zone à l'issue du premier transfert depuis le serveur DNS primaire,

     12.42.112.242 est l'adresses IP du serveur primaire de la zone.

Votre serveur DNS fera alors régulièrement des transferts de zone depuis le serveur primaire (et notamment à chaque fois que le serveur primaire lui notifiera d'un changement dans la zone) et l'écrira dans  le fichier /var/bind/domaine-ami.org.zone.

2.6 Tester le serveur DNS

L'utilitaire dig permet de faire des requêtes DNS évoluées et fournit un maximum d'informations sur la requête. Il est très utile pour vérifier la bonne configuration d'un serveur DNS.

   Exemples d'utilisation de dig :

   Requête sur le champ "A" du nom www.mondomaine.org auprès du serveur DNS 12.42.112.242 :

# dig @12.42.112.242 www.mondomaine.org A

     Requête sur la champ "MX" du nom mondomaine.org auprès du serveur DNS 12.42.112.242 :

# dig @12.42.112.242 mondomaine.org MX

     Requête sur tous les champs du nom mondomaine.org auprès du serveur DNS 12.42.112.242 :

# dig @12.42.112.242 mondomaine.org ANY

     Requête AXFR sur le domaine mondomaine.org auprès du serveur DNS 12.42.112.242 :

# dig @12.42.112.242 mondomaine.org AXFR

     Requête inverse (i.e. reverse DNS) sur l'IP 12.42.111.422 auprès du serveur DNS 12.42.112.242 :

# dig @12.42.112.242 -x 12.42.111.422

Pour le serveur de domaine 

# /etc/init.d/domainname start

# rc-update add domainname default

3.Configurer Postfix

3.1 Installer Postfix

# emerge postfix

La configuration de Postfix se fait dans le fichier /etc/postfix/main.cf. Voici un fichier d'exemple documenté:

```

#default_destination_concurrency_limit = 20

# DEBUGGING CONTROL

#

# The debug_peer_level parameter specifies the increment in verbose

# logging level when an SMTP client or server host name or address

# matches a pattern in the debug_peer_list parameter.

#

debug_peer_level = 2

# The debug_peer_list parameter specifies an optional list of domain

# or network patterns, /file/name patterns or type:name tables. When

# an SMTP client or server host name or address matches a pattern,

# increase the verbose logging level by the amount specified in the

# debug_peer_level parameter.

#

#debug_peer_list = 127.0.0.1

#debug_peer_list = some.domain

# The debugger_command specifies the external command that is executed

# when a Postfix daemon program is run with the -D option.

#

# Use "command .. & sleep 5" so that the debugger can attach before

# the process marches on. If you use an X-based debugger, be sure to

# set up your XAUTHORITY environment variable before starting Postfix.

#

debugger_command =

    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin

    xxgdb $daemon_directory/$process_name $process_id & sleep 5

# If you don't have X installed on the Postfix machine, try:

# debugger_command =

#   PATH=/bin:/usr/bin:/usr/local/bin; export PATH; (echo cont;

#   echo where) | gdb $daemon_directory/$process_name $process_id 2>&1

#   >$config_directory/$process_name.$process_id.log & sleep 5

# INSTALL-TIME CONFIGURATION INFORMATION

#

# The following parameters are used when installing a new Postfix version.

# 

# sendmail_path: The full pathname of the Postfix sendmail command.

# This is the Sendmail-compatible mail posting interface.

# 

sendmail_path = /usr/sbin/sendmail

# newaliases_path: The full pathname of the Postfix newaliases command.

# This is the Sendmail-compatible command to build alias databases.

#

newaliases_path = /usr/bin/newaliases

# mailq_path: The full pathname of the Postfix mailq command.  This

# is the Sendmail-compatible mail queue listing command.

# 

mailq_path = /usr/bin/mailq

# setgid_group: The group for mail submission and queue management

# commands.  This must be a group name with a numerical group ID that

# is not shared with other accounts, not even with the Postfix account.

#

setgid_group = postdrop

# html_directory: The location of the Postfix HTML documentation.

#

html_directory = no

# manpage_directory: The location of the Postfix on-line manual pages.

#

manpage_directory = /usr/share/man

# sample_directory: The location of the Postfix sample configuration files.

# This parameter is obsolete as of Postfix 2.1.

#

sample_directory = /etc/postfix

# readme_directory: The location of the Postfix README files.

#

readme_directory = /usr/share/doc/postfix-2.1.3/readme

default_destination_concurrency_limit = 2

alias_database = hash:/etc/mail/aliases

local_destination_concurrency_limit = 2

alias_maps = hash:/etc/mail/aliases

home_mailbox = .maildir/

mynetworks = 127.0.0.0/8 192.168.0.0/24

mydomain = frogdev.dyndns.org

myhostname = tuxgentoo.$mydomain    

myorigin = $mydomain

mydestination = $myhostname, localhost.$mydomain, $mydomain

relay_domains = $mydestination, free.fr

```

 3.2 Les alias

Les alias permettent de faire des correspondances entre des adresses mail et des comptes locaux, d'autres adresses mail ou encore des commandes à exécuter. Ils sont définis dans le fichier /etc/mail/aliases.

La syntaxe de ce fichier est très simple :

```
# aliases

# Fichier d'alias mail

# NE PAS OUBLIER d'exécuter "newaliases" après chaque modification

# Fait suivre le mail reçu à l'adresse <bouleetbil@nom_de_domaine>

# au compte local "test" :

bouleetbil:        test

# Fait suivre le mail reçu à l'adresse <toto@nom_de_domaine>

# à l'adresse <titi@yahoo.fr> :

toto:                   titi@yahoo.fr

# Fait suivre le mail reçu à l'adresse <machin@nom_de_domaine>

# aux comptes "user1" et "user2" et à l'adresse <bidulle@exemple.org> :

machin:                 user1,user2,bidulle@exemple.org

# A la réception d'un mail à l'adresse <bruit@nom_de_domaine>,

# exécute la commande "/usr/lib/ecartis/ecartis -s bruit" :

bruit:                  "|/usr/lib/ecartis/ecartis -s bruit"

```

Normalement, on définit aussi dans ce fichier à quel compte local (ou à quelle adresse) le serveur de mail doit faire suivre le mail destiné à l'utilisateur root. En effet, comme il n'y a pas besoin d'avoir tous les pouvois pour lire le mail du root, il serait absurde (et même dangereux) de lire les mails du root en tant que root. Il est préférable de faire suivre le mail du root vers un autre compte ou une autre adresse.

Il faut également faire des alias pour les adresses postmaster et abuse, qui sont deux adresses standard pour pouvoir joindre les administrateurs du serveur de mail d'un domaine. Par exemple, si vous utilisez un compte local admin pour lire les logs et les mails d'administration, ajoutez les lignes suivantes au fichier d'alias :

```
root:                   admin

postmaster:             admin

abuse:                  admin
```

Ensuite, exécutez la commande suivante pour qu'il regénère la base de donnée d'alias (ne pas oublier d'exécuter cette commande après chaque modification du fichier aliases) :

# newaliases

3.3 Les adresses virtuelles

Quand le domaine de l'adresse mail n'est pas celui de la machine, on passe par un mécanisme d'adresses virtuelles pour faire correspondre ces adresses mail à des comptes locaux, à d'autres adresses mail ou encore à des commandes à exécuter.

Le nom du fichier contenant les correspondances pour les adresses virtuelles est définit dans le fichier de configuration de Postfix  /etc/postfix/main.cf par le paramètre virtual_maps :

virtual_maps = hash:/etc/postfix/virtual

La syntaxe du fichier est semblable à celle du fichier d'alias, mais sans la séparation par les deux-points :

```

# /etc/postfix/virtual

# Fichier de correspondance pour les adresses virtuelles

# NE PAS OUBLIER d'exécuter "postmap /etc/postfix/virtual"

# après chaque modification

# Fait correspondre une adresse virtuelle à un compte local

postmaster@exemple.org      admin

bouleetbil@exemple.org      bouleetbil

# Fait correspondre une adresse virtuelle à une autre adresse mail

toto@exemple.org        titi@yahoo.fr

# Fait correspondre une adresse virtuelle à une commande à exécuter

bruit@exemple.org       "|/usr/lib/ecartis/ecartis -s bruit"

Ensuite, exécutez la commande suivante pour qu'il tienne compte des

modifications :

# postmap /etc/postfix/virtual
```

3.4 Les commandes de base d'administration

Voici une liste de commandes de base d'administration de Postfix :

Liste la queue de mails en attente d'envoi :

# mailq

Cette commande est équivalente à la commande postqueue -p.

Force Postfix à réessayer d'envoyer les mails en attente d'envoi immédiatement :

# postqueue -f

Supprime un mail de la queue des mails en attente d'envoi :

# postsuper -d mail_ID

où mail_ID est l'identifiant du mail dans la queue (il apparaît à gauche dans la sortie de la commande mailq).

Activer postfix au démarrage de l'ordinateur:

# rc-update add postfix default

Pensez à copier le « /etc/resolv.conf » sur « /var/spool/postfix/etc/resolv.conf 

3.5 Ajouter des serveurs POP et/ou IMAP

Attention, les protocoles POP et IMAP font transiter les mots de passe en clair sur le réseau.

3.5.1 Installer un serveur POP3 /  IMAP

#emerge courier-imap courier-authlib

Pour ne pas utiliser le support Mysql d'identification mais pam, chaque utilisateur du systeme possede une boite aux lettres. Il faut modifier le fichier /etc/courier/authlib/authdaemonrc

```
authmodulelist="authshadow authpam"

authmodulelistorig="authshadow authpam" 
```

Pour créer les boites aux lettres des utilisateurs:

$ maildirmake ~/.maildir/

Pour activer les services :

# /etc/init.d/courier-imapd start

# /etc/init.d/courier-pop3d start

Astuces:

Pour que votre serveur Mail soit visible de l'extérieur il faut définir  une Zone MX chez votre registar.

Pour dyndns par exemple j'ai:

Hostname:  	frogdev.dyndns.org

IP Address: 	82.236.233.24

Wildcard: 	N

Mail Exchanger: frogdev.dyndns.org

Backup MX: 	N

 4. Monter un serveur de mailing-listes

Vos serveurs DNS et mail fonctionnent bien ? Vous avez appris à faire des alias qui pointent vers plusieurs comptes et/ou adresses mail, mais vous voudriez aller plus loin pour communiquer au sein d'une communauté ? Alors suivez ce qui suit pour mettre en place des mailing-lists avec archivage sur le Web...

4.1 Monter le serveur, installer et configurer Ecartis

Je n'ai pas trouvé d'ebuild pour ecartis donc il va falloir l'installer à l'ancienne. Vous pouvez le trouverais ici:

http://www.ecartis.org Télécharger les sources et lancer la compilation.

Si quelqu'un a un peu de temps pour créer un ebuild  :Wink: 

Ecartis possède un fichier de configuration global /etc/ecartis/ecartis.cfg. Editez-le et personnalisez les paramètres suivants en vous aidant des commentaires (dans la plupart des cas, il suffira de remplacer localhost par le nom de domaine de la machine) :

```
     mailserver

     listserver-address

     listserver-admin

     list-owner
```

Ajoutez les aliases nécessaires au bon fonctionnement d'Ecartis :

# cat /usr/share/doc/ecartis/examples/aliases >> /etc/aliases

# newaliases

4.2 Créer une mailing-list

Nous allons créer une première mailing-list bruit, qui servira à des fins de test, pour se familiariser avec Ecartis :

# /usr/lib/ecartis/ecartis -newlist bruit

Creating new list 'bruit'...

List admin e-mail:

Il vous demande l'adresse mail de l'administrateur de la mailing-list: entrez votre adresse mail. C'est avec cette adresse que vous pourrez administrer la mailing-list.

Il crée ensuite le répertoire et les fichiers nécessaires au bon  fonctionnement de la mailing-list dans le répertoire

   /var/lib/ecartis/lists/ :

 Writing config file...done.

 Creating default user file...done.

Enfin, il affiche une liste d'alias à créer dans votre serveur de mail:

Sending aliases for sendmail/Exim/Postfix/Zmailer to stdout.

# Aliases for 'bruit' mailing list.

bruit: "|/usr/lib/ecartis/ecartis -s bruit"

bruit-request: "|/usr/lib/ecartis/ecartis -r bruit"

bruit-repost: "|/usr/lib/ecartis/ecartis -a bruit"

bruit-admins: "|/usr/lib/ecartis/ecartis -admins bruit"

bruit-moderators: "|/usr/lib/ecartis/ecartis -moderators bruit"

bruit-bounce: "|/usr/lib/ecartis/ecartis -bounce bruit"

Copiez-collez le bloc ci-dessus, qui comprend les 6 alias nécessaires au fonctionnement de la mailing-list, dans le fichier d'alias de votre serveur de mail puis mettez à jour la base d'alias :

# newaliases

4.3 Configurer la mailing-list

La configuration de la mailing-list se fait dans le fichier /var/lib/ecartis/lists/bruit/config. Il existe un très grand nombre de paramètres de configuration, et le fichier de configuration installé par défaut les explique tous dans les commentaires.

Les paramètres les plus importants que vous devez absolument personnaliser sont les suivants (certains ont déjà été décommentés et personnalisés à la création de la liste) :

     * list-owner : adresse e-mail du responsable de la mailing-list (c'est celle que vous avez donné lors de la création de la mailing-list)

     * subject-tag : tag éventuel rajouté aux sujets des mails postés dans la mailing-list (commentez la ligne si vous ne voulez pas de tag)

     * reply-to : permet de forcer le champ Reply-to sur une certaine adresse (par exemple l'adresse de la mailing-list pour que les réponses aux posts aillent par défaut dans la mailing-list)

     *administrivia-address : adresse e-mail d'administration de la mailing-list où sont envoyé les notifications(et les autorisations si la mailing-list est en subscribe-mode = closed) d'abonnement et de désabonnement (ne pas modifier)

     * approved-address : adresse e-mail où sont renvoyés les posts acceptés ou refusés à la modération : mettre <$list>-repost@serveur.exemple.org, où serveur.exemple.org est le nom de domaine du serveur

     * mbox-archive-path : répertoire dans lequel sont stockées les archives au format mbox (si vous voulez en avoir) 

     * humanize-mime : mettre à false si vous voulez que les pièces jointes qui ne sont pas des fichiers texte ne soient pas supprimées !

     * closed-post : les personnes qui ne sont pas abonnées à la mailing-list sont-elles autorisées à y poster ? (si vous répondez true, les posts des personnes extérieures à la mailing-list sont alors modérés)

     * moderated : tous les posts doivent-ils être approuvés par les modérateurs ?

     * moderator : adresse e-mail pour les modérateurs (ne pas modifier)

     * send-as : adresse du chemin de retour SMTP (ne pas modifier)

     * subscribe-mode : il y a 3 choix :

          + open pour que n'importe qui puisse s'abonner,

          + confirm pour que n'importe qui puisse s'abonner après confirmation du futur abonné,

          + closed pour que toutes les demandes d'abonnement soient soumises à l'approbation des administrateurs 

    *unsubscribe-mode : idem que le paramètre précédent pour les désabonnements

4.4 Le fichier des abonnés

Le fichier des abonnés est le fichier /var/lib/ecartis/lists/bruit/users.

Sa syntaxe est simple : une ligne par abonné, chaque ligne est composée des éléments suivants dans l'ordre et séparés par des espaces :

     * une adresse e-mail ;

     * le caractère deux-points ;

     * une liste de flags encadrés et séparés par le caractère |.

Les flags possibles sont les suivants :

     * ECHOPOST pour les abonnés à la mailing-list,

     * ADMIN pour les administrateurs de la mailing-list,

     * SUPERADMIN : [TODO : quel est la différence avec ADMIN ?],

     * MODERATOR pour les modérateurs de la mailing-list,

     * CCERRORS pour recevoir les mails d'erreur de la mailing-list (par exemple quand l'adresse d'un abonné ne marche pas),

     * REPORTS pour recevoir les rapports réguliers sur le fonctionnement de la mailing-list.

Pour l'administrateur, la ligne suivante est générée à la création de la mailing-list :

bouleetbil@frogdev.dyndns.org.fr : |ADMIN|SUPERADMIN|MODERATOR|CCERRORS|REPORTS|ECHOPOST|

Si l'utilisateur toto@yahoo.fr est un simple abonné, on trouvera dans le fichier une ligne :

toto@yahoo.fr : |ECHOPOST|

Si l'utilisateur titi@caramail.com est abonné et modérateur, on trouvera une ligne :

titi@caramail.com : |ECHOPOST|MODERATOR|

4.4 Administrer la mailing-list

Toute l'administration de la mailing-list se fait en envoyant des commandes dans le sujet de mails envoyés à l'adresse ecartis@serveur.exemple.org. Le contenu du mail peut-être quelconque.

Si la commande contenue dans le sujet est valide, le reste du mail ne sera pas lu par Ecartis.

Par exemple, si vous envoyez un mail à l'adresse ecartis@serveur.exemple.org avec un sujet lists, vous aurez en retour un mail contenant la liste des mailing-listes hébergées sur le serveur.

Quand un utilisateur veut s'abonner à la mailing-list bruit, il suffit qu'il envoie un mail à l'adresse ecartis@serveur.exemple.org avec un sujet subscribe bruit :

     * si la mailing-list est en subscribe-mode = open, l'utilisateur recevra confirmation de son abonnement par mail

     * si la mailing-list est en subscribe-mode = confirm, l'utilisateur recevra un mail lui donnant les instructions pour confirmer son abonnement

     * si la mailing-list est en subscribe-mode = closed, un administrateur devra approuver l'abonnement. Idem pour un désabonnement, mais en mettant dans le sujet unsubscribe bruit.

Pour avoir une liste complète des commandes, envoyez un mail à l'adresse ecartis@serveur.exemple.org avec un sujet commands.

Pour la modération des mail, les modérateurs reçoivent des mails indiquant les instructions pour approuver ou rejeter les posts.

Pour avoir de l'aide sur Ecartis, envoyez un mail à l'adresse ecartis@serveur.exemple.org avec un sujet help.

4.5 Poster dans la mailing-list

Pour poster dans la mailing-list, il suffit d'envoyer un mail à l'adresse bruit@serveur.exemple.org. Les abonnés reçoivent alors le post après quelques secondes, sauf si le mail doit passer en modération, i.e. dans les cas suivants :

     * si la mailing-list est modérée ;

     * si la mailing-list n'est pas modérée, mais en closed-post = true et que la personne qui poste n'est pas abonnée à la mailing-list.

5. Apache / Php / Mysql

5.1 Installation

# nano -w /etc/make.conf

Ajouter à votre variable use: Php mysql apache2 

# emerge mod_php 

apache sera installé ainsi que mysql

5.2 Configuration

Dans /etc/conf.d/apache2 mettre APACHE2_OPTS="-D PHP4" 

La commande ci-dessous permet d'installer la base de données mysql:

# /usr/bin/mysql_install_db 

Mysqlcc est tres bien pour administrer pour votre base de données Mysql.(n'oublier pas de changer votre mot de passe root)

Ne pas oublier de modifier httpd.conf afin d'indiquer votre nom de domaine.

Activer Mysql et apache au démarrage de l'ordinateur

# rc-update add mysql default

# rc-update add apache2 default

6. FTP

Proftpd est serveur FTP assez facile à installer et à configurer et frontend qui fonctionne bien est disponible alors pourquoi se priver.

# emerge ProFTPD

Installation du frontal en gtk:

# emerge gproftpd

Le fichier de configuration se trouve dans /etc/proftpd/proftpd.conf.

7. Mirroir GENTOO

7.1 Mise en place de Rsync:

Pour installer un serveur rsync il n'est pas néccessaire d'installer de paquet. Seulement gentoo-rsync-mirror contient des exemples de scripts qui peuvent être utile.

Structure de /etc/rsync/rsyncd.conf:

```

uid = nobody

gid = nobody

use chroot = yes

max connections = 15

pid file = /var/run/rsyncd.pid

motd file = /etc/rsync/rsyncd.motd

log file = /var/log/rsync.log

transfer logging = yes

log format = %t %a %m %f %b

syslog facility = local3

timeout = 300

[gentoo-x86-portage]

# Pour des raisons de compatibilité

path = /usr/portage

comment = Arbre de portage gentoo

exclude=distfiles/ packages/

[gentoo-portage]

# Les versions modernes de portage utilisent cette section.

path = /usr/portage

comment = Arbre de portage gentoo

exclude=distfiles/ packages/

[portage]

path=/usr/portage

comment=Gentoo Portage

exclude=distfiles/ packages/

```

Si vous désirez faire un serveur local rajouter ces deux lignes:

hosts allow = 192.168.0.1 192.168.0.2 192.168.1.0/24

hosts deny = *

Il faut les adapter selon votre configuration.

Configuration des postes clients:

(Utilisez l'adresse IP du serveur)

SYNC="rsync://192.168.0.1/portage"

(Ou utilisez son nom)

SYNC="rsync://le_nom_du_serveur/portage"

Il est conseillé de synchroniser deux fois par heure son arbre de portage. Pour cela, il est possible d'utiliser cron.

# crontab -e root

Ajouter des lignes qui ressemble à cela:

0 20 * * * mirrorselect -a && emerge sync

Cela signifie que tous les jours à 20heures, le meilleur serveur est sélectionné puis l'arbre de portage mis à jour. N'oublier pas d'activer un démon cron au démarrage.

7.2 Serveur de sources:

Il faut déjà disposer d'un serveur http ou ftp. Ensuite, il faut télécharger les sources et les maintenir à jour. Pour cela vous pouvez utiliser ce script:

```

#!/bin/bash

RSYNC="/usr/bin/rsync"

OPTS="--quiet --recursive --links --perms --times --devices --delete --timeout=300"

#exclure grp et releases

#pour les distfiles seulement

SRC="ftp.ussg.iu.edu::gentoo-distfiles"

#Il est possible d'utiliser un autre serveur

DST="/mnt/space/gentoo/"

#Emplacement des sources à télécharger

echo "Mise à jour commencée à" `date` >> $0.log 2>&1

logger -t rsync "Mise à jour des sources Gentoo"

${RSYNC} ${OPTS} ${SRC} ${DST} >> $0.log 2>&1

echo "Fin: "`date` >> $0.log 2>&1

```

Il se peut que le serveur "ftp.ussg.iu.edu" ne soit plus actif dans ce cas sur la page des serveur Gentoo cherchez un serveur rsync qui partage les sources

N'oublier pas d'insérer ce script à cron.

Vous pouvez inserer vos sources à rsync de cette manière d'autre serveur pourront se synchroniser sur votre serveur. Pour cela ajouter ces lignes à /etc/rsync/rsyncd.conf

```

[gentoo-distfiles]

# Sources Gentoo.

path = /mnt/space/gentoo

comment = Sources gentoo

```

Astuce: si vous utilisez apache comme serveur http, ajouter à /etc/apache2/conf/commonapache2.conf

<Directory Emplacement des fichiers sources>

Options Indexes

AllowOverride None

Order allow,deny

Allow from all

</Directory>

Cela permet d'afficher les fichiers présent dans le répertoire via un navigateur.

Il faut activer rsync au démarrage:

# rc-update add rsyncd default

8. Spamassassin

8.1 Installation 

# emerge spamassassin

# nano /etc/mail/spamassassin/local.cf

Il faut ajouter ces options

required_hits 6

skip_rbl_checks 1

8.2 Activation

Pour activer spamassassin

# rc-update add spamd default

# /etc/init.d/spamd start

9. Antivirus Clamav

9.1 Installation

# emerge clamav

9.2 Configuration

# nano /etc/conf.d/clamd

Mettez START_CLAMD=yes

# nano /etc/clamd.conf

Configurez selon vos paramêtres

9.3 Activer clamav

# rc-update add clamd default

# /etc/init.d/clamd start

9.4 Scanner les mails

# emerge  amavisd-new

La configuration de Amavis se fait dans le fichier /etc/amavisd.conf. Il faut modifier quelques options pour l'adapter a votre configuration :

$mydomain = 'example.com';

$final_bad_header_destiny = D_BOUNCE;

$warnvirusrecip = 1;

$warnbannedrecip = 1;

$warn_offsite = 1;

$virus_admin = 'postmaster@example.com';

$hdrfrom_notify_sender = 'amavisd-new <postmaster@example.com>';

Pour que postfix envoie les messages à Amavis, il faut ajouter la ligne suivante dans /etc/postfix/main.cf :

# Use AMaVis

content_filter = amavis:[127.0.0.1]:10024

Pour verifier le bon fontionnement de l'antivirus, on peut utiliser des sites prévus a cet effet comme testvirus.org ou gfi.com/emailsecuritytest/. Ces sites permetent d'envoyer des mails infectés avec un virus de test (non dangereux) vers votre serveur. En fonction des paramètres de notification qui ont été choisit, la réception de ce mail devrait, ou non, déclencher une alerte à l'administrateur du serveur. On peut par ailleurs consulter le contenu détaillé des headers des mails reçus pour s'assurer qu'ils contiennent une ligne du type :

X-Virus-Scanned: by amavisd-new at example.com

Il existe un frontend pour clamav afin de scanner des fichiers "clamav-tk" vous trouverez un ebuild sur http://frogdev.dyndns.org dans la section download

10.Firewall et partage de connexion Internet

1. Introduction

L'idée est de définir une machine faisant office de routeur et de firewall. Celle-ci doit disposer de deux interfaces réseaux: 

	Une pour le réseau local

	Une connécté à internet

2. Etablir des règles de firewalling et/ou de partage de connexion

2.1. Configuration 

Configuration du noyau:

Le noyau doit avoir les fonctions de firewalling activées. Si vous ne les avez pas compilées dans votre noyau actuel, vous devrez recompiler avec ces options:

Liste des modules à inclure:

ip_nat_ftp

ip_nat_irc

iptable_filter

iptable_mangle

iptable_nat

Installation iptables:

# emerge iptables

2.2. La syntaxe iptables

La sytaxe d'iptables est très complète, je ne vais pas la détailler ici. Je vais vous fournir mes scripts commentés:

Le fichier /etc/conf.d/firewall.start

```

#!/bin/sh

# mettez ici l'emplacement d'iptables :

IPTABLES=/sbin/iptables

# mettez ici le nom de l'interface réseau vers internet :

EXTERNAL_IF="ppp0"

# mettez ici le nom de l'interface réseau vers votre lan :

INTERNAL_IF="eth0"

#charge les modules

modprobe ip_nat_ftp

modprobe ip_nat_irc

modprobe iptable_filter

modprobe iptable_mangle

modprobe iptable_nat

modprobe ip_masq_ftp

modprobe ip_masq_user

echo "Module Chargé"

#partage de connexion

echo 1 > /proc/sys/net/ipv4/ip_forward

#autorise le reseau a envoye des donnees sur internet

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

echo "Partage de connexion actif"

#masque les machines local

$IPTABLES -A POSTROUTING -t nat -o $EXTERNAL_IF -j MASQUERADE

#liste des modules possible

#ls /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/

#refus de tout

$IPTABLES -P INPUT DROP

$IPTABLES -P OUTPUT DROP

$IPTABLES -P FORWARD DROP

echo "Refus de toutes les connexions"

# DROP des paquets NETBIOS

iptables -A INPUT -i $EXTERNAL_IF -p udp --dport 137:139 -j DROP

iptables -A INPUT -i $EXTERNAL_IF -p tcp --dport 137:139 -j DROP

echo "Netbios actif"$IPTABLES -A tcp_inbound -p TCP -s 0/0 --destination-port 6891:6900 -j ACCEPT

#regles reseau local on accepte tous

# "On accepte le traffic sur 'lo'"

$IPTABLES -A INPUT -i lo -j ACCEPT

$IPTABLES -A OUTPUT -o lo -j ACCEPT

$IPTABLES -A FORWARD -i lo -j ACCEPT

$IPTABLES -A FORWARD -o lo -j ACCEPT

echo "Toutes les connexions internes sont actives"

# "On accepte le traffic sur le réseau local"

# Vous pouvez personaliser cette règle en s'appuyant sur les regles du traffic vers internet

$IPTABLES -A INPUT -i $INTERNAL_IF -j ACCEPT

$IPTABLES -A OUTPUT -o $INTERNAL_IF -j ACCEPT

$IPTABLES -A FORWARD -i $INTERNAL_IF -j ACCEPT

$IPTABLES -A FORWARD -o $INTERNAL_IF -j ACCEPT

echo "Réseau local actif"

#Logguer les packets DROPés

#Logguer les packets au début afin de vérifier que tous fonctionne

#Apres commentez ces lignes car cela prend beaucoup de place

$IPTABLES -N LOG_DROP

$IPTABLES -A LOG_DROP -j LOG --log-prefix "[FIREWALL refus] "

$IPTABLES -A LOG_DROP -j DROP

echo "Prépare les log"

#pour la resolution des dns

$IPTABLES -A INPUT -i $EXTERNAL_IF --protocol udp --source-port 53 -j ACCEPT

$IPTABLES -A OUTPUT -o $EXTERNAL_IF --protocol udp --destination-port 53 -j ACCEPT

$IPTABLES -A INPUT -i $EXTERNAL_IF --protocol tcp --source-port 53 -j ACCEPT

$IPTABLES -A OUTPUT -o $EXTERNAL_IF --protocol tcp --destination-port 53 -j ACCEPT

echo "DNS accordé"

#pour accepter de sufer sur le web

$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport www -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --dport www -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

echo "Surf possible"

#pour le serveur web sur le routeur

$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --sport www -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --dport www -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

echo "Serveur WEB accordé"

#Pour serveur pop3

$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --dport pop-3 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

echo "Réception de mail"

#pour seveur smtp

#$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport smtp -m state --state ESTABLISHED,RELATED -j ACCEPT

#pour l'envoi de mail

$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --dport smtp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

echo "Envoi de mail"

#on accepte les requete ftp entrantes

$IPTABLES -t filter -A INPUT -p tcp --source-port ftp -j ACCEPT

$IPTABLES -t filter -A INPUT -p tcp --destination-port ftp -j ACCEPT

echo "Ftp entrant ok"

#msn transfert de fichier

$IPTABLES -A INPUT -p TCP --sport 6891:6900 -j ACCEPT

$IPTABLES -A OUTPUT -p tcp --dport 6891:6900 -j ACCEPT

#msn communication

#$IPTABLES -A INPUT -p tcp --sport 1863 -j ACCEPT

$IPTABLES -A INPUT -i $EXTERNAL_IF --protocol tcp --sport 1863 -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A OUTPUT -o $EXTERNAL_IF --protocol tcp --dport 1863 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

echo "Msn accorde"

#limite du ping

$IPTABLES -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT

$IPTABLES -A INPUT -p icmp -m state --state NEW -m limit --limit 10/min -j ACCEPT

echo "ping ok"

#reseau donkey udp:4672 tcp:4662

#on accept sur les port entrants par défault d'eMULE

$IPTABLES -A INPUT -p tcp --dport 4662 -j ACCEPT

$IPTABLES -A INPUT -p tcp --dport 34037 -j ACCEPT

$IPTABLES -A INPUT -p tcp --dport 34038 -j ACCEPT

echo "Emule ouverture du port entrant 4662 "

$IPTABLES -A INPUT -p udp --dport 4672 -j ACCEPT

echo "Emule ouverture du port entrant 4672 "

# on accepte les sorties pour emule

$IPTABLES -A INPUT -p tcp --sport 4662 -j ACCEPT

echo "Emule ouverture du port sortant 4662 "

$IPTABLES -A INPUT -p udp --sport 4672 -j ACCEPT

echo "Emule ouverture du port sortant 4672 "

# On accepte de le laisser sortir du firewall et on accpete les connexions entrantes que l'on a initiées

$IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT

$IPTABLES -A INPUT -m state --state ESTABLISHED -j ACCEPT

echo "connexion ouverte ok"

#accord ssh

$IPTABLES -t filter -A INPUT -i $INTERNAL_IF -s 0.0.0.0/0 -d 192.168.0.2 -p tcp --dport 22 -j ACCEPT

echo "ssh accorde"

#pour rediriger vers un serveur web si besoin sur le reseau local

#iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.3:80

# Décommentez la ligne suivante pour que le serveur CUPS éventuel

# soit joignable de l'extérieur

#$IPTABLES -A INPUT -p tcp --sport 631 -j ACCEPT

# Décommentez les deux lignes suivantes pour que le serveur Samba éventuel

# soit joignable de l'extérieur

#$IPTABLES -A INPUT -p tcp --dport 139 -j ACCEPT

#$IPTABLES -A INPUT -p udp --dport 139 -j ACCEPT

# Décommentez la ligne suivante pour que des clients puissent se connecter

# à l'ordinateur par XDMCP)

#$IPTABLES -A INPUT -p ucp --dport 177 -j ACCEPT

# Décommentez la ligne suivante pour que l'odinateur puisse se connecter

# par XDMCP à une machine distante)

#$IPTABLES -A INPUT -p tcp --dport 6001 -j ACCEPT

# Décommentez la ligne suivante pour que le serveur CVS éventuel

# soit joignable de l'extérieur via le mécanisme de "pserver"

# (si les utilisateurs accèdent au serveur CVS exclusivement via SSH,

# seule la ligne concernant le serveur SSH doit être décommentée)

#$IPTABLES -A INPUT -p tcp --dport 2401 -j ACCEPT

# Décommentez la ligne suivante pour pouvoir reçevoir des flux VideoLAN

# (ce sont des flux UDP entrants sur le port 1234)

#$IPTABLES -A INPUT -p udp --dport 1234 -j ACCEPT

# Décommentez la ligne suivante pour pouvoir reçevoir des annonces SAP

# (ce sont des annonces de session multicast)

#$IPTABLES -A INPUT -p udp -d 224.2.127.254 --dport 9875 -j ACCEPT

# Décommentez les 3 lignes suivantes pour pouvoir utiliser GnomeMeeting

#$IPTABLES -A INPUT -p tcp --dport 30000:33000 -j ACCEPT

#$IPTABLES -A INPUT -p tcp --dport 1720 -j ACCEPT

#$IPTABLES -A INPUT -p udp --dport 5000:5006 -j ACCEPT

#on log tout

$IPTABLES -A FORWARD -j LOG_DROP

$IPTABLES -A INPUT -j LOG_DROP

$IPTABLES -A OUTPUT -j LOG_DROP

echo "firewall actif"

echo "log dans /var/log/messages"

```

Le fichier /etc/conf.d/firewall.stop

```
#!/bin/sh

# Script d'arrêt du mur pare feu

# mettez ici l'emplacement d'iptables :

IPTABLES=/sbin/iptables

echo "On vide toutes les régles."

$IPTABLES -F INPUT

$IPTABLES -F OUTPUT

$IPTABLES -F FORWARD

$IPTABLES -t nat -F POSTROUTING

$IPTABLES -F LOG_DROP

$IPTABLES -X

$IPTABLES -P INPUT ACCEPT

$IPTABLES -P OUTPUT ACCEPT

$IPTABLES -P FORWARD ACCEPT

echo "On décharge les modules."

rmmod `lsmod | grep -E "^ip" | cut -d" " -f 1`

modprobe ip_masq_ftp

modprobe ip_masq_user

echo "Module Chargé"

#partage de connexion

echo 1 > /proc/sys/net/ipv4/ip_forward

#autorise le reseau a envoye des donnees sur internet

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

echo "Partage de connexion actif sans firewall"

```

Le fichier /etc/init.d/parefeu 

```
#!/sbin/runscript

start() {

   ebegin "Starting firewall"

   if [ -e /etc/conf.d/firewall.start ]

   then

           source /etc/conf.d/firewall.start

   fi

   eend $? "Failed to start firewal."

}

stop() {

   ebegin "Stopping firewall"

   # to /etc/conf.d/firewall.stop

   if [ -e /etc/conf.d/firewall.stop ]

   then

      source /etc/conf.d/firewall.stop

   fi

   eend $? "Failed to stop firewall."

}

```

Ce fichier permet d'activer les régles au démarrage.

Pour cela saisir:

# rc-update add parefeu default

Sinon, il existe aussi une solution graphique qui est firestarter qui fonctionne trés bien:

# emerge firestarter

11. Messagerie instantanée

11.1 Installation et configuration de jabber

# USE="-ipv6" emerge jabberd

Ouvrir le fichier /etc/multiple.xml et modifier la ligne :

<host> <jabberd:cmdline flag="h">localhost</jabberd:cmdline> </host>

en remplaçant localhost par votre nom de domaine (jabber.masociete.com par exemple), ou par l'adresse IP de votre serveur Jabber (déconseillé). Si vous créer un serveur jabber interne, sans lien avec internet, vous pouvez commenter cette ligne :

<update> <jabberd:cmdline flag="h">localhost</jabberd:cmdline> </update>

C'est la commande permettant de contrôler automatiquement la présence de mise à jour sur le serveur jabber.org. Configurer alors le répertoire destiné à stocker les fichiers de profils des utilisateurs :

Un tutoriel en français http://www.gadaud.org/fabrice/jabber/tutoriel/

11.2 Installation et configuration de jabberd2

C'est cette version qui est installée sur mon serveur  :Wink: 

Tout d'abord il faut démasquer le paquet:

# echo net-im/jabberd >> /etc/portage/package.keywords

# emerge jabberd

Pour configurer le serveur:

Définir le nom de l'hote dans /etc/jabberd/c2s.xml et /etc/jabberd/sm.xml

```

<id>frogdev.dyndns.org</id>
```

Configurer Mysql pour la gestion des utilisateurs

/usr/share/doc/jabberd-2.0.9/tools/db-setup.mysql.gz contient un script pour créer la base

```
--

-- This is the required schema for MySQL. Load this into the database

-- using the mysql interactive terminal:

--

--     mysql> \. db-setup.mysql

--

CREATE DATABASE jabberd2;

USE jabberd2;

--

-- c2s authentication/registration table

--

CREATE TABLE `authreg` (

    `username` TEXT, KEY `username` (`username`(255)),

    `realm` TINYTEXT, KEY `realm` (`realm`(255)),

    `password` TINYTEXT,

    `token` VARCHAR(10),

    `sequence` INT,

    `hash` VARCHAR(40) );

--

-- Session manager tables 

--

--

-- Active (seen) users

-- Used by: core

--

CREATE TABLE `active` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `time` INT );

--

-- Logout times

-- Used by: mod_iq_last

--

CREATE TABLE `logout` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `time` INT );

--

-- Roster items

-- Used by: mod_roster

--

CREATE TABLE `roster-items` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `jid` TEXT,

    `name` TEXT,

    `to` TINYINT,

    `from` TINYINT,

    `ask` INT );

--

-- Roster groups

-- Used by: mod_roster

--

CREATE TABLE `roster-groups` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `jid` TEXT,

    `group` TEXT );

--

-- vCard (user profile information)

-- Used by: mod_iq_vcard

--

CREATE TABLE `vcard` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `fn` TEXT,

    `nickname` TEXT,

    `url` TEXT,

    `tel` TEXT,

    `email` TEXT,

    `title` TEXT,

    `role` TEXT,

    `bday` TEXT,

    `desc` TEXT,

    `n-given` TEXT,

    `n-family` TEXT,

    `adr-street` TEXT,

    `adr-extadd` TEXT,

    `adr-locality` TEXT,

    `adr-region` TEXT,

    `adr-pcode` TEXT,

    `adr-country` TEXT,

    `org-orgname` TEXT,

    `org-orgunit` TEXT );

--

-- Offline message queue

-- Used by: mod_offline

--

CREATE TABLE `queue` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `xml` MEDIUMTEXT );

--

-- Private XML storage

-- Used by: mod_iq_private

--

CREATE TABLE `private` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `ns` TEXT,

    `xml` MEDIUMTEXT );

--

-- Message Of The Day (MOTD) messages (announcements)

-- Used by: mod_announce

--

CREATE TABLE `motd-message` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `xml` TEXT );

--

-- Times of last MOTD message for each user

-- Used by: mod_announce

--

CREATE TABLE `motd-times` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `time` INT );

--

-- User-published discovery items

-- Used by: mod_disco_publish

--

CREATE TABLE `disco-items` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `jid` TEXT,

    `name` TEXT,

    `node` TEXT );

--

-- Default privacy list

-- Used by: mod_privacy

--

CREATE TABLE `privacy-default` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `default` text );

--

-- Privacy lists

-- Used by: mod_privacy

--

CREATE TABLE `privacy-items` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `list` TEXT,

    `type` TEXT,

    `value` TEXT,

    `deny` TINYINT,

    `order` INT,

    `block` INT );

--

-- Vacation settings

-- Used by: mod_vacation

--

CREATE TABLE `vacation-settings` (

    `collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

    `object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

    `start` INT,

    `end` INT,

    `message` TEXT );

```

Puis créer un utilisateur pour l'acces à cette base

```
    GRANT select,insert,delete,update ON jabberd2.* 

      to jabberd2@localhost IDENTIFIED by 'secret';
```

Remplacer secret par votre mot de passe

Vérifier dans /etc/jabberd/c2s.xml que c'est mysql qui est utilisé:

```

 <authreg>

    <!-- Backend module to use -->

    <module>mysql</module>

    <!-- Registration configuration -->

    <register>

      <!-- Account registration is enabled by default (provided the

           auth/reg module in use supports it). Comment this out to

           disable. -->

      <enable/>

      <!-- Human-readable instructions to be returned to client when

           registration is requested. -->

      <instructions>Entrer un nom et un mot de passe pour vous enregistrer.</instructions>

```

Et vérifier vos paramètres de connexion dans ce même fichier

```

<mysql>

<!-- Database server host and port -->

<host>localhost</host>

<port>3306</port>

<!-- Database name -->

<dbname>jabberd2</dbname>

<!-- Database username and password -->

<user>jabberd2</user>

<pass>secret</pass>

</mysql>

```

Activer le mode SSL

# /etc/jabberd/self-cert.sh

Lancer jabber

# /etc/init.d/jabber start

Activer au demmarage:

# rc-update add jabber default

Votre serveur jabber est disponible   :Very Happy: 

Ma machine fait aussi serveur jabber normalement le serveur est "frogdev.dyndns.org"

Documention du projet: http://jabberd.jabberstudio.org/2/docs/

Et voila c'est finis !!!!

----------

## Trevoke

Nom d'un chien!

BRAVO!

----------

## kopp

Ah ben! Félicitations ! J'ai pas le temps de lire ça ce soir, mais je vais probablement m'y plonger sous peu, il doit y avoir plein de choses qui m'interesseront là dedans! Merci pour le boulot !

----------

## anigel

Ca c'est du HOWTO !

Ca tombe bien, ça va m'éviter une bonne part de rédaction pour mon HOWTO de gestion de parc gentoo  :Wink: 

Merci pour ce chouette document (que j'ai pas lu en entier, je le confesse, trop long compte tenu de l'heure :-p).

----------

## bouleetbil

Merci y a quelques points j'ai eu pas mal de problèmes donc autant tout partager (surtout postfix avec les dns). En plus, en postant tout sur le forum, si un jour je dois le refaire je serais que tout est ici  :Wink: 

----------

## -KuRGaN-

Vraiment bien, merci beaucoup !!

----------

## Tuxifer

Merci pour ce how-to couvrant une bonne partie (la totalité?) de ce qui est communément installé sur un serveur perso !!!   :Laughing: 

EDIT: A rajouter d'urgence dans la liste des liens vers les HOWTO français !

----------

## marvin rouge

 *bouleetbil wrote:*   

> 5. Apache / Php / Mysql
> 
> 5.1 Installation
> 
> # nano -w /etc/make.conf
> ...

 

Attention, ce n'est plus comme ca qu'il faut faire pour PHP : il faut maintenant installer dev-lang/php et non pas mod_php (voir les récentes modifications de l'ensemble apache/php, par exemple ce post et surtout celui la

Sinon, merci bcp pour ce howto  :Smile: 

----------

## zeuss1414

C'est trop de la bombe, ca faisait un moment que je voulais mettre postfix spamassasin et l'antivirus sur mon serveur mais j'avais la flemme et pas le temps de chercher. Merci beaucoup pour ton super HOWTO, ce soir j'attaque postfix  :Smile: 

Edit: Pour le miroir gentoo, ca te prend combien de place ?? et les mise a jour c'est trop long ??

----------

## kwenspc

De la balle, hop je le bookmark car il va sans doute me servir dans 2 semaines ce ptit howto   :Cool: 

(notamment pour dhcp, mirroir gentoo et iptables. Perso pour ftp je trouve proftpd quelque peu "bizarre" parfois dans son fonctionnement, je vais sans doute prendre pureftpd ou un truc comme ça)

----------

## El_Goretto

Hop, ctrl-D  :Smile: 

----------

## yuk159

 *anigel wrote:*   

> Ca tombe bien, ça va m'éviter une bonne part de rédaction pour mon HOWTO de gestion de parc gentoo 

 

RÔoooo pas bô   :Laughing: 

C'est que c'est long a écrire c'est petite bête là et donc merci à tous ceux qui le font ou à ceux que voudraient le faire  :Wink: .

Merci pour le How-to il est dans l'index (merci TGL c'est plus simple quand y'en a pas quarantes d'un coup à mettre à jour)

[edit] qu'est-ce qu'il ya comme merci    :Rolling Eyes: 

----------

## bouleetbil

@ marvin rouge

Pour Php j'avais vu passer cette info dans la liste mais vu que mon installe de Php date un peu. Je m'en suis pas occupé. Si j'ai le temps ce soir je corrige   :Wink: 

@zeuss1414 

Pour un serveur de source, compte 40 Go (Il me semble j'ai supprimé la partition). La premiere synchro est tres longue et apres, il faut  faire régulierement des synchros et bien sur cela dépend de ta connexion, perso avec ma p'tite connexion freebox j'ai arrete cela me prenait 3 ou 4h par nuit et parfois j'avais des times out. A mon avis il faut un serveur dedié.  :Crying or Very sad: 

Tu trouveras ici le minimum requis( le lien est en anglais) http://www.gentoo.org/doc/en/rsync.xml

----------

## ghoti

Tudjuuuu, fameux boulot !

Moi je trouve que ça, ça mériterait un titre de veteran !   :Wink: 

----------

## Trevoke

Oui, ca c'est clair.

TGL, tu passes un mot a un admin?  :Smile: 

Un titre genre "veteran d'honneur" ou quelque chose..  :Smile: 

----------

## bouleetbil

@ marvin rouge

Pour le moment si je ne me trompe pas dev-lang/php est encore masqué en tout cas chez moi même apres emerge sync

```
!!! All ebuilds that could satisfy "dev-lang/php" have been masked.

!!! One of the following masked packages is required to complete your request:

- dev-lang/php-4.3.11-r1 (masked by: ~x86 keyword)

- dev-lang/php-5.0.5-r1 (masked by: ~x86 keyword)

- dev-lang/php-4.4.0-r1 (masked by: ~x86 keyword)

- dev-lang/php-5.0.4-r1 (masked by: ~x86 keyword)
```

Le paquet mod_php existe toujours donc un emerge mod_php devrait installer php que se soit 

```
    

dev-lang/php

dev-php/php

```

Non?  :Question: 

Sinon tes liens m'on envoyé ici : http://svn.gnqs.org/projects/gentoo-php-overlay/file/docs/php-upgrading.html?format=raw qui permet d'installer 

C'est un howto pour installer Php

Et y a aussi un post sur bugzilla pour ces nouveaux ebuilds https://bugs.gentoo.org/show_bug.cgi?id=102649

----------

## marvin rouge

En fait, dans ce post, on peut lire ca: *Quote:*   

> At the heart of these packages is the new dev-lang/php package (which
> 
> will replace the existing dev-php/php, dev-php/php-cgi, and
> 
> dev-php/mod_php packages), and the new dev-php4 and dev-php5 categories
> ...

 

Donc au final, le paquet dev-lang/php va tout remplacer: dev-php/php, dev-php/php-cgi, et dev-php/mod_php. Et a priori, en janvier 2006 la migration (qui est accessible maintenant) sera complète.

Effectivement, je n'avais pas fait attention mais pour l'instant c'est ~arch.

J'etais peut etre un peu hatif sur ce coup la ...

----------

## bouleetbil

Ok c'est bon à savoir

----------

## bouleetbil

La mise en place d'un serveur jabber est fini.

Pour info j'ai mis à jour apache, et les fichier .htaccess ne sont pas pris en compte par défaut, il faut modifier /etc/apache2/vhosts.d/00_default_vhost.conf pour qu'il ressemble à cela.

Il faut faire cela pour tous les hotes  :Wink:  

```

 <Directory "/var/www/localhost/htdocs">

        #

        # Possible values for the Options directive are "None", "All",

        # or any combination of:

        #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

        #

        # Note that "MultiViews" must be named *explicitly* --- "Options All"

        # doesn't give it to you.

        #

        # The Options directive is both complicated and important.  Please see

        # http://httpd.apache.org/docs-2.0/mod/core.html#options

        # for more information.

        #

        Options Indexes FollowSymLinks

        #

        # AllowOverride controls what directives may be placed in .htaccess files.

        # It can be "All", "None", or any combination of the keywords:

        #   Options FileInfo AuthConfig Limit

        #

        AllowOverride All

        #

        # Controls who can get stuff from this server.

        #

        #Order allow,deny

        #Allow from all

      <IfModule mod_access.c>

            Order allow,deny

            Allow from all

          </IfModule>

    </Directory>

```

----------

