[Postfix-br] Post-la

Junior Plug Tecnologia arezendejunior em gmail.com
Terça Outubro 29 11:46:43 BRST 2013


Bom dia Gabriel

O ideal seria converter para modo texto antes?

Gabriel Francisco <frc.gabriel em gmail.com> escreveu:
>Bom dia Aguimar,
>provavelmente pelo email estar em HTML pode ter causado a separação
>dos caracteres <<.
>
>Cordialmente.
>
>Gabriel Francisco
>----------------------------
>Linux User #507840
>phone: (041) 9195-5010
>email: frc.gabriel[at]gmail.com
>
>
>On Tue, Oct 29, 2013 at 10:37 AM, Aguimar Rezende Junior
><arezendejunior em gmail.com> wrote:
>> Oi Mateus na verdade seria este mais antigo:
>>
>> Mas não consegui descobrir este erro:
>>
>> ./post-la.sh: line 59: syntax error near unexpected token `<'
>> ./post-la.sh: line 59: `        done < < '($egrep (delivered to
>mail|Ok:
>> queued as)' $dirlog/$nomelog |$awk {'print $6'} |$uniq)'
>>
>>
>>
>> #!/bin/sh
>>
>> #######################################
>> # v1.1.2
>> # Desenvolvido por Henrique Bueno
>> # henriquebueno em gmail.com
>> # http://hbueno.eti.br
>> # http://post-la.kibibit.com.br
>> #
>> # Este programa esta licenciado sob
>> # uma licenca creative Commons
>> #
>> #######################################
>>
>>
>> function main(){
>>         whereis=/usr/bin/whereis
>>         cut=/usr/bin/cut
>>         grep=$($whereis -b grep |$cut -d " " -f2)
>>         tr=$($whereis -b tr |$cut -d " " -f2)
>>         egrep=$($whereis -b egrep |$cut -d " " -f2)
>>         cat=$($whereis -b cat |$cut -d " " -f2)
>>         ls=$($whereis -b ls |$cut -d " " -f2)
>>         bc=$($whereis -b bc |$cut -d " " -f2)
>>         sort=$($whereis -b sort |$cut -d " " -f2)
>>         uniq=$($whereis -b uniq |$cut -d " " -f2)
>>         awk=$($whereis -b awk |$cut -d " " -f2)
>>         sed=$($whereis -b sed |$cut -d " " -f2)
>>
>>         # Alterar esta variavel caso tenha instalado em um diretorio
>>         # diferente de /etc/post-la (sem "/" no final)
>>         dirinst="/etc/post-la"
>>
>>         # Pega as variaveis do arquivo de configuracao
>>         dir=$($grep DIRPOST $dirinst/post-la.conf |$cut -c 9-)
>>         dirlog=$($grep DIRLOG $dirinst/post-la.conf |$cut -c 8-)
>>         nomelog=$($grep NOMELOG $dirinst/post-la.conf |$cut -c 9-)
>>         TAG=$($grep TAG $dirinst/post-la.conf |$cut -c 5-)
>>
>>         dataarq="$(echo $(date +%Y))-$(echo $(date +%m))-$(echo
>$(date
>> +%d)).log"
>>         if test -f "$dir/dados/$dataarq"; then rm
>$dir/dados/$dataarq; fi
>>         touch $dir/dados/$dataarq
>>         if test -f "$dir/resumo/$dataarq"; then rm
>$dir/resumo/$dataarq; fi
>>         touch $dir/resumo/$dataarq
>>
>>         while read LINHA
>>         do
>>                 PegaCampos
>>                 if test $PULA="NAO"
>>                 then
>>                         if test -n "$(echo $FROM |$cut -c 4-)" ||
>test -n
>> "$(echo $TO |$cut -c 4-)"
>>                         then
>>                                 PegaTamanho
>>                                 LimparString
>>                                 ArrumaData
>>                                 echo
>"$DATA|$HORA|$ASSUNTO|$FROM|$TO|$TAM"
>>>> "$dir/dados/$dataarq"
>>                         fi
>>                 fi
>>         done < < '($egrep (delivered to mail|Ok: queued as)'
>> $dirlog/$nomelog |$awk {'print $6'} |$uniq)
>>         Resumo
>> }
>>
>> function PegaCampos(){
>>         PULA="NAO"
>>         ID=$(echo $LINHA |$sed 's/://')
>>         EMAIL=$($grep $ID $dirlog/$nomelog |$grep $TAG |$tr -d '%')
>>         if test -z "$EMAIL"
>>         then
>>                 IDR="$($grep $ID $dirlog/$nomelog |$grep -i Requeue
>|$awk
>> {'print $7'} |$cut -d. -f1)"
>>                 if test -z "$IDR"
>>                 then
>>                         PULA=SIM
>>                 else
>>                         EMAIL=$($grep $IDR $dirlog/$nomelog |grep
>$TAG)
>>                         echo "PAM=$LINHA/$EMAIL" >> $dir/erro.log
>>                 fi
>>         fi
>>         DATA="$(echo $(date +%Y) $(echo $EMAIL |$awk {'print $1"
>"$2'}))"
>>         HORA="HR=$(echo $EMAIL |$awk {'print $3'})"
>>         FROM="DE=$(echo $EMAIL |$sed 's/from=</|/' |$sed 's/to=</|/'
>|$cut
>> -d\| -f2 |$sed 's/>//' |$tr -d '%')"
>>         TO="PR=$(echo $EMAIL |$sed 's/from=</|/' |$sed 's/to=</|/'
>|$cut
>> -d\| -f3 |$cut -d\> -f1 |$sed 's/>//' |$tr -d '%')"
>>         TAM="$($grep "$ID" $dirlog/$nomelog |$grep size |$awk {'print
>$8'}
>> |$cut -c 6- |$sed 's/,//' |$uniq)"
>>         ASSUNTO=$(echo $EMAIL |$sed 's/Subject:/|/' |$sed 's/from
>/|/' |$cut
>> -d\| -f2 | $cut -c 0-150 |$tr -d '%')
>> }
>>
>> function PegaTamanho(){
>>         if (( "$TAM" >= 1000000 ))
>>         then
>>                 TAM="TM=$(echo "scale=2; $TAM/1000000" |$bc) mb"
>>         else
>>                 TAM="TM=$(echo "scale=2; $TAM/1000" |$bc) kb"
>>         fi
>> }
>>
>> function ArrumaData(){
>>         mes=$(echo $DATA |$awk {'print $2'})
>>         case "$mes" in
>>                 Jan) mes=01;;
>>                 Feb) mes=02;;
>>                 Mar) mes=03;;
>>                 Apr) mes=04;;
>>                 May) mes=05;;
>>                 Jun) mes=06;;
>>                 Jul) mes=07;;
>>                 Aug) mes=08;;
>>                 Sep) mes=09;;
>>                 Oct) mes=10;;
>>                 Nov) mes=11;;
>>                 Dec) mes=12;;
>>         esac
>>         dia=$(echo $DATA |$awk {'print $3'})
>>         ano=$(echo $DATA |$awk {'print $1'})
>>         DATA="DT=$dia"/"$mes"/"$ano"
>> }
>>
>> function LimparString(){
>>         ASSUNTO="$(echo $ASSUNTO |$tr [:upper:] [:lower:] |$tr -d
>'%')"
>>         carac[1]="=c3=a3;a"
>>         carac[2]="=c3=b5;o"
>>         carac[3]="=\?iso-8859-1\?q\?;"
>>         carac[4]="=e1;a"
>>         carac[5]="=e7;c"
>>         carac[6]="=e3;a"
>>         carac[7]="=f5;o"
>>         carac[8]="=c7=c3;ca"
>>         carac[10]="=c3=a7;c"
>>         carac[11]="=e9;e"
>>         carac[12]="=c3;a"
>>         carac[13]="\?windows-1252\?q\?;"
>>         carac[14]="=d4;o"
>>         carac[15]="=c7;a"
>>         carac[16]="=5b;"
>>         carac[17]="=5d;"
>>         carac[18]="=f3;o"
>>         carac[19]="=f4;o"
>>         carac[20]="\?;"
>>         carac[21]="=;"
>>         carac[22]="_; "
>>
>>         for teste in "${carac[@]}"
>>         do
>>                 ASSUNTO="${ASSUNTO//$(echo $teste |$cut -d\;
>-f1)/$(echo
>> $teste |$cut -d\; -f2)}"
>>         done
>>         if test -z "$ASSUNTO"
>>         then
>>                 ASSUNTO="(sem assunto)"
>>         fi
>>         ASSUNTO="AS=$ASSUNTO"
>> }
>>
>> function Resumo(){
>>         # pega contas que enviaram e-mails
>>         while read dom
>>         do
>>                 $cat "$dir/dados/$dataarq" |$cut -d\| -f4 |$cut -c 4-
>|$cut
>> -d: -f1 |$grep @$dom |$sort |$uniq >> $dir/contas.tmp
>>         done < <($cat $dirinst/dominios)
>>
>>         # compara com contas que receberam e-mails
>>         while read dom
>>         do
>>                 while read LINHA
>>                 do
>>                         if test -z "$($grep $LINHA $dir/contas.tmp)";
>then
>> echo "$LINHA" >> $dir/contas.tmp;fi
>>                 done < <($cat "$dir/dados/$dataarq" |$cut -d\| -f5
>|$cut -c
>> 4- |$cut -d: -f1 |$grep @$dom |$sort |$uniq)
>>         done < <($cat $dirinst/dominios)
>>
>>         while read LINHA
>>         do
>>                 EMAIL="$LINHA"
>>                 ENVIADOS=$($grep "DE=$EMAIL" $dir/dados/$dataarq | wc
>-l)
>>                 RECEBIDOS=$($grep "PR=$EMAIL" $dir/dados/$dataarq |
>wc -l)
>>                 tamenv=0
>>                 tamrec=0
>>
>>                 # pega tamanho de emails enviado
>>                 while read tamanho
>>                 do
>>                         PegaTamanhoResumo
>>                         tamenv=$(echo "scale=2; $tamenv+$TAM" |$bc)
>>                 done < <($grep DE=$EMAIL $dir/dados/$dataarq |$cut
>-d\| -f6)
>>                 #if test "$(echo $tamenv |$cut -d. -f1)" -ge 1000
>>                 #then
>>                 #        tamenv="$(echo "scale=2; $tamenv/1000" |$bc)
>mb"
>>                 #else
>>                         #tamenv="$tamenv"
>>                 #        tamenv="$tamenv kb"
>>                 #fi
>>
>>                 # pega tamanho de e-mails recebidos
>>                 while read tamanho
>>                 do
>>                         PegaTamanhoResumo
>>                         tamrec=$(echo "scale=2; $tamrec+$TAM" |$bc)
>>                 done < <($grep PR=$EMAIL $dir/dados/$dataarq |$cut
>-d\| -f6)
>>
>>                 #if test "$(echo $tamrec |$cut -d. -f1)" -ge 1000
>>                 #then
>>                 #        tamrec="$(echo "scale=2; $tamrec/1000" |$bc)
>mb"
>>                 #else
>>                         #tamrec="$tamrec"
>>                 #        tamrec="$tamrec kb"
>>                 #fi
>>                 echo "$EMAIL|$ENVIADOS|$tamenv|$RECEBIDOS|$tamrec" >>
>> "$dir/resumo/$dataarq"
>>         done < <($cat $dir/contas.tmp |$sort |$uniq)
>>         rm $dir/contas.tmp
>> }
>>
>> function PegaTamanhoResumo(){
>>         var="$(echo $tamanho |$awk {'print $2'})"
>>         valor="$(echo $tamanho |$awk {'print $1'} |$cut -c 4-)"
>>         if test  "$var" = mb
>>         then
>>                 TAM=$(echo "scale=2; $valor*1000" |$bc)
>>         else
>>                 TAM=$valor
>>         fi
>> }
>>
>> main
>>
>>
>>
>> ######################################
>>
>>
>>
>>
>>
>> Em 29/10/2013 09:13, mateus schott escreveu:
>>
>> 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
>>> 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.”
>>
>>
>> _______________________________________________
>> Postfix-br mailing list
>> Postfix-br em listas.softwarelivre.org
>> http://listas.softwarelivre.org/cgi-bin/mailman/listinfo/postfix-br
>>
>>
>>
>> _______________________________________________
>> Postfix-br mailing list
>> Postfix-br em listas.softwarelivre.org
>> http://listas.softwarelivre.org/cgi-bin/mailman/listinfo/postfix-br
>>
>_______________________________________________
>Postfix-br mailing list
>Postfix-br em listas.softwarelivre.org
>http://listas.softwarelivre.org/cgi-bin/mailman/listinfo/postfix-br

-- 
E-mail enviado do meu celular Android usando K-9 Mail. Por favor, desculpe minha brevidade.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.softwarelivre.org/pipermail/postfix-br/attachments/20131029/1c1444e8/attachment-0001.html>


More information about the Postfix-br mailing list