Parece-me que todas as outras respostas a essa pergunta antiga são apenas de link. Então, vou descrever em poucas palavras como implementar minha solução favorita para este trabalho.
A ligação que @ 84104 sugeriu, embora muito útil, não pode ser usado para implementar adequadamente taxa por remetente. smtpd_client
Os limites não são para controle de tráfego, mas para ajudar com o software cliente: "Medidas contra clientes que fazem muitas conexões". Embora se possa encontrar recomendações como esta uma que certamente pode ajudar. Como @E. Yazici sugeriu, é necessário um complemento para o postfix . Pessoalmente, considero o policyd recomendado por @Janne Pikkarainen bastante complicado, embora seja considerado um padrão.
Meu addon favorito é o postfwd porque é leve e fácil. Também é importante notar que isso funciona muito facilmente com o Plesk ou outro similar, sem afetar o conjunto complicado de arquivos de configuração do Plesk. O limite de taxa de email no Plesk foi implementado apenas na versão 12, mas os recursos da política ainda são limitados.
Primeiro faça o download do último complemento no site acima. Eu acredito que não há rpm para o CentOS, em contraste com o Ubuntu e o Debian. No entanto, é recomendável que a versão mais recente seja usada. Mais especificamente, a versão 1.32 (que está presente em, por exemplo, Ubuntu 14.04LTS repos) possui um bug desagradável que impede que ele funcione adequadamente. A versão 1.35 resolve isso.
Verifique se esses módulos PERL estão presentes. Se você estiver usando o Debian ou Ubuntu, poderá instalar a partir de repositórios para que todas as dependências sejam automaticamente classificadas e substituídas /usr/sbin/postfwd
pela versão mais recente.
Em seguida, crie o conjunto de regras. Crie um arquivo como /etc/postfwd.cf
ou /etc/postfix/postfwd.cf
e adicione:
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)
O conjunto de regras acima tem obviamente duas regras que avaliam para todos os remetentes. A sintaxe da rate
ação é:
rate (<item>/<max>/<time in sec>/<action>)
Outros exemplos de taxas podem ser encontrados aqui . A referência à sintaxe pode ser encontrada na documentação . Discussões semelhantes podem ser encontradas aqui . Se o SASL estiver implementado (por exemplo, dovecot), você poderá substituí-lo sender
com segurança sasl_username
. Você pode testar a validade do conjunto de regras com a -C
opção:
postfwd -f /etc/postfwd.cf -C
Posteriormente, você pode, opcionalmente, criar um usuário e um grupo dedicados postfwd
sob os quais o postfwd será executado e iniciá-lo:
postfwd --daemon -f /etc/postfwd.cf -u postfwd -g postfwd
No caso de instalá-lo a partir do apt (Debian, Ubuntu etc), também deve haver um arquivo de configuração /etc/default/postfwd
e você pode iniciar o serviço corretamente, por exemplo sudo service postfwd start
.
Dê uma olhada no log para verificar se o postfwd está escutando. O Postfwd usa o mesmo log que o postfix (por exemplo, /var/log/mail
ou /usr/local/psa/var/log/maillog
etc) e uma linha que postfwd 1.35 ready for input
deve estar em vigor.
Em seguida, avise o postfix para usar o postfwd. Edite o arquivo conf postfix (geralmente /etc/postfix/main.cf
) e na linha:
smtpd_recipient_restrictions = permit_mynetworks,...
adicionar check_policy_service inet:127.0.0.1:10040
. Por favor, considere que a ordem em que você coloca isso smtpd_recipient_restrictions
é de grande importância e você pode acabar gastando muito tempo diagnosticando o que pode estar errado. Conforme explicado nesta pergunta , se uma verificação retornar OK ou REJECT, o postfix não continuará para a próxima, portanto, você provavelmente deve colocar esse valor alto.
Por fim, para verificar se isso funciona, você pode especificar um limite muito pequeno como 1 ou até mesmo adicionar uma regra como id=DEFAULT; action=dunno
. Qualquer ocorrência de regra é registrada de qualquer maneira. Observe também que o limite de taxa por remetente não distingue entre vários emails com um único destinatário ou um único email com vários destinatários.
Em seguida, envie um email de uma conta (nesse servidor) e veja o log:
grep "RULES" /var/log/mail
Outros links: início rápido do postfwd .