Greylist Server for Postfix

Version:0.4.2
License:BSD
Code:github.com project
Issues:github.com issues
Author:
Last updated:2015-05-16 07:07:21
Doc EN:English Documentation
Doc FR:French Documentation

Travis Build Status Code Health Documentation Status Number of PyPI downloads Latest Version License Python Wheel Requirements Status

Features

  • Greylist Server high performance
  • Backends: MongoDB, PostgreSQL, MySQL, Sqlite
  • Configuration by ip address & cidr, sender, recipient, ... (and by regex)
  • WebUI (optional)
  • White and Black lists
  • Anti-relaying and anti-spoofing controls
  • REST Api (in progress)
  • Cache with Memory or Redis

Table of Contents

Téléchargements

Exemple d’installation avec la version Serveur - Backend MongoDB:

$ curl -L http://download.mongrey.io/latest/mongrey-server-mongo-`uname -s`-`uname -m` > /usr/local/bin/mongrey-server

$ chmod +x /usr/local/bin/mongrey-server

$ /usr/local/bin/mongrey-server --version

Version intégrale

Full:Mongrey All (Contient le serveur et l’application Web ainsi que les drivers pour tous les backends)
Serveur:Mongrey Server All (Contient le serveur et les drivers pour tous les backends)
Web:Mongrey Web All (Contient l’application Web et les drivers pour tous les backends)

MongoDB

Requis :

  • Linux Ubuntu 14.04+ ou CentOS 7 (64bits)
  • MongoDB Server 2.6.5+
Serveur:Mongrey Server MongoDB
Web UI:Mongrey Web MongoDB

PostgreSQL

Requis :

  • Linux Ubuntu 14.04+ ou CentOS 7 (64bits)
  • PostgreSQL Server 9.1+
Serveur:Mongrey Server MongoDB
Web UI:Mongrey Web MongoDB

MySQL

Requis :

  • Linux Ubuntu 14.04+ ou CentOS 7 (64bits)
  • MySQL Server
Serveur:Mongrey Server MySQL
Web UI:Mongrey Web MySQL

Mongrey - Installation

Introduction

Vous avez le choix entre plusieurs méthodes d’installation.

La plus simple étant la version binaire adaptée au backend que vous utiliserez (MongoDB, PostgreSQL, ...).

Les binaires sont des versions compilés à l’aide de l’outil PyInstaller et n’ont aucunes dépendances externes.

Tous ces binaires ont été testés avec :

  • Ubuntu 14.04 (Trusty) - 64 bits
  • CentOS 7 - 64 bits
  • Python 2.7.6

Le processus de génération des binaires est visible sur Mongrey Build:

Exemples

Version en cours: 0.4.2

Remplacez [RELEASE] et [BACKEND] par la version et le backend souhaité.

Pour la version la plus récente avec un backend MongoDB, utilisez latest:

Mongrey Serveur

MongoDB
$ curl -L http://download.mongrey.io/latest/mongrey-server-mongo-`uname -s`-`uname -m` > /usr/local/bin/mongrey-server

$ chmod +x /usr/local/bin/mongrey-server

$ /usr/local/bin/mongrey-server --version
PostgreSQL
$ curl -L http://download.mongrey.io/latest/mongrey-server-postgresql-`uname -s`-`uname -m` > /usr/local/bin/mongrey-server

$ chmod +x /usr/local/bin/mongrey-server

$ /usr/local/bin/mongrey-server --version
MySQL
$ curl -L http://download.mongrey.io/latest/mongrey-server-mysql-`uname -s`-`uname -m` > /usr/local/bin/mongrey-server

$ chmod +x /usr/local/bin/mongrey-server

$ /usr/local/bin/mongrey-server --version

Docker

Docker - Build

Exemple avec la version binaire de Mongrey Server PostgreSQL:

# Dockerfile

FROM ubuntu:14.04

RUN apt-get update -y

RUN DEBIAN_FRONTEND=noninteractive \
    apt-get install -y --no-install-recommends \
    ca-certificates git curl language-pack-en

RUN curl -L http://download.mongrey.io/latest/mongrey-server-postgresql-`uname -s`-`uname -m` > /usr/local/bin/mongrey-server

RUN chmod +x /usr/local/bin/mongrey-server

CMD /usr/local/bin/mongrey-server start
# Build du contenair

$ docker build -t mongrey-server-postgresql .
Docker - PostgreSQL

Installez la version binaire de mongrey pour PostgreSQL

$ docker pull postgres

# Lancement du server
$ docker run --name pgsql1 -e POSTGRES_PASSWORD=secret -d postgres

# Création de la DB
$ docker exec -it pgsql1 sh -c 'exec psql -c "create database mongrey_test2;" -U postgres'

# Lancement de mongrey
$ docker run -it --rm --link pgsql1:pgsql \
   -e MONGREY_STORAGE=sql \
   -e MONGREY_DB=postgresql://postgres:secret@pgsql/mongrey_test \
   -e MONGREY_HOST=0.0.0.0 \
   -e MONGREY_PORT=9999 \
   -p 127.0.0.1:9997:9999 \
   -v /usr/local/bin/mongrey-server:/usr/local/bin/mongrey-server \
   ubuntu:14.04 /usr/local/bin/mongrey-server start
Docker - MySQL

Installez la version binaire de mongrey pour MySQL

$ docker pull mysql

# Lancement du server
$ docker run --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql

# Création de la DB
$ docker exec -it mysql1 sh -c 'exec mysql -e "create database mongrey_test;" -uroot -p"secret"'

# Lancement de mongrey
$ docker run -it --rm --link mysql1:mysql \
   -e MONGREY_STORAGE=sql \
   -e MONGREY_DB=mysql://root:secret@mysql/mongrey_test \
   -e MONGREY_HOST=0.0.0.0 \
   -e MONGREY_PORT=9999 \
   -p 127.0.0.1:9997:9999 \
   -v /usr/local/bin/mongrey-server:/usr/local/bin/mongrey-server \
   ubuntu:14.04 /usr/local/bin/mongrey-server start

Mongrey Web

MongoDB
$ curl -L http://download.mongrey.io/latest/mongrey-web-mongo-`uname -s`-`uname -m` > /usr/local/bin/mongrey-web

$ chmod +x /usr/local/bin/mongrey-web

$ /usr/local/bin/mongrey-web --help

$ /usr/local/bin/mongrey-web server -p 8081 -h 127.0.0.1

# Ouvrez le navigateur à l'adresse http://127.0.0.1:8081
PostgreSQL
$ curl -L http://download.mongrey.io/latest/mongrey-web-postgresql-`uname -s`-`uname -m` > /usr/local/bin/mongrey-web

$ chmod +x /usr/local/bin/mongrey-web

$ /usr/local/bin/mongrey-web --help

Installation par PIP

Requis :

  • Linux récent (Ubuntu 14+, CentOS+)
  • Librairie de compilation
  • Python 2.7+ (python 3 non supporté pour l’instant)
  • Python Setuptools/Pip
  • Librairies optionnelles selon le backend (mysql, postgresql, ...)
# Serveur et Web - Tous les backend
$ pip install mongrey[full]

# Serveur - Backend MongoDB
$ pip install mongrey[server_mongodb]

# Serveur - Tous les backend
$ pip install mongrey[server]

$ mongrey-server --help

$ mongrey-web --help

APT

Todo

RPM

Todo

Intégration

Note

Mongrey WEB est livré avec un serveur WSGI Gevent intégré très performant mais si vous avez besoin d’intégrer l’application dans Nginx ou Apache, vous pouvez suivre les procédures suivantes.

Mongrey Serveur

Mongrey WEB - WSGI

Todo

A tester

Warning

Le téléchargement de Mongrey Web au format binaire n’est pas compatible avec cette installation.

Il faut installer Mongrey Web normalement en utilisant la procédure par Installation par PIP

Gunicorn
$ pip install gunicorn

$ gunicorn -k gevent_wsgi --workers 1 'mongrey.web.wsgi:create_app()'
Gunicorn - Supervisord
[program:mongrey-web]
command=gunicorn -k gevent_wsgi --workers 1 'mongrey.web.wsgi:create_app()'
autostart=true
autorestart=true
redirect_stderr=True
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stderr_logfile=/var/log/supervisor/%(program_name)s.log
Chaussette

Todo

Mongrey Configuration

Mongrey Serveur

Configuration par défaut

Par défaut, Mongrey Serveur utilise les variables d’environnements mais vous pouvez aussi charger la configuration à partir d’un fichier YAML.

La commande mongrey-server install crééer un fichier YAML avec la configuration par défaut.

A chaque chargement, Mongrey Serveur, cherche un fichier de configuration facultatif:

Note

  • Ordre de recherche:
    • Valeur de l’option mongrey-server –settings myfile.yml
    • Valeur de la variable d’environnement MONGREY_SERVER_SETTINGS
    • ~/mongrey/server.yml
    • ~/mongrey-server.yml
    • /etc/mongrey-server.yml
    • /etc/mongrey/server.yml

Note

Le fichier YAML n’a pas besoin d’être rempli complètement

Après son chargement, les valeurs sont concaténés avec la configuration par défaut (variables d’environnements)

Postfix intégration

#/etc/postfix/main.cf:

smtpd_recipient_restrictions =
         ...
         reject_unauth_destination
         check_policy_service inet:127.0.0.1:9999

Politique de liste grise

Todo

Liste Blanches

Todo

Liste Blanches

Géo-localisation

Todo

Greylisting

Todo

Sécurité

Mongrey Serveur - IP Autorisés

Défaut: 127.0.0.1, ::1

Par défaut, Mongrey Serveur n’accepte des connections qu’en provenance de l’ip loopback (127.0.0.1, ::1)

Toutes autres connection est rejetés et une entrée de log permet à un outil comme Fail2ban d’agir dynamiquement sur le firewall.

Si Fail2ban est activé et correctement paramètré, les prochaines tentatives seront arrêtés par le firewall.

Mongrey Web - IP Autorisés

Défaut: Toutes

Si vous utilisez le serveur WSGI intégré à Mongrey Web, vous pouvez activer la même protection par IP que Mongrey Serveur.

Fail2ban et iptables

Fail2ban est un outil Python qui à partir de règles et des logs, permet de créer dynamiquement des règles de bloquage dans le firewall.

C’est l’outil idéal pour combattre les attaques par force brute.

Migrations

Radical-Spam

Le but de cette migration n’est pas de remplacer RadicalSpam mais seulement la partie Greylisting ainsi que certaines fonctionnalités assurés actuellement par Postfix à travers des fichiers plats.

Données gérés par l’outil de migration:

  • Domaines internet (local-relays)
  • Autorisations Mynetwork (local-mynetwork-*)
  • Listes Noires (local-blacklist-*)
  • Mailbox (local-directory)

Postgrey

Todo

Copies d’Ecran

Todo

Astuces

Adresses IP variables

Codes et Messages d’erreurs

554

554 5.7.1 blacklisted
554 5.7.1 relay denied
554 5.7.1 spoofing

greylisted

Exemple: 450 4.2.0 Greylisted for 30 seconds

Les autres projets de Liste Grise

Postgrey

Url:Postgrey
Mise à jour:Juin 2014
Techno:Perl
DB Supportées:?
Web UI:?
Licence:?

Bley

Url:Bley
Mise à jour:Mai 2015
Techno:Python (Twisted Framework)
DB Supportées:?
Web UI:?
Licence:?

Valvula

Url:http://www.aspl.es/valvula/
Mise à jour:?
Techno:C
DB Supportées:?
Web UI:http://www.core-admin.com/portal/ (payante)
Licence:GPL 2.0

policyd-weight

Url:http://www.policyd-weight.org/
Mise à jour:Septembre 2011 (maintenance mode)
Techno:Perl
DB Supportées:?
Web UI:Non
Licence:?

Gross

Url:https://code.google.com/p/gross/
Mise à jour:Juin 2011
Techno:C
DB Supportées:?
Web UI:?
Licence:?

pfxpold

Url:https://github.com/mschmitt/pfxpold
Mise à jour:Juin 2010
Techno:Perl
DB Supportées:?
Web UI:?
Licence:?

policyd

Url:http://wiki.policyd.org/download
Mise à jour:Octobre 2013
Techno:Perl
DB Supportées:?
Web UI:?
Licence:?

ACL Policy

Url:http://www.apolicy.org/
Mise à jour:Septembre 2008
Techno:Python (Twisted Framework)
DB Supportées:?
Web UI:?
Licence:?

Ppolicy

Url:http://kmlinux.fjfi.cvut.cz/~vokacpet/activities/ppolicy/
Mise à jour:Décembre 2008
Techno:Python (Twisted Framework)
DB Supportées:?
Web UI:?
Licence:?

Tumgreyspf

Url:https://github.com/linsomniac/tumgreyspf
Mise à jour:Avril 2015
Techno:Python
DB Supportées:?
Web UI:?
Licence:?

Greyfix

Url:http://www.kim-minh.com/pub/greyfix/
Mise à jour:Mars 2013
Techno:C
DB Supportées:?
Web UI:?
Licence:?

Sqlgrey (fork de Postgrey)

Url:http://sqlgrey.sourceforge.net/
Mise à jour:Février 2012
Techno:Perl
DB Supportées:?
Web UI:?
Licence:?

Greylist Daemon

Url:http://mimo.gn.apc.org/greylist
Mise à jour:Octobre 2009
Techno:C++
DB Supportées:?
Web UI:?
Licence:?

Gld

Url:https://www.gasmi.net/progs.php
Mise à jour:Mai 2006
Techno:C
DB Supportées:?
Web UI:?
Licence:?

Références

Change Log

Glossaire

Liste Grise
binaire
Version binaire

Pour faciliter l’utilisation de Mongrey, des binaires autonomes sont livrés pour chaque déclinaisons de Mongrey

Chaque binaire est préparer à l’aide de PyInstaller et n’a besoin d’aucune installation supplémentaire, en dehors du backend (MongoDB, PostgreSQL ou MySQL).

Indices and tables