Cacti 0.8.8b Installation Over Active Directory Ubuntu 14.04

Pré-requis

  • Un LAMP
  • Un domaine fonctionnel sous Active Directory

Installation

  • L'installation depuis les paquets permet un paramétrage assez complet (crontab, permissions, binaires…) :

apt-get install php5-ldap libphp-adodb librrd4 php5-cli php5-snmp rrdtool dbconfig-common cacti cacti-spine snmp-mibs-downloader snmp snmpd

  • Répondre aux questions posées :
Mise à jour du php.ini Ok
Server web apache2
Faut-il configurer la base de données de cacti avec dbconfig-common Oui
Mot de passe de l'administrateur de la base de données MySQL_Password
Mot de passe de connexion MySQL pour cacti Cacti_Password
Confirmation du mot de passe Cacti_Password
Configurer la base avec dbconfig-common Oui
  • Pas la peine de se connecter au serveur pour procéder à sa mise à jour.

Mise à jour

Site

cd /usr/src
wget http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz
tar -xzf cacti-0.8.8b.tar.gz
mv /usr/share/cacti/site/ /usr/share/cacti/_site/
mv cacti-0.8.8b /usr/share/cacti/site/
chown www-data:www-data -R /usr/share/cacti/site/{rra,log}

VHost

  • Création du VirtualHost :

cat > /etc/apache2/sites-available/cacti.conf << EOF

<VirtualHost 192.168.1.10:80>

        ServerName              chronos
        ServerAlias             chronos
        Redirect                / https://chronos

        ErrorLog                /var/log/apache2/chronos.log
        CustomLog               /var/log/apache2/chronos.log combined

</VirtualHost>

Alias /cacti /usr/share/cacti/site

<DirectoryMatch /usr/share/cacti/site>
        Options +FollowSymLinks
        AllowOverride None
        order allow,deny
        allow from all

        AddType application/x-httpd-php .php

        php_flag magic_quotes_gpc Off
        php_flag short_open_tag On
        php_flag register_globals Off
        php_flag register_argc_argv On
        php_flag track_vars On
        # this setting is necessary for some locales
        php_value mbstring.func_overload 0
        php_value include_path .

        DirectoryIndex index.php
</DirectoryMatch>

<VirtualHost 192.168.1.10:443>

        ServerName              chronos
        DocumentRoot            /usr/share/cacti/site

        ErrorLog                /var/log/apache2/chronos.log
        CustomLog               /var/log/apache2/chronos.log combined

        Options                 +Indexes +SymlinksIfOwnerMatch
        IndexOptions            NameWidth=* +SuppressDescription

        SSLEngine               on
        SSLCertificateFile      /etc/apache2/ssl/chronos.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/chronos.key

</VirtualHost>
EOF

  • Supprimer les fichiers de configurations (obsolètes) :

a2ensite cacti.conf
rm /etc/apache2/conf-{enabled,available}/cacti.conf
service apache2 restart

Crontab

  • On vérifie que la tâche planifiée est créée pour lancer le script poller.php :

cat /etc/cron.d/cacti

  • On peut vérifier les détails dans le fichier de log :

tailf /var/log/cacti/poller-error.log

Base de données

  • Lancer les commandes pour la configuration de la base de données, saisie des mdp et comptes utilisés par MySQL :

read -e -p "Mot de passe du compte root pour MySQL : " mysqlpass
read -e -p "Nom de la base utilsee pour cacti : " -i "cacti" cactidb
read -e -p "Utilisateur de connexion a la base cacti : " cactiuser
read -e -p "Mot de passe du compte pour la base cacti : " cactipass

  • Sauvegarde, suppression et création de la BDD :

mysql -u root -e "create database _cacti" --password=$mysqlpass
mysqldump -u root --password=$mysqlpass cacti | mysql -u root --password=$mysqlpass -h localhost _cacti
mysql -u root -e "drop database cacti" --password=$mysqlpass
mysql -u root -e "create database cacti" --password=$mysqlpass
mysql cacti < /usr/share/cacti/site/cacti.sql --password=$mysqlpass
mysql -u root -e "GRANT ALL ON $cactidb.* TO $cactiuser@localhost IDENTIFIED BY '$cactipass'" --password=$mysqlpass

  • Modification du fichier de configuration :

sed -i "s,database_default = "cacti",database_default = "${cactidb}" /usr/share/cacti/site/include/config.php
sed -i "s,username = "cactiuser",username = "${cactiuser}",g' /usr/share/cacti/site/include/config.php
sed -i "s,cactiuser,${cactipass},g" /usr/share/cacti/site/include/config.php

PHP

  • Vérifier que les modules nécessaires sont activés :

for i in cgi cli apache2; do cat /etc/php5/$i/php.ini | more; done

SNMP

  • Pour rendre accessible les MIB au travers de SNMP :

cp  /etc/snmp/snmpd.conf{,.ori}
sed -i "s,agentAddress  udp:127.0.0.1:161,agentAddress  udp:0.0.0.0:161,g" /etc/snmp/snmpd.conf
sed -i 's,-V systemonly,,g' /etc/snmp/snmpd.conf
sed -i 's,export MIBS=,export MIBS=ALL,g' /etc/default/snmpd
/etc/init.d/snmpd restart

Connexion à l'interface Web

  • Se connecter à l'adresse http://chronos et répondre au questions :
Cacti Installation Guide Next
New Install Next
Check – OK Finish
Utilisateur admin
Mot de passe admin
  • A la première connexion, l'application force le changement du mot de passe, changer le. Si on attend un peu on peu voir 4 jolis graphes afficher les infos de notre serveur :o)

Settings

General


Path

  • Vérifier que tout est renseigné, en installation manuelle il manque le chemin de la police pour RRDTool Default Font
RRDTool Default Font /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf

Poller


Graph Export


Visual


Authentification

Authentification LDAP

  • Configuration / Settings / Authentication :
Active Directory
General
Authentication Method LDAP Authentification
Special Users
Guest User No User
User Template Admin
LDAP General Settings
Server ldap.domain.tld
Port Standard 389
Port SSL 636
Protocol Version Version3
Encryption None
Referrals Enable
Mode Specific Searching
Distinguished Name (DN) <username>@test.lan
Require Group Membership coché
LDAP Group Settings
Group Distingished Name (DN) cn=cacti-group,ou=Users,dc=test,dc=lan
Group Member Attribute member
Group Member Type Distingished Name
LDAP Specific Search Settings
Search Base ou=Users,dc=test,dc=lan
Search Filter (&(objectclass=user)(objectcategory=user)(userPrincipalName=<username>*))
Search Distingished Name (DN) bind-cacti@test.lan
Search Password Password
LDAP Error: Group DN could not be found to compare
LDAP Search Error: Unable to find users DN

Plugins

Installer et activer un plugin

  • Trois actions sont requises pour installer un plugin, le télécharger, le décompresser et l'activer.
  • Les deux premières se font en ligne de commande :

cd /usr/share/cacti/site/plugins
wget http://docs.cacti.net/_media/mon_plugin.2.0.3.tgz
tar -xzf mon_plugin.2.0.3.tgz

  • La dernière à partir de l'interface d'administration (Console) :
    • Se rendre sur l'onglet Console / Plugin Management
    1. Actions : Install plugin (flèche bleue)
    2. Actions : Enable plugin (flèche verte)

Discovery

  • En ligne de commande :

cd /usr/share/cacti/site/plugins
wget http://docs.cacti.net/_media/plugin:discovery-v1.5-1.tgz
mv plugin:discovery-v1.5-1.tgz discovery-v1.5-1.tgz
tar -xzf discovery-v1.5-1.tgz

  • Activer le plugin et le paramétrer :
    • Console / Settings / Misc
Subnet(s) to scan 192.168.1.0/24
DNS Server 192.168.1.1
Ping Method ICMP
SNMP Communities public
Poller Frequency Every 1 Hour
Start Time for Polling 10
Rerun Data Queries coché
Create Graphs coché
  • Vérifier les droits liés à l'utilisateur :
    • Console / User Management / compteLDAP :
    • Dans Realm Permissions, cocher View Host Auto-Discovery
  • L'onglet discover doit normalement apparaitre :o)

SSO

  • piste : auth_login.php cacti ldap sso

Sources

Debug

  • En cas de problème de connexion avec la base de données :

dpkg-reconfigure cacti

  • Pour info, le répertoire des logs se trouve dans :

/var/log/cacti/




Nagios 3.5 Quick Installation Over Active Directory Ubuntu 14.04

Pré requis

  • Un LAMP et quelques services réseaux à surveiller (SSH, DNS, DHCP, SMTP, IMAP,…)
  • Un compte Active Directory bind-nagios pour se connecter au domaine
  • Un groupe Nagios-Users dans l'OU Users et des membres dans ce groupe

Installation par les dépots

apt-get install nagios3 nagios3-doc nagios-plugins nagios-plugins-extra

Nom du serveur (SMTP) nagios.test.lan
Mot de passe du compte nagiosadmin password

Configuration

Nagios

  • On rationalise l'installation en renommant les fichiers de configuration et on déplace le répertoire plugins.

mv /etc/nagios3/conf.d/contacts_nagios2.cfg /etc/nagios3/conf.d/contacts.cfg
mv /etc/nagios3/conf.d/generic-host_nagios2.cfg /etc/nagios3/conf.d/host-generic.cfg
mv /etc/nagios3/conf.d/generic-service_nagios2.cfg /etc/nagios3/conf.d/services-generic.cfg
mv /etc/nagios3/conf.d/services_nagios2.cfg /etc/nagios3/conf.d/services.cfg
mv /etc/nagios3/conf.d/hostgroups_nagios2.cfg /etc/nagios3/conf.d/hostgroups.cfg
mv /etc/nagios3/conf.d/extinfo_nagios2.cfg /etc/nagios3/conf.d/extinfo.cfg
mv /etc/nagios3/conf.d/localhost_nagios2.cfg /etc/nagios3/conf.d/localhost.cfg
mv /etc/nagios3/conf.d/timeperiods_nagios2.cfg /etc/nagios3/conf.d/timeperiods.cfg

mv /etc/nagios-plugins/ /etc/nagios3/plugins
sed -i 's,cfg_dir=/etc/nagios-plugins/config,cfg_dir=/etc/nagios3/plugins/config,g' /etc/nagios3/nagios.cfg

  • Avec un VirtualHost et si l'on veut récupérer la feuille de style et les fonctionnalités CGI :

sed -i 's,url_html_path=/nagios3,url_html_path=/,g' /etc/nagios3/cgi.cfg

Apache2

  • Création du fichier de configuration pour le VirtualHost :

vi /etc/apache2/sites-available/nagios.conf

<VirtualHost 192.168.1.10:80>

        ServerName              nagios
        ServerAlias             nagios
        Redirect                / https://nagios

</VirtualHost>

<VirtualHost 192.168.1.10:443>
        ServerName              nagios
        DocumentRoot            /usr/share/nagios3/htdocs
        
        ErrorLog                /var/log/apache2/nagios.log
        CustomLog               /var/log/apache2/nagios.log combined

        Options                 +Indexes +SymlinksIfOwnerMatch
        IndexOptions            NameWidth=* +SuppressDescription

        SSLEngine               on
        SSLCertificateFile      /etc/apache2/ssl/nagios.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/nagios.key

        ScriptAlias             /nagios3/cgi-bin /usr/lib/cgi-bin/nagios3
        Alias                   /stylesheets /etc/nagios3/stylesheets

        <DirectoryMatch (/usr/share/nagios3/htdocs|/usr/lib/cgi-bin/nagios3|/etc/nagios3/stylesheets)>

                DirectoryIndex          index.php index.html
                AllowOverride           AuthConfig
                Order                   Allow,Deny
                Allow From              All

                AuthType Kerberos
                KrbMethodNegotiate      On
                KrbMethodK5Passwd       On
                KrbAuthRealms           TEST.LAN
                Krb5KeyTab              /etc/apache2/ssl/nagios.keytab
                require                 valid-user
                AuthLDAPURL             "ldap://dc1.test.lan:3268 dc2.test.lan:3268/dc=test,dc=lan?userPrincipalName?sub" NONE
                AuthLDAPBindDN          bind-nagios@test.lan
                AuthLDAPBindPassword    "Password"
                require ldap-group      CN=Nagios_Users,OU=Users,DC=test,DC=lan


        </DirectoryMatch>

        <Directory /usr/share/nagios3/htdocs>
                Options                 +ExecCGI
        </Directory>
</VirtualHost>

  • On supprime le fichier de configuration pour Apache :

rm /etc/nagios3/apache2.conf
rm /etc/apache2/conf-{available,enabled}/nagios3.conf

  • Activation du VHost et du module d'authentification :

a2enmod authnz_ldap
a2ensite nagios.conf

Accès à l'interface Web

  • Configuration de l'accès à l'interface Web et des CGI pour l'utilisateur du domaine :

read arg1 ; echo $arg1 ; sed -i "s,nagiosadmin,${arg1}.TEST.LAN,g" /etc/nagios3/cgi.cfg

for i in nagios3 apache2; do /etc/init.d/$i restart; done

Connexion

Logs

  • L'emplacement par défaut des logs de Nagios : log_file=/var/log/nagios3/nagios.log. Il est toujours possible de changer l'emplacement.

Sources




SSO Apache2 Active Direcotry PowerBroker Identity Services

PowerBroker Identity Services

Pré-requis

  • Une infrastructure DNS / Active Directory fonctionnelle FIXME
  • Un serveur LAMP

Installation

wget http://download.beyondtrust.com/PBISO/8.0.0.2016/linux.deb.x64/pbis-open-8.0.0.2016.linux.x86_64.deb.sh
chmod +x pbis-open-8.0.0.2016.linux.x86_64.deb.sh

  • Lancer le script et répondre 2 fois par yes :

./pbis-open-8.0.0.2016.linux.x86_64.deb.sh

/bin/find-user-by-name) (yes/no) yes
Would you like to install now? (yes/no) yes

Mise au domaine

domainjoin-cli join TEST.LAN administrateur

Joining to AD Domain:   TEST.LAN
With Computer DNS Name: chronos.TEST.LAN
administrateur@TEST.LAN's password:
...
Your system has been configured to authenticate to Active Directory for the first time.  It is recommended that you restart your system to ensure that all applications recognize the new settings.
SUCCESS

Keytab

Windows Server

  • Depuis la console de gestion des Utilisateurs AD, créer un utilisateur à l'identique du nom d'hôte qui sera utilisé, ex :
hôte utilisateur mot de passe
chronos chronos Passw00rd
  • Création du fichier :

ktpass -princ HTTP/chronos.test.lan@TEST.LAN -mapuser chronos@TEST.LAN -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -pass Passw00rd -out c:chronos.keytab

Serveur Web

  • Transférer le fichier sur le serveur :

apt-get install apache2-mpm-prefork libapache2-mod-auth-kerb
mkdir /etc/apache2/keytab
mv /share/chronos.keytab /etc/apache2/keytab/

  • On rajoute les directives au VHost :

vi /etc/apache2/sites-enabled/chronos.conf

<VirtualHost 192.168.1.10:80>
        ServerName              chronos.test.lan
        Redirect                / https://chronos.home.lan/
        ErrorLog                /var/log/apache2/server.log
        CustomLog               /var/log/apache2/server.log combined
</VirtualHost>

<VirtualHost 192.168.1.10:443>
        ServerName              chronos.test.lan
        DocumentRoot            /var/www
#       DocumentRoot            /usr/share/cacti/site
        ErrorLog                /var/log/apache2/chronos.log
        CustomLog               /var/log/apache2/chronos.log combined

        SSLEngine               on
        SSLCertificateFile      /etc/apache2/ssl/chronos.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/chronos.key

<directory "/var/www">
        AuthType                Kerberos
        AuthName                "Login"
        KrbServiceName          HTTP/chronos.test.lan@TEST.LAN
        KrbVerifyKDC            on
        KrbMethodNegotiate      on
        KrbMethodK5Passwd       on
        KrbAuthRealms           TEST.LAN
        Krb5KeyTab              /etc/apache2/keytab/chronos.keytab
        require                 valid-user
</directory>

</VirtualHost>

  • On redémarre le serveur :

service apache2 restart

Navigateurs

  • Sur Firefox, saisir about:config dans la barre d'adresse et modifier l'option network.negotiate-auth.delegation-uris
network.negotiate-auth.delegation-uris http://;https://
  • Se connecter avec un client Windows et apprécier le SSO :o)




GLPI 0.84.5, fonctionnalités et autres plugins

Pré-requis

  • Une installation fonctionnelle de GLPI
  • Un serveur de messagerie connecté à Active Directory
  • Une adresse de messagerie servant à récupérer les demandes utilisateur

Assistance

  • Configuration / Intitulés / Assistance / Catégories de ticket / +
    • Créer autant de catégorie que nécessaire : Matériel, Logiciel, Réseaux, ect…
Nom Matériel Commentaires
Comme enfant de
Responsable technique
Groupe technique GLPI_Tech
Base de connaissances FIXME
Visible dans l'interface simplifiée
Visible pour un incident
Visible pour une demande
Visible pour un problème
Gabarit pour une demande FIXME
Gabarit pour un incident FIXME
  • Répéter l'opération pour les catégories suivantes

Règles d'affectation

  • Bien, maintenant que nous avons un groupe qui représente une ou plusieurs catégories de tickets, on peut leur assigner des tickets de manière automatique :
    • Administration / règles / Règles métier pour les tickets / + :
Nom Tickets Logiciel Technician Description
Opérateur logique et Actif Oui
Commentaires
Critère Groupe de techniciens est GLPI_Tech
Action Catégories Assigner Logiciel
  • Tous les tickets entrants dans la catégorie Logiciel iront droit dans la file du groupe Technician
  • Je passe sur les nombreux filtres disponibles dans les règles, à vous de faire le tri et d'effectuer les tests qui conviennent. Le principe : un ou plusieurs critères pour une ou plusieurs actions.

Fonctionnalités

Messagerie

* Afin d'être prévenu des demandes utilisateurs, rien de mieux que l'utilisation du serveur de messagerie :

  • Configuration / Authentification / Serveur de messagerie / +
Nom mail
Actif Oui
Nom domaine de messagerie test.lan
Serveur imap.test.lan
Options de connexion IMAP : : TLS : novalidate-cert
Port 143
  • On peut tester la connexion au serveur en utilisant un compte déjà présent (ex : toto@test.lan) :
Test de connexion au serveur de messagerie
Identifiant toto
Mot de passe xxxxxxxxxxxxx

Notifications

  • Configuration des suivis par mail :
  • Configuration / Notifications / Activer le suivi par courriel / Configuration des suivis par courriels
Activer le suivi par email Oui Courriel de l'administrateur test@test.lan
Mode d'envoi des mails SMTP+TLS Courriel de réponse (si nécessaire) test@test.lan
Hôte SMTP smtp.test.lan
Port 25

Collecteur

  • Recevoir les demandes d'interventions avec une seule adresse :
  • Configuration / Collecteur / +
Nouvel élément
Nom (Courriel) assistance@test.lan
Actif Oui
Serveur imap.test.lan
Options de connexion IMAP TLS No-Validate-Cert
Port (optionnel) 143
Chaîne de connexion
Identifiant assistance
Mot de passe password
Taille maximale des fichiers importés par le collecteur 2Mio
Utilisez la date du courriel au lieu de celle de la collecte Oui
  • Ajouter et Récupérer les courriels maintenant, des tickets doivent alors être générés en direction des affectations.

Plugins

  • Voici une liste non exhaustive de plugins qui me servent au quotidien, l'idée étant de savoir comme les installer :
  • Configuration / Plugins
  • Cliquer sur Voir le catalogue des plugins afin de télécharger ceux présentés ci-dessous :

Fusioninventory for GLPI (ex Tracker)

Launch Shell Commands

Manufacturers Web Imports

Installation rapide

apt-get install php5-curl wakeonlan -y
cd /usr/share/glpi/plugins/
wget http://forge.fusioninventory.org/attachments/download/1315/fusioninventory-for-glpi_0.84+2.2.tar.gz
for i in '1587/glpi-shellcommands-1.6.0.tar.gz' '1581/glpi-manufacturersimports-1.6.0.tar.gz'; do wget https://forge.indepnet.net/attachments/download/$i; done
for i in glpi-shellcommands-1.6.0.tar.gz fusioninventory-for-glpi_0.84+2.2.tar.gz glpi-manufacturersimports-1.6.0.tar.gz; do tar -xzf $i; done
chown www-data -R /usr/share/glpi/plugins/*

  • Rafraichir la page Configuration / Plugins, tous les plugins doivent être disponibles, reste à les Installer et les Activer

Fusioninventory

  • Plugins / Fusioninventory
  • Cliquer sur le message :

Le serveur a besoin de connaître l'URL que les agents utilisent pour accéder au serveur.
Veuillez configurer dans la page de configuration générale

  • Renseigner l'adresse du serveur et paramétrer les quelques options au gré des besoins :
Configuration générale
SSL seulement pour l'agent : Oui Fréquence des inventaire (en heures) : 2
Effacer les tâches terminées après : 20 jours Port de l'agent : 62354
Extra-debug : Non URL d'accès au service https://chronos.test.lan
  • Configurer les modules qui seront utilisés par défaut, à adapter selon les besoins :
Modules des agents
Module Activation (par défaut)
WakeOnLan non
Inventaire ordinateur oui
Inventaire distant des hôtes VMware non
Inventaire réseau (SNMP) oui
Découverte réseau oui
Déploiement du paquetage oui
Collecte de donnée non

Commandes Shell

  • Plugins / Commandes Shell
  • Sélectionner Wake on Lan et rajouter le chemin du binaire /usr/bin/wakeonlan
Commande Shell
Nom Wake on Lan Balises valides [ID], [NAME], [IP], [MAC], [NETWORK], [DOMAIN]
Balise [MAC] Chemin /usr/bin/wakeonlan
Paramètres
  • Ajouter un type d'élément et sélectionner Ordinateur
  • Pour réveiller une machine :
    1. Se rendre dans Parc / Ordinateur
    2. Sélectionner l'ordinateur à réveiller
    3. Cliquer sur Actions
    4. Sélectionner Lancement d'une commande
    5. Choir Wake on Lan et valider

Sources




Apache, PHP & MySQL Ubuntu 14.04

apt-get update; apt-get upgrade -y; apt-get install apache2 apache2-utils openssl openssl-blacklist openssl-blacklist-extra mysql-server php5 libapache2-mod-php5 php5-mysql -y

Configuration

  • Nommer le serveur et activer l'URL Rewriting :

echo ServerName localhost >> /etc/apache2/apache2.conf
a2enmod rewrite

vi /etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>

        ServerAdmin     webmaster@localhost
        DocumentRoot    /var/www/html

        <Directory "/var/www/">
                Options         Indexes FollowSymLinks MultiViews
                AllowOverride   All
                Order           allow,deny
                allow from      all
        </Directory>

        ErrorLog        ${APACHE_LOG_DIR}/default.log
        CustomLog       ${APACHE_LOG_DIR}/default.log combined

</VirtualHost>

  • Redémarrer :

/etc/init.d/apache2 restart

  • A ce stade, il est possible de se connecter au serveur.

tailf /var/log/apache2/default.log

Sécurisation

Activation SSL

  • Préparation du dossier qui va recevoir les certificats :

mkdir -p /etc/apache2/ssl

  • Fichier de configuration du VHost :

vi /etc/apache2/sites-available/chronos-ssl.conf

<VirtualHost 192.168.1.10:80>
        ServerName              chronos.test.lan
        Redirect                / https://chronos.test.lan/
        ErrorLog                /var/log/apache2/server.log
        CustomLog               /var/log/apache2/server.log combined
</VirtualHost>
<VirtualHost 192.168.1.10:443>
        ServerName              chronos.test.lan
        DocumentRoot            /var/www
        ErrorLog                /var/log/apache2/chronos.log
        CustomLog               /var/log/apache2/chronos.log combined

        SSLEngine               on
        SSLCertificateFile      /etc/apache2/ssl/chronos.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/chronos.key
</VirtualHost>

  • Génération du certificat :

echo -n "Nom du serveur : " ; read server ; openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -out /etc/apache2/ssl/$server.crt -keyout /etc/apache2/ssl/$server.key

Nom du serveur : chronos Obligatoire pour générer les certificats
Country Name (2 letter code) [AU]: fr facultatif
State or Province Name (full name) [Some-State]: idf facultatif
Organization Name (eg, company) [Internet Widgits Pty Ltd]: cymea facultatif
Organizational Unit Name (eg, section) []: test facultatif
Common Name (e.g. server FQDN or YOUR name) []: chronos.test.lan obligation de mettre en cohérence le nom du serveur avec son @IP
Email Address []: toto@test.lan facultatif
  • Activation du support ssl et du virtual-host default-ssl :

a2enmod ssl
a2ensite {default-ssl.conf,chronos-ssl.conf}

/etc/init.d/apache2 restart

Redirection du port 80 vers 443 avec un .htaccess

  • Ecrire un fichier .htaccess à la racine du site et saisir :

RewriteEngine On 
RewriteCond  %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.domaine.tld [L,R]

PHPMyAdmin

  • Installation du paquet :

apt-get update; apt-get upgrade -y; apt-get install phpmyadmin -y




GLPI 0.84.5 Over Active Direcory Ubuntu 14.04

  • Voici une installation de GLPI assez rapide, couplée à un annuaire Active Directory.

Pré requis

  • Des comptes utilisateurs disposants d'un attribut mail renseigné
  • Créer deux groupes sur votre AD : GLPI_Admins (Superviseurs) et GLPI_Tech (Techniciens).
  • Créer un compte avec mot de passe sur le domaine qui servira à se connecter sur les contrôleurs (ex: bind_glpi).
  • Un LAMP + les modules PHP LDAP & IMAP :

apt-get install php5-ldap php5-imap
/etc/init.d/apache2 restart

  • Une surprise lors de l'installation du paquet php5-imap, pas d'inscription du fichier .ini dans le répertoire de configuration. Si cela se produit :

echo "extension=imap.so" > /etc/php5/apache2/conf.d/10-imap.ini
service apache2 restart

Installation

  • Télécharger et décompresser les sources :

cd /usr/src/
wget https://forge.indepnet.net/attachments/download/1693/glpi-0.84.5.tar.gz
tar -xzf glpi-0.84.5.tar.gz
mv glpi /usr/share/glpi/
chown -R www-data: /usr/share/glpi/{files,config}

  • Créer et activer le VirtualHost :

vi /etc/apache2/sites-available/glpi.conf

<VirtualHost 192.168.1.10:80>
        ServerName              chronos.test.lan/
        Redirect                / https://chronos.test.lan/
</VirtualHost>

<VirtualHost 192.168.1.10:443>
        ServerName              chronos
        DocumentRoot            /usr/share/glpi
        ErrorLog                /var/log/apache2/glpi.log
        CustomLog               /var/log/apache2/glpi.log combined
        Loglevel                Debug
        SSLEngine               on
        SSLCertificateFile      /etc/apache2/ssl/chronos.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/chronos.key
</VirtualHost>

a2ensite glpi.conf
service apache2 restart

  • Création de la base de données avec accès à l'utilisateur glpi_user :

mysql -u root -p
create database glpi;
grant all on glpi.* to 'glpi_user'@'localhost' identified by 'glpi_password';
flush privileges;
exit;

  • Se rendre sur la page du serveur qui héberge GLPI et valider les différentes questions :
Select your language Français
Licence J'ai lu et j'accepte…
Installation ou mise à jour de GLPI Installer
Vérification de la compatibilité de votre environnement avec l'exécution de GLPI Tout doit être vert :o)
Configuration de la connexion à la base de données
Serveur MySQL 127.0.0.1
Utilisateur MySQL glpi_user
Mot de passe MySQL glpi_password
Veuillez sélectionner une base de données : glpi
L'installation est terminée

Paramétrage

  • Se connecter avec le compte glpi (mot de passe : glpi) et commencer le paramétrage :

Sécurité

  • Modifier les mots de passe des comptes par défaut et/ou les désactiver.
  • Garder le compte GLPI sous le coude pour déboguer les éventuelles pannes de connexions aux différents référentiels externes (LDAP/AD).
  • Supprimer le fichier d'installation :

rm /usr/share/glpi/install/install.php

Authentification

  • Configuration / Authentification / Annuaire LDAP / + :
  • Ajouter un serveur (bouton +) et saisir les informations suivant le référentiel utilisé :

Annuaire(s) AD/LDAP

  • Renseigner les informations de connexion des différents contrôleurs de domaine :
Préconfiguration Active Directory
Nom Annuaire AD
Serveur par défaut Oui
Serveur dc1.test.lan
Filtre de connexion (&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
Basedn ou=Users,dc=test,dc=lan
DN du compte (pour les connexions non anonymes) cn=bind_glpi,ou=Users,dc=test,dc=lan
Mot de passe du compte (pour les connexions non anonymes) : password Champ de l'identifiant : samaccountname
  • Une fois l'ajout effectué, le test de connexion doit être concluant :

Élément ajouté avec succès : dc1.test.lan
Test réussi

  • Si tout va bien, refaire la même opération pour le deuxième contrôleur de domaine, voir plus…

Gestion des groupes & des utilisateurs

Importer des utilisateurs

Manuellement

  • Administration / Utilisateurs / Liaison annuaire LDAP / Importation de nouveaux utilisateurs
    • Cliquer sur Rechercher et sélection les utilisateurs à importer : Action et Importer

Automatiquement

  • De loin la plus simple et facilement paramétrable dans une crontab, utiliser le script suivant :

php /usr/share/glpi/scripts/ldap_mass_sync.php -server_id=0 action=0

Option Action
id Choix de l'annuaire référencé dans GLPI
action Méthode de synchronisation : 0 = Import des nouveaux Utilisateurs, 1 = Synchronisation des Utilisateurs

Importer des groupes

  • Administration / Groupes / Liaison annuaire LDAP / Importation de nouveaux groupes :
  • Les groupes présents dans l'OU Utilisateurs doivent alors s'afficher, sélectionner GLPI_Admins et GLPI_Tech, cliquer sur Action et Importer
  • A ce niveau, un utilisateur du domaine doit pouvoir se connecter. Cependant les droits par défaut sont restreints au profil Post Only. Il est alors possible de jouer avec les groupes du domaine pour donner directement les droits sur l'outil.

Régles & habilitations

  • Une fois les groupes importés dans GLPI, on peut créer des règle afin de définir les différentes habilitations (profiles) pour chaque groupe, ainsi les utilisateurs membres d'un groupe AD hériterons automatiquement de leur(s) profile(s) :
  • Administration / règles / Règles d'affectation d'habilitations à un utilisateur / + :
    • Dans un premier temps, donner les droits aux utilisateurs du groupe pour administrer GLPI :
Nom GLPI_Admins Description
Opérateur logique et Actif Oui
Commentaires
  • On crée le critère et les actions qui vont avec :
Critères Groupe importé depuis un annuaire LDAP est GLPI_Admins
Action Actif Assigner Oui
Action Entité Assigner Root entity
Action Profils Assigner Super-Admin
Action Récursif Assigner Oui
  • On réitère avec le groupe GLPI_Tech pour le profil Technician
  • A la connexion, les utilisateurs membres du groupe GLPI_Admins héritent du profil Super-Admin et GLPI_Tech du profil Technician.
  • Si un compte est spécifié dans les deux, son profil par défaut sera Technician, il faudra juste sélectionner le bon profil depuis l'interface.

SSO

VirtualHost

  • A placer entre SSLCertificateKeyFile et </VirtualHost> dans le VHost :

vi /etc/apache2/sites-available/glpi.conf

        ...
        SSLCertificateKeyFile   /etc/apache2/ssl/chronos.key
        <Directory "/usr/share/glpi">

        AuthType                Kerberos
        KrbAuthRealms           HOME.LAN
        KrbServiceName          HTTP
        Krb5KeyTab              /etc/apache2/keytab/chronos.keytab
        KrbMethodNegotiate      On
        KrbMethodK5Passwd       On
        require                 valid-user

</Directory>
</VirtualHost>

  • Modifier les options d'authentification :
    • Configuration / Authentification /Autres
Autre authentification transmise dans la requête HTTP Activée
Champs de stockage de l'identifiant dans la requête HTTP REMOTE_USER
Supprimer le domaine des identifiants de la forme identifiant@domaine Oui

Sources

Pour aller plus loin




Outils pour tester un serveur de messagerie

telnet smtp 25

ehlo smtp
mail from:toto@test.lan
rcp to:toto@test.lan
data
Bonjour,
Comment ça va ?
.
quit 

telnet imap 143

a login toto@test.lan password
b select inbox
c list "" *
d lsub "" *
e logout

apt-get install mailutils

  • Test d'envoi depuis une console :

mail toto
Cc: 
Subject: Test Envoi Courrier
Premier envoi de mail avec postfix et récupération depuis courrier-imap
CTRL-D (pour fermer)

Mutt

  • Tester l'accès aux bals avec mutt:

apt-get install mutt

mutt -f imap://toto@test.lan/




Active Directory Horde 5.1.x Ubuntu 14.04

cp /usr/share/webmail/imp/config/backends.php{,.ori}
vi /usr/share/webmail/imp/config/backends.php

<?php

$servers['secure-imap']=array(
        'disabled'=>false,
        'name'=>'test.lan',
        'hostspec'=>'imap.test.lan',
        'hordeauth'=>full,
        'protocol'=>'imap',
        'port'=>993,
        'secure'=>'ssl',
        'maildomain'=>'test.lan',
        'acl'=>true,
        'cache'=>false,
);
$servers['imap']=array(
        'disabled'=>false,
        'name'=>'IMAPServer',
        'hostspec'=>'localhost',
        'hordeauth'=>false,
        'protocol'=>'imap',
        'port'=>143,
        'secure'=>'tls',
);

$servers['advanced']=array(
        'disabled'=>true,
        'name'=>'AdvancedIMAPServer',
        'hostspec'=>'localhost',
        'hordeauth'=>false,
        'protocol'=>'imap',
        'port'=>143,
        'secure'=>'tls',
        'maildomain'=>'',
'smtp'=>array(
),
'spam'=>array(
),
'admin'=>array(
),
        'acl'=>true,
        'cache'=>false,
        'quota'=>array(
        'driver'=>'imap',
        'params'=>array(
        'hide_when_unlimited'=>true,
        'unit'=>'MB'
)
),
'special_mboxes'=>array(
),
'autocreate_special'=>false,
);

cp /usr/share/webmail/config/conf.php{,.ori}
vi /usr/share/webmail/config/conf.php

<?php
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: 56a06c9745abf383eb7381c3efc537045bf0ba0c $
$conf['vhosts'] = false;
$conf['debug_level'] = E_ALL & ~E_NOTICE;
$conf['max_exec_time'] = 0;
$conf['compress_pages'] = true;
$conf['secret_key'] = '536e14ff-429c-4e6c-b459-0aabb08257c5';
$conf['umask'] = 077;
$conf['testdisable'] = true;
$conf['use_ssl'] = 2;
$conf['server']['name'] = $_SERVER['SERVER_NAME'];
$conf['urls']['token_lifetime'] = 30;
$conf['urls']['hmac_lifetime'] = 30;
$conf['urls']['pretty'] = false;
$conf['safe_ips'] = array();
$conf['session']['name'] = 'Horde';
$conf['session']['use_only_cookies'] = true;
$conf['session']['timeout'] = 0;
$conf['session']['cache_limiter'] = 'nocache';
$conf['session']['max_time'] = 72000;
$conf['cookie']['domain'] = $_SERVER['SERVER_NAME'];
$conf['cookie']['path'] = '/';
/* MySQL, normalement rien à faire */
$conf['sql']['username'] = 'horde';
$conf['sql']['password'] = 'password';
$conf['sql']['hostspec'] = '127.0.0.1';
$conf['sql']['port'] = 3306;
$conf['sql']['protocol'] = 'tcp';
$conf['sql']['database'] = 'horde';
$conf['sql']['charset'] = 'utf-8';
$conf['sql']['ssl'] = true;
$conf['sql']['splitread'] = false;
$conf['sql']['phptype'] = 'mysql';
$conf['nosql']['phptype'] = false;
/* Fin de MySQL */
/* LDAP-AD, a adapter selon vos besoins */
// nom du serveur utilisé pour la connexion
$conf['ldap']['hostspec'] = 'dc1.test.lan';
$conf['ldap']['port'] = 389;
$conf['ldap']['tls'] = false;
$conf['ldap']['version'] = 3;
// compte pour la connexion à l'annuaire AD
$conf['ldap']['binddn'] = 'TESTbind-ad';
$conf['ldap']['bindpw'] = 'Password';
$conf['ldap']['bindas'] = 'admin';
$conf['ldap']['useldap'] = true;
// compte qui servira pour se connecter avec le profil Admin
$conf['auth']['admins'] = array('toto');
$conf['auth']['checkip'] = true;
$conf['auth']['checkbrowser'] = true;
$conf['auth']['resetpassword'] = true;
$conf['auth']['alternate_login'] = false;
$conf['auth']['redirect_on_logout'] = false;
$conf['auth']['list_users'] = 'list';
$conf['auth']['params']['basedn'] = 'ou=Utilisateurs,dc=test,dc=lan';
$conf['auth']['params']['scope'] = 'sub';
$conf['auth']['params']['ad'] = true;
$conf['auth']['params']['uid'] = 'sAMAccountname';
$conf['auth']['params']['encryption'] = 'ssha';
$conf['auth']['params']['newuser_objectclass'] = array('Person');
// les utilisateurs doivent être membres du groupe Webmail pour se connecter à Horde
$conf['auth']['params']['filter'] = '(&(objectClass=user)(objectCategory=person)(memberOf=cn=Webmail,ou=Utilisateurs,dc=test,dc=lan))';
$conf['auth']['params']['password_expiration'] = 'no';
$conf['auth']['params']['driverconfig'] = 'horde';
$conf['auth']['driver'] = 'ldap';
/* Fin de la partie LDAP-AD */
// modifier les valeurs suivantes que lorsque les connexions sont concluantes
$conf['auth']['params']['count_bad_logins'] = false;
$conf['auth']['params']['login_block'] = false;
$conf['auth']['params']['login_block_count'] = 5;
$conf['auth']['params']['login_block_time'] = 5;
/* Fin du blocage des comptes */
$conf['signup']['allow'] = false;
$conf['log']['priority'] = 'INFO';
$conf['log']['ident'] = 'HORDE';
$conf['log']['name'] = LOG_USER;
$conf['log']['type'] = 'syslog';
$conf['log']['enabled'] = true;
$conf['log_accesskeys'] = false;
$conf['prefs']['params']['driverconfig'] = 'horde';
$conf['prefs']['driver'] = 'Sql';
$conf['alarms']['params']['driverconfig'] = 'horde';
$conf['alarms']['params']['ttl'] = 300;
$conf['alarms']['driver'] = 'Sql';
$conf['group']['driverconfig'] = 'horde';
$conf['group']['driver'] = 'Sql';
$conf['perms']['driverconfig'] = 'horde';
$conf['perms']['driver'] = 'Sql';
$conf['share']['no_sharing'] = false;
$conf['share']['auto_create'] = true;
$conf['share']['world'] = true;
$conf['share']['any_group'] = false;
$conf['share']['hidden'] = false;
$conf['share']['cache'] = false;
$conf['share']['driver'] = 'Sqlng';
$conf['cache']['default_lifetime'] = 86400;
$conf['cache']['params']['sub'] = 0;
$conf['cache']['driver'] = 'File';
$conf['cache']['use_memorycache'] = '';
$conf['cachecssparams']['url_version_param'] = true;
$conf['cachecss'] = false;
$conf['cachejsparams']['url_version_param'] = true;
$conf['cachejs'] = false;
$conf['cachethemes'] = false;
$conf['lock']['params']['driverconfig'] = 'horde';
$conf['lock']['driver'] = 'Sql';
$conf['token']['params']['driverconfig'] = 'horde';
$conf['token']['driver'] = 'Sql';
$conf['davstorage']['params']['driverconfig'] = 'horde';
$conf['davstorage']['driver'] = 'Sql';
/* Mailer, a adpter selon vos besoins */
$conf['mailer']['params']['host'] = 'smtp.test.lan';
$conf['mailer']['params']['port'] = 25;
/* $conf['mailer']['params']['port'] = 487; */
$conf['mailer']['params']['auth'] = false;
$conf['mailer']['type'] = 'smtp';
$conf['mailformat']['brokenrfc2231'] = false;
/* Fin de la partie Mailer */
$conf['vfs']['params']['driverconfig'] = 'horde';
$conf['vfs']['type'] = 'Sql';
$conf['sessionhandler']['type'] = 'Builtin';
$conf['sessionhandler']['hashtable'] = false;
$conf['spell']['driver'] = '';
$conf['gnupg']['keyserver'] = array('pool.sks-keyservers.net');
$conf['gnupg']['timeout'] = 10;
$conf['nobase64_img'] = false;
$conf['image']['driver'] = false;
$conf['exif']['driver'] = 'Bundled';
$conf['timezone']['location'] = 'ftp://ftp.iana.org/tz/tzdata-latest.tar.gz';
$conf['problems']['email'] = 'toto@test.lan';
$conf['problems']['maildomain'] = 'test.lan';
$conf['problems']['tickets'] = false;
$conf['problems']['attachments'] = true;
$conf['menu']['links']['help'] = 'all';
$conf['menu']['links']['prefs'] = 'authenticated';
$conf['menu']['links']['problem'] = 'all';
$conf['menu']['links']['login'] = 'all';
$conf['menu']['links']['logout'] = 'authenticated';
$conf['portal']['fixed_blocks'] = array();
$conf['accounts']['driver'] = 'null';
$conf['user']['verify_from_addr'] = false;
$conf['user']['select_view'] = true;
$conf['facebook']['enabled'] = false;
$conf['twitter']['enabled'] = false;
$conf['urlshortener'] = false;
$conf['weather']['provider'] = false;
$conf['imap']['enabled'] = false;
$conf['imsp']['enabled'] = false;
$conf['kolab']['enabled'] = false;
$conf['hashtable']['driver'] = 'none';
$conf['activesync']['enabled'] = true;
$conf['activesync']['emailsync'] = true;
$conf['activesync']['version'] = '14';
$conf['activesync']['autodiscovery'] = 'full';
$conf['activesync']['outlookdiscovery'] = false;
$conf['activesync']['logging']['type'] = 'horde';
$conf['activesync']['ping']['heartbeatmin'] = 60;
$conf['activesync']['ping']['heartbeatmax'] = 2700;
$conf['activesync']['ping']['heartbeatdefault'] = 480;
$conf['activesync']['ping']['deviceping'] = true;
$conf['activesync']['ping']['waitinterval'] = 15;
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

Turba

  • Il est possible d'utiliser Turba depuis un annuaire Active Directory, à adapter selon les besoins :

cp /usr/share/webmail/turba/config/backends.php{,.ori}
vi /usr/share/webmail/turba/config/backends.php

<?php
$cfgSources['localldap'] = array(
    // Disabled by default
    'disabled' => false,
    'title' => _("Annuaire test"),
    'type' => 'ldap',
    'params' => array(
        'server' => 'dc1.test.lan',
        'port' => 389,
        'tls' => false,
        'root' => 'ou=Utilisateurs,dc=test,dc=lan',
        'bind_dn' => 'testbind-ad',
        'bind_password' => 'Password',
        'sizelimit' => 0,
        'dn' => array('cn'),
        'objectclass' => array('organizationalPerson',
                               'user',
                               'group',
                               'contact'),
        'scope' => 'sub',
        'charset' => 'utf-8',
        'checkrequired' => false,
        'checkrequired_string' => ' ',
        'checksyntax' => false,
        'version' => 3,
        'deref' => LDAP_DEREF_ALWAYS,
        'filter' => '&(SAMAccountName=*)(mail=*)',
        'referrals' => 0,
    ),
    'map' => array(
        '__key' => 'dn',

     'name' => 'displayname',
     'email' => 'mail',
        'testPhone' => 'testphone',
        'workPhone' => 'telephonenumber',
        'cellPhone' => 'mobiletelephonenumber',
        'testAddress' => 'testpostaladdress',
        'title' => 'title',
        'cellPhone' => 'mobile',
        'department' => 'department',
        'company' => 'company',
    ),
    'search' => array(
        'name',
        'email',
        'testPhone',
        'workPhone',
        'cellPhone',
        'testAddress'
    ),
    'strict' => array(
        'dn', 'uid'
    ),
    'approximate' => array(
        'cn',
    ),
    'export' => true,
    'browse' => true,
);
?>




Horde 5.1.x Ubuntu 14.04

Pré-requis

Préparation

  • Installation des paquets :

apt-get update; apt-get upgrade -y; apt-get install apache2 apache2-utils openssl openssl-blacklist openssl-blacklist-extra mysql-server php5 libapache2-mod-php5 php5-mysql php-pear

  • Création du répertoire qui recevra Horde :

mkdir /usr/share/webmail
cd /usr/share/webmail

  • Création de la BDD :

mysql -u root -p

create database horde;
grant all on horde.* to 'horde'@'localhost' identified by 'password';
exit;

Installation

  • Désinstaller les versions précédentes :

pear uninstall horde/Horde_Role
pear uninstall horde/groupware

  • Mise à jour et téléchargement des paquets :

pear upgrade PEAR
pear channel-discover pear.horde.org
pear install horde/horde_role
pear run-scripts horde/horde_role
Filesystem location for the base Horde application : /usr/share/webmail
pear install -a -B horde/webmail

  • Lancement de la séquence d'installation :

webmail-install

  • Adapter les réponses suivant les besoins :
Installing Horde Groupware Webmail Edition
Configuring database settings
What database backend should we use?
Type your choice []: mysql
Username to connect to the database as* [] horde
Password to connect with password
How should we connect to the database?
Type your choice [unix]: tcp
Database server/host* [] 127.0.0.1
Port the DB is running on, if non-standard [3306]
Database name to use* [] horde
Internally used charset* [utf-8] Enter
Use SSL to connect to the server?
Type your choice [0]: Enter
Certification Authority to use for SSL connections [] Enter
Split reads to a different server?
Type your choice [false]: Enter
Writing main configuration file… done.
Creating and updating database tables…
Configuring administrator settings
Specify an existing mail user who you want to give administrator permissions (optional): toto
  • Permettre à l'utilisateur Apache d'écrire dans le dossier :

chown www-data: -R /usr/share/webmail

vi /etc/apache2/sites-available/webmail.conf

<VirtualHost 192.168.1.10:80>

        ServerName              webmail.test.lan
        DocumentRoot            /usr/share/webmail
        Loglevel                warn
        ErrorLog                /var/log/apache2/webmail.log
        CustomLog               /var/log/apache2/webmail.log combined
        # Prise en charge de l'ActiveSync
        Alias                   /Microsoft-Server-ActiveSync    /usr/share/webmail/rpc.php
</VirtualHost>

  • Prise en compte du VHosts et redémarrage :

a2ensite webmail.conf
service apache2 restart

Administration

  • Se connecter avec le login de messagerie (admin) sur la page : http://webmail.test.lan
  • Vérifier que l'accès aux mails depuis l'onglet Courrier

Méthode d'authentification

  • Avant toute chose, faire une copie du fichier de configuration. Même si Horde permet de retourner sur une configuration précédente, encore faut-il pouvoir s'y connecter >:(

cp /usr/share/webmail/config/conf.php{,.ori}

  • A ce stade, les utilisateurs identifiés à partir du serveur de messagerie peuvent se connecter sur Horde.

Activation de l'ActiveSync

/usr/share/webmail/config/conf.php

  • Supprimer la ligne :

$conf['activesync']['enabled'] = false;

  • Et remplacer par le code suivant :

vi /usr/share/webmail/config/conf.php

$conf['activesync']['enabled'] = true;
$conf['activesync']['emailsync'] = true;
$conf['activesync']['version'] = '14';
$conf['activesync']['autodiscovery'] = 'full';
$conf['activesync']['outlookdiscovery'] = false;
$conf['activesync']['logging']['type'] = 'horde';
$conf['activesync']['ping']['heartbeatmin'] = 60;
$conf['activesync']['ping']['heartbeatmax'] = 2700;
$conf['activesync']['ping']['heartbeatdefault'] = 480;
$conf['activesync']['ping']['deviceping'] = true;
$conf['activesync']['ping']['waitinterval'] = 15;

Paramétrage d'un compte sur Android

  • Depuis un smartphone Android, créer un compte Active Directory :
    • Paramètres / Comptes / Ajouter un compte / Microsfot Exchange Active Directory :
Adresse mail fd@test.lan
Domainenom utilisateur fd@test.lan
Mot de passe xxxxxxxxxxx
Serveur Exchange webmail.test.lan
Utiliser une connexion sécurisée (SSL) coché
Utiliser certif. client
  • Avec une application comme aCalendar+, faire des tests de synchronisation entre le terminal mobile et Horde

Sources

Pour aller plus loin




Active Directory Postfix Dovecot – Ubuntu 14.04 Trusty

Pré-requis

Installation

apt-get install postfix-ldap dovecot-ldap

groupadd virtual -g 5000
useradd -r -g virtual -G users -c "Virtual User" -u 5000 virtual
mkdir -p /home/virtual
chown -R virtual: /home/virtual/
chmod -R 770 /home/virtual

vi /etc/postfix/ldap-users.cf

server_host = AdresseIP_du_DC
search_base = dc=test,dc=lan
version = 3
search_base = dc=test,dc=lan

query_filter = (&(objectclass=person)(mail=%s))
result_attribute = samaccountname
result_format = %s/Maildir/

bind = yes
bind_dn = cn=bindaccount,ou=Techs,dc=test,dc=lan
bind_pw = P@ssw00rd

vi /etc/postfix/ldap-alias.cf


mv /etc/postfix/main.cf{,.local}
vi /etc/postfix/main.cf

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

myhostname = chronos
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = chronos
relayhost =
mynetworks = 127.0.0.0/8 192.168.1.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
home_mailbox = Maildir/

virtual_mailbox_domains = test.lan
virtual_mailbox_base = /home/virtual
virtual_mailbox_maps = ldap:/etc/postfix/ldap-users.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

queue_directory = /var/spool/postfix

cp /etc/postfix/master.cf{,.local}
vi /etc/postfix/master.cf

## Enable SMTP on port 587 only for authenticated/TLS clients
submission inet n       -       n       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

## Enable SMTP on port 465 only for authenticated/SSL clients
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

  • Tester le paramétrage avec un compte du domaine :

postmap -vq toto@test.lan ldap:/etc/postfix/ldap-users.cf

mv /etc/dovecot/dovecot.conf{,.local}
vi /etc/dovecot/dovecot.conf

protocols = imap
!include_try /usr/share/dovecot/protocols.d/*.protocol
listen = *, ::
dict {
}
!include conf.d/*.conf
!include_try local.conf

mv /etc/dovecot/conf.d/10-master.conf{,.local}
vi /etc/dovecot/conf.d/10-master.conf

service imap-login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    #port = 993
    #ssl = yes
  }

}

service pop3-login {
  inet_listener pop3 {
    #port = 110
  }
  inet_listener pop3s {
    #port = 995
    #ssl = yes
  }
}

service lmtp {
  unix_listener lmtp {
    #mode = 0666
  }

}

service imap {
  # Most of the memory goes to mmap()ing files. You may need to increase this
  # limit if you have huge mailboxes.
  #vsz_limit = $default_vsz_limit

  # Max. number of IMAP processes (connections)
  #process_limit = 1024
}

service pop3 {
  # Max. number of POP3 processes (connections)
  #process_limit = 1024
}

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}

service auth-worker {
}

service dict {
  unix_listener dict {
  }
}

mv /etc/dovecot/dovecot-ldap.conf.ext{,.local}
vi /etc/dovecot/dovecot-ldap.conf.ext

hosts = dc1.test.lan dc2.test.lan
base = dc=test.lan
ldap_version = 3
auth_bind = yes
auth_bind_userdn = TEST%n
pass_filter = (&(objectclass=person)(mail=%u))
user_filter = (&(objectClass=person)(mail=%u))
default_pass_scheme = CRYPT

mv /etc/dovecot/conf.d/auth-ldap.conf.ext{,.local}
vi /etc/dovecot/conf.d/auth-ldap.conf.ext

passdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf.ext
}
userdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf.ext
}
userdb {
  driver = static
  args = uid=5000 gid=5000 home=/home/virtual/%n/Maildir
}

mv /etc/dovecot/conf.d/10-auth.conf{,.local}
vi /etc/dovecot/conf.d/10-auth.conf

disable_plaintext_auth = no
auth_mechanisms = plain
!include auth-system.conf.ext
!include auth-ldap.conf.ext

mv /etc/dovecot/conf.d/10-mail.conf{,.local}
vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/home/virtual/%n/Maildir
namespace inbox {
  inbox = yes
}

Test

  • Redémarrage des services :

for serv in postfix dovecot; do /etc/init.d/$serv restart;done
tailf /var/log/mail.log