postfwd não taxa limitando usuários sasl

2

Eu gostaria de usar a postfwd versão 2 para limitar a quantidade de e-mails diários enviados pelos meus usuários autenticados pelo sasl.

Instalei o último tarball: postfwd-1.35 com o último postfix do Centos 6.4

Na minha só tenho essa regra

id=RULEZEROSASL
  sasl_username=~/^(\S+)$/
  action=rcpt(sasl_username/500/86400/REJECT only 500 recipients per day for $$sasl_username) 

que deve rejeitar apenas o correio com usuários autenticados (não o correio de servidores de e-mail confiáveis).

Meu postfwd2 escuta no tcp 10045 e no meu postfix main.cf eu tenho

# Restriction Classes
smtpd_restriction_classes       = postfwdcheck
postfwdcheck                    = check_policy_service inet:127.0.0.1:10045
127.0.0.1:10045_time_limit      = 3600

...

smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        permit_tls_clientcerts
        reject_unauth_destination
        check_recipient_access  hash:/etc/postfix/access
        reject_invalid_helo_hostname
# postfwd con rate limiting
        check_policy_service inet:127.0.0.1:10045
        warn_if_reject reject_non_fqdn_helo_hostname
        warn_if_reject reject_unknown_helo_hostname
        warn_if_reject reject_unknown_client
        reject_non_fqdn_sender
        reject_non_fqdn_recipient
        reject_unknown_sender_domain
        reject_unknown_recipient_domain
        warn_if_reject reject_unverified_sender
        reject_unverified_recipient
        reject_rbl_client zen.spamhaus.org
        permit  

em / etc / postfix / policy

.   postfwdcheck

não vejo entradas de correspondência de regra no log e o comando

postfwd2 -vv --dumpcache -f /etc/postfwd.cf

mostra o número da solicitação

[STATS] postfwd2::policy 1.35: **5** requests since 0 days, 01:05:31 hours

aumentando apenas para testes manuais feitos com:

 nc 127.0.0.1 10045 <request.sample

Alguma ideia do motivo pelo qual o postfwd não está envolvido no postfix?

    
por golemwashere 26.04.2013 / 16:19

2 respostas

3

As classes de restrição do postfix podem retornar três respostas, OK, REJECT ou DUNNO, geralmente elas têm (OK, DUNNO) ou (REJECT, DUNNO), por causa da maneira que o postfix funciona. DENY e OK significam que o resto dos cheques são ignorados, DUNNO significa passar para o próximo cheque.

Portanto, no seu caso, permit_mynetworks ou permit_sasl_authenticated estão retornando OK, portanto não verifica mais em smtpd_recipient_restrictions , embora você possa colocá-lo em outra classe de restrição que primeiro terá que retornar OK, para o e-mail a ser encaminhado.

    
por 26.04.2013 / 16:55
1

Você não deve usar "smtpd_recipient_restrictions" para "action = rcpt (...)", pois ele precisa conhecer o atributo recipient_count. Na página do manual:

 rcpt (<item>/<max>/<time>/<action>) 
   this command works similar to the rate() command with the difference,
   that the rate counter is increased by the request's recipient_count
   attribute. to do this reliably you should call postfwd from 
   smtpd_data_restrictions or smtpd_end_of_data_restrictions. if you want
   to be sure, you could check it within the ruleset:
      # recipient count limit 3 per hour per client
      id=RCPT01 ;  protocol_state==END-OF-MESSAGE ;  client_address!=10.1.1.1
         action=rcpt(client_address/3/3600/450 4.7.1 sorry, max 3 recipients per hour)

Portanto, se você usar "check_policy_service inet: 127.0.0.1: 10045" em smtpd_data_restrictions, ele funcionará. Espero que sim.

    
por 28.10.2013 / 16:44