OVH Community, votre nouvel espace communautaire.

Postfix : Limiter le nombre d'envoi de mails par unité de temps (exemple par heure)


mathieu.e
06/03/2014, 08h34
En m'inspirant de cette solution sms j'ai fait la même chose mais par mail. Voici donc la version "finale" :

Code:
#!/bin/sh

/usr/sbin/postqueue -p | awk '
	BEGIN { limit = 1 }
	/^-- .+ Kbytes in .+ Request/ { queue_len = $5} 
	END {
	if (queue_len > limit) 
		print "[Postfix] : Queue size problem : ",queue_len,"mails in queue" | "mail -s \"[Postfix] : Queue size problem\" root && service postfix stop && /usr/bin/wget -q -O- \"send-mail.undomaine.com/?subject=ALERTE%20POSTFIX&body=DOWN&key=unecle\"";
	}
'
Merci à vous ,

Bonne journée,

fritz2cat
05/03/2014, 14h23
Pour envoyer un SMS, prendre un compte chez Poivy et lancer un script comme ceci:

wget --no-check-certificate --output-document=temp.log hXXps://www.poivy.com/myaccount/sendsms.php?username=xxxxx^&password=yyyyy^&from=+ 32123456789^&to=+32123456789^&text=%1
Sous linux, adapter le caractère d'escape et le nom des variables. Ca vient d'un script sous Windows.
Le log contiendra:


1
1
success

1


mathieu.e
05/03/2014, 14h07
Oui j'y ai pensé. Il faudrait que fasse un script qui envoie un mail avec un autre smtp que le local. Je vais y réfléchir.

fritz2cat
05/03/2014, 13h50
Evidemment il reste le problème de te prévenir, et ce sera difficile à faire par mail

mathieu.e
05/03/2014, 12h06
Bonjour à tous,

Après pas mal de recherches et n'ayant pas trouvé de solution j'ai opté pour la solution de Wietse Venema dans le lien fritz2cat que je remercie. Je l'ai un peu adaptée. Dans mon cas, si la queue de mail est supérieure à 100 j’éteins Postfix :
Code:
#!/bin/sh

postqueue -p | awk '
        BEGIN { limit = 100 }
        /^-- .+ Kbytes in .+ Request/ { queue_len = $5}
        END {
        if (queue_len > limit)
                print "[Postfix] : Queue size problem : ",queue_len,"mails in queue" | "mail -s \"[Postfix] : Queue size problem\" root && service postfix stop";
        }
'
Ce script est appelé toute les minutes via un cron.

Qu'est ce que vous en pensez? Une meilleure solution?

Cordialement,

shirokoweb
14/02/2014, 19h23
Bonsoir,

Hmm, malheureusement je ne connais rien à CentOS, et encore moins la release3 OVH
Par conséquent je ne sais pas ce qui est installé par défaut avec Postfix dans cet environnement. (spamassassin, dovecot..)

Un bon début serait déjà de savoir ce qui s'installe automatiquement, ensuite vous pouvez faire une recherche sur http://www.postfix.org/documentation.html
Afin de compléter / tuner votre installation.

Qui seront toujours plus récents que la date du post que vous avez linké : 4/30/2009.

En 2008 on pouvait simplement faire :

Code:
nano /etc/postfix/main.cf
Puis éditer les lignes suivantes :

Code:
default_destination_concurrency_limit = 1 
default_destination_rate_delay = 60s
Ce qui avait pour effet de limiter le nombre d'envois simultanés en les mettant en file d'attente.
On pouvait vérifier ce qui était mis en queue avec la commande

Code:
postqueue -p
Depuis de nombreux autres addons sont sortis
http://www.postfix.org/addon.html

Cdt

fritz2cat
14/02/2014, 19h21
Il y a une conversation intéressante ici http://postfix.1071664.n5.nabble.com...e-td51546.html
où Wietse Venema, l'auteur de Postfix, donne des éléments de réponse.

mathieu.e
14/02/2014, 18h51
Bonsoir,

Oui bien sur je peux vous donner quelques informations concernant la configuration. Il s'agit d'un VPS classic 4 avec la release3 d'ovh. C'est donc une centos. Postfix est avec la configuration par défaut d'OVH. N'ayant pas accès au serveur en ce moment je ne pourrais en dire plus, mais s'il manque des informations importantes faites me le savoir.

Merci pour votre aide.

shirokoweb
14/02/2014, 18h34
Une config complète du serveur peut-être nous donnerait une idée plus précise.
On ne peut pas jouer aux devinettes et imaginer des centaines de scénarios possibles pour vous les faire tester un par un comme vous avez tenté de faire en suivant le lien que vous avez cité plus haut.
Cordialement

mathieu.e
14/02/2014, 13h12
Bonjour à tous,

Je reviens vers vous car la solution trouvée sur le blog dont j'ai mis le lien un peu plus haut ne marche pas pour moi. J'ai bien rajouté ce qui est dit dans mon fichier main.cf. Après redémarrage de Postfix je n'ai toujours pas de limite dans l'envoie des mails.

Quelqu'un aurait-il une solution?

mathieu.e
13/02/2014, 15h42
Merci Nico94 pour ta réponse. Je vais regarder de mon côté comment mettre en place cela. Si tu as des exemples de script, je suis toutefois preneur.

Nico94
13/02/2014, 14h47
Une autre manière de faire (peut-être même complémentaire) est de mettre la queue mail sous monitoring et de se faire avertir lorsque celle-ci dépasse un certain seuil. Voire de couper automatiquement le serveur de mail si un autre seuil, plus élevé celui-là, est dépassé.

mathieu.e
13/02/2014, 13h13
Bonjour à tous,

Suite au piratage de notre VPS, qui s'est suivi par un envoi massif de mails, je souhaite mettre en place une limite d'envoi de mail par heure. C'est le cas du serveur lié aux mutualisés xhez OVH (100 / heure) , mais là je souhaite reproduire quelque chose de similaire sur notre VPS. Pour cela j'ai trouvé cet article et j'aimerai avoir votre avis : Lien vers l'article

Est-ce que certain ont déjà eu besoin de faire ce genre de chose? Comment avez-vous fait?

Pour la petit explication l'envoi massif de mails dont nous avons été victimes a eu pour conséquence de nous blacklister auprès des principaux fournisseurs de mails (gmail...). Nous avons entrepris une action pour demander a être supprimé des listes noires. Cela consiste à contacter chaque fournisseur pour lui expliquer notre problème et espérer être supprimé de leur liste.

Hormis le fait de limiter l'envoi de mail et de demander a être supprimé des listes, voyez vous d'autres actions qui puissent être possibles? Qu'est que vous auriez fait à notre place?
(Bien sûr je le précise quand même la faille de notre serveur est maintenant supprimée, le serveur a même subit une réinstallation complète)

Merci pour tout vos conseils,