I am trying to write a script that can take logs from our mail server, boil down the 
rejections to determine the sources of distributed SMTP dictionary attacks against our 
mail server.

Basically I have a table "send_failures like this that gets fed with the raw data from 
the logs:

host_ip                 date
-------------------------------------------
111.111.111.110         2004-06-03 13:42:22
34.23.28.1              2004-06-03 13:42:25
65.2.88.25              2004-06-03 13:42:25
111.111.111.110         2004-06-03 13:42:27
65.2.88.25              2004-06-03 13:42:29
64.251.68.72            2004-06-03 13:42:30

And so on and so forth.

Now it's trivial to write a query to find the pure counting of the attacks:

SELECT host_ip, COUNT(host_ip) AS attempts FROM send_failures GROUP BY host_ip;

However, I also want to have latest date of the attack included as well, so that the 
above exampe would boil down to a query with results like this (I'm running MySQL 
3.23.58):

host_ip                 attempts        last_attempt_date
-----------------------------------------------------------
111.111.111.110         2               2004-06-03 13:42:27
65.2.88.25              2               2004-06-03 13:42:29
64.251.68.72            1               2004-06-03 13:42:30
65.2.88.25              1               2004-06-03 13:42:25
34.23.28.1              1               2004-06-03 13:42:25

Obviously the actual table is going to have hundreds of thousands of entries (the log 
file for a couple of days ago had 1.2 million rejections).

-- 
A. Clausen
[EMAIL PROTECTED]

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to