Seria sensato se eu modificasse a regra postfix fail2ban disso:
failregex = ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.7\.1 .*$
^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 Client host rejected: cannot find your hostname, (\[\S*\]); from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$
^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
^%(__prefix_line)sNOQUEUE: reject: EHLO from \S+\[<HOST>\]: 504 5\.5\.2 <\S+>: Helo command rejected: need fully-qualified hostname;
^%(__prefix_line)sNOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$
^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.1\.8 <\S*>: Sender address rejected: Domain not found; from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$
^%(__prefix_line)simproper command pipelining after \S+ from [^[]*\[<HOST>\]:?$
adicionando a seguinte linha:
^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 550 5\.1\.1 .*$
Porque estou tentando evitar ataques como este:
Jan 27 09:42:02 host1 postfix/smtpd[3416]: NOQUEUE: reject: RCPT from unknown[109.107.106.180]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unkn
own in virtual alias table; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[109.107.106.180]>
Jan 27 09:42:03 host1 postfix/smtpd[3416]: NOQUEUE: reject: RCPT from unknown[109.107.106.180]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown
in virtual alias table; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[109.107.106.180]>
Jan 27 09:55:32 host1 postfix/smtpd[4914]: NOQUEUE: reject: RCPT from unknown[109.107.106.180]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unk
nown in virtual alias table; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[109.107.106.180]>
Jan 27 09:55:32 host1 postfix/smtpd[4914]: NOQUEUE: reject: RCPT from unknown[109.107.106.180]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown
in virtual alias table; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[109.107.106.180]>
Minha preocupação é que ele descartará e-mails errados não intencionais que devem ser devolvidos aos usuários que perderam o endereço de e-mail por acidente.
Qual é a sua sugestão?
Minha sugestão para você é usar postscreen, mais informações aqui: http://www.postfix.org/POSTSCREEN_README.html
Isso coloca toda a carga longe do MTA fazendo algumas verificações inteligentes. Os bots nunca chegarão até lá, que é o jeito que deveria ser.
Se a sua configuração não permitir a instalação do postscreen, o uso de um daemon de política com limites de taxa pode ser útil.
Há sempre um equilíbrio para encontrar com esse tipo de coisa. Uma falha pontual ou pouco frequente é provavelmente um erro da parte do remetente. Várias falhas em um curto espaço de tempo provavelmente são uma indicação de que você deseja colocar um banimento (temporário) em vigor.
É por isso que o fail2ban possui parâmetros que você pode usar para ajustar a sensibilidade. Por exemplo, você pode definir maxretry e findtime . A configuração de maxretry é o número de tentativas com falha que serão toleradas dentro do findtime e o endereço será banido.
Eu daria uma olhada no arquivo e sentiria o que está acontecendo e definiria os parâmetros adequadamente.