Newsgroup: it.comp.os.linux.sys
Titolo: SMTP Rate Limit

Ciao a tutti, ho dovuto mettere in piedi un server SMTP che fa da relay aperto a una subnet piuttosto grande della quale non ho controllo. 
Vorrei evitare gli abusi e lo spam limitando il traffico degli IP "sospetti" e bloccando quelli identificati come spammer.
La mia idea era quella di parsare ad intervalli regolari i file di log exim e segnalare gli IP che negli ultimi 10 minuti (o altro intervallo di tempo) hanno inviato più di un tot di mail. 
A quel punto metterei questi IP in una coda a bassa priorità con tcng e se il traffico continua li bloccherei con iptables.
 
Che ne pensate?È troppo un accrocchio?
C'è qualcosa di già pronto?
Avete altre idee? (non mi dite SMTP autenticato perchè non lo posso fare :-( (

 (non mi dite SMTP autenticato perchè non lo posso fare)
 
Se la subnet non è composta di utenti tutti "trusted" (e mi pare che non 
sia il caso) mi pare che la configurazione sia ottimale per avere 
problemi in futuro.

 problemi in futuro.
 
Non lo è, ma è un servizio che mi è "ordinato" dalla parte commerciale, io ho avvertito del problema spam e nel caso riesco a risalire al pc che ha fatto spam e bloccarlo.

 
http://www.exim.org/lurker/message/20090115.142654.8f43a0d2.en.html
 
 
P.S.
Questo l'avevo già visto e messo in pratica


 
Noi usiamo una cosa simile fatta inizialmente con iptables + target log
(con un po' di scripting e calcoli) per poi iptables + shorewall e fail2ban.
 
Funziona molto bene e non abbiamo mai avuto rogne.
 
 

 (con un po' di scripting e calcoli) per poi iptables + shorewall e fail2ban.
 
Ma un policy server che è nato apposta per fare codeste cose?

 Questo l'avevo già visto e messo in pratica
 
 
E se hai capito come si fa, allora dovresti anche aver risolto il problema.
 
 

 E se hai capito come si fa, allora dovresti anche aver risolto il problema.
 
Semplicemente mi mancava un pezzo:
http://www.exim.org/exim-html-current/doc/html/spec_html/ch-access_control_lists.html#SECTratelimiting
 
 
Ho capito, stavo solo reinventando la ruota :-)

 Ma un policy server che è nato apposta per fare codeste cose?
 
Ce la fa a lavorare a L7?
Con cosa lo faresti?

 Con cosa lo faresti?
 
Non uso exim, io lavoro con postfix e per queste cose gli affianco postfwd
 
Esempio assolutamente affine al tuo, se ho ben capito: limitare il numero di mail che un certo pool di indirizzi
può inviare nel giro di 5 minuti
 
&&CLABAS { \
client_address=172.23.136.68, 172.23.136.69, 172.23.136.70, 172.23.136.71, 172.23.136.72, 172.23.136.73, 172.23.136.74 ; \
};
id=RATECLAB ; &&CLABAS ; action==rate($$client_address/5/300/REJECT You're sending too much...)
 
Si legge: se un host tra quelli elencati in $client_address manda più di 5 mail in 300 secondi, gli fai
un reject con messaggio "You're sending too much".
 

 Ho capito, stavo solo reinventando la ruota :-)
 
Esatto.
 
Talvolta basta il manuale e google.

 postfwd
 
Vedi?
Exim ha questa caratteristica incorporata.
 
 

 Exim ha questa caratteristica incorporata.
 
Immagino, ma sono vecchio e bolso e non so se ho voglia di studiarmi un MTA ex novo, ecco. :)
Scherzi a parte, ma tu non stavi scrivendo un mta tuo, o ricordo male?
(ci sta anche che tu mi risponda 'fatti i cazzi tuoi', eh. :-P)
 

 (ci sta anche che tu mi risponda 'fatti i cazzi tuoi', eh. :-P)
 
Si si, ricordi bene!
E' in produzione :-P
 
Se vuoi divertirti a smandrapparlo possiamo sentirci per email.
 

 Se vuoi divertirti a smandrapparlo possiamo sentirci per email.
 
Con grande piacere, il mio indirizzo è valido.
Grazie e ciao.


Che, per caso, posso accodarmi? Anche la mia mail sarebbe valida... :-P
 
Jey
-- 
Non prendere la vita troppo sul serio... non ne uscirai mai vivo
http://www.joram.it/servizi/consulente.htm
 

 E' in produzione :-P
 
Per curiosità in quale linguaggio è scritto?


C e si configura dinamicamente in lua e/o perl per avere tutta la 
flessibilità possibile.
 
La documentazione ancora non esiste quindi posso seguire solo uno alla 
volta.
Appena ho un pò di tempo vi ci faccio giocare volentieri.

 Appena ho un p� di tempo vi ci faccio giocare volentieri.
 
Grazie :-)


 C e si configura dinamicamente in lua 
 
/mewant