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 |
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 |
Sqlite¶
Serveur: | Mongrey Server Sqlite |
---|---|
Web UI: | Mongrey Web Sqlite |
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¶
- Voir Postfix_Policy pour plus de détail
#/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.
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:
Postgrey¶
Todo
Copies d’Ecran¶
Todo
Les autres projets de Liste Grise¶
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¶
Next bugfix release
- [Bug]: change: replace constants name
- [Bug]: tests: add tests
- [Bug]: update requirements
- [Bug]: docs: update docs
- [Bug]: update .gitignore and fabfile
- [Bug]: fix: import mongo models in get_store for sql storage
- [Bug]: fix: requirements and slugify tests
- [Bug]: tests: add tests
- [Bug]: feature: update migration
- [Bug]: release: 0.4.2
Glossaire¶
- Liste Grise
- Définition par Wikipédia Greylisting
- 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).