De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Francisco A Silva
Data de Publicação: 12 de Dezembro de 2005
Recentemente li uma dica aqui no Dicas-L sobre informar o remetente de e-mail sobre a questao dos anexos do MS Word. Achei interessante e resolvi adaptar meu filtro de e-mail para varrer este tipo de anexo e enviar uma mensagem automatica para o remetente, e claro, nao aceitar a mensagem. Esta dica vale pra quem tem acesso ao seu home pra poder mudar seu .procmailrc.
No .procmailrc, eu coloquei a seguinte regra, que procura por anexos .doc, caso encontre, submete o e-mail para o script recusa.pl;
:0 HB * .filename *=? *\"?.*\.(doc|DOC)(=\?)?\"? | /home/francisco/recusadoc/recusa.pl
Segue o script que processa a mensagem devolvendo para o remetente um e-mail informativo de como proceder com o anexo e a razão pela qual não é recomendado o envio de anexos do MS Word e sim um .txt ou .html por exemplo. O Script também grava um log de todas as mensagens processadas que combinem com a regra. A mensagem pode ser alterada de acordo com sua necessidade.
#!/usr/bin/perl # Script alterado em 06/12/2005 para filtro de anexo Ms. Word. # Versao 1.2, 23/07/2001. Uso e distribuicao de acordo com a licenca GNU. # # current date & time use POSIX qw(strftime); $date = strftime "%a %b %e %H:%M:%S %Y", localtime; # logfile $logfile = '/home/francisco/recusadoc/doc.log' ; # sender $sender = 'francisco@silva.eti.br' ; # signature $signature = " Servidor de correio (mailto:$sender) (mensagem gerada automaticamente) (nao responda esta mensagem) "; # ------------------------------------------------------ # esta fun??o recebe um string e retorna a mesma string # sem as codifica??es ISO normalmente usadas em e-mails sub decodeiso { $STOP STOP STOP STOP STOP STOP = $_[0] ; # codifica??o ISO-Latin1 ?Q? Quoted-printable # Informações sobre segurança if ( $STOP STOP STOP STOP STOP STOP =~ /=\?iso-8859-1\?q\?/i ) { $STOP STOP STOP STOP STOP STOP =~ s/=\?iso-8859-1\?.\?([^\?]+)\?=/\1/gi ; $STOP STOP STOP STOP STOP STOP =~ s/=([0-9abcdef]{2})/pack("C", hex($1))/egi; } # codifica??o ISO-Latin1 ?B? Binary base64 # Órgão ? último ?= can?=ção if ( $STOP STOP STOP STOP STOP STOP =~ /=\?iso-8859-1\?b\?/i ) { # remover cabecalhos iso $STOP STOP STOP STOP STOP STOP =~ s/=\?iso-8859-1\?.\?([^\?]+)\?=/\1/gi ; # ... (ainda por fazer) } $STOP STOP STOP STOP STOP STOP ; } # ------------------------------------------------------ # criar ambiente seguro para execucao $ENV{PATH} = ""; $ENV{PATH} = "/bin:/usr/bin"; # separe header tags into the hash "tags" while (<STDIN>) { # se encontrar uma mail tag guarda-la em minusculas if ( /^([\w-]+): (.*$)/ ) { $tags{lc($1)} = &decodeiso($2) ; } # terminar se for linha em branco last if (/^\s+$/) ; } # procura os nomes dos arquivos anexos while (<STDIN>) { if (/filename *=? *\"?(.+)(=?)\"?/i) { push @files, &decodeiso($1) ; } } # limpa $from para mandar a msg de erro $from = $tags{'from'} ; $from =~ s/.*<(.+)>.*/\1/g ; ## envia resposta para o remetente open(EMAIL, "|/usr/sbin/sendmail -oi -t -odq") or die "Erro ao enviar e-mail de resposta: $!\n"; print EMAIL <<"EOF"; From: $sender To: $from Subject: Anexo @files recusado Voce enviou o anexo no formato do Microsoft Word, um formato secreto e proprietario, por isso eu nao posso le-lo. Se voce me enviar texto puro, RTF, HTML, ou PDF, entao eu serei capaz de ler. Distribuir documentos no formato do Word eh ruim para voce e para outras pessoas. Voce nao pode ter certeza de como eles serao formatados se alguem utilizar uma versao diferente do Word; eles podem se tornar completamente ilegiveis. Receber anexos do Word eh ruim para voce porque eles podem carregar virus (veja http://www.symantec.com/avcenter/venc/data/acro.html). Enviar anexos do Word eh ruim para voce, porque um documento do Word normalmente inclui informa?oes escondidas sobre as atividades do autor (possivelmente sobre as suas tambem). Texto que voce removeu pode ser embara?osamente descoberto. Veja http://www.microsystems.com/Shares_Well.htm para mais informa??es. *---------------------------------------------------------- * From: $tags{'from'} * To: $ENV{'LOGNAME'} * Subject: $tags{'subject'} * Date: $tags{'date'} * File(s): @files *---------------------------------------------------------- $signature EOF close(EMAIL) or warn "Problemas ao fechar o e-mail\n"; # envia aviso ao destinatario open(EMAIL, "|/usr/sbin/sendmail -oi -t -odq") or die "Erro ao enviar e-mail de aviso: $!\n"; print EMAIL <<"EOF"; From: $sender To: $ENV{'LOGNAME'} Subject: E-mail recusado O e-mail abaixo foi descartado por conter um anexo impr?prio. Esta mensagem visa apenas sua informa??o; o remetente foi foi informado do ocorrido. *---------------------------------------------------------- * From: $tags{'from'} * To: $ENV{'LOGNAME'} * Subject: $tags{'subject'} * Date: $tags{'date'} * File(s): @files *---------------------------------------------------------- # $signature EOF close(EMAIL) or warn "Problemas ao fechar o e-mail\n"; # gera entrada no arquivo de log open (LOG, ">> $logfile") or die ("Erro ao abrir arquivo $logfile\n") ; printf LOG " Recusa por anexo proprietario ($date): User: $ENV{'LOGNAME'} From: $tags{'from'} To: $tags{'to'} Subj: $tags{'subject'} Date: $tags{'date'} File: @files " ; close (LOG) ;
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários