Contrôle du débit des messages SMTP sur Ubuntu 8.04, de préférence avec postfix


8

Peut-être que je poursuis un bogue, mais j'essaie de configurer un proxy smtp de toutes sortes. J'ai un serveur postfix qui reçoit tous les e-mails d'une collection de serveurs / clients. Il utilise un smarthost (relayhost = ...) pour transmettre son courrier à notre MTA d'entreprise. Je voudrais limiter le nombre de messages qu'un serveur individuel peut relayer pour éviter de submerger le MTA d'entreprise. Postfix a un programme appelé "enclume" qui est capable de suivre les statistiques sur le courrier à utiliser pour de telles choses, mais il ne semble pas être exécuté. J'ai exécuté "inotifywait -m / usr / lib / postfix / anvil" pendant que je commençais postfix et envoyais un certain nombre de messages via un serveur distant. inotifywait a indiqué que l'enclume n'a jamais été exécutée. Quelqu'un a-t-il réussi à contrôler les taux de postfix / enclume?

main.cf

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
myhostname = site-server-q9
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost
relayhost = Out outgoing mail relay
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = 10.X.X.X
smtpd_client_message_rate_limit = 1
anvil_rate_time_unit = 1h

extrait master.cf

anvil     unix  -       -       -       -       1       anvil
smtp      inet  n       -       -       -       -       smtpd

Réponses:


7

En fin de compte, j'ai utilisé policyd qui fait exactement ce genre de chose. Je l'ai configuré pour limiter une seule adresse IP à pas plus de 10000 messages par heure et 1 Go. Vous trouverez ci-dessous une copie du document que j'ai rédigé au cas où quelqu'un le trouverait utile.


Configurer postfix et policyd

Une fois les packages installés, apportez les modifications suivantes à leurs configurations. Dans /etc/postfix/main.cf, ajoutez la ligne suivante

smtpd_client_restrictions = check_policy_service inet:127.0.0.1:10031

Dans /etc/postfix-policyd.conf

  • changer WHITELISTING=1pourWHITELISTING=0
  • changer GREYLISTING=1pourGREYLISTING=0
  • changer SENDERTHROTTLE=0pourSENDERTHROTTLE=1
  • changer QUOTA_EXCEEDED_TEMP_REJECT=1pourQUOTA_EXCEEDED_TEMP_REJECT=0
  • changer SENDER_QUOTA_REJECTION="Quota Exceeded."pourSENDER_QUOTA_REJECTION="Quota Exceeded, 10,000 messages/hour max!"
  • changer SENDER_SIZE_REJECTION="Message size too big."pourSENDER_SIZE_REJECTION="Message size too big. 10Mb per message or 1 Gb/hour max!"
  • changer SENDERMSGLIMIT=512pourSENDERMSGLIMIT=10000
  • changer SENDERRCPTLIMIT=3600pourSENDERRCPTLIMIT=10000
  • changer SENDERQUOTALIMIT=250000000pourSENDERQUOTALIMIT=1000000000
  • changer SENDERMSGSIZE=10240000pourSENDERMSGSIZE=50000000
  • changer SENDER_INACTIVE_EXPIRE=31dpourSENDER_INACTIVE_EXPIRE=1h

2

Peut-être intéressant pour votre implémentation:

default_destination_concurrency_limit (default: 20)

    The default maximal number of parallel deliveries to the same destination. This is the default limit for delivery via the lmtp(8), pipe(8), smtp(8) and virtual(8) delivery agents. With per-destination recipient limit > 1, a destination is a domain, otherwise it is a recipient.

    Use transport_destination_concurrency_limit to specify a transport-specific override, where transport is the master.cf name of the message delivery transport.

1

Anvil était vraiment destiné à limiter les débits de messages entrants, pas à limiter les messages sortants. Considérez-le comme un filtre DoS brut.

Vous voudrez peut-être regarder les paramètres qui se rapportent à la partie qmgr de postfix. Plus précisément, vous souhaiterez peut-être définir vos limites de simultanéité à quelque chose de très bas et vos temps d' attente dans la file d'attente très élevés. Vous voudrez définir le taux de livraison à quelque chose qui a un grand (r) retard , et vous voudrez également réduire le nombre de processus de livraison dans master.cf.

Avez-vous envisagé d'utiliser qshape pour déterminer quel sera un taux acceptable pour votre MTA interne?


Mon objectif n'est pas de ralentir quoi que ce soit, je veux juste empêcher le processus de fuite de retirer le serveur d'entreprise. C'est l'accord que j'ai conclu avec l'équipe d'échange pour leurs services. Le courrier doit toujours être accrocheur. J'ai reconfiguré le suffixe pour la livraison locale et répété le test. Les messages ignorent toujours la limite.
TimDaMan

1
Je l'ai compris !! Anvil n'obtient pas de données de flux / processus sur les clients qui sont dans "mynetworks = ..." Je l'ai changé en mynetworks = 127.0.0.0/8 et la limite est respectée.
TimDaMan

0

Anvil se connecte pour postfix, j'ai ajouté ci-dessous à main.cf et semble fonctionner pour moi

#### Prevent server sending excess mail from clients add to /etc/postfix/main.cf
####
anvil_rate_time_unit = 60s
anvil_status_update_time = 120s
smtpd_error_sleep_time = 2s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
smtpd_client_message_rate_limit = 
#### End Prevent server sending excess mail 
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.