shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Shell p/ Tratamendo do INBOX


From: Thobias Salazar Trevisan
Subject: Re: [shell-script] Shell p/ Tratamendo do INBOX
Date: Wed, 16 Jul 2003 16:07:59 -0300 (BRT)

ae reinaldo,

On Wed, 16 Jul 2003, Reinaldo Carvalho wrote:

> 1) Remover os emails de todos usuários de determinadas datas.
> 2) Remover os emails de todos usuários com determinado assunto.
> 3) Remover os emails de todos usuários com determinado remetente.
> .
> Para quem já usou sendmil ou postfix, 'inbox' seria os emails
> que cada usuário tem no /var/spool/mail (/var/mail)..
> A inbox é apenas um arquivo, que contem os emails em sequencia.

aquele script que postei uma vez aqui na lista funciona com
datas. testei novamente aqui, aparentemente esta funcionando, mas
precisa de mais testes antes de colocá-lo em produção :)

$ cat script.sh
#!/bin/bash

MOSTRA=sim
IFS="
"
mes_num(){
echo "$1" | sed "s/Jan/01/;s/Feb/02/;s/Mar/03/;s/Apr/04/;s/May/05/
s/Jun/06/;s/Jul/07/;s/Aug/08/;s/Sep/09/;s/Oct/10/;s/Nov/11/;s/Dec/12/"
}

while read l;do
DATA=$(echo "$l" |\
sed -n "s¤^From \([^ ]*  *\)\{2\}\([a-zA-Z]\{3\}\) \([0-9]\{1,2\}\) \
[^ ]* \([0-9]\{4\}\).*$¤\2/\3/\4¤p")
if [ $DATA ];then
        DATA=$(echo $(mes_num $DATA) |\
sed 's,\([^/]*/\)\([^/]*/\)\([^/]*\),\2\1\3,')
        [ $(funcoeszz zzdata hoje - $DATA) -gt 45 ] && MOSTRA=nao ||
        MOSTRA=sim
fi
[ "$MOSTRA" = "sim" ] && echo "$l"
done < $1

#########################################################

a idéia e ir lendo as linhas do arquivo e procurando pelo início
de mail. Que é uma linha + - assim:

>From address@hidden Tue May 27 19:26:56 2003 -0300

quando achamos, convertemos a data para dia/mes/ano.
DATA=$(echo $(mes_num $DATA...

depois que temos a data neste formato, usamos o zzdata de
hoje - a data do mail, se for maior que 45 dias, não mostramos o
mail, caso contrário o mail é mostrado.

então, se você quer apagar mails com mais de 30 ou n dias atrás,
basta trocar o valor do -gt 45 para o número de dias.

Se você quiser uma data específica, pode comparar

[ "$DATA" = "10/10/2002" ] && MOSTRA=nao

naquele if você define a política para o mail continuar ou não na
inbox do cara.

para testar use:

$ ./script arquivo_entrada >  saida

e veja se ficou só os mails desejados no arquivo saida.

caso de algum problema, temos que melhorar aquela ER que
determina se é início ou não de mail. mas a idéia central é esta.

espero que isto te ajude.

thobias
-------
echo 9446046325380026818553633794429812592304650P | dc
-------
http://www.lcp.coppe.ufrj.br/~thobias

____________________________
|
| Against - HTML Mail
| Against - MS ATTACHMENTS
|
----------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]