« Filtrage Postfix » : différence entre les versions
m (1 version) |
|||
Ligne 10 : | Ligne 10 : | ||
==smtpd_delay_reject== | ==smtpd_delay_reject== | ||
Les restrictions client, helo et sendersont appliquées après la commande « RCPT TO » si l’option <font style="font-family: courier;">smtpd_delay_reject</font> est à yes. Sinon le filtrage va être plus rapide mais peut poser problème avec certains clients. L'autre avantage du paramètre par défaut est de | Les restrictions client, helo et sendersont appliquées après la commande « RCPT TO » si l’option <font style="font-family: courier;">smtpd_delay_reject</font> est à yes. Sinon le filtrage va être plus rapide mais peut poser problème avec certains clients. L'autre avantage du paramètre par défaut est de noter l'adresse destinataire du mail rejeté. | ||
==Restrictions génériques== | ==Restrictions génériques== |
Version actuelle datée du 20 février 2016 à 11:04
Affiner les paramètres de filtrage de postfix permet :
- d'éviter l'utilisation abusive du serveur
- de limiter le risque d'attaques de spam
- d'optimiser les performances du serveur.
Règles communes
smtpd_delay_reject
Les restrictions client, helo et sendersont appliquées après la commande « RCPT TO » si l’option smtpd_delay_reject est à yes. Sinon le filtrage va être plus rapide mais peut poser problème avec certains clients. L'autre avantage du paramètre par défaut est de noter l'adresse destinataire du mail rejeté.
Restrictions génériques
Restrictions | Explications |
---|---|
permit | Autorise la requête |
defer | Demande au client de recommencer plus tard |
reject | Rejette la requête. Le reject_code est 554 par défaut. |
warn_if_reject | Change le sens de la restriction reject qui va suivre pour qu’il loggue uniquement. Permet de tester des restrictions dans un environnement de production. |
reject_unauth_pipelining | Rejette la requête quand le client utilise du pipeling pour accélérer l’envoi de mail. |
Les bases d’accès (access database)
Explications | |
---|---|
REJECT [code] | |
OK | header]. |
IGNORE | supprime les lignes contenant le texte. |
WARN [text] | averti dans les logs. |
HOLD [text] | Place le message dans la queue hold où il peut être traité manuellement. |
DISCARD [text] | Affirme avoir envoyé le message mais le supprime. |
FILTER transport:nexthop | Envoi le message à travers un filtre de contenu. |
<licode file=/etc/postfix/[body|header]_checks (exemple)> /^to: *friend@public\.com$/ REJECT </licode>
<licode file=/etc/postfix/access> bad_isp.com REJECT user@domain.nom OK </licode>
Après mise à jour, lancer la commande #postmap /etc/postfix/access
Filtrage sur le client (adresse ou nom d’hôte)
smtpd_client_restrictions=
Le filtrage se fait dans l’ordre d’apparition des restrictions.
Restrictions | Explications |
---|---|
reject_unknown_client (postfix < 2.3) |
Rejette le mail quand l’IP du client n’a pas de “PTR record” dans le DNS ou quand le « PTR record » n’a pas de A record qui convienne.
Le unknown_client_reject_code est 450 par défaut. |
permit_mynetworks | Autorise le mail quand le client se trouve dans mynetworks. |
reject_rbl_client domain.tld | Rejette les mails quand l’adresse réseau du client est contenue dans la « Realtime Black List ».
Le maps_rbl_reject_code est 554 par défaut. Voir aussi default_rbl_reply et rbl_reply_maps. |
reject_rhsbl_client domain.tld | Rejette le mail quand le nom d’hôte du client se trouve dans la base rhsbl listée. |
check_client_access maptype:mapname maptype:mapname. | Rejette une règle dans une base de donnée. |
Restrictions génériques | Permit, defer, reject, warn_if_reject, reject_unauth_pipeling |
http://www.postfix.org/uce.html#smtpd_client_restrictions
<licode file=/etc/postfix/main.cf> smtpd_client_restrictions = reject_rbl_client zen.spamhaus.org, reject_rbl_client list.dsbl.org </licode>
Nous utilisons les listes RBL :
- zen de http://www.spamhaus.org/zen/index.lasso.
- Les conditions d'utilisation de la liste sont définies sur le site: « Use of the SBL is free for users with normal mail server erving less than 100 users. »
- Le filtre peut être testé en envoyant un mail à nelson-expn@crynwr.com, à partir d'une adresse gérée par le serveur mail.
- list.dsbl.org de Distributed Sender Blackhole List http://dsbl.org/. Cette liste contient :
- les relay SMTP de 1er niveau
- les proxy ouverys autorisant la commande CONNECT
- les serveurs web utilisant un "formmail" non sécurisé
- seuls des testeurs de confiance peuvent ajouter des adresses dans cette liste
- elle est ouverte à l'utilisation publique
Il existe de nombreuses autres listes, comme le précise la page http://en.wikipedia.org/wiki/DNSBL
Filtrage des impolis (HELO)
smtpd_helo_required = yes smtpd_helo_restrictions =
Restrictions | Explications |
---|---|
reject_invalid_hostname (postfix < 2.3) | Rejette le mail quand le hostname a une mauvaise syntaxe.Le invalid_hostname_reject_code est 501 par défaut. |
reject_unknown_hostname | Rejette le mail quand le hostname n’a pas de record A ou MX.
Le unknown_hostname_reject_code est 450 par défaut. Attention certains ISP (noos, voilà) ont mal configuré leurs passerelles de messagerie. |
reject_non_fqdn_hostname | Rejette le mail quand le hostname n’est pas fqdn.
Le non_fqdn_reject_code est 504 par défaut. |
check_helo_access maptype:mapname maptype:mapname | Recherche dans la base pour des restrictions |
Restrictions génériques | Permit, defer, reject, warn_if_reject, reject_unauth_pipeling |
<licode file=/etc/postfix/main.cf>
- Le serveur distant doit respecter le protocole SMTP en commencant par un HELO
- Syntaxe valide pour le HELO
- MX valide pour le domaine emetteur
smtpd_helo_required = yes smtpd_helo_restrictions = reject_invalid_hostname
- reject_unknown_hostname désactivé car bloque noos
</licode>
Filtrage sur l’expéditeur (MAIL FROM)
smtpd_sender_restrictions=
Restrictions | Explications |
---|---|
reject_unknown_sender_domain | Rejette le mail quand le domaine de l’expéditeur n’a pas de A/MX record.
Le unknown_address_reject_code est à 450 par défaut. |
reject_rhbsl_sender domain.tld | Rejette le mail quand le domaine est listé dans le A record de la base listée.
Le maps_rbl_reject_code est 554 par défaut. Voir aussi default_rbl_reply et rbl_reply_maps. |
check_sender_access maptype:mapname | Recherche une règle dans une base de données |
reject_non_fqdn_sender | Rejette le mail quand le domaine n’est pas fqdn.
Le non fqdn_reject_code est 504 par défaut. |
reject_sender_login_mismatch | Rejette le mail quand le client se connecte par SASL et que l’adresse utilisée ne lui appartient pas (définit dans $smtpd_sender_owner_maps) |
Restrictions génériques | Permit, defer, reject, warn_if_reject, reject_unauth_pipeling |
<licode file=/etc/postfix/main.cf> smtpd_sender_restrictions = reject_non_fqdn_sender, reject_unknown_sender_domain </licode>
Le paramètre strict_rfc821_envelopes précise la tolérance de postfix vis à vis des adresses données dans les champs MAIL FROM et RCPT TO.
Attention: Si ce paramètre est mis à yes, il peut bloquer du mail légitime envoyé par des applications mal développées.
<licode file=/etc/postfix/main.cf>
- Les commandes FROM et RCPT TO doivent etre renseignées apres le HELO
strict_rfc821_envelopes = yes </licode>
Filtrage sur le destinataire (RCPT TO)
smtpd_recipient_restrictions=
Restrictions | Explications |
---|---|
permit_mynetworks (defaut) | Autorise les mails du réseau interne. |
permit_sasl_authenticated | les utilisateurs sont autorisés à envoyer du courrier depuis n'importe quel point du réseau pourvu qu'ils soient authentifiés. |
permit_auth_destination | Autorise le mail si:
|
reject_unauth_destination (defaut)< | Rejette le mail sauf si l’un des deux est vrai:
Le relay_domains_reject_code est 554 par défaut. |
permit_mx_backup | Autorise le mail quand le système est un MX pour la destination.
Le serveur SMTP ne transférera pas des mails avec double @. Voir aussi permit_mx_backup_networks |
check_recipient_access maptype:mapname | Regarde les règles de la base de donnée par rapport à l’adresse de destination. |
check_recipient_maps | Rejette le mail quand l’adresse ne fait pas partie d’une table :
Si les bases local et relay sont vides, cela veut dire qu’aucune vérification n’est faite. Postfix ajoute un check_recipient_maps implicite à la fin de chaque restriction pour « recipient ». |
reject_unknown_recipient_domain | Rejette le mail quand l’adresse de destination n’est n’a pas de record DNS A ou MX.
Le unknown_address_reject_code est 450 par défaut. |
reject_rhsbl_recipient domain.tld | Rejette le mail quand l’adresse de destination est listée dans la base.
Le maps_rbl_reject_code est à 554 par défaut. Voir default_rbl_reply et rbl_reply_maps. |
reject_non_fqdn_recipient | Rejette le mail l’adresse du RCPT TO n’est pas FQDN.
Le non_fqdn_reject_code est 504 par défaut. |
Restrictions génériques | Permit, defer, reject, warn_if_reject, reject_unauth_pipeling |
<licode file=/etc/postfix/main.cf> smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination </licode>
Filtrage sur le contenu
En-tête ou corps du message
<licode file=/etc/master.cf> header_checks=pcre:/etc/postfix/header_checks body_checks=pcre:/etc/postfix/body_checks </licode>
You can find many useful anti-spam regexps at http://taz.net.au/Mail/
Copyright
© 2006 Christophe de Livois
Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale. Pour plus d'informations consulter le site de l'APRIL. |