Aller au contenu


POC - Zimbra Policyd

policyd spam mariadb

  • Veuillez vous connecter pour répondre
8 réponses à ce sujet

#1 Zimbra Guy

Zimbra Guy

    Zimbra Jedi

  • Modérateurs
  • 5 533 messages
  • LocalisationPlanète Terre

Posté 06 mai 2016 - 13:56

Afin de lutter contre le SPAM, il est possible d'installer le programme policyd .
Ce programme permet de faire entre autre du greylisting sur les expéditeurs. En version 8.6 de Zimbra,
le programme est déjà packagé au niveau du MTA; mais celui n'est pas intégré de façon
satisfaisante (pour ma part): manque de souplesse dans la manière de le déployer, utilisation de sqlite,
pas de possibilité de partager la base de donnée entre les MTA et pas de FrontEnd web
pour son administration (en fait si, mais il faut bien chercher).

Ce que je propose de faire dans cet article c'est le POC suivant :
- 1 ldap Zimbra
- 1 store Zimbra
- 1 MTA/Proxy Zimbra
- 1 policyd
- 1 base de donnée MySQL
- le FrontEnd web policyd
On supposera ici que le serveur Zimbra est déjà installé.


Préparation de la base de donnée


Nous utiliserons le fork de MySQL, MariaDB, pour héberger nôtre base de donnée SQL.
IP Hostname OS 10.0.0.3 db-policyd.domain.local Ubuntu 14.04 LTS 64 Bit

Télécharger les sources de cbpolicyd sur le site officiel : http://wiki.policyd.org/
wget -c [url="https://gitlab.devlabs.linuxassist.net/policyd/policyd/repository/archive.zip?ref=master"]https://gitlab.devla....zip?ref=master[/url]
Extraire l'archive :
unzip archive.zip
Se connecter au service MySQL/Mariadb, créer la base et les accès en lecture/écriture pour l'utilisateurs ad-policyd_db depuis le FrontEnd Web et le serveur hébergeant le démon policyd :
mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 540
Server version: 5.5.44-MariaDB-1ubuntu0.14.04.1 (Ubuntu)

Copyright © 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE policyd_db CHARACTER SET 'UTF8' ;
MariaDB [(none)]> CREATE USER 'ad-policyd_db'@'srv-web01.domain.local' IDENTIFIED BY 'XXXXXXX' ;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON policyd_db.* TO 'ad-policyd_db'@'srv-web01.domain.local' WITH GRANT OPTION;
MariaDB [(none)]> CREATE USER 'ad-policyd_db'@'srv-zproxy01.domain.local' IDENTIFIED BY 'XXXXXXX' ;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON policyd_db.* TO 'ad-policyd_db'@'srv-zproxy01.domain.local' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
Retourner dans le dossier d'extraction de l'archive de [b]policyd[/b] et aller dans le dossier [b]database[/b] et lancer la commande suivante :
for i in core.tsql access_control.tsql quotas.tsql amavis.tsql checkhelo.tsql checkspf.tsql greylisting.tsql accounting.tsql; do ./convert-tsql mysql $i; done > policyd.sql
Puis remplir la base de données avec le script SQL obtenu :
mysql -u root -p policyd_db < policyd.sql

Préparation du FrontEnd Web


Celui-ci va reposer sur le couple Apche2/PHP5
IP Hostname OS 10.0.0.2 srv-web01.domain.local Ubuntu 14.04 LTS 64 Bit



Création du vHost Apache

policyd.conf
<VirtualHost policyd.domain.local:80>

	ServerName policyd.freesquare.org

	ServerAdmin webmaster@domain.org
	DocumentRoot /srv/www/policyd
	<Directory />
		Options Indexes FollowSymLinks MultiViews
				AllowOverride All
				Order allow,deny
		Require all granted
		Allow from all
	</Directory>


	ErrorLog ${APACHE_LOG_DIR}/policyd.error.log
	CustomLog ${APACHE_LOG_DIR}/policyd.access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet	
Ne pas oublier de vérifier le fichier de configuration et d'activer le vHost.

Installation du FrontEnd


Ensuite récupérer également l'archive policyd et mettre le contenu du dossier webui
dans le répertoire /srv/www/policyd.
Modifier le fichier de configuration de l'interface web de policyd pour avoir accès à la base
de données : /srv/www/policyd/includes/config.php
<?php

$DB_DSN="mysql:host=db-policyd.domain.local;dbname=policyd_db";
$DB_USER="ad-policyd_db";
$DB_PASS="XXXXXXX";
$DB_TABLE_PREFIX="";

?>	
Ensuite aller à l'adresse du FrontEnd : http://policyd.domain.local
Cliquer sur un des items configurable dans la colonne de gauche, si tout est OK,
vous devriez pouvoir modifier la configuration de Policyd.
A ce niveau, la configuration de Policyd est modifiable mais pas opérationnelle.
En effet, il faut maintenant rattacher la base de données MySQL au processus policyd
de Zimbra.

Installation du service Policyd de Zimbra


Au niveau du MTA Zimbra faire les modifications comme suit :

Paramétrage de la base de données


Editer le fichier cbpolicyd.conf.in au niveau de la section [database] :
  • Avant
/opt/zimbra/conf/cdpolicyd.conf.in
DSN=DBI:SQLite:dbname=policyd.sqlite
DSN=DBI:SQLite:dbname=@@cbpolicyd_db_file@@	
  • Après
DSN=DBI:mysql:database=policyd_db;host=db-policyd.domain.local
Username=ad-policyd_db
Password=XXXXXX

Activation du service policyd


Sous l'utilisateur zimbra :
zmprov ms $(zmhostname) +zimbraServiceEnabled cbpolicyd
zmprov ms $(zmhostname) zimbraMtaEnableSmtpdPolicyd TRUE
zmcontrol restart

Activation des modules policyd
  • les contrôles d'accès
zmprov ms $(zmhostname) zimbraCBPolicydAccessControlEnabled TRUE
  • le module Accounting
Ce module agit sensiblement de la même manière que le module utilisé pour les quotas utilisateurs (voir plus bas),
à la différence que ce module peut répartir le quota sur 3 types de période : journée, semaine, mois.
zmprov ms $(zmhostname) zimbraCBPolicydAccountingEnabled TRUE
  • la vérification du message Helo envoyer par le serveur émetteur
zmprov ms $(zmhostname) zimbraCBPolicydCheckHeloEnabled TRUE
  • la vérifiaction du champ DNS SPF du domaine émetteur
zmprov ms $(zmhostname) zimbraCBPolicydCheckSPFEnabled TRUE
  • le module de GreyListing
zmprov ms $(zmhostname) zimbraCBPolicydGreylistingEnabled TRUE
  • les quotas utilisateurs
Se définit sur le nombre de messages et/ou la taille cumulée des messages sur une période par utilisateur.
zmprov ms $(zmhostname) zimbraCBPolicydQuotasEnabled TRUE

Aide au diagnostique


Les logs du service policyd se trouve dans le fichier :
/opt/zimbra/log/cbpolicyd.log
Il est possible de d'augmenter la verbosité du log via la commande suivante :
zmprov ms $(zmhostname) zimbraCBPolicydLogLevel 4
4 correspond au mode debug.
Guy Carré, professionel certifié Zimbra, Contributeur Zimbra
tel : +33 (0)6 63 18 08 XX / mail : guy.carre+zimbrafr@libremail.fr

#2 Klug

Klug

    Zimbra Jedi

  • Membres
  • PipPipPipPip
  • 10 387 messages
  • LocalisationBeaucaire - Gard

Posté 06 mai 2016 - 15:42

Le greylisting, c'est le mal.
Un peu comme le SPF.

#3 Zimbra Guy

Zimbra Guy

    Zimbra Jedi

  • Modérateurs
  • 5 533 messages
  • LocalisationPlanète Terre

Posté 16 mai 2016 - 10:29

@klug : tu peux être plus précis ?
Guy Carré, professionel certifié Zimbra, Contributeur Zimbra
tel : +33 (0)6 63 18 08 XX / mail : guy.carre+zimbrafr@libremail.fr

#4 Klug

Klug

    Zimbra Jedi

  • Membres
  • PipPipPipPip
  • 10 387 messages
  • LocalisationBeaucaire - Gard

Posté 16 mai 2016 - 16:44

Le SPF, j'en ai déjà parlé (broken by design, ça casse les forwards).

Le greylisting, c'est pénible du côté de l'expéditeur lorsqu'on envoie vers des gens qui pensent se protéger via du greylisting.
On se retrouve à gérer des files d'attentes remplies de mails greylistés en attente.
Sans parler des cas d'implémentation bancales, avec plusieurs MX (ou plusieurs serveurs derrière un enregistrement MX) qui ne partagent pas la table des greylists.
C'est la plaie.

Si on veut se débarrasser des zombies/robots qui envoient en masse, postscreen, c'est mieux.

#5 Zimbra Guy

Zimbra Guy

    Zimbra Jedi

  • Modérateurs
  • 5 533 messages
  • LocalisationPlanète Terre

Posté 17 mai 2016 - 08:15

SPF, je peux comprendre (ça casse pas les forwards mais les redirections) mais le Greylisting ça c'est pratique. Qui plus est, avec Policyd tu peux mettre en place du WhiteListing avant d'évaluer le GreyListing.
Pour l'implémentation bancale, justement ce que je propose c'est une base SQL unique et chaque policyd pointe vers celle-ci.

Pour Postscreen, j'ai pas encore regardé.
Guy Carré, professionel certifié Zimbra, Contributeur Zimbra
tel : +33 (0)6 63 18 08 XX / mail : guy.carre+zimbrafr@libremail.fr

#6 Klug

Klug

    Zimbra Jedi

  • Membres
  • PipPipPipPip
  • 10 387 messages
  • LocalisationBeaucaire - Gard

Posté 17 mai 2016 - 09:32

C'est pratique pour celui qui reçoit les mails et estime se protéger avec.
Ce n'est pas pratique du tout pour celui qui envoie les mails.

#7 Zimbra Guy

Zimbra Guy

    Zimbra Jedi

  • Modérateurs
  • 5 533 messages
  • LocalisationPlanète Terre

Posté 17 mai 2016 - 09:48

ça c'est juste une question de point de vue.
Ensuite la personne qui envoie des mails c'est le même principe que dans la vraie vie :
tu écris une lettre, tu mets pas de timbre mais cela ne t'empêche de poster le courrier et le destinataire de le recevoir si il accepte
de s’acquitter du prix du timbre, sinon le courrier reste en attente (mailqueue).
Guy Carré, professionel certifié Zimbra, Contributeur Zimbra
tel : +33 (0)6 63 18 08 XX / mail : guy.carre+zimbrafr@libremail.fr

#8 Klug

Klug

    Zimbra Jedi

  • Membres
  • PipPipPipPip
  • 10 387 messages
  • LocalisationBeaucaire - Gard

Posté 17 mai 2016 - 10:00

Il dit qu'il ne voit pas le rapport.

Mais c'est pas grave.

#9 sparadrus

sparadrus

    Membre avancé

  • Membres
  • 58 messages

Posté 03 octobre 2016 - 17:49

Bonjour,
Je déterre mais est-ce que quelqu'un à réussi à faire du whitelist de domaines sur le SPF?

J'ai toujours un
[CHECKSPF] DEBUG: SPF result: DOMAINE.FR: No applicable sender policy available
Et le mail est rejeté par CBPolicyd...
alors que j'ai ma règle le concernant lui disant d'ignorer son en-tête SPF....
Si quelqu'un à réussi et à un conseil..
Merci
Zimbra OSE 8.6 sur Ubuntu 14.04 Authentification CAS
zExtras Bundle

HyperV 2012R2 12GB de RAM 4vcore sur 2CPU
Cluster SAN RAID10 1Gb/s 1500MTU
150 utilisateurs / 1 domaine





Aussi étiqueté avec au moins un de ces mots-clés : policyd, spam, mariadb

0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)