How-To eGroupWare 1.2 + Postfix + Courier-imap + Fetchmail +... SpamAssassin + Amavisd-new + ClamAV + Apache2 + PHP5 +...

Transcription

How-To eGroupWare 1.2 + Postfix + Courier-imap + Fetchmail +... SpamAssassin + Amavisd-new + ClamAV + Apache2 + PHP5 +...
How-To eGroupWare 1.2 + Postfix + Courier-imap + Fetchmail + VSFTPd + MySQL +
SpamAssassin + Amavisd-new + ClamAV + Apache2 + PHP5 + Samba3 sur Debian 3.1 dite
« Sarge »
Documentation distribuée sous une double licence GNU GPL et GFDL.
PDF : http://miguelmary.free.fr/howto/how-to-egroupware12.pdf
Fichiers de configuration : http://miguelmary.free.fr/howto/files/
Todo :
–
–
–
–
–
Intégration de SSL à Apache2 (pour sécuriser les connexions HTTP)
Amélioration de la configuration de SpamAssassin avec Pyzor, Razor et DCC
Mise en oeuvre d'un RAID1 logiciel (mirroir) à l'installation
Sécurisation du serveur avec un onduleur (gestion logicielle avec NUT)
Configuration d'un client sous GNU/Linux (Kontact) et MS-Windows (Outlook + eGWOSync)
Changelog :
Version 0.8
14/10/2006
Version 0.7
29/05/2006
Version 0.4
Version 0.3
Version 0.2
Version 0.1
17/05/2006
15/05/2006
13/05/2006
10/05/2006
-Amélioration de l'étude de cas (plus concrète)
-Suppression du filtrage anti-spam par Amavis/Postfix :
procmail étant plus efficace
-Amélioration de la configuration de Postfix :
utilisation des fonctions de filtrage natives
-Suppression du projet de mise en oeuvre d'OpenLDAP
(cela fera l'objet d'un autre document)
-Suppression du projet de mise en oeuvre d'une solution
de haute disponibilité (en dehors de l'étude de cas)
-Modification de Amavisd/Procmail : ce n'est plus
procmail qu'il filtre avec SpamAssassin mais Amavis
-Amélioration de l'étude de cas (plus concrète)
-Ajout du Chapitre sur SaMBa3 entant que contrôleur
de domaine et serveur de fichiers
-Ajout du Chapitre sur la sauvegarde, la restauration et
la mise à jour d'eGroupWare
-Amélioration de la mise en page
-Suppression de Webmin. Procédure d'install Debian.
-Première publication. Intégration de quelques images
-Intégration de Webmin et sécurisation du serveur
-Création du premier jet
Introduction
Ne trouvant pas mon bonheur sur le net, j'ai décidé de créer ma propre documentation destinée à la
communauté de l'OpenSource et du logiciel libre. En espérant que cela profite à chacun (souhaitant
mettre en oeuvre simplement et efficacement un Groupware « Echange-like » ou « Domino-like ») !
Mes choix ?
–
–
–
–
–
–
–
–
–
–
–
–
eGroupWare 1.2.x (dernière version au moment de l'écriture de ce document) : parce que c'est la
solution la plus prometteuse à mon goût : plus flexible/paramétrable que Kolab, plus
joli/fonctionnel que OpenGroupware, plus simple à installer/gérer que Open-XChange et enfin
plus « open » que Zimbra ou Hula. Il manque à ce jour encore des connecteurs stables pour les
outils du monde Windows/Mac et les PDA mais je pense que très bientôt les protocoles SyncML
et XML-RPC sauront donner ces lettres de gloire à eGroupWare.
Autre argument : projet allemand. Comme GNU/Linux Debian ou Novell SuSE ou... Kolab ! Hé
oui, nos amis Allemands font du bon boulot dans le libre : gage de qualité, donc.
Postfix : MTA de référence aujourd'hui qui a su supplanter aisément son aîné tout troué de
Sendmail. Licence plus « open » que celle de qmail et mieux documenté qu'Exim4.
Courier-imap : serveur IMAP... voilà ! J'aime mieux que Cyrus (c'est très subjectif, je sais).
Fetchmail : client POP/IMAP de référence très simple et paramétrable à souhait.
VSFTPd : configuration rapide et simplissime dans un seul fichier de conf.
MySQL : Non pas que je ne veuille pas utiliser MS-SQL Server ou Oracle... mais bon ! Le
principe du Groupware peu cher s'envolerait un peu... je ne dénigre pas PostgreSQL mais je le
connais moins, alors j'opte pour la valeur sûre.
SpamAssassin/ClamAV : THE couple pour dormir tranquille : byebye les virus que j'aimais,
l'entracte est terminée ! Byebye au revoir à jamais les spams de toute beauté... beautéééé.
Apache 2 : Bah oui, il fallait bien laisser un peu reposer Apache 1.3, il a bien fait son boulot.
PHP 5 : Haaaaaa là c'est obligatoire si l'on veut utiliser la synchronisation avec SyncML.
SaMBa 3 : il n'y a pas d'équivalent dans sa catégorie et de plus il le fait bien... son travail !
Debian : Non mais, y en a encore qui installent des serveurs sous Mandriva ou Fedora ? Debian
c'est la sécurité, la maturité et surtout la pérennité.
Sarge : Pour un serveur en production je préfère quand même goûter la saveur de la stabilité !
NB : cette documentation traite d'une mise en oeuvre sur un petit réseau et peut être adaptée à une
TPE/TPI ou une PME/PMI de moins de 100 utilisateurs. Au delà de ce nombre, il est préférable
d'envisager l'utilisation d'OpenLDAP pour la centralisation des comptes POSIX-IMAP-SAMBAeGroupWare.
Etude de cas
Je suis le gérant de la société que je viens de monter. Elle s'appelle SUPERBOITE.
J'ai un budget de 15000 € pour acheter mon matériel informatique et les licences associées.
J'utiliserai principalement des outils du monde libre car je n'en entends que du bien et que c'est
gratuit : Firefox 1.5 pour la navigation, OpenOffice.Org2 pour la bureautique, Gaim 2.0 pour la
messagerie instantanée, NVU/The Gimp/FileZilla pour la gestion de notre site Web :
www.superboite.com (hébergée chez Amen.fr / Pack Baby pour 39 € HT / mois + nom de domaine
pour 12 € HT / an).
Il me faut un outil pour envoyer et recevoir mes emails de manière sécurisée et travailler de manière
collaborative en agence, depuis la maison, chez le client.... bref n'importe où où je puisse trouver un
accès Internet. Je dois pouvoir centraliser les contacts et les RDV de mes collaborateurs. Je dois
aussi pouvoir diffuser des communiqués internes et partager/stocker/sauvegarder mes fichiers.
Il me faut une interface d'utilisation et d'administration simple et intuitive.
L'outil doit être stable et facilement sauvegardable/restaurable/réinstallable/redéployable (vive la
France et LE français).
J'ai un fournisseur d'accès qui me donne une adresse IP dynamique publique (Orange.fr). Mon nom
de domaine et mes e-mails sont gérés par Amen.fr (sous la forme [email protected])
J'ai un modem/routeur/firewall/VPN/Wifi de marque Bewan qui partage cet accès Internet à mon
réseau et qui délivre les baux DHCP avec DNS et tout le toutim.
J'ai un ordinateur assemblé qui va me servir de serveur de travail collaboratif. Je n'ai pas acheté de
matériel exotique : j'ai vérifié qu'il ne soit pas incompatible « linux ». Il m'a coûté dans les 800 €
HT.
Je ne veux pas que mon serveur de mail local soit mon serveur de réception de mails. Je veux que ce
soit Amen.fr qui recoivent tous mes mails vers superboite.com et mon serveur de mail local ira les
chercher dessus : c'est plus sûr !
Ci-dessous, un récapitulatif de mon besoin matériel/logiciel :
Machine
Nom du poste
Nom
Utilisateur
Moniteur
Boitier
Processeur
RAM
HD
Optique
Système
Serveur
debsrv
moi / root
Aucun
Antec/500
W
Pentium 4 3.0
Ghz
1024 PC3200
2x250 Go (raid 1) cédérom
Debian Sarge
PC Secretariat
secretariat
Claire Chazal
LCD 17''
Asus PE-1
Celeron 2.8 Ghz
512 PC3200
80 Go SataII
Graveur Combo Windows XP
PC Accueil
accueil
Catherine
Laborde
LCD 17''
Asus PE-1
Celeron 2.8 Ghz
512 PC3200
80 Go SataII
Graveur Combo Windows XP
PC Com1
com1
Franck Dubosc LCD 17''
Asus PE-1
Celeron 2.8 Ghz
512 PC3200
80 Go SataII
Graveur Combo Windows XP
PC Com2
com2
Nicolas
Cantelou
LCD 17''
Asus PE-1
Celeron 2.8 Ghz
512 PC3200
80 Go SataII
Graveur Combo Windows XP
PC Ingé1
inge1
Fred Courant
LCD 17''
Asus PE-1
Celeron 2.8 Ghz
512 PC3200
80 Go SataII
Graveur Combo Windows XP
PC Ingé2
inge2
Jamy
Gournaud
LCD 17''
Asus PE-1
Celeron 2.8 Ghz
512 PC3200
80 Go SataII
Graveur Combo Windows XP
PC Direction
direction
Steven
Spielberg
LCD 17''
Asus PE-1
Celeron 2.8 Ghz
512 PC3200
80 Go SataII
Graveur Combo Windows XP
Imac
PAO/DAO
imac
Jean Dujardin
LCD 17''
NC
CoreDuo 1.83
Ghz
512 PC2-4200
160 Go Sata
SuperDrive
MacOS X
J'ai huit postes à acheter : 1 Mac et 7 PC. J'ai choisi un iMac CoreDuo 17'' et 7 Asus PE-1 équipé de
Celeron 2.8 Ghz – 512 Mo DDR PC3200 Kingston – HD Samsung 80 Go SataII 7200 tr/m 8Mo –
Graveur Combo Samsung CD48x-DVD16x – Lecteur Floppy Sony 3''1/2 1,44 Mo. Les licences de
Windows XP Pro sont fournies avec les PC.
L'iMac servant à la PAO/DAO est mis de côté pour le moment en attendant d'acheter les licences
des logiciels tels que Quark Xpress, Adobe CS et consorts, qui, il faut le dire, ne sont pas données !
Pour les périphériques : 1 imprimante Laser Couleure et une Laser N&B. 1 Scanner A4. Pour les
trois je prendrai de l'Epson (compatible Mac/PC – encres éprouvées – finissions des produits).
1 Installation de Debian Sarge
Pour commencer il vous faudra récupérer (si ce n'est déjà fait) le cédérom d'installation par Internet
de GNU/Linux Debian nommé : netinst. Vous trouverez les liens de téléchargement sur cette page :
http://www.debian.org/CD/netinst/.
Nous téléchargeons celle correspondant à notre aarchitecture (i386) :
http://cdimage.debian.org/debian-cd/3.1_r2/i386/iso-cd/debian-31r2-i386-netinst.iso
Nous la gravons ensuite sur un CD-R et nous démarrons dessus depuis notre PC serveur.
Profitez-en pour paramétrer le Raid1 matériel intégré à la carte-mère. Concernant le RAID sous
linux, ce site vous apportera beaucoup d'informations précieuses :
http://linuxmafia.com/faq/Hardware/sata.html
Au prompt, choisissez :
#expert26
– Choose language : French
– Choisir le pays ou la région : France
– Choisir la disposition du clavier : Clavier de type PC puis Français
– Détecter et monter le cédérom
– Continuer
– Non (pour les paramètres des modules)
– Faut-il démarrer les services de cartes PC : Non
– Continuer
– Continuer (quand le cédérom a été détecté)
– Charger les composants d'installation à partir du cédérom
– Ne rien cocher (sauf si vous souhaitez utiliser des options d'installation supplémentaires)
– Continuer
– Détecter le réseau puis Continuer
– Non (pour les paramètres des modules)
– Faut-il démarrer les services de cartes PC : Non
– Configurer le réseau : choisir eth0 (si bien-sûr elle est détectée !)
– Faut-il configurer le réseau avec DHCP : Non
– Indiquer l'adresse IP : 192.168.1.2
– Indiquer le masque : 255.255.255.0
– Indiquer l'adresse de la passerelle : 192.168.1.1
– Indiquer les adresses des serveurs de noms : 192.168.1.1
– Les informations suivantes sont-elles correctes : Oui
– Nom de la machine : debsrv
– Domaine : superboite.com
– Détecter le matériel
– Non (pour les paramètres des modules)
– Faut-il démarrer les services de cartes PC : Non
– Continuer
– Partitionner les diques avec l'outil partman
– Modifier manuellement la table des partitions
– Le raid matériel ayant été configuré, il ne reste plus qu'à définir une politique de partitionnement
censée. Pour la racine, nous attribuons 5 Go, pour /var 20 Go, pour /home 224 Go et 1Go pour la
partition de swap
– Terminer le partitionnement et appliquer les changements
– Faut-il appliquer les changements sur les disques : Oui
– Installer le système de base
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
(Pendant la procédure d'installation choisir) Kernel-image-2.6.8-2-386
Installer le programme de démarrage GRUB
Installer le programme de démarrage GRUB sur le secteur d'amorçage : Oui
Terminer l'installation (récupérer le cédérom ejecté)
Continuer (NB : A ce moment l'ordinateur redémarre puis la procédure reprend...)
Paramétrer les paramètres dépendant de la langue
Configurer le fuseau horaire : Non puis Europe/Paris
Ces informations sont-elles correctes : Oui
Créer les utilisateurs et les mots de passe
Faut-il activer les mots de passe cachés : Oui
Indiquer le mot de passe de root 2 fois de suite : rootpasswd
Créer un compte utilisateur ordinaire
Nom du compte : moi / Login : moi / password : moipasswd
Définir le nom d'hôte du système : debsrv.superboite.com
Configurer l'outil Debian de gestion des paquets : choisir HTTP puis Stable puis Oui (pour les
logiciels non libres) puis France puis le premier mirroir qui vient !
OK (pas de proxy pour sortir sur l'Internet)
Faut-il ajouter une autre source pour apt : Non
Faut-il utiliser les mises à jour de sécurité : Oui
Choisir et installer des paquets : ne rien cocher puis OK
Valider tous les choix par défaut lorsque Debconf se manifeste
Installer les paramètres dépendant de la langue
Configurer l'agent de transport de courriel
Terminer la configuration du système de base : OK !
Vous vous retrouvez devant un joli prompt qui vous demande votre login : rentrez 'root' puis son
mot de passe : 'rootpasswd'. Toutes les opérations qui suivent se feront sous l'identité de cet
utilisateur.
- Quelques réglages
Si vous souhaitez revenir sur certains de vos derniers réglages, lancez :
#base-config
Si vous vous êtes trompé dans vos paramètres réseau :
#dpkg-reconfigure etherconf
Si vous avez un problème de langues, lancez :
#dpkg-reconfigure locales
Si vous avez un problème de clavier (qwerty au lieu de azerty par exemple), lancez :
#dpkg-reconfigure console-data
- Ajout de logiciels supplémentaires (nécessaires pour notre confort personnel et pour ClamAV) :
#apt-get update
#apt-get upgrade -y
#apt-get install less vim zip unzip bzip2 deborphan unrar zoo unzoo lha arj arc lzop ncompress
cpio
- Ajout de sources supplémentaires dans le fichier /etc/apt/sources.list :
#vi /etc/apt/sources.list
Rajouter la ligne suivante :
deb http://www.backports.org/debian/ sarge-backports main
Enregistrez et quittez. NB : les backports vont nous permettre de récupérer php5. Puis lancez :
#apt-get update
Cela va mettre à jour vos sources avec les backports.
- Ajout de logiciels en provenance des backports. Créez le fichier /etc/apt/preferences :
#vi /etc/apt/preferences
Ajoutez ces lignes :
Package: *
Pin: release a=sarge-backports
Pin-Priority: 200
Package: php5
Pin: release a=sarge-backports
Pin-Priority: 999
Package: php-imap
Pin: release a=sarge-backports
Pin-Priority: 999
Enregistrez et quittez.
- Suppression des logiciels inutiles :
#apt-get remove - -purge ipchains lpr nvi ipmasqadm pppoe pppoeconf ppp pppconfig exim4
#update-inetd - -disable discard,daytime,time,ident
- Recherche et suppression des fichiers « orphelins » :
#orphaner
Supprimez tous les fichiers trouvés.
- Vérifier nom FQDN dans /etc/hosts, il doit ressembler à ceci :
127.0.0.1
localhost.superboite.com localhost
192.168.1.2 debsrv.superboite.com
debsrv
- Fichier de processus personnels
Créer un script 'rc.local' pour le lancement d'actions au démarrage du système. Nous l'utiliserons
plus tard.
#vi /etc/init.d/local
Remplir le fichier avec ceci :
#!/bin/sh
Enregistrez et quittez.
Taper ensuite les commandes suivantes :
#chmod 755 /etc/init.d/local
#update-rc.d local start 99 2 3 4 5 .
#mkdir /etc/rc.d/
#ln -s /etc/init.d/local /etc/rc.d/rc.local
- Modification de /etc/crontab pour ne pas recevoir les informations de chaque tâche par e-mail
#vi /etc/crontab
Rajoutez à chaque ligne la destination des résultats des commandes (>> /dev/null 2>&1) comme
ceci :
25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily >> /dev/null 2>&1
Enregistrez et quittez.
- Modifications du fichier /etc/fstab afin d'activer les ACLs POSIX étendues sur nos systèmes de
fichiers (pour une utilisation ultérieure avec SaMBa)
#vi /etc/fstab
Modifiez le fichier afin qu'il ressemble à ceci (adaptez en fonction de vos périphériques) :
/dev/sda1
/
/dev/sda2
swap
/dev/sda3
/var
/dev/sda4
/home
proc
/proc
/dev/fd0
/floppy
/dev/cdrom /cdrom
Enregistrez et quittez.
ext3 acl,user_xattr,errors=remount-ro
swap sw
ext3 acl,user_xattr,defaults
ext3 acl,user_xattr,defaults
proc defaults
auto user,noauto
0
iso9660
ro,user,noauto
0
0
0
0
0
0
0
0
1
0
0
0
0
NB : Il faudra prendre le temps de redémarrer votre ordinateur pour prendre en compte les
modifications sur tous les systèmes de fichier !
2 Installation des logiciels
Nous allons maintenant installer ce qui va servir de socle à eGroupWare.
#apt-get install apache2 php5 mysql-server-4.1 php5-mysql php5-imap php-pear php5-gd
postfix courier-imap fetchmail spamassassin amavisd-new clamav clamav-daemon clamavfreshclam vsftpd samba acl rsync
Et là vous répondez calmement à la pelleté de question que Debconf vous pose :
-question samba1 : superboite.com (nom du domaine SaMBa)
-question samba2 : oui (chiffrer les mots de passe)
-question samba3 : non (pas de WINS par DHCP)
-question samba4 : démons (lancement de samba)
-question samba5 : oui (créer une base de données pour les infos SaMBa)
-question clamav1 : Mise à jour de la base de données des virus = démon
-question clamav2 : choix d'un miroir proche de chez vous : db.fr.clamav.net
-question clamav3 : non (ne pas passer par un proxy)
-question clamav4 : oui (il faut notifier clamd des mises à jour)
-question courier-base1: non
-question courier-base2 : oui (installer libc-client sans gestion des Maildir)
-info mysql-server : ok
-question postfix1 : type Internet par FAI
-question postfix2 : rediriger mails vers compte user créé lors de l'install
-question postfix3 : debsrv.superboite.com
-question postfix4 : smtp.wanadoo.fr
-question postfix5 : ok par défaut
-question postfix6 : oui (forcer la mise à jour synchronisée de la file d'attente)
Téléchargement et décompression de eGroupWare 1.2-* :
#wget http://ovh.dl.sourceforge.net/sourceforge/egroupware/eGroupWare-1.2-1.tar.gz
#wget http://ovh.dl.sourceforge.net/sourceforge/egroupware/eGroupWare-contrib-1.2-1.tar.gz
#tar xvfz eGroupWare-1.2-1.tar.gz -C /var/www/
#tar xvfz eGroupWare-contrib*.tar.gz
#mv egroupware/* /var/www/egroupware/
3 Apache2 et PHP5
Préparons l'arrivée d'eGroupWare avec Apache et PHP.
Modifications du fichier php.ini :
#vi /etc/php5/apache2/php.ini
Remplacer les variables d'origine par les suivantes :
(...)
max_execution_time = 30
max_input_time = 60
memory_limit = 1024M
mbstring.func_overload = 7
post_max_size = 1020M
upload_max_filesize = 1018M
safe_mode = On
(...)
Enregistrez et quittez.
Relancez Apache.
#/etc/init.d/apache2 restart
Lancer l'installation des softs « pear » (nécessaires pour la synchronisation avec le protocole
SyncML) :
#pear install log
Did not download optional dependencies: pear/DB, pear/MDB2, use --alldeps to download
automatically
pear/Log can optionally use package "pear/DB" (version >= 1.3)
pear/Log can optionally use package "pear/MDB2" (version >= 2.0.0RC1)
pear/Log can optionally use PHP extension "sqlite"
downloading Log-1.9.5.tgz ...
Starting to download Log-1.9.5.tgz (37,663 bytes)
..........done: 37,663 bytes
install ok: channel://pear.php.net/Log-1.9.5
Donner enfin les droits au serveur Web d'accéder comme il faut au dossier eGroupWare.
Créons dans la foulée des dossiers dont nous aurons besoin un peu plus loin.
#chown -R www-data.www-data /var/www/egroupware/
#mkdir /var/egwfiles
#mkdir /backup
#chown -R www-data.www-data /var/egwfiles
#chown -R www-data.www-data /backup
Vous pouvez aussi choisir de supprimer des applications eGoupWare dont vous savez déjà que vous
n'en aurez pas l'utilité (chez moi comic, browser ou jinn dont inutiles par exemple)
#cd /var/www/egroupware
#rm -rf browser/
#rm -rf comic/
#rm -rf jinn/
...
4 Postfix
Modifions un tout petit peu (sic) les paramètres de Postfx.
#vi /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
setgid_group = postdrop
mail_owner = postfix
append_dot_mydomain = no
delay_warning_time = 4h
myhostname = debsrv.superboite.com
mydomain = superboite.com
masquerade_domains = $mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = debsrv.superboite.com, localhost.superboite.com, localhost, $mydomain
mynetworks = 127.0.0.0/8 192.168.1.0/24
relay_domain = $mydomain
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
relayhost = smtp.wanadoo.fr
# Nous indiquons que les Boîtes e-mail (au format maildir) des utilisateurs seront stockées dans
$HOME/Maildir/
home_mailbox = Maildir/
#Paramètre pour l'intéraction avec Amavis pour le filtrage avec ClamAV :
content_filter = smtp-amavis:[127.0.0.1]:10024
# Sécurisation avancée de Postfix : mécanismes de filtrages internes
smtpd_proxy_ehlo = antispam.securitysage.com
smtp_send_xforward_command = yes
smtpd_client_connection_count_limit=10
disable_vrfy_command = yes
smtpd_etrn_restriction = reject
message_size_limit = 32768000
bounce_size_limit = 65536
header_size_limit = 32768
smtpd_recipient_limit = 128
smtpd_timeout = 180
(...)
(...)
strict_rfc821_envelopes = yes
allow_untrusted_routing = no
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
smtpd_error_sleep_time = 1s
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_recipient_restrictions = permit_mynetworks, check_relay_domains,
reject_unauth_destination, reject_unknown_sender_domain, reject_unknown_recipient_domain,
reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_pipelining,
reject_unverified_sender, reject_unverified_recipient, reject_multi_recipient_bounce,
reject_rhsbl_client blackhole.securitysage.com, reject_rhsbl_sender blackhole.securitysage.com,
reject_rbl_client relays.ordb.org
smtpd_helo_required = yes
smtpd_helo_restrictions =
smtpd_client_restrictions =
smtpd_sender_restrictions =
header_checks = regexp:/etc/postfix/header_checks
body_checks = regexp:/etc/postfix/body_checks
Enregistrez et quittez.
Modifiez ensuite le fichier master.cf pour permettre l'intéraction entre Postfix et l'anti-virus
ClamAV.
#vi /etc/postfix/master.cf
Aller à la fin et rentrer :
# Amavis
smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o
smtp_send_xforward_command=yes -o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o
relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o
smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o
smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o
strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o
smtpd_hard_error_limit=1000
Enregistrez et quittez.
Créez aussi des alias en modifiant le fichier /etc/aliases
#vi /etc/aliases
liste: cchazal, claborde, fdubosc, sspielberg, jdujardin, ncantelou, fcourant, jgourmaud
claire.chazal: cchazal
catherine.laborde: claborde
franck.dubosc: fdubosc
steven.spielberg: sspielberg
jean.dujardin: jdujardin
nicolas.cantelou: ncantelou
frederic.courant: fcourant
jamy.gourmaud: jgourmaud
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: moi
clamav: root
Enregistrez et quittez.
Tapez la commande suivante pour ré-indéxer le fichier /etc/aliases :
#newaliases
De cette manière, quand vous enverrez un e-mail à [email protected], tous vos collaborateurs
recevront cet e-mail. Et tous les e-mails du systèmes arriveront dans la boîte aux lettres électronique
du compte moi.
De plus, si un e-mail est envoyé en interne vers une adresse e-mail publique de type
« prenom.nom », l'alias renverra automatiquement le message vers le compte local de type
« initialeduprenomnom ».
Nous allons aussi les deux fichiers qui vont scanner les en-têtes et les corps de tous les messages
transitant par Postfix, à savoir body_checks et header_checks.
Téléchargez les fichiers body_checks et header_checks depuis mon dépôt et copiez les dans
/etc/postfix :
#cd /etc/postfix
#wget http://miguelmary.free.fr/howto/files/body_checks
#wget http://miguelmary.free.fr/howto/files/header_checks
Maintenant que nos fichiers de scans des corps et des en-têtes de messages sont écris et pris en
compte par Postfix, nous allons les indéxer via la commande postmap :
#postmap /etc/postfix/body_checks
#postmap /etc/postfix/header_checks
Attention ! Il faudra relancer cette commande chaque fois que vous ferez une modification de ces
fichiers ! Les filtres de corps et d'en-têtes de messages sont très puissants... je vous conseille donc
de surveiller régulièrement les logs afin de vérifier si le courrier légitime n'est pas rejeté en masse.
Et vous avez bien entendu le droit de les modifier pour les adapter à votre politique de filtrage
personnel.
Pour vérifier régulièrement si des mails importants ne sont pas rejectés, vous pouvez utiliser la
commande suivante :
#egrep '(reject|error|fatal|panic):' /var/log/mail.log | less
A présent passons au niveau de filtrage supérieur avec Amavis.
/!\ Ne pas redémarrer le serveur Postfix maintenant : au risque de vous faire insulter par le système ! /!\
5 Amavis, ClamAV, SpamAssassin
Configurons à présent notre système sécurité du serveur SMTP.
Ajoutez l'utilisateur clamav au groupe amavis :
#adduser clamav amavis
Modifiez ensuite la configuration d'Amavis :
# vi /etc/amavis/amavisd.conf
(...)
$mydomain = 'superboite.com';
# (no useful default)
$myhostname = 'depsrv.superboite.com'; # fqdn of this host, default by uname(3)
(...)
$forward_method = 'smtp:127.0.0.1:10025'; # where to forward checked mail
$notify_method = $forward_method;
# where to submit notifications
(...)
$max_servers = 5; # number of pre-forked children
(default 2)
$max_requests = 15; # retire a child after that many accepts (default 10)
(...)
# @bypass_virus_checks_acl = qw( . ); # uncomment to DISABLE anti-virus code
@bypass_spam_checks_acl = qw( . ); # uncomment to DISABLE anti-spam code
(...)
$final_virus_destiny
= D_DISCARD; # (defaults to D_BOUNCE)
$final_banned_destiny = D_BOUNCE; # (defaults to D_BOUNCE)
$final_spam_destiny
= D_PASS; # (defaults to D_REJECT)
$final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested
(...)
$warnvirussender = 1; # (defaults to false (undef))
$warnbannedsender = 1; # (defaults to false (undef))
$warnvirusrecip = 1; # (defaults to false (undef))
$warnbannedrecip = 1; # (defaults to false (undef))
(...)
$virus_admin = "postmaster\@$mydomain";
# due to D_DISCARD default
(...)
$virus_quarantine_to = 'virus-quarantine'; # traditional local quarantine
$spam_quarantine_to = undef; #'spam-quarantine';
(...)
$remove_existing_x_scanned_headers = 0; # leave existing X-Virus-Scanned alone
$remove_existing_spam_headers = 0; # remove existing spam headers if
(...)
Enregistrez et quittez.
Modifions à présent SpamAssassin.
#vi /etc/spamassassin/local.cf
rewrite_subject
rewrite_header
required_hits
ok_language
use_bayes
auto_learn
Enregistrez et quittez.
1
Subject *****SPAM*****
3.1
fr en
1
1
#vi /etc/default/spamassassin
(...)
# Change to one to enable spamd
ENABLED=1
(...)
Enregistrez et quittez.
Redémarrons dans la joie et la bonne humeur tout ce petit monde.
#/etc/init.d/amavis restart
#/etc/init.d/clamav-daemon restart
#/etc/init.d/spamassassin restart
#/etc/init.d/postfix restart
Si des insultes vous sautent à la figurent, consultez les logs :
#tail -50 /var/log/syslog | less
Et réglez les problèmes... c'est en anglais mais ça reste compréhensible. Là où il risque fort d'y avoir
des problèmes, c'est au niveau de la configuration d'Amavisd (tout le monde ne parle pas le Perl
malheureusement...) donc relisez attentivement.
Afin de tester l'interception des spams par SpamAssassin, envoyez à l'une de vos adresses le texte
suivant : http://miguelmary.free.fr/howto/files/gtube.txt
Afin de tester l'interception des Virus par ClamAV, envoyez à l'une de vos adresses le fichier suivant
: http://miguelmary.free.fr/howto/files/eicar.txt
6 Courier-IMAP
Bah là il n'y a rien à faire ! Ha si ! Il faut créer les Maildir (boîtes aux lettres) pour chaque utilisateur
du système... la belle affaire.
Pour faire plus simple, étant donné que l'on a pas encore d'utilisateur à part root et moi que nous
n'utiliserons que pour les tâches de maintenance, nous allons modifier le squelette de création des
utilisateurs futurs. Pour cela nous allons mettre nos informations dans le répertoire /etc/skel.
#cd /etc/skel
#maildirmake Maildir
#maildirmake -f envois Maildir
#maildirmake -f brouillons Maildir
#maildirmake -f poubelle Maildir
#maildirmake -f modeles Maildir
#maildirmake -f spam Maildir
Voilà c'est fait ! A présent lorsque chaque utilisateur sera créé, il aura déjà une boîte aux lettres
attitrée prête à servir.
7 Procmail
Procmail est votre ami ! Un ami fidèle qui va répartir vos mails dans les bonnes boîtes et vous aider
à lutter contre le spam via SpamAssassin. Il est préférable de créer un fichier de procmail pour
chaque utilisateur (histoire de modifier dans l'avenir des paramètres pour un ou deux utilisateurs
récalcitrants aux filtrages) plutôt que d'utiliser un procmail général (/etc/procmailrc).
Créez donc un fichier .procmailrc dans /etc/skel et ajoutez du contenu.
#vi /etc/skel/.procmailrc
SHELL=/bin/bash
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR/
LOGFILE=/var/log/procmailrc.log
LOCKFILE=$HOME/lockfile.lock
ASSASSINLOCK=$HOME/assassin.lock
SPAM=$HOME/Maildir/.spam/
TRASH=$HOME/Maildir/.poubelle
VERBOSE=yes
LOGABSTRACT=all
:0
* ^To:.*[email protected]
* < 256000
{
:0c: spamassassin.spamlock
| sa-learn --spam
:0
$SPAM
}
:0
* ^To:.*[email protected]
* < 256000
{
:0c: spamassassin.hamlock
| sa-learn --ham
:0
$TRASH
}
:0fw: $ASSASSINLOCK
| spamc
:0
* ^X-Spam-Flag: YES
$SPAM
Enregistrez et quittez.
Attention, donnez les bons droits d'accès au fichier procmailrc, sinon cela ne fonctionnera pas !
#chmod 600 /etc/skel/.procmailrc
Créez aussi le fichier de logs de procmail.
# touch /var/log/procmailrc.log
# chmod 666 /var/log/procmailrc.log
8 Fetchmail
Fetchmail est un bon pote aussi : il va récupérer les mails qui dorment bien au chaud sur le serveur
de mon provider et il va les distribuer au utilisateurs locaux notamment grâce à l'ami Procmail
paramétré juste au dessus.
#vi /etc/fetchmailrc
set postmaster "moi"
set bouncemail
set daemon 60
poll pop.amen.fr proto pop3
user "[email protected]", with password "12re21", is "cchazal" here;
poll pop.amen.fr proto pop3
user "[email protected]", with password "23ze32", is "claborde" here;
poll pop.amen.fr proto pop3
user "[email protected]", with password "ze54yu", is "fdubosc" here;
(...) # et ainsi de suite... ATTENTION, il faut bien entendu qu'Amen ait créé ces adresses e-mails !
Enregistrez et quittez.
Ce fichier va rapatrier toutes les minutes les fichiers présents sur le serveur pop.provider.com pour
les utilisateurs et va les distribuer dans les boîtes aux lettres (Maildir) des utilisateurs locaux.
Attention avant de redémarrer le service fetchmail, il faut que les utilisateurs aient été créés sous
Linux !
Donnez les bons droits d'accès au fichier fetchmailrc, sinon cela ne fonctionnera pas !
#chmod 600 /etc/fetchmailrc
9 VSFTPd
Lui, il est simple.
Editez le fichier /etc/vsftpd.conf
#vi /etc/vsftpd.conf
Remplissez-le avec ce qui suit.
listen=YES
data_connection_timeout=99999999999
pasv_enable=YES
pasv_promiscuous=YES
port_promiscuous=YES
log_ftp_protocol=YES
ascii_upload_enable=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
#ls_recurse_enable=YES
#secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
Enregistrez et quittez.
Redémarrez le serveur FTP.
#/etc/init.d/vsftpd restart
10 Création des utilisateurs et des groupes
Pour créer vos utilisateurs, rien de plus simple. Un exemple avec l'utilisateur Franck Dubosc :
#adduser fdubosc
Ajout de l'utilisateur fdubosc...
Adding new group `fdubosc' (1001).
Adding new user `fdubosc' (1001) with group `fdubosc'.
Création du répertoire personnel /home/fdubosc.
Copie des fichiers depuis /etc/skel
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Modification des informations relatives à l'utilisateur fdubosc
Entrez la nouvelle valeur ou à Entrer pour conserver la valeur proposée
Nom complet []: Franck Dubosc
No de bureau []: 0563636363
Téléphone professionnel []: 0606060606
Téléphone personnel []: 0563060606
Autre []: rien
Ces informations sont-elles correctes?? [o/N] o
Ce compte possède à présent le droit d'utiliser le serveur IMAP (courier) pour stocker ces e-mail
qu'il reçoit grâce à fetchmail qui les rapatrie et qui les transmet à Postfix ; il peut envoyer les emails en SMTP grâce à Postfix, il peut se connecter au serveur FTP dans son répertoire personnel
(/home/fdubosc) mais il ne peut pas encore se connecter au contrôleur de domaine SaMBa... voir
juste au dessous pour cela !
Créons aussi nos groupes, enfin notre groupe :
#groupadd -g 1000 supergrp
Vérifions qu'il a bien été créé :
#cat /etc/group
Le groupe supergrp devrait apparaître tout en bas du fichier.
Ajoutons à présent nos utilisateurs dans ce groupe (exemple avec Franck Dubosc) :
#adduser fdubosc supergrp
Adding user `fdubosc' to group `supergrp'...
Répétez l'opération pour chaque utilisateur.
Vérifions à présent la bonne conduite des choses :
#cat /etc/group
Le groupe supergrp devrait apparaître tout en bas du fichier avec tous les utilisateurs à l'intérieur !
Et vous pouvez à présent relancer le démon fetchmail afin de commencer à rapatrier vos e-mails.
#/etc/init.d/fetchmail restart
11 SaMBa 3
Toute la configuration de SaMBa tiendra dans un seul fichier : smb.conf
#vi /etc/samba/smb.conf
(...)
[global]
workgroup = superboite.com
null passwords = yes
netbios name = debsrv
server string = SERVEUR SUPERBOITE
(...)
hosts allow = 192.168.0. 127.
(...)
security = user
encrypt passwords = true
(...)
obey pam restrictions = Yes
passdb backend = tdbsam, guest
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .
(...)
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
(...)
local master = yes
os level = 255
domain master = yes
preferred master = yes
domain logons = yes
(...)
nt acl support = yes
(...)
time server = yes
(...)
logon script = %U.bat
(...)
add machine script = /usr/sbin/useradd -d /dev/null -c 'Machine Account' -s /bin/false -M %u
(...)
dos charset = CP850
unix charset = ISO8859-1
display charset =
case sensitive = no
#============================ Share Definitions==========================
[homes]
comment = Home Directories
browseable = no
writable = yes
create mask = 700
directory mask = 700
(...)
(...)
[netlogon]
comment = Network Logon Service
path = /home/netlogon
writable = no
browseable = no
create mask = 0755
directory mask = 0755
[commun]
comment = Partage Public
path = /home/commun
writable = yes
create mask = 2770
directory mask = 2770
(...)
Enregistrez et quittez.
Créer les deux répertoires cités dans le fichier smb.conf juste au dessus :
#mkdir /home/netlogon
#mkdir /home/commun
Attribuons les permissions d'accès nécessaires :
#chown -R root.root /home/netlogon
#chown -R root.supergrp /home/commun
#chmod -R 0755 /home/netlogon
#chmod -R 2770 /home/commun
De cette manière, seul root pourra écrire dans le répertoire Netlogon qui contiendra les scripts de
connexion et tous les utilisateurs du groupe supergrp pourront ajouter, modifier et supprimer des
fichiers et des répertoires dans le répertoire commun.
Il faut à présent créer un script d'ouverture de session pour chaque utilisateur
#vi /home/netlogon/logon.bat
net time \\debsrv /set /yes
net use p: \\debsrv\commun /yes
Enregistrez et quittez.
Traduisez le script au format DOS :
#cat logon.bat | sed "s/$/^M/" | sed "$ s/$/^Z/" > /home/netlogon/fdubosc.bat
Recommencez l'opération pour chaque utilisateur (en remplaçant fdubosc.bat par le
nomdutilisateur.bat).
NB : Comme les ACLs étendues ont été activées, il est possible d'administrer les droits d'accès aux
dossiers et fichiers partagés en étant loggé en administrateur du domaine depuis un poste sous
Windows XP (voir en dessous la manière de créer votre compte administrateur du domaine).
Créons enfin nos utilisateur SaMBa afin de pouvoir s'identifier auprès du serveur.
#smbpasswd -a root
New SMB password: rootsmbpasswd
Retype new SMB password: rootsmbpasswd
Added user root.
Il n'est pas DU TOUT conseillé d'utiliser le même mot de passe pour le compte root UNIX et le
compte root SaMBa... Le compte SaMBa root est à présent administrateur du domaine.
Recommencez l'opération pour tous les utilisateurs de la société (exemple avec Franck Dubosc) :
#smbpasswd -a fdubosc
New SMB password:
Retype new SMB password:
Added user fdubosc.
Par contre, il est vivement conseillé ici d'utiliser les mêmes mots de passe utilisateur pour plus de
commodité.
A présent tout devrait être OK.
Lancer tout de même la commande suivante afin de vérifier que votre fichier smb.conf est valide :
#testparm
Vous pouvez à présent essayer de vous connecter au domaine superboite.com depuis une de vos
stations Windows XP Pro. L'administrateur du domaine est bien entendu root.
Si la connexion puis l'identification (après redémarrage) fonctionnent, vous pouvez commencer la
tournée des popotes et réitérer l'opération sur tous vos postes. S'il y a un problème, essayez de
décrypter le message de Windows.
Si la machine refuse d'intégrer le domaine (cela arrive parfois), rentrez manuellement vos comptes
machines (exemple avec la machine de Franck Dubosc) :
#useradd -s /bin/false -d /dev/null com1$
#smbpasswd -a -m com1$
Nous allons ensuite créer un script que nous allons placer dans /root et que lancerons à intervalles
réguliers via cron :
#vi /root/restartsmb.sh
#!/bin/sh
#relance automatique SAMBA
pidof smbd > /dev/null
if [ $? = 1 ]
then
/etc/init.d/samba stop
/etc/init.d/samba start
echo "reboot du serveur SAMBA......"
fi
Enregistrez et quittez.
Ce script permettra de relancer le serveur SaMBa s'il « tombe ». Rendez le script exécutable et
lancez-le dans une tâche cron.
#chmod +x /root/restartsmb
#vi /etc/crontab
(...)
05 * * * * root /root/restartsmb.sh >> /dev/null 2>&1
Enregistrez et quittez.
12 Sécurisation du serveur
- Sécurisation du serveur MySQL
Attribuer un mot de passe à l'administrateur de MySQL :
#mysqladmin -u root password 'mysqlpasswd'
Restraindre l'accès serveur mysql localement :
#vi /etc/mysql/my.cnf
Modifier la variable suivante :
(...)
bind-address = 127.0.0.1
(...)
________________________________________________________________________________
- Paramétrage des mises à jour automatiques :
Créez le script /root/majsys.sh
#vi /root/majsys.sh
#!/bin/sh
apt-get update && apt-get -y -u upgrade | mail -s "mises a jour serveur DEBSRV"
[email protected]
Enregistrez et quittez.
Rendre le script exécutable.
#chmod +x /root/majsys.sh
Le lancer chaque jour via une tâche cron.
#vi /etc/crontab
Ajouter la ligne suivante :
01 0 * * * root /root/majsys.sh >> /dev/null 2>&1
________________________________________________________________________________
- Sécurisation du serveur SSH :
#vi /etc/ssh/sshd_config
(...)
PermitRootLogin no
AllowUsers moi
(...)
Enregistrez et quittez.
Nous empêchons ainsi root de se connecter. Seul l'utilisateur « moi » pourra accéder au serveur en
SSH.
- Utiliser IPTABLES pour « firewaller » notre serveur :
Modifier le script /etc/rc.d/rc.local et insérer la ligne suivante :
/sbin/iptables-restore < /root/restiptables
Enregistrez et quittez.
Créer un script firewall.
#vi /root/firewall
Et mettez ceci dedans :
#!/bin/sh
#On insère les modules nécessaire
modprobe iptable_mangle
modprobe ipt_REDIRECT
modprobe iptable_nat
modprobe ip_conntrack
modprobe iptable_filter
modprobe ip_tables
modprobe ipt_state
modprobe ipt_LOG
# Nous vidons les chaînes et supprimons d'éventuelles chaînes personnelles :
iptables -F
iptables -X
# Nous les faisons pointer par défaut sur DROP pour que les accès se bloquent
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# On autorise l'interface loopback à communiquer
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# On autorise toutes les nouvelles connexions à sortir
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# On autorise les connexions déjà initiées
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# On autorise la réception de connexions sur les ports 22, 80, 25, 110, 143, 137, 138, 139, 445
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 445 -j ACCEPT
iptables -A INPUT -m state --state NEW -p udp --dport 137 -j ACCEPT
iptables -A INPUT -m state --state NEW -p udp --dport 138 -j ACCEPT
# On rejette tout le reste et on garde des traces...
iptables -A INPUT -m state --state NEW -j DROP
iptables -A INPUT -m limit --limit 1/second --limit-burst 5 -j LOG --log-prefix "iptables, bad
input: "
iptables -A OUTPUT -m limit --limit 1/second --limit-burst 5 -j LOG --log-prefix "iptables, bad
output: "
Enregistrez et quittez.
Rendre le script exécutable et le lancer.
#chmod +x /root/firewall
#/root/firewall
Vérifier que les règles sont passées.
#iptables -L
Sauvegarder le script.
#iptables-save > /root/restiptables
13 eGroupWare 1.2.x
On attaque enfin le vif du sujet :)
A l'heure où j'écris ces lignes, la version d'eGroupWare est la 1.2-2. Les sous-versions suivantes
devraient fonctionner de la même manière. C'est parti !
Lancer la procédure d'installation d'eGroupWare. Dans Firefox, tapez :
http://192.168.1.2/egroupware/setup
Choisissez le Français comme langue (c'est mieux quand même ;) et cliquez sur Démarrage de la
procédure de vérification...
La procédure de vérification ne devrait pas vous taquiner (pas comme ci-dessous ;)
Cliquez sur continuer vers la configuration d'en-tête
Vous tombez sur cet écran là.
Pas de panique, il n'y pas grand chose à modifier ! Les paramètres importants sont juste en dessous :
Identifiant administrateur pour le gestionnaire d'entête : moi
Mot de passe administrateur pour le gestionnaire d'entête : moipasswd
(...)
Domaine : superboite.com
Nom de la base de données : egroupware
Utilisateur de la base de données : moi
Mot de passe d'accès à la base de données : moipasswd
Identifiant de configuration : moi
Mot de passe de configuration : moipasswd
Cliquez ensuite sur Ecrire la configuration puis, à l'écran suivant, sur Continuer.
Vous arrivez sur cette fenêtre.
Dans la partie du haut, loggez-vous en moi.
Vous arrivez enfin sur la dernière partie de la configuration
Ici, la seule chose que vous avez à faire est d'indiquer le mot de passe de l'utilisateur root de
MySQL : mysqlpasswd et de cliquer sur Créer la base de données.
Cliquez ensuite sur Re-vérifier mon installation.
Vous devriez tomber sur cette fenêtre.
Cliquez maintenant sur Installer toutes les applications.
Patientez quelques longues secondes... puis cliquez de nouveau sur Re-vérifier mon installation.
Vous voilà devant cet écran.
On est sur la bonne voie... cliquez maintenant sur Editer la configuration actuelle.
Vous arrivez sur cette fenêtre et c'est là où vous aller rentrer les paramètres les plus importants !
Dans l'onglet Information de chemin, rentez :
Entrez le chemin complet pour les fichiers temporaires:
Entrez le chemin complet pour les fichiers d'utilisateurs et de groupes:
Enter the full path to the backup directory:
Dans l'onglet Informations d'hôte, rentrez :
Entrez le nom de la machine sur laquelle ce serveur s'exécute:
Entrez votre serveur FTP par défaut:
Dans l'onglet Standard mailserver settings, rentrez :
POP/IMAP mail server hostname or IP address*:
Mail server protocol*:
SMTP server hostname or IP address*:
SMTP server port*:
/tmp
/var/egwfiles
/backup
debsrv.superboite.com
debsrv.superboite.com
debsrv.superboite.com
IMAP
debsrv.superboite.com
25
Pour le reste, sauf si vous savez ce que vous faites, ne touchez à rien et cliquez tout en bas de la
page sur Enregistrer.
Vous retrouvez cette fenêtre.
Il ne vous reste plus qu'à aller dans Création du compte administrateur.
Et rentrez dans les champs correspondants, les informations demandées (voir illustration ci-dessous)
Conseil : ré-utilisez le login moi afin de ne pas trop vous ennuyer l'existence...
Une fois l'opération effectuée, cliquez sur Enregistrer.
Admirez le résultat.
Cliquez maintenant sur Revenir à la maison (en haut à gauche).
Vous arrivez enfin sur la fenêtre de login.
Mais ce n'est pas terminé ! Il vous reste à présent à créer vos groupes et utilisateurs, à régler les
droits d'accès à chaque application, à fixer les préférences de ces applications... bref, une bonne
journée en perspective.
Loggez-vous en moi pour paramétrer le groupware. Aller dans Admin puis dans Configuration du
site. Changer les paramètres de cette page en vous inspirant de cette configuration (attention il est
important d'activer xmlrpc si vous souhaitez utiliser la synchronisation avec ce protocole) :
Cliquez sur Sauver pour sauvegarder.
Passer au reste de la configuration... Je ne détaillerai pas en détail ces opérations puisqu'elles
variront en fonction de votre propre configuration, je vous donne cenpandant quelques indications.
- Comptes utilisateurs : les créer mais ne pas attribuer d'ACL ! On le fera avec les groupes. Pour les
noms des comptes, utilisez de préférences ceux données aux comptes UNIX (fdubosc pour Franck
Dubosc par exemple) mais avec l'adresse e-mail publique ([email protected])
- Groupes utilisateurs : créer les groupes en fonction des activités de chacun (commercial, compta,
direction, informatique, rh...), fixer les ACL (les applications utilisées) et ajouter les utilisateurs
dans les groupes correspondants. Décider dors et déjà ici de la politique d'accès aux applications
partagées (Base de connaissances, Calendrier, Carnet d'adresses...etc) en cliquant sur le petit cahier
à côté de chaque application supportant le partage d'informations.
-Applications : ne rien faire (enfin moi je n'ai rien à y faire, si ce n'est régler l'ordre horizontal des
icônes des applications)
- Catégories globales : ajouter les catégories dans lesquelles vous souhaitez « ranger » vos
informations, cela peut-être Communication, clients, prospects, Interne... etc. C'est catégories seront
accessibles depuis n'importe quelle application d'eGroupWare.
- Changer le message de l'écran principal : écran principal (accueil) + écran de connexion (login)
- Préférences par défaut (celles qui seront assignées par défaut à tous les utilisateurs, mais non
imposées) : choix affichage, thèmes...etc. Elles sont à régler par moi dans chaque application.
- Configuration des applications... les unes après les autres... à la main ! Hé oui !
Fixer des préférences par défaut, de cette manière les utilisateurs finaux pourront les modifier au
besoin.
14 Sauvegardes, restaurations et mises à jour
Bien que possédant un système de tolérance de pannes via des disques durs en RAID1, il peut être
nécessaire de sauvegarder régulièrement sa base de données, ses fichiers de configuration, ses
données utilisateur... Il est important, aussi, de pouvoir les restaurer ! Et tout cela nous amène à la
mise à jour, des logiciels généralement et d'eGroupWare en particulier.
Nous considérons que nous avons un disque dur externe branché sur un des ports USB de notre
serveur. Ce disque servira de support de stockage. Il a été identifié comme périphérique /dev/sdb par
le système. Nous avons partitionné et formaté (ext3) ce disque grâce à cfdisk et à mkfs.
Modifions /etc/fstab afin de monter et démonter plus simplement notre nouveau périphérique.
#vi /etc/fstab
/dev/sdb1
/backup
Enregistrez et quittez.
ext3
acl,user_xattr,defaults
0
Créons notre script de sauvegarde (prenez votre souffle c'est un peu long!) :
#vi /root/backup.sh
#!/bin/sh
# Paramétrage des variales
################################
# Chemin des commandes
################################
RSYNC=/usr/bin/rsync
MOUNT=/bin/mount
UMOUNT=/bin/umount
MKDIR=/bin/mkdir
RM=/bin/rm
ECHO=/bin/echo
ETC=/etc
HOME=/home
FIND=/usr/bin/find
MYSQLDUMP=/usr/bin/mysqldump
TAR=/bin/tar
################################
# Volume de destination
################################
DESTVOL=/backup
################################
# Emplacement du fichier de logs + « Aératon » du fichier de logs
################################
LOGS=/root/backup.log
$ECHO - >> $LOGS
(...)
0
(...)
################################
# Options de Rsync
################################
RSYNCOPTIONS="-av –delete"
RSYNCSRC=$HOME/*
RSYNCDEST=$DESTVOL/home_`date +%d-%m-%Y`
################################
# Options de Tar
################################
TAROPTIONS="cvfz"
TARSRC=$ETC
TARDEST=$DESTVOL/etc_`date +%d-%m-%Y`.tgz
################################
# Options de Mysqldump
################################
MYSQLOPTIONS="-u root -pmysqlpasswd"
MYSQLSRC=egroupware
MYSQLDEST=$DESTVOL/dumpsqlegw_`date +%d-%m-%Y`.sql
################################
# Fonction Rsync
################################
lance_rsync()
{
$RSYNC $RSYNCOPTIONS $RSYNCSRC $RSYNCDEST && $ECHO "Synchronisation des
répertoires utilisateurs REUSSIE" >> $LOGS
}
################################
# Fonction Tar
################################
lance_tar()
{
$TAR $TAROPTIONS $TARDEST $TARSRC && $ECHO "Sauvegarde des fichiers de
configuration utilisateurs REUSSIE" >> $LOGS
}
################################
# Fonction MYSQLDUMP
################################
lance_mysqldump()
{
$MYSQLDUMP $MYSQLOPTIONS $MYSQLSRC > $MYSQLDEST && $ECHO
"Sauvegarde de la base de données MySQL EGW REUSSIE" >> $LOGS
}
(...)
(...)
################################
# Lancement de la sauvegarde
################################
$ECHO Debut de la sauvegarde vers $DESTVOL `date +%d/%m/%Y` a `date +%H:%M` >>
$LOGS
if [ -d $DESTVOL ]; then lance_mysqldump && lance_tar && lance_rsync
else
$ECHO "le volume $DESTVOL n'est pas monte : contactez l'administrateur système" >> $LOGS
; exit
fi
###############################
# On supprime les fichiers de plus de 60 jours
###############################
$FIND $DESTVOL/ -type f -mtime +60 -exec rm {} \;
Enregistrez et quittez.
Rendez le script exécutable :
#chmod +x /root/backup.sh
Lancez-le tous les jours à 22h01 :
#vi /etc/crontab
(...)
01 23 * * * root /root/backup.sh >> /dev/null 2>&1
59 23 * * * root /root/resultat_backup.sh >> /dev/null 2>&1
Enregistrez et quittez.
Nous avons rajouté une ligne pour le script resultat_backup.sh kezako ? Tout simplement un script
que nous allons créer pour transmettre le résultat des backups tous les jours (à 23h59) par e-mail...
#vi /root/resultat_backup.sh
#!/bin/sh
tail -4 /root/backup.log | mail -s "Resultat du Backup quotidien" moi
Enregistrez et quittez.
Rendez le script exécutable :
#chmod +x /root/resultat_backup.sh
Vous avez à présent une solution de sauvegarde de vos fichiers de configuration (/etc), de vous
données utilisateurs (/home) et de votre BDD eGroupWare (via Mysqldump). Vous pouvez – et c'est
vivement conseillé – utiliser l'outil de sauvegarde fourni par l'interface Web d'eGroupWare pour
programmer quotidiennement des sauvegarde de votre BDD. L'outil est simple et efficace.
Afin de restaurer vos informations, une simple navigation dans le répertoire /backup vous permettra
de naviguer dans les sauvegardes des répertoires utilisateurs (/home_'date'), avec tar vous pourrez
décompresser le répertoire des fichiers de configuration souhaité (/etc_'date') afin de récupérer un
éventuel fichier de configuration salvateur ! Et enfin, avec la commande mysqldump vous pourrez
(en cas de dernier recours) restaurer votre BDD MySQL egroupware et écraser la base
récalcitrante.
Il peut être intéressant de partager le répertoire /backup avec SaMBa (s'inspirer de la configuration
actuelle) afin d'y accéder uniquement avec le compte administrateur du domaine root. Comme cela
vous pourrez plus 'graphiquement' accéder à vos informations sauvegardées.
Abordons à présent l'aspect «mise à jour» d'eGroupWare, puisque la version actuelle ne fera
qu'évoluer au fil des découvertes/corresctions de Bugs ou d'avancées et d'ajouts de fonctionnalités
logicielles. La procédure est très simple elle aussi.
1- Sauvegardez votre fichier header.inc.php de votre répertoire /var/www/egroupware/
2- Renommez votre répertoire egroupware : mv /var/www/egroupware
/var/www/egroupware_old
3- Installez la nouvelle version d'eGroupWare à partir des sources (voir chapitre 2 : Installation des
logiciels) toujours dans /var/www/
4- Recopiez votre fichier header.inc.php dans /var/www/egroupware
5- Redonnez les bons droits au répertoire : chown -R www-data.www-data
/var/www/egroupware
6- Allez, via Firefox, sur l'adresse http://192.168.1.2/egroupware/setup puis choisissez Mettre à
jour
C'est tout ! La mise à jour est aussi simple que cela.
Concernant le système et les logiciels eux-mêmes, nous avons créé précédemment (dans le chapitre
12 Sécurisation du serveur) un script (/root/majsys.sh) permettant de mettre à jour quotidiennement
tous les logiciels non à jour ainsi que le système Debian.
Annexe A : Récapitulatif des comptes utilisateurs
Il peut être utile de rappeler les identifiants et mots de passe des utilisateurs selon le service choisi.
C'est ce que fait le tableau ci-après.
Identifiant Unix-Egw /
Service
UNIX (FTP/IMAP/SSH)
EgroupWare
SaMBa
rootsmbpasswd
MySQL
Amen.fr
Adresse e-mail publique
root
rootpasswd
mysqlpasswd
moi
moipasswd
moipasswd
cchazal
cchazalpasswd
cchazalpasswd
cchazalpasswd
12re21
[email protected]
claborde
clabordepasswd
clabordepasswd
clabordepasswd
23ze32
[email protected]
fdubosc
fduboscpasswd
fduboscpasswd
fduboscpasswd
ze54yu
[email protected]
ncantelou
ncanteloupasswd
ncanteloupasswd
ncanteloupasswd
ds87tr
[email protected]
fcourant
fcourantpasswd
fcourantpasswd
fcourantpasswd
24fg98
[email protected]
jgournaud
jgourmaudpasswd
jgourmaudpasswd
jgourmaudpasswd
re87ui
[email protected]
jdujardin
jdujardinpasswd
jdujardinpasswd
jdujardinpasswd
98ty12
[email protected]
sspielberg
sspielbergpasswd
sspielbergpasswd
sspielbergpasswd
84gt65
[email protected]
moipasswd
Attention ce ne sont bien-sûr pas de bons mots de passe !! Ils sont trop simples à découvrir et
impliquent une mise en danger de vos informations...
Annexe B : Commandes utiles
Un petit lien pour le manuel de vi : http://www.linux-kheops.com/doc/redhat50/rh5f92.htm
16 Sources et Remerciements
Alors dans le désordre, voilà les sites desquels je me suis inspiré :
http://forum.debianfr.org/viewtopic.php?t=2081&start=0&sid=7d7c4d5e8e1b2e9da810555e8a536bc9
http://lea-linux.org/cached/index/Leapro-pro_appli-eGroupWare.html
http://www.snoopyouaib.com/howto/index.php
http://www.trustonme.net/didactels/174.html
http://us5.samba.org/samba/docs/man/Samba-HOWTO-Collection/
http://vsftpd.beasts.org/vsftpd_conf.html
http://www.securitysage.com/antispam/steps.html
Je tiens aussi à remercier Nicolas Bizeul (http://www.bizeul.net) et Olivier Staquet pour leur soutien
technique et moral. Merci également à toute la communauté des forums ixus.net.
Pages construites à l'aide de NeoOffice 2.0 Alpha4, Seashore 0.1.8, PNGCrusher 1.2, Firefox 1.5.0.4, MAMP 1.2.1 et eGroupWare
1.2.1 sur système MacOS X 10.4 dit « Tiger ».