Il me semble que toutes les autres réponses à cette ancienne question sont uniquement liées à des liens. Je vais donc décrire en quelques mots comment implémenter ma solution préférée pour ce métier.
Le lien que @ 84104 a suggéré, bien que très utile, ne peut pas être utilisé pour mettre en œuvre correctement le taux par émetteur. smtpd_client
les limites ne sont pas pour le contrôle du trafic mais plutôt pour aider avec le logiciel client: "Mesures contre les clients qui établissent trop de connexions". Bien que l'on puisse trouver des recommandations comme celle- ci , cela peut certainement aider. Comme @E. Yazici a suggéré, un addon pour postfix est requis. Personnellement, je trouve la politique recommandée par @Janne Pikkarainen plutôt lourde bien qu'elle soit considérée comme une norme.
Mon addon préféré est postfwd car il est léger et facile. Il convient également de noter que cela fonctionne très facilement avec Plesk ou autre similaire, sans affecter l'ensemble compliqué de fichiers de configuration de Plesk. La limite de débit des e-mails dans Plesk n'a été implémentée que dans la version 12, mais les fonctionnalités de la politique sont toujours limitées.
Téléchargez d'abord le dernier addon sur le site ci-dessus. Je pense qu'il n'y a pas de rpm pour CentOS, contrairement à Ubuntu et Debian. Néanmoins, il est conseillé d'utiliser la dernière version. Plus spécifiquement, la version 1.32 (qui est présente par exemple dans les dépôts Ubuntu 14.04LTS) a un bogue désagréable qui l'empêche de fonctionner correctement. La version 1.35 trie cela.
Assurez-vous que ces modules PERL sont présents. Si vous utilisez Debian ou Ubuntu, vous pouvez installer à partir des dépôts afin que toutes les dépendances soient automatiquement triées puis remplacées /usr/sbin/postfwd
par la dernière version.
Créez ensuite l'ensemble de règles. Créez un fichier tel que /etc/postfwd.cf
ou /etc/postfix/postfwd.cf
et ajoutez:
id=R001; sender=~/.*/; action=rate(sender/100/86400/REJECT only 100 messages per day for $$sender)
id=R002; sender=~/.*/; action=rate(sender/50/3600/REJECT only 50 messages per hour for $$sender)
L'ensemble de règles ci-dessus a évidemment deux règles qui évaluent pour tous les expéditeurs. La syntaxe de l' rate
action est:
rate (<item>/<max>/<time in sec>/<action>)
D'autres exemples de taux peuvent être trouvés ici . Une référence à la syntaxe se trouve dans la documentation . Une discussion similaire peut être trouvée ici . Si SASL est mis en œuvre (par exemple colombier) , vous pouvez en toute sécurité remplacer sender
avec sasl_username
. Vous pouvez tester la validité de l'ensemble de règles avec l' -C
option:
postfwd -f /etc/postfwd.cf -C
Ensuite, vous pouvez éventuellement créer un utilisateur et un groupe dédiés postfwd
sous lesquels postfwd s'exécutera et le lancera:
postfwd --daemon -f /etc/postfwd.cf -u postfwd -g postfwd
En cas de l'avoir installé à partir d'apt (Debian, Ubuntu, etc.), il devrait également y avoir un fichier de configuration sous /etc/default/postfwd
et vous pouvez démarrer le service correctement, par exemple sudo service postfwd start
.
Jetez un œil au journal pour vérifier que postfwd écoute. Postfwd utilise le même journal que postfix (par exemple /var/log/mail
ou /usr/local/psa/var/log/maillog
etc) et une ligne qui postfwd 1.35 ready for input
devrait être en place.
Ensuite, indiquez à postfix d'utiliser postfwd. Modifiez le fichier conf de postfix (généralement /etc/postfix/main.cf
) et dans la ligne:
smtpd_recipient_restrictions = permit_mynetworks,...
ajouter check_policy_service inet:127.0.0.1:10040
. Veuillez considérer que l'ordre dans lequel vous mettez cela smtpd_recipient_restrictions
a une grande importance et que vous pourriez finir par passer beaucoup de temps à diagnostiquer ce qui pourrait ne pas fonctionner. Comme expliqué dans cette question , si un chèque renvoie OK ou REJETER, le suffixe ne passe pas au suivant, vous devriez donc probablement placer ce niveau haut.
Enfin, pour vérifier que cela fonctionne, vous pouvez soit spécifier une très petite limite comme 1 ou même ajouter une règle en tant que id=DEFAULT; action=dunno
. Tout hit de règle est enregistré de toute façon. Veuillez également noter que la limite de débit par expéditeur ne fait pas de distinction entre plusieurs e-mails avec un seul destinataire ou un seul e-mail avec plusieurs destinataires.
Envoyez ensuite un e-mail à partir d'un compte (sur ce serveur) et consultez le journal:
grep "RULES" /var/log/mail
Autres liens: démarrage rapide postfwd .
smtpd_recipient_restrictions
entrée avec un espace dedans, j'ai donc dû définirpostfwd_ratelimit = check_policy_service inet:127.0.0.1:10040
dans /etc/postfix/main.cf puis la référencer dans /etc/postfix/master.cf commesmtpd_recipient_restrictions=...,$postfwd_ratelimit,...
sudo postfwd -f /etc/postfix/postfwd.cf --pidfile=/var/run/postfwd.pid --reload
.+
(au moins 1) plutôt que.*
(au moins 0) afin que les règles ne correspondent pas aux champs absents.Ce dont vous avez besoin est un complément de politique pour Postfix. Il existe une douzaine d'addons de politique pour Postfix, certains d'entre eux ont une fonction de limitation de débit. Vous pouvez trouver une liste des compléments de politique de Postfix ici .
la source
Utile: http://www.postfix.org/TUNING_README.html#conn_limit
la source
Vérifiez ce démon de politique configurable depuis mysql http://www.simonecaruso.com/limit-sender-rate-in-postfix/
la source