[Postfix-br] Post-la
mateus schott
mateusschott em gmail.com
Terça Outubro 29 09:13:59 BRST 2013
Seria esse??
#!/bin/bash
if [ -r /etc/post-la2/post-la.conf ]; then
. /etc/post-la2/post-la.conf
else
echo "Nao foi possivel carregar as configuracoes de
/etc/post-la2/post-la.conf"
exit 1
fi
printf "\n"
printf "#\n"
printf "# POST-LA (Postfix Log Analyzer) v2.0 \n"
printf "\n"
printf "Inicio Processamento: $(date "+%D-%T")...\n"
#Definindo Variaveis
YEAR="$(date +%Y)"
YN="NULL|$(date +%Y)"
function validos(){
printf "Filtrando mensagens validas..."
PID="$(grep -E '(delivered (to mail|via jeguepanel|to command |via
maildrop service)|Ok: queued as)' $LOG |awk {'print $6'} |sed 's/://g' |
uniq)"
printf " ok\n"
printf "Pegando tamanho das mensagens..."
tamanho="$(awk '$8~/^size=/{SIZE=gensub(/[^0-9]/,"","G",$8)/1024;
printf "%s%.2f\n", $6,SIZE}' $LOG | sort -u)"
printf " ok\n"
printf "Pegando destinatarios..."
destinatarios="$(cat $LOG |grep "to=<" |grep Ok |awk {'print $6"
"$7'} |sed 's/to=<\|>\|://g')"
printf " ok\n"
printf "Pegando assunto e remetente..."
assunto="$(awk ' /POST-LA/ {
subj=""
for (i=10;i<=NF;i++){ if ($i=="from") {j=i;i=NF} else
{subj=subj" "$i} } print $1"-"$2"|"$3"|"$6"|"subj"|"$(j+2) }' $LOG )"
printf " ok\n"
printf "Arrumando data..."
sed
's/^Jan/'$YEAR'-01/;s/^Feb/'$YEAR'-02/;s/^Mar/'$YEAR'-03/;s/^Apr/'$YEAR'-04/;s/^May/'$YEAR'-05/;s/^Jun/'$YEAR'-06/;s/^Jul/'$YEAR'-07/;s/^Aug/'$YEAR'-08/;s/^Sep/'$YEAR'-09/;s/^Oct/'$YEAR'-10/;s/^Nov/'$YEAR'-11/;s/^Dec/'$YEAR'-12/;s/\(from=\|<\|>\)//gi'
<<<"$assunto" > $TMPDIR/assunto1.tmp
printf " ok\n"
printf "Convertendo charset..."
php -f /etc/post-la2/convert.php $TMPDIR/assunto1.tmp >
$TMPDIR/assunto.tmp
rm -rf $TMPDIR/assunto1.tmp
printf " ok\n"
printf "Gerando arquivo para importar ao MySQL..."
> $TMPDIR/messages.tmp
for ID in $PID
do
registro="$(grep $ID $TMPDIR/assunto.tmp |sed 's/:|/|/g'
|tail -1)"
if [ ! -z "$registro" ]; then
tam="$(awk -F ":" '/'$ID'/ {printf $2}' <<<
"$tamanho" |tail -1)"
dest="$(awk '/'$ID'/ {printf tolower($2)}' <<<
"$destinatarios" |sed 's/,$//;s/,/, /g')"
echo "NULL|$registro|$tam|$dest" >>
$TMPDIR/messages.tmp
fi
done
# done <<< "$PID"
rm -rf $TMPDIR/assunto.tmp
printf " ok \n"
}
function import_mails(){
printf "Importando dados para MySQL..."
mysql -u$dbuser -p$dbsenha -e "load data infile
'$TMPDIR/messages.tmp' into table mails fields terminated by '|'" $database
rm -rf $TMPDIR/messages.tmp
printf " ok \n"
}
function invalidos(){
reject_postfix
#reject_amavis
reject_bounced
arruma_data_reject
}
function reject_postfix(){
awk '/reject:/{
ERRO=""
ERRO2=""
for (i=7;i<=NF;i++){
if (match($i,/from=</)){
FROM=$i
for (j=7;j<i;j++){
ERRO=ERRO" " $j
}
}
if (match($i,/to=</)){
TO=$i
k=i;
}
if (i>k){
ERRO2=ERRO2" "$i
}
}
print $1"-"$2"|"$3"|"FROM"|"TO"|"$6" "ERRO"|"ERRO2
}' $LOG > $TMPDIR/reject0.tmp
}
function reject_bounced(){
awk '/status=bounced/ {
ERRO=""
for (i=8;i<=NF;i++){
ERRO=ERRO" "$i
}
print $1"-"$2"|"$3"| |"$7"|"$6"|"ERRO
}' $LOG > $TMPDIR/reject-id.tmp
while IFS=\| read data hora from to id erro
do
from="$(grep $id $LOG |grep "from=<" |awk {'print $7'}
|uniq)"
echo "$data|$hora|$from|$to|$erro |sed 's/,$//g'" >>
$TMPDIR/reject0.tmp
done < $TMPDIR/reject-id.tmp
rm -rf $TMPDIR/reject-id.tmp
}
function reject_amavis(){
awk '/Blocked / {
ERRO=""
for (i=7;i<=NF;i++){
if (match($i,/->/)){
FROM=$(i-1)
TO=$(i+1)
ERRO=$(i+2)" "$(i+3)
}
}
print $1"-"$2"|"$3"|"FROM"|"TO"|"$7" "$8" "$9" "ERRO
}' $LOG >> $TMPDIR/reject0.tmp
}
function import_reject(){
mysql -u$dbuser -p$dbsenha -e "load data infile
'$TMPDIR/reject.tmp' into table reject fields terminated by '|'" $database
rm -rf $TMPDIR/reject.tmp
}
function arruma_data_reject(){
sed
's/^Jan/'$YN'-01/;s/^Feb/'$YN'-02/;s/^Mar/'$YN'-03/;s/^Apr/'$YN'-04/;s/May/'$YN'-05/;s/Jun/'$YN'-06/;s/Jul/'$YN'-07/;s/Aug/'$YN'-08/;s/Sep/'$YN'-09/;s/Oct/'$YN'-10/;s/Nov/'$YN'-11/;s/Dec/'$YN'-12/;s/\(from=\|to=\|<\|>\)//gi'
< $TMPDIR/reject0.tmp > $TMPDIR/reject.tmp
rm -rf $TMPDIR/reject0.tmp
}
function finaliza(){
printf "Limpando variaveis..."
unset dbuser dbsenha database PID registro tam dest tamanho
destinatarios assunto TMPDIR
printf " ok \n"
printf "Finalizado, dados importados com sucesso. $(date
"+%D-%T").\n\n"
}
case "$1" in
validos)
echo "Gerando relatorio de e-mails validos..."
validos
# import_mails
finaliza
;;
invalidos)
printf "Gerando relatorio de e-mails invalidos..."
invalidos
# import_reject
finaliza
printf "ok \n"
;;
*)
echo "Gerando relatorio completo (validos e
invalidos)"
validos
# import_mails
invalidos
# import_reject
finaliza
;;
esac
2013/10/25 Aguimar Rezende Junior <arezendejunior em gmail.com>
> Boa noite pessoal
>
> Alguém tem um cópia do antigo script post-la ?
>
>
> Aguimar Rezende
> ______________________________**_________________
> Postfix-br mailing list
> Postfix-br em listas.**softwarelivre.org<Postfix-br em listas.softwarelivre.org>
> http://listas.softwarelivre.**org/cgi-bin/mailman/listinfo/**postfix-br<http://listas.softwarelivre.org/cgi-bin/mailman/listinfo/postfix-br>
>
--
Mateus Schott
Administrador de Redes
LPI 1 - Junior Level Linux Certification
Novell Certified Linux Administrator
*“A caixa dizia: Requer MS Windows ou superior. Então instalei Linux.”*
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.softwarelivre.org/pipermail/postfix-br/attachments/20131029/4b3b0958/attachment.html>
More information about the Postfix-br
mailing list