Archives de catégorie : Ubuntu 14.04

Ubuntu – Créer son dépôt Ubuntu 16.04

Préparation

Architecture système

  • Pré requis :
    • LAMP
    • apt-mirror et +/- 500 Go d'espace disque (varie en fonction des branches sélectionnées).
  • Un système virtualisé avec deux disques (le premier de 10Go environ pour le système, le deuxième de 500Go pour accueillir le miroir).
Disques Capacité Répertoires montés
sda1 10Go / (système)
sdb1 500Go /depot (miroir)

mkdir /depot
echo "/dev/sdb1       /depot          ext4    errors=remount-ro 0       1" >> /etc/fstab
mount -a

Paquets

  • Parce que les versions d'apt-mirror sont boguées sur Debain et Ubuntu, on installe depuis SourceForge :

echo "deb http://apt-mirror.sourceforge.net/ apt-mirror/" >> /etc/apt/sources.list
apt-get update
apt-get install apt-mirror apache2

Configuration

  • On crée et on édite le fichier de configuration :

vi /depot/apt-mirror.conf

############# config ##################
#
 set base_path    /depot
#
set mirror_path         $base_path/mirror
set skel_path           $base_path/skel
set var_path            $base_path/var
set cleanscript         $var_path/clean.sh
set defaultarch         i386
# set postmirror_script $var_path/postmirror.sh
set run_postmirror 0
set nthreads     20
set _tilde 0
#
############# end config ##############

deb http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu xenial main restricted universe multiverse main/debian-installer
deb http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse
deb http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
deb http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse

deb-amd64 http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu xenial main restricted universe multiverse main/debian-installer
deb-amd64 http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse
deb-amd64 http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
deb-amd64 http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse

deb-src http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb-src http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
deb-src http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse
deb-src http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse

clean http://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu

  • On lance la mise à jour :

apt-mirror /depot/apt-mirror.conf

  • Le résultat après 1 jour de téléchargement intensif :

Downloading 355 index files using 20 threads...
Begin time: Tue Apr 22 09:58:13 2014
[20]... [19]... [18]... [17]... [16]... [15]... [14]... [13]... [12]... [11]... [10]... [9]... [8]... [7]... [6]... [5]... [4]... [3]... [2]... [1]... [0]...
End time: Tue Apr 22 09:58:17 2014

Processing tranlation indexes: [TTTTTTTT]

Downloading 189 translation files using 20 threads...
Begin time: Tue Apr 22 09:58:17 2014
[20]... [19]... [18]... [17]... [16]... [15]... [14]... [13]... [12]... [11]... [10]... [9]... [8]... [7]... [6]... [5]... [4]... [3]... [2]... [1]... [0]...
End time: Tue Apr 22 09:58:19 2014

Processing indexes: [SSSSPPPPPPPP]

133.6 GiB will be downloaded into archive.
Downloading 136357 archive files using 20 threads...
Begin time: Tue Apr 22 09:58:30 2014
[20]... [19]... [18]... [17]... [16]... [15]... [14]... [13]... [12]... [10]... [9]... [8]... [7]... [6]... [5]... [4]... [3]... [2]... [1]... [0]...
End time: Tue Apr 22 14:08:47 2014

0 bytes in 0 files and 0 directories can be freed.
Run /depot/var/clean.sh for this purpose.

  • Rendre les paquets accessibles :

ln -s /depot/mirror/ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu/ /var/www/ubuntu

Ubuntu – Initialiser un disque additionnel

Voici un petit script pour initialiser un deuxième disque dur. Pratique lors d’un remplacement ou autre…

cat > sfdisk.sh << EOT
sfdisk  --no-reread --force /dev/sdb << EOF
        ,
        ,
        ,
        ,
        y
EOF
EOT

cat sfdisk.sh
chmod +x sfdisk.sh
./sfdisk.sh
mkfs.ext4 /dev/sdb1

http://www.tutorialspoint.com/unix_commands/sfdisk.htm

Apache SSO over AD

Pré-requis

  • Une installation fraiche d'Ubuntu 14.04
  • Une entrée directe et inverse dans votre DNS d'un Virtual Host (ex: test.domain.tld)
  • Un environnement Active Directory fonctionnel
    • Un utilisateur avec le nom équivalent au Virtual Host que l'on souhaite déployer (ex: utilisateur test pour le vhost test.domain.tld)
    • Un poste et un utilisateur membres du domaine

Préparation

Active Directory

  • Depuis un DC, créer un utilisateur un utilisateur avec le nom équivalent au Virtual Host que l'on souhaite déployer (ex: utilisateur test pour le VHost test.domain.tld)
  • Lancer une console MSDOS :
ktpass -princ HTTP/test.domain.tld@DOMAIN.TLD -mapuser test@DOMAIN.TLD -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -pass MotDePasse -out c:test.keytab
  • Une fois créé, transférer le fichier sur le serveur Web, ex : /home/user.

Serveur Web

  • Avant de se lancer dans les installations, s'assurer que le serveur Web est bien paramétrée et référencée dans le DNS :
root@test:/home/user# hostname
test.domain.tld
  • Tester la recherche directe :
nslookup test
Server:         192.168.0.1
Address:        192.168.0.2#53

Name:   test.domain.tld
Address: 192.168.0.10
  • La recherche inversée
nslookup 192.168.0.10
Server:         192.168.0.1
Address:        192.168.0.2#53

10.0.168.192.in-addr.arpa      name = test.domain.tld.
  • Vérifier la résolution DNS :
cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.0.1
nameserver 192.168.0.2
search domain.tld

Installation

Winbind, Samba, Kerberos

  • On lance l'installation des paquets :
apt-get install libnss-winbind libpam-winbind ntp krb5-user samba smbclient winbind -y

Fichiers de configuration

nsswitch.conf

mv /etc/nsswitch.conf{,.ori}

cat &gt;&gt; /etc/nsswitch.conf &lt;&lt; EOF
passwd:         compat winbind file
group:          compat winbind file
shadow:         compat winbind file

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis
EOF

krb5.conf

mv /etc/krb5.conf{,.ori}

cat &gt;&gt; /etc/krb5.conf &lt;&lt; EOF
[libdefaults]
ticket_lifetime = 24h
default_realm = DOMAIN.TLD
forwardable = true

[realms]
DOMAIN.TLD = {
kdc = 192.168.0.100
kdc = 192.168.0.110
default_domain = DOMAIN.TLD
}

[domain_realm]
.domain.tld = DOMAIN.TLD
domain.tld = DOMAIN.TLD

[kdc]
profile = /etc/krb5kdc/kdc.conf

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

[logging]
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log
default = FILE:/var/log/krb5lib.log
EOF

smb.conf

mv /etc/samba/smb.conf{,.ori}

cat &gt;&gt; /etc/samba/smb.conf &lt;&lt; EOF
[global]
workgroup = DOMAIN
server string = Samba Server Version %v
security = ads
realm = DOMAIN.TLD
domain master = no
local master = no
preferred master = no
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
use sendfile = true
# read raw = yes # Should provide a performance increase but currently untested, YMMV
# write raw = yes # Should provide a performance increase but currently untested, YMMV

idmap config * : backend = tdb
idmap config * : range = 100000-299999
idmap config DOMAIN : backend = rid
idmap config DOMAIN : range = 10000-99999
winbind separator = +
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
winbind nested groups = yes
winbind refresh tickets = yes
template homedir = /home/%D/%U
template shell = /bin/bash

client use spnego = yes
client ntlmv2 auth = yes
encrypt passwords = yes
restrict anonymous = 2
log file = /var/log/samba/log.%m
max log size = 50
EOF

Mise au domaine

Tests préalables

  • Avant d'inscrire le serveur Web dans le domaine, s'assurer que la configuration Kerberos est fonctionnelle :
kinit ad_user@DOMAIN.TLD
Password for ad_user@DOMAIN.TLD:
  • On valide l'obtention du ticket :
root@test:/home/user# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: ad_user@DOMAIN.TLD

Valid starting       Expires              Service principal
02/10/2015 10:46:18  02/10/2015 20:46:18  krbtgt/DOMAIN.TLD@DOMAIN.TLD
        renew until 03/10/2015 10:46:15
  • Si la commande klist renvoie un ticket, on peut alors intégrer la machine au domaine :
net ads join -U Administrateur
Enter Administrateur&#039;s password:
Using short domain name -- DOMAIN
Joined &#039;TEST&#039; to dns domain &#039;domain.tld&#039;
DNS Update for test.domain.tld failed: ERROR_DNS_GSS_ERROR
DNS update failed: NT_STATUS_UNSUCCESSFUL
  • Les deux messages liés à la mise à jour DNS ne sont pas bloquant et une fois intégré au domaine il faut redémarrer.

Vérifications

  • Vérifier que les méthodes d'authentification sont bien enregsitrées :
pam-auth-update

[*] Unix authentication
[*] Winbind NT/Active Directory authentication
[*] Mount volumes for user
[*] Register user sessions in the systemd control group hierarchy
[*] Inheritable Capabilities Management
  • Vérifier que winbind renvoi bien les utilisateurs et groupes depuis Active Direcory :
wbinfo -u &amp;&amp; wbinfo -g
  • Idem avec la commande getent :
getent passwd | more &amp;&amp; getent group | more

Apache

  • Installation d'Apache2, MySQL et PHP :
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
  • Ajouter les paquets suivants :
apt-get install apache2-mpm-prefork libapache2-mod-auth-kerb

VHost

  • On crée le fichier de configuration en référence à notre Virtual Host :
vi /etc/apache2/sites-available/test.conf

&lt;VirtualHost 192.168.0.10:80&gt;

        ServerName      test
        Redirect        / https://test
        ErrorLog        /var/log/apache2/test.log
        CustomLog       /var/log/apache2/test.log combined

&lt;/VirtualHost&gt;

&lt;VirtualHost 192.168.0.10:443&gt;

        ServerName test
        DocumentRoot /var/www/test

        SSLEngine on
        SSLCertificateFile /etc/apache2/test.crt
        SSLCertificateKeyFile /etc/apache2/test.key

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

&lt;Directory /var/www/test&gt;

        Options         Indexes FollowSymLinks MultiViews
        AllowOverride   none
        Order           allow,deny
        allow from      all

        AuthType                Kerberos
        AuthName                &quot;Kerberos Login&quot;
        KrbMethodNegotiate      On
        KrbMethodK5Passwd       On
        KrbAuthRealms           DOMAIN.TLD
        Krb5KeyTab              /etc/apache2/HTTP-test.keytab
        require                 valid-user

&lt;/Directory&gt;
&lt;/VirtualHost&gt;

Keytab

  • Copier le fichier HTTP-test.keytab et poser les droits pour l'utilisateur www-data :
mv /home/user/HTTP-test.keytab /etc/apache2/
chown www-data:www-data /etc/apache2/HTTP-test.keytab

Certificat

  • On génère un certificat auto-signé :
openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -out /etc/apache2/test.crt -keyout /etc/apache2/test.key

<note important>L'option Common Name doit reprendre le nom du VHost déclaré dans le DNS, ex test.domain.tld devient test </note>

Country Name (2 letter code) [AU]: TS
State or Province Name (full name) [Some-State]: test_land
Locality Name (eg, city) []: test_city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: domain.tld
Organizational Unit Name (eg, section) []: domain.tld
Common Name (e.g. server FQDN or YOUR name) []: test
Email Address []: webmaster@domain.tld
  • Activer les modules Apache et le site :
a2enmod {authnz_ldap,ssl}
a2ensite test.conf
service apache2 restart

Paramétrage du navigateur

Depuis Firefox

about:config
network.negotiate-auth.trusted-uris http://,https://
network.negotiate-auth.delegation-uris http://,https://

Depuis IE

FIXME

Validation

  • Pour valider le bon fonctionnement, créer un fichier index.php dans le répertoire racine du site :
vi /var/www/test/index.php

&lt;?php
echo &quot;&lt;h2&gt;Kerberos Auth&lt;/h2&gt;&quot;;
echo &quot;Auth type: &quot; . $_SERVER[&#039;AUTH_TYPE&#039;] . &quot;&lt;br /&gt;&quot;;
echo &quot;Remote user: &quot; . $_SERVER[&#039;REMOTE_USER&#039;] . &quot;&lt;br /&gt;&quot;; ?&gt;
Kerberos Auth
Auth type: Basic
Remote user: toto@DOMAIN.TLD

Services Web

GLPI

        &lt;Files &quot;plugin_fusioninventory.communication.php&quot;&gt;
          Satisfy Any
          Options FollowSymLinks
        &lt;/Files&gt;

Nagios

Dokuwiki

Sources

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

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

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

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

Local Postfix Dovecot – Ubuntu 14.04 Trusty

Pré-requis

vi /etc/hosts

192.168.1.10    mail    mail.test.lan

apt-get update; apt-get upgrade -y
apt-get install postfix dovecot-imapd libsasl2-2 sasl2-bin libsasl2-modules -y

Demande de création du certificat autosigné oui
nom d'hôte test
Type de messagerie Site Internet
Nom de courrier test

Paramétrages

Postfix

  • On refait configuration du serveur à partir de l'utilitaire dpkg-reconfigure :

dpkg-reconfigure postfix

Nom de courrier mail
Destinataire des courriels de root toto
Autres destinations pour lesquelles… mail, localhost.localdomain, localhost, test.lan
Faut il forcer les mises à jour… non
Réseaux internes 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
Taille maximale des boites 0 (indéfinie)
Caractère d'extension des adresses +
Protocoles internet à utiliser tous
  • Création du fichier mailname :

echo "test.lan" > /etc/mailname

mv /etc/postfix/main.cf{,.ori}
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 test.lan
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/

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

queue_directory = /var/spool/postfix

cp /etc/postfix/main.cf{,.ori}
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

cp /etc/dovecot/dovecot.conf{,.ori}
sed -i 's/#listen/listen/g' /etc/dovecot/dovecot.conf

cp /etc/dovecot/conf.d/10-auth.conf{,.ori}
sed -i 's,#disable_plaintext_auth = yes,disable_plaintext_auth = no,g' /etc/dovecot/conf.d/10-auth.conf
sed -i 's,auth_mechanisms = plain,auth_mechanisms = plain login,g' /etc/dovecot/conf.d/10-auth.conf

/etc/dovecot/conf.d/10-mail.conf

  • Paramétrage du chemin où seront stockés les messages :

cp /etc/dovecot/conf.d/10-mail.conf{,.ori}
sed -i 's,mail_location = mbox:~/mail:INBOX=/var/mail/%u,mail_location = maildir:~/Maildir,g' /etc/dovecot/conf.d/10-mail.conf

/etc/dovecot/conf.d/10-master.conf

  • Dé-commenter et ajouter (lignes 89-93) :

cp /etc/dovecot/conf.d/10-master.conf{,.ori}
vi /etc/dovecot/conf.d/10-master.conf

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

SASL

/etc/default/saslauthd

  • Pour que SASL se lance en tant que démon :

cp /etc/default/saslauthd{,.ori}
sed -i "s/START=no/START=yes/g" /etc/default/saslauthd

  • Redémarrage des services :

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