# Comment Bloquer les Spams avec le Serveur Email Postfix

Cédrix - 2024-07-27

#debian #postfix

---

## Introduction

L'augmentation des spams dans les courriers électroniques est un fléau moderne auquel chaque administrateur de serveur de messagerie doit faire face. Le serveur de messagerie Postfix, grâce à sa flexibilité et à sa puissance, offre plusieurs techniques pour combattre efficacement les courriers indésirables. Cet article s'inspire d'un billet de blog détaillant les méthodes pour stopper les spams avec Postfix, en se basant sur la version 3.5.25 de Postfix sur Debian 12.

## Analyse des Spams et Configuration de Postfix

Avant de plonger dans les configurations, il est essentiel de comprendre comment les spams se manifestent et d'analyser les logs des emails. Les logs de Postfix se trouvent généralement dans le fichier `/var/log/mail.log` et ses archives associées. Par exemple, un log peut révéler des tentatives de spam où l'expéditeur utilise des noms d'utilisateur trompeurs et des techniques pour contourner les filtres.

## Techniques de Filtrage de Spam

1. **Service Anvil de Postfix** : Introduit dans la version 2.2 de Postfix, le service Anvil permet de limiter les attaques par inondation de courriels en imposant des restrictions sur les erreurs et les connexions. Voici quelques paramètres clés :
    - `smtpd_error_sleep_time = 3s`
    - `smtpd_soft_error_limit = 5`
    - `smtpd_hard_error_limit = 10`
    - `smtpd_client_connection_count_limit = 5`
    - `smtpd_client_connection_rate_limit = 20`

2. **Restrictions SMTP** : Les restrictions SMTP peuvent être configurées pour filtrer les spams à différents niveaux de l'interaction SMTP. Voici quelques-unes des restrictions les plus efficaces :
    - `smtpd_helo_required = yes`
    - `disable_vrfy_command = yes`
    - `unverified_sender_reject_reason = Address verification failed`

3. **Étapes de Restrictions SMTP** : Postfix traite les restrictions dans un ordre prédéfini. Les étapes incluent :
    - `smtpd_client_restrictions`
    - `smtpd_helo_restrictions`
    - `smtpd_sender_restrictions`
    - `smtpd_recipient_restrictions`

## Exemple de Configuration

Voici un exemple de configuration des restrictions dans le fichier `main.cf` de Postfix :

```plaintext
smtpd_relay_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unknown_sender_domain,
    reject_unauth_destination

smtpd_recipient_restrictions =
    permit_mynetworks,
    reject_non_fqdn_helo_hostname,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    reject_unknown_reverse_client_hostname,
    reject_invalid_helo_hostname,
    reject_unknown_helo_hostname,
    reject_unknown_sender_domain,
    reject_unknown_recipient_domain,
    check_recipient_access hash:/etc/postfix/recipient_access,
    check_helo_access hash:/etc/postfix/helo_checks,
    check_sender_access hash:/etc/postfix/sender_access,
    permit

smtpd_data_restrictions =
    reject_unauth_pipelining,
    permit
```

Si vous n'avez pas l'intention de créer les fichiers `/etc/postfix/recipient_access`, `/etc/postfix/helo_checks` et `/etc/postfix/sender_access`, mettez les lignes en commentaire.

**## Explications des Restrictions

- **`smtpd_relay_restrictions`** : Contrôle les règles de relais des emails.
- **`smtpd_recipient_restrictions`** : Filtre les destinataires des emails pour bloquer les domaines non valides ou inconnus.
- **`smtpd_data_restrictions`** : Empêche le pipelining non autorisé des données, une technique souvent utilisée par les spams.

## Détails des Vérifications d'Accès

### `check_recipient_access`

Le paramètre `check_recipient_access` utilise un fichier de hachage pour définir des règles spécifiques pour les destinataires d'email. Ce fichier permet de rejeter les emails envoyés à certaines adresses obsolètes ou non valides.

**Configuration du fichier de hachage**

Le fichier `/etc/postfix/recipient_access` doit être créé et rempli avec les adresses et les actions associées. Exemple de contenu :

```plaintext
holly@brackin.net       550     Mailbox doesn't exist.
anthony@brackin.net     550     Mailbox doesn't exist.
peggy@brackin.net       550     Mailbox doesn't exist.
gute@brackin.net        550     Mailbox doesn't exist.
```

Chaque entrée suit le format : `adresse_destinataire action`, où l'action peut être de rejeter avec un code d'erreur spécifique (ici, 550 indiquant que la boîte aux lettres n'existe pas).

**Mise en place du fichier de hachage**

Après avoir créé et édité le fichier, il faut générer le fichier de hachage avec la commande :

```bash
postmap /etc/postfix/recipient_access
```

Cette commande crée un fichier binaire `/etc/postfix/recipient_access.db` utilisé par Postfix pour effectuer des recherches rapides.

### `check_helo_access`

Le paramètre `check_helo_access` permet de vérifier les informations envoyées dans la commande HELO/EHLO. Il peut empêcher les spammeurs de se faire passer pour des domaines ou des adresses IP locales.

**Configuration du fichier de hachage**

Le fichier `/etc/postfix/helo_checks` doit être créé et rempli avec les valeurs HELO/EHLO et les actions associées. Exemple de contenu :

```plaintext
# HELO'ing as being in our own domain(s)?
grokshop.tv             REJECT You are not in grokshop.tv
brackin.net             REJECT You are not in brackin.net

# HELO'ing with our IP address?
198.58.109.26           REJECT You are not 198.58.109.26

# HELO'ing as "localhost?"
localhost               REJECT You are not me
```

Chaque entrée suit le format : `valeur_HELO action`, où l'action peut être de rejeter avec un message spécifique.

**Mise en place du fichier de hachage**

Après avoir créé et édité le fichier, il faut générer le fichier de hachage avec la commande :

```bash
postmap /etc/postfix/helo_checks
```

Cette commande crée un fichier binaire `/etc/postfix/helo_checks.db` utilisé par Postfix pour effectuer des recherches rapides.

### `check_sender_access`

Le paramètre `check_sender_access` est utilisé pour filtrer les expéditeurs spécifiques. Par exemple, si une entreprise continue d'envoyer des emails à une adresse obsolète malgré les demandes de cessation, cette vérification peut bloquer ces expéditeurs.

**Configuration du fichier de hachage**

Le fichier `/etc/postfix/sender_access` doit être créé et rempli avec les domaines ou adresses expéditeurs et les actions associées. Exemple de contenu :

```plaintext
draftkings.com REJECT
draftkings.zendesk.com REJECT
```

Chaque entrée suit le format : `domaine_expediteur action`, où l'action est de rejeter les emails provenant de ces domaines.

**Mise en place du fichier de hachage**

Après avoir créé et édité le fichier, il faut générer le fichier de hachage avec la commande :

```bash
postmap /etc/postfix/sender_access
```

Cette commande crée un fichier binaire `/etc/postfix/sender_access.db` utilisé par Postfix pour effectuer des recherches rapides.

## Autres Paramètres Importants

- **`smtpd_helo_required`** : Ce paramètre exige que le client s'identifie avec la commande HELO ou EHLO avant d'envoyer toute autre commande SMTP. Par défaut, il est désactivé (`no`), mais il est recommandé de l'activer (`yes`) pour améliorer la vérification des expéditeurs.
- **`disable_vrfy_command`** : Désactive la commande VRFY, qui peut être utilisée par les spammeurs pour vérifier l'existence des adresses email sur le serveur. En la désactivant (`yes`), on réduit le risque d'énumération des utilisateurs.
- **`unverified_sender_reject_reason`** : Permet de définir un message de rejet personnalisé pour les expéditeurs non vérifiés. Par exemple, `Address verification failed` est un message standard qui peut être utilisé.

## Conclusion

Postfix est un outil extrêmement puissant pour gérer et bloquer les spams sans nécessiter de logiciels tiers comme SpamAssassin. La configuration des paramètres de restriction et l'analyse des logs permettent de réduire efficacement les courriers indésirables. En comprenant et en personnalisant les différentes options disponibles, les administrateurs peuvent protéger leurs serveurs de messagerie contre les attaques de spam tout en maintenant une flexibilité et une robustesse optimales. Pour les serveurs soumis à des volumes de spam très élevés, il peut être utile d'explorer l'utilisation de Postscreen, une fonctionnalité avancée de Postfix dédiée à la lutte contre le spam.

## Liens Utiles

- [Documentation officielle de Postfix](http://www.postfix.org/documentation.html)
- [Tutoriels sur la configuration de Postfix](https://www.linode.com/docs/email/postfix/how-to-install-and-configure-postfix-on-debian-10/)