Consulta para el recuento de valores distintos en un rango de fecha variable.

Tengo un conjunto de datos de direcciones de correo electrónico y fechas en que esas direcciones de correo electrónico se agregaron a una tabla. Puede haber varias entradas de una dirección de correo electrónico para varias fechas diferentes. Por ejemplo, si tengo el conjunto de datos a continuación. Buscaría obtener la fecha y el número de correos electrónicos distintos que tenemos entre dicha fecha y hace 3 días.

Date   | email  
-------+----------------
1/1/12 | test@test.com
1/1/12 | test1@test.com
1/1/12 | test2@test.com
1/2/12 | test1@test.com
1/2/12 | test2@test.com
1/3/12 | test@test.com
1/4/12 | test@test.com
1/5/12 | test@test.com
1/5/12 | test@test.com
1/6/12 | test@test.com
1/6/12 | test@test.com
1/6/12 | test1@test.com

El conjunto de resultados se vería así si usáramos un período de fecha de 3

date   | count(distinct email)
-------+------
1/1/12 | 3
1/2/12 | 3
1/3/12 | 3
1/4/12 | 3
1/5/12 | 2
1/6/12 | 2

Puedo obtener un conteo distinto de un rango de fechas utilizando la consulta a continuación, pero buscando obtener un conteo de un rango por día, así no tengo que actualizar manualmente el rango para cientos de fechas.

select test.date, count(distinct test.email)  
from test_table as test  
where test.date between '2012-01-01' and '2012-05-08'  
group by test.date;

Se agradece la ayuda.