Serveur Mail · 7 min read · Oct 13, 2025

Le SpamSnake Parfait - Ubuntu Jeos 12.04 LTS Précise Pangolin

Le SpamSnake Parfait - Ubuntu Jeos 12.04 LTS Précise Pangolin

Auteur : Rocky
Version : 5

Postfix avec filtrage bayésien, Postscreen, appel de destinataire Postfix (destinataires relais via look-ahead optionnel), Nginx/Uwsgi, Mysql, Dnsmasq, MailScanner (Spamassassin, ClamAV, Pyzor, Razor, DCC-Client), Baruwa, vérifications SPF, FuzzyOcr, signatures Sanesecurity, Greyfix, KAM, Scamnailer, FireHOL (pare-feu Iptables), script de destinataires relais (optionnel), Webmin (optionnel), avertissement sortant avec alterMIME (optionnel)

Ce tutoriel montre comment configurer un serveur basé sur Ubuntu Jeos comme filtre anti-spam en mode passerelle. À la fin, vous aurez une passerelle SpamSnake qui relayera des e-mails propres à votre MTA. Vous pourrez également voir votre file d’attente entrante, entraîner votre SpamSnake et effectuer quelques opérations plus avancées via Baruwa.

Je ne peux garantir que cela fonctionnera pour vous, de la même manière que cela fonctionne pour moi.

J’utiliserai les logiciels suivants :
• Serveur Web : Nginx v1.1.19/Uwsgi v1.0.3
• Serveur de base de données : MySQL v5.5.28
• Serveur de messagerie : Postfix v2.9.3
• Serveur DNS de mise en cache : Dnsmasq 2.59
• Filtre : MailScanner v4.84.5-3
• Frontend : Baruwa v1.1.2-4sn

Les crédits vont aux gars de HowToForge et aux développeurs de MailScanner, Baruwa, Clamav, Nginx/Uwsgi, Mysql, Postfix, Spamassassin, Razor/Pyzor/DCC et Firehol.

INSTALLATION DE BASE

  1. Installer l’option vm minimum
    Définir le nom d’hôte sur server1
  2. Méthode de partitionnement guidée par défaut
  3. Configurer l’utilisateur :
    u : administrateur
    p : motdepasse
    Pas de cryptage
  4. Pas de mises à jour automatiques
  5. Installer OpenSSH

POST INSTALLATION

1. Obtenir des privilèges root

Activez la connexion root en exécutant ce qui suit et en donnant un mot de passe à root. Vous pouvez ensuite vous connecter directement en tant que root :

sudo passwd root

2. Configurer le réseau

Parce que l’installateur Ubuntu a configuré notre système pour obtenir ses paramètres réseau via DHCP, nous devons changer cela maintenant car un serveur doit avoir une adresse IP statique. Éditez /etc/network/interfaces et ajustez-le selon vos besoins (dans cet exemple, j’utiliserai l’adresse IP 192.168.0.100) :

vi /etc/network/interfaces

et faites-le ressembler à ce qui suit :

# Ce fichier décrit les interfaces réseau disponibles sur votre système
# et comment les activer. Pour plus d'informations, voir interfaces(5).
# L'interface réseau de boucle
auto lo
iface lo inet loopback
# L'interface réseau principale
auto eth0
iface eth0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        dns-nameservers 192.168.0.1

Puis redémarrez votre réseau :

/etc/init.d/networking restart
vi /etc/hosts

et faites-le ressembler à ceci :

127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1
# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Maintenant exécutez :

echo server1.example.com > /etc/hostname  
reboot now

Ensuite, exécutez :

hostname  
hostname -f

Les deux devraient maintenant afficher server1.example.com.

3. Changer le shell par défaut

/bin/sh est un lien symbolique vers /bin/dash, cependant nous avons besoin de /bin/bash, pas de /bin/dash. Par conséquent, nous faisons ceci :

dpkg-reconfigure dash

Installer dash comme /bin/sh ? <– Non

Installer quelques paquets et exigences qui seront nécessaires plus tard :

apt-get install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-raw-zlib-perl libdb4.8-dev libpcre3 libpopt-dev lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++ build-essential telnet wget gawk -y

4. Mise en cache Dnsmasq

apt-get install dnsmasq -y
vi /etc/dnsmasq.conf

et faites écouter Dnsmasq sur localhost :

listen-address=127.0.0.1

5. Installer Mysql

apt-get install mysql-client mysql-server libdbd-mysql-perl -y 

On vous demandera de fournir un mot de passe pour l’utilisateur root MySQL - ce mot de passe est valable pour l’utilisateur root@localhost ainsi que [email protected], donc nous n’avons pas à spécifier manuellement un mot de passe root MySQL plus tard :

Nouveau mot de passe pour l’utilisateur MySQL “root” : <– votremotdepassemysql
Répétez le mot de passe pour l’utilisateur MySQL “root” : <– votremotdepassemysql

6. Installer Postfix :

apt-get install postfix postfix-mysql postfix-doc procmail -y

On vous posera deux questions. Répondez comme suit :

Type général de configuration de messagerie : –> Site Internet
Nom de messagerie système : –> server1.example.com

Arrêtez Postfix :

postfix stop
vi /etc/postfix/master.cf

et faites-le ressembler à ce qui suit :

pickup    fifo  n       -       -       60      1       pickup
         -o content_filter=
         -o receive_override_options=no_header_body_checks

Éditez main.cf :

vi /usr/src/postfix.sh

avec ce qui suit :

#!/bin/sh
postconf -e "alias_maps = hash:/etc/aliases"
newaliases
postconf -e "myorigin = domain.tld"
postconf -e "myhostname = server1.domain.tld"
postconf -e "mynetworks = 127.0.0.0/8, 192.168.0.0/24"
postconf -e "message_size_limit = 10485760"
postconf -e "local_transport = error:No local mail delivery"
postconf -e "mydestination = "
postconf -e "local_recipient_maps = "
postconf -e "relay_domains = mysql:/etc/postfix/mysql-relay_domains.cf"
postconf -e "relay_recipient_maps = mysql:/etc/postfix/mysql-relay_recipients.cf"
postconf -e "transport_maps = mysql:/etc/postfix/mysql-transports.cf"
postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"
postconf -e "disable_vrfy_command = yes"
postconf -e "strict_rfc821_envelopes = no"
postconf -e "smtpd_banner = $myhostname ESMTP SpamSnake"
postconf -e "smtpd_delay_reject = yes"
postconf -e "smtpd_recipient_limit = 100"
postconf -e "smtpd_helo_required = yes"
postconf -e "smtpd_client_restrictions = permit_sasl_authenticated, permit_mynetworks, permit"
postconf -e "smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, permit"
postconf -e "smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain, permit"
postconf -e "smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_recipient_domain, reject_unauth_destination, whitelist_policy, grey_policy, rbl_policy, spf_policy, permit"
postconf -e "smtpd_data_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_pipelining"
postconf -e "smtpd_restriction_classes = spf_policy, grey_policy, whitelist_policy"
postconf -e "spf_policy = check_policy_service unix:private/policy-spf"
postconf –e "policy-spf_time_limit = 3600s"
postconf -e "rbl_policy = reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net"
postconf -e "grey_policy = check_policy_service unix:private/greyfix"
postconf -e "whitelist_policy = check_client_access mysql:/etc/postfix/mysql-global_whitelist.cf, check_sender_access mysql:/etc/postfix/mysql-global_whitelist.cf"
postconf -e "header_checks = regexp:/etc/postfix/header_checks"
touch /etc/postfix/virtual
echo "root [email protected]" >> /etc/postfix/virtual && echo "abuse [email protected]" >> /etc/postfix/virtual && echo "postmaster [email protected]" >> /etc/postfix/virtual
postmap /etc/postfix/virtual
touch /etc/postfix/header_checks
echo "/^Received:/ HOLD" >> /etc/postfix/header_checks
postmap /etc/postfix/header_checks
cat > /etc/postfix/mysql-global_whitelist.cf < /etc/postfix/mysql-relay_domains.cf < /etc/postfix/mysql-relay_recipients.cf < /etc/postfix/mysql-transports.cf <

Note : Pour cette étape, assurez-vous de remplacer [email protected], example.com et @example.com par de vraies valeurs correspondant à votre configuration.

Rendez-le exécutable et exécutez-le :

chmod +x /usr/src/postfix.sh
./usr/src/postfix.sh

*Note : L’utilisateur/mot de passe pour les fichiers cf doit être le même que l’utilisateur/mot de passe que vous utiliserez avec votre configuration de base de données Baruwa plus tard. Assurez-vous de changer tout ce qui est en rouge avant d’exécuter le script.

Appel de destinataire Postfix (Optionnel)

Cette fonctionnalité interroge le serveur destinataire pour voir si le destinataire existe. Sinon, il répond avec une erreur 550 au serveur d’envoi et abandonne la connexion. Si l’utilisateur existe, le SpamSnake continuera à traiter l’e-mail. C’est juste une autre méthode pour prévenir le backscatter, mais cela a un coût. Lisez à ce sujet sur http://www.postfix.org/ADDRESS_VERIFICATION_README.html. Vous pouvez ignorer cette méthode et utiliser la méthode de script (plus tard dans ce guide) si vous décidez qu’elle ralentira votre serveur.

vi /etc/postfix/main.cf et ajoutez ce qui suit :

verify_recipient = reject_unknown_recipient_domain, reject_unverified_recipient  
look_ahead = check_recipient_access hash:/etc/postfix/access  
unverified_recipient_reject_code = 550  
address_verify_map = btree:/var/lib/postfix/verify

Ajoutez ceci à vos classes de restriction smtpd :

verify_recipient, look_ahead

Ajoutez ceci aux restrictions de destinataires smptd :

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, look_ahead, whitelist_policy, grey_policy, rbl_policy, spf_policy, permit

Créez le fichier d’accès :

touch /etc/postfix/access

Ajoutez vos domaines :

cat > /etc/postfix/access <#mysql-transports
example.com verify_recipient
example2.com verify_recipient
EOF

*Note : Assurez-vous d’ajouter des domaines valides que vous filtrez.

Postmap-le :

postmap /etc/postfix/access

Dernière vérification de l’installation de Postfix :

less /etc/postfix/main.cf

Vérifiez le contenu du fichier pour des erreurs et réparez si nécessaire. Démarrez Postfix :

postfix start

Vérifiez que Postfix répond :

telnet 127.0.0.1 25

Vous devriez voir :

220 [votreFQDNici] ESMTP Postfix (Ubuntu)
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.