Quelques tests

In document Serveur Mail Postfix - Dovecot - LDAP - MDS Debian GNU/Linux (Page 30-42)

Il est maintenant possible de faire un premier test en telnet pour vérifier que les quotas définis dans l’annuaire LDAP ont bien été pris en compte :

# tel net 1 2 7 . 0 . 0 . 1 143 Tryi ng 1 2 7 . 0 . 0 . 1 . . . C o n n e c t e d to 1 2 7 . 0 . 0 . 1 . Esca pe c h a r a c t e r is ’^] ’.

* OK D o v e c o t IMAP Se rver ready . . login u s e r @ e x a m p l e . org p a s s w o r d . OK Log ged in .

. g e t q u o t a r o o t inbox

* Q U O T A R O O T " inbox " ""

* QUOTA "" ( S T O R A G E 24 4982 5 0 0 0 0 0 ) . OK G e t q u o t a r o o t c o m p l e t e d . . g e t q u o t a ""

* QUOTA "" ( S T O R A G E 24 4979 5 0 0 0 0 0 ) . OK G e t q u o t a c o m p l e t e d .

. log out

* BYE L o g g i n g out . OK Log out c o m p l e t e d .

Coté client, Thunderbird permet de visualiser l’état des quota lors de l’affichage des propriétés d’un dossier. Avec Thunderbird > 2.0, il est possible de visualiser les quotas dans barre de pro-gression en bas de la fenêtre. Pour cela, il suffit de modifier la variable suivante dans l’éditeur de configuration :

mail . quota . m a i n w i n d o w _ t h r e s h o l d . show = 0

Coté webmail, RoundCube [11] affiche également l’état des quotas dans une barre de progres-sion en bas de la fenêtre.

Chapitre 7

Tri des messages coté serveur : SIEVE

Après la gestion des quotas, un autre atout intéressant de Dovecot est la gestion des filtres SIEVE. SIEVE est un language permettant de traiter les messages à leur arrivée sur le serveur : il est par exemple possible de rediriger un message vers un dossier particulier ou de mettre en place un répondeur automatique de vacance.

SIEVE agit donc de manière comparable à Procmail mais apporte un fonctionnalité très inté-ressante : MANAGESIEVE. MANAGESIEVE est un protocole permettant de gérer les scripts de filtrage depuis l’application de messagerie cliente : plus besoin de se connecter en SSH pour éditer son script de filtrage !

Bien entendu, le support SIEVE n’est disponible uniquement si la livraison des messages est réalisée par le LDA de Dovecot.

7.1 Configuration du plugin

- Tri des mails avec sieve, détection du Spam ...

p r o t o c o l lda { [...]

# s i e v e _ g l o b a l _ p a t h =

m a i l _ p l u g i n s = [...] c m u s i e v e [...]

}

Pour activer la gestion des filtres SIEVE, il ne reste plus qu’a redémarrer le service :

# / etc / init . d / d o v e c o t r e s t a r t

Édition d’un script de base dans /home/<user_name>/.dovecot.sieve :

r e q u i r e " f i l e i n t o ";

if a d d r e s s : is " from " " m a t t h i e u @ e x a m p l e . org " { f i l e i n t o " M a t t h i e u ";

}

Exemple de script pour mettre en place un répondeur automatique de vacance :

r e q u i r e [" f i l e i n t o " , " v a c a t i o n "];

if hea der : c o n t a i n s "X - Spam - Flag " " YES " { f i l e i n t o " Junk ";

} else { v a c a t i o n

# R e p o n d r e u n i q u e m e n t 1 fois par jour au meme e x p e d i t e u r : days 1

# Sujet de la r e p o n s e a u t o m a t i q u e

: s u b j e c t " M e s s a g e a u t o m a t i q u e de v a c a n c e "

# Liste des a d r e s s e s de d e s t i n a t i o n pour l e s q u e l l e s il faut e n v o y e r le m e s s a g e

# de v a c a n c e a u t o m a t i q u e

: a d d r e s s e s [" m a t t h i e u @ e x a m p l e . org " , " m a t @ e x a m p l e . org "]

" I n s e r e z ici le m e s s a g e de v a c a n c e . Cord ialeme nt ,

M a t t h i e u ";

}

7.2 Filtres globaux

Dovecot supporte les filtres globaux pour permettre à tous les utilisateurs de partager un script de filtrage. Attention cependant, le script global défini par la variablesieve_global_pathne sera exécuté uniquement si il n’y a aucun filtre personnel pour l’utilisateur.

Dans /etc/dovecot/dovecot.conf :

p r o t o c o l lda { [...]

s i e v e _ g l o b a l _ p a t h = / etc / d o v e c o t / g l o b a l _ s c r i p t / d o v e c o t . sieve m a i l _ p l u g i n s = [...] c m u s i e v e

[...]

}

Création du répertoire :

# mkdir / etc / d o v e c o t / g l o b a l _ s c r i p t

Exemple de script pour trier les mails marqués par Spamassassin :

r e q u i r e " f i l e i n t o ";

if hea der : c o n t a i n s "X - Spam - Flag " " YES " { f i l e i n t o " Junk ";

}

Modification des droits :

chown -R vmail : mail / etc / d o v e c o t / g l o b a l _ s c r i p t / chmod -R 770 / etc / d o v e c o t / g l o b a l _ s c r i p t /

Pour appliquer la configuration, il ne reste plus qu’a redémarrer le service :

# / etc / init . d / d o v e c o t r e s t a r t

7.3 Édition des scripts : MANAGESIEVE

Comme indiqué précédemment, Dovecot gère maintenant le protocole MANAGESIEVE. Ce support n’est pas encore officiel mais est disponible sous forme de patch. Coté Debian, le patch est inclus dans les paquets depuis la version 1.0.12.

Pour activer le démon managesieve, il suffit simplement de l’ajouter dans la directive "protocols"

du fichier /etc/dovecot/dovecot.conf :

p r o t o c o l s = imaps m a n a g e s i e v e [...]

p r o t o c o l m a n a g e s i e v e { sieve =~/. d o v e c o t . sieve s i e v e _ s t o r a g e =~/ sieve }

Malheureusement, les clients capables de gérer correctement le protocol MANAGESIEVE sont très rares :

– Il existe un plugin pour roundcube mais qui ne fonctionne pas sur la version stable actuelle.

– Le plugin Thunderbird fonctionne maintenant correctement depuis sa version 0.1.5. Ce plugin permet de gérer le protocol managesieve mais malheureusement l’édition des scripts doit encore se faire manuellement.

– ...

Chapitre 8

Apprentissage des SPAMS

8.1 Introduction

- apprentissage des SPAMS dans les dossiers Junk de tous les utilisateurs

- apprentissage des HAMS (Non-SPAMS) dans tous les autres dossiers de tous les utilisateurs - ménage dans les dossiers Junk des utilisateurs

8.2 Cron d’apprentissage

Dans /usr/local/sbin/spam_learn.sh

#!/ bin / bash

M A I L D I R S ="/ home / vmail /"

D B _ P A T H ="/ var / lib / amavis /. s p a m a s s a s s i n /"

D B _ U S E R =" a mavis "

D B _ G R O U P =" am avis "

S A _ L E A R N =" ‘ which sa - learn ‘"

L E A R N _ S P A M _ C M D =" $ S A _ L E A R N -- spam -- no - sync -- d bpath $ D B _ P A T H "

L E A R N _ H A M _ C M D =" $ S A _ L E A R N -- ham -- no - sync -- dbpa th $ D B _ P A T H "

# Learn SPAM

find $ M A I L D I R S - ir egex ’.*/\. Junk \ ( / . * \ ) ?\/\( cur \| new \) /.* ’ - type f - exec $ L E A R N _ S P A M _ C M D {} \;

chown -R $ D B _ U S E R : $ D B _ G R O U P $ D B _ P A T H

# Learn HAM

find $ M A I L D I R S - ir egex ’.*/ cur /.* ’ - not - regex ’.*/\. Junk \ ( / . * \ ) ?\/\( cur \| new \) /.* ’ - type f - exec $ L E A R N _ H A M _ C M D {} \;

chown -R $ D B _ U S E R : $ D B _ G R O U P $ D B _ P A T H

# Clean SPAM f o l d e r s

find $ M A I L D I R S - ir egex ’.*/\. Junk \ ( / . * \ ) ?\/\( cur \| new \) /.* ’ - type f - ctime +30 - delet e

Ajout des droits d’éxécution :

# chmod u + x / usr / local / sbin / s p a m _ l e a r n . sh

Dans /etc/cron.d/amavisd-new

#

# S p a m A s s a s s i n m a i n t e n a n c e for amavisd - new

#

# m h dom mon dow user c o m m a n d

00 20 * * 6 root / usr / local / sbin / s p a m _ l e a r n . sh > / var / log / s p a m _ l e a r n . log 2 > / var / log / s p a m _ l e a r n . err

18 */3 * * * am avis test e / usr / sbin / amavisd new c r o n j o b && / usr / sbin / amavisd new -c r o n j o b sa - syn-c

8.3 Ajustements manuels

Si la configuration de spamassassin doit être ajustée manuellement, pour ajouter des adresses blacklistées par exemple, il est toujours possible d’ajouter des rêgles personnalisées dans le fichier de configuration. Par exemple, pour blacklister l’adresse spam@spammer.org, il suffit d’ajouter la ligne suivante dans le fichier /etc/spamassassin/local.cf :

b l a c k l i s t _ f r o m s p a m @ s p a m m e r . org

Notons qu’en réalité, tous les mails provenant de cette adresse auront un score augmenté de 100 points.

Chapitre 9

Support TLS pour les clients SMTP

9.1 Introduction

- Roadwarriors - Relay selectif

9.2 Configuration du client

Coté client :

# TLS cli ent p a r a m e t e r s

m t p _ t l s _ c e r t _ f i l e =/ etc / ssl / certs / smtpd . pem s m t p _ t l s _ k e y _ f i l e =/ etc / ssl / p r i v a t e / smtpd . key s m t p _ t l s _ s e c u r i t y _ l e v e l = may

- Génération de l’empreinte du certificat.

# o p e n s s l x509 - md5 - f i n g e r p r i n t - in / etc / ssl / certs / smtpd . pem | grep -i f i n g e r p r i n t

9.3 Configuration du serveur

Coté serveur :

# TLS based r e l a y i n g

r e l a y _ c l i e n t c e r t s = hash :/ etc / p o s t f i x / r e l a y _ c l i e n t c e r t s s m t p d _ t l s _ a s k _ c c e r t = yes

s m t p d _ u s e _ t l s = yes

Dans chaque restriction, ajouter :

[...]

p e r m i t _ t l s _ c l i e n t c e r t s , [...]

- Définition des clients autorisés dans /etc/postfix/relay_clientcerts :

XX : XX : XX : XX : XX : XX : XX : XX : XX : XX : XX : XX : XX : XX : XX : XX r o a d w a r r i o r . e x a m p l e . org

- Génération du hash et redémarrage du service :

# p o s t m a p / etc / p o s t f i x / r e l a y _ c l i e n t c e r t s

# / etc / init . d / p o s t f i x r e s t a r t

Chapitre 10

Envoit de mails depuis le réseau local

10.1 Présentation

La messagerie est souvent utilisée pour remonter des alertes systèmes ou des alertes de sécurité. Lorsque les serveurs sont dans un réseau local et ne sont pas associés à un DNS pu-blique, il devient difficile d’envoyer des mails vers l’extérieur : le sender du message (par exemple root@serveur.domainelocal) est rejeté par les serveurs de mails distant qui considèrent l’émetteur comme invalide.

Pour contourner ce problème il est possible de modifier l’adresse de l’émetteur à la volée en utilisant une adresse contenant un domaine valide sur le net. Notons que la méthode présentée ci-dessous ne modifie l’adresse de l’émetteur que dans l’enveloppe du message : l’en-tête "From"

restera donc inchangée. Ainsi le mail sera correctement routé, mais le destinataire pourra toujours identifier l’émetteur original.

10.2 Mise en place

Postfix prévoit une directive permettant la réécriture de l’adresse de l’émetteur à la volée : sender_canonical_maps. Il suffit d’indiquer le type de table utilisé et le fichier contenant les infor-mations pour la réécriture :

s e n d e r _ c a n o n i c a l _ m a p s = r egexp :/ etc / p o s t f i x / s e n d e r _ r e w r i t e

Il faut ensuite définir les réécritures à l’aide de regexp dans le fichier /etc/postfix/sender_rewrite :

/(.*) @ (.*) \. d o m a i n e l o c a l / $ {1} - $ {2}. d o m a i n e l o c a l @ e x a m p l e . org

Avec la configuration décrite ci-dessous, tous les mails arrivant sur cette machine en prove-nance de root@serveur.mon-lan seront expédiés en utilisant l’adresse root.serveur.mon-lan@example.org dans l’enveloppe du message.

Chapitre 11

Webmail : RoundCube

Pour permettre l’accès aux boites IMAP depuis n’importe ou, l’installation d’un webmail s’im-pose. De nombreux webmail Open Source sont disponible mais celui qui sort du lot en ce moment (a mon goût) c’est RoundCube [11]. Il est encore très jeune mais offre de gros atouts coté ergono-mie, notamment grâce l’utilisation d’AJAX. L’interface est très soignée, claire et simple.

Techniquement, ça reste très classique, c’est du PHP et ça s’installe très facilement. Une der-nière remarque sur le carnet d’adresse qui peut maintenant être couplé à un annuaire LDAP.

11.1 Installation

Pour que RoundCube fonctionne correctement, il faut bien entendu que la machine héberge un serveur Apache et un serveur MySQL fonctionnels. Pour plus d’informations sur la configuration du serveur Web, vous pouvez consulter ma page dédiée à ce sujet. De façon plus rapide, voila la liste des paquets nécessaires pour le fonctionnement de RoundCube :

# a p t i t u d e i n s t a l l a p a c h e 2 php5 php5 - ldap

RoundCube est maintenant dans les backports il suffit donc de l’installer avec aptitude :

# a p t i t u d e i n s t a l l r o u n d c u b e

Notons que roundcube peut être utilisé avec plusieurs type de base de données : dans Debian, il utilise SQLite par défaut. Le backend SQLite fonctionne très bien, il est cependant préférable d’utiliser MySQL ou PostgreSQL pour les grosses installations.

Coté base de données en elle-même, il n’y a rien à faire, Debconf se charge de tout.

11.2 Configuration de RoundCube

La configuration de l’accès à la base de donnée se fait dans /etc/roundcube/dd.inc.php. En principe, il ne faut rien modifier, Debconf à générer les fichier correctement.

Tout le reste de la configuration se fait dans le fichier /etc/roundcube/main.inc.php. La configu-ration décrite ci-dessous permet d’utiliser l’annuaire LDAP dans le carnet d’adresse et de définir quelques options par défaut (comme la langue, l’affichage du panneau de pré visualisation des messages, ...)

$ r c m a i l _ c o n f i g [ ’ de fault_h ost ’] = ’ ssl : / / 1 2 7 . 0 . 0 . 1 : 9 9 3 ’ ;

$ r c m a i l _ c o n f i g [ ’ smtp_server ’] = ’127.0.0.1 ’;

$ r c m a i l _ c o n f i g [ ’ smtp_user ’] = ’%u ’;

$ r c m a i l _ c o n f i g [ ’ smtp_pass ’] = ’%p ’;

$ r c m a i l _ c o n f i g [ ’ c r e a t e _ d e f a u l t _ f o l d e r s ’] = TRUE ;

$ r c m a i l _ c o n f i g [ ’ ldap_public ’][ ’ e x a m p l e . org ’] = array (

’ hosts ’ = > array ( ’127.0.0.1 ’) ,

’ port ’ = > 389 ,

’ base_dn ’ = > ’ ou = Users , dc = example , dc = org ’ ,

’ s e a r c h _ f i e l d s ’ = > array ( ’ cn ’ , ’sn ’ , ’ givenname ’ , ’ mail ’) ,

’ name_field ’ = > ’cn ’ ,

’ f i r s t n a m e _ f i e l d ’ = > ’ givenName ’ ,

’ s u r n a m e _ f i e l d ’ = > ’sn ’ ,

’ email_field ’ = > ’ mail ’ ,

’ scope ’ = > ’ sub ’ ,

’ filter ’ = > ’ m a i l e n a b l e = OK ’ ,

’ fuz zy_sear ch ’ = > true ) ;

$ r c m a i l _ c o n f i g [ ’ l o c a l e _ s t r i n g ’] = ’fr ’;

$ r c m a i l _ c o n f i g [ ’ pr eview_p ane ’] = TRUE ;

$ r c m a i l _ c o n f i g [ ’ c h e c k _ a l l _ f o l d e r s ’] = TRUE ;

11.3 Configuration d’apache

Il est possible d’utiliser la configuration d’apache fournie dans les paquets Debian (/etc/round-cube/apache.conf) ou de dédier un VirtualHost au webmail. Ce paragraphe présente la création d’un virtualhost dédié.

Notons que la configuration décrite ci-dessous re-dirige tous les visiteurs vers le vhost en HTTPS afin de ne laisser aucune information importante circuler en clair sur le réseau. Par exemple, créez un fichier /etc/apache2/sites-available/webmail contenant les lignes suivantes :

< V i r t u a l H o s t *:80 >

S e r v e r N a m e w e b m a i l . e x a m p l e . org S e r v e r A l i a s w e b m a i l

S e r v e r A d m i n w e b m a s t e r @ e x a m p l e . org R e w r i t e E n g i n e on

R e w r i t e C o n d %{ S E R V E R _ P O R T } !^443 $

R e w r i t e R u l e ^/(.* ) $ https ://%{ S E R V E R _ N A M E }%{ R E Q U E S T _ U R I } [ R =301 , L ]

</ VirtualHost >

< V i r t u a l H o s t *:443 >

S e r v e r N a m e w e b m a i l . e x a m p l e . org S e r v e r A l i a s w e b m a i l

S e r v e r A d m i n w e b m a s t e r @ e x a m p l e . org S S L E n g i n e on

S S L C e r t i f i c a t e F i l e / etc / ssl / certs / apa che . pem D o c u m e n t R o o t / var / lib / r o u n d c u b e

< D i r e c t o r y / var / lib / r o u n d c u b e / >

O p t i o n s + F o l l o w S y m L i n k s A l l o w O v e r r i d e All order allow , deny allow from all

</ Directory >

# P r o t e c t i n g basic d i r e c t o r i e s :

< D i r e c t o r y / var / lib / r o u n d c u b e / config >

O p t i o n s - F o l l o w S y m L i n k s A l l o w O v e r r i d e None

</ Directory >

< D i r e c t o r y / var / lib / r o u n d c u b e / temp >

O p t i o n s - F o l l o w S y m L i n k s A l l o w O v e r r i d e None Order allow , deny Deny from all

</ Directory >

< D i r e c t o r y / var / lib / r o u n d c u b e / logs >

O p t i o n s - F o l l o w S y m L i n k s A l l o w O v e r r i d e None Order allow , deny Deny from all

</ Directory >

C u s t o m L o g / var / log / a p a c h e 2 / w e b m a i l _ a c c e s s . log c o m b i n e d E r r o r L o g / var / log / a p a c h e 2 / w e b m a i l _ e r r o r . log

</ VirtualHost >

Pour terminer avec apache, il faut simplement modifier une option de PHP dans le fichier /etc/-php5/apache2/php.ini :

m a g i c _ q u o t e s _ g p c = Off

Reste à activer le vhost et à redémarrer apache pour que les modifications soient prise en compte :

# a 2 e n m o d r e w r i t e

# a 2 e n m o d ssl

# a 2 e n s i t e w e b m a i l

# / etc / init . d / a p a c h e 2 r e s t a r t

Le webmail est maintenant accessible avec un navigateur Web à l’adresse http://webmail.example.org.

In document Serveur Mail Postfix - Dovecot - LDAP - MDS Debian GNU/Linux (Page 30-42)

Related documents