Os artigos mais lidos

Quarta, Janeiro 30, 2013 Helio Loureiro Blog 18907
XGH é uma das coisas mais genias que surgiu nos últimos tempos, descrevendo a estupidez que se aplica em métodos ágeis, mas que reflete bem o ambiente corporativo. Infelizmente o site foi abandonado...
Sábado, Maio 03, 2008 Helio Loureiro FreeBSD 16004
This article is kindly linked by: http://tuxmobil.org/hp_compaq.html http://tuxmobil.org/mobile_bsd.html Barely finished my last article about FreeBSD (PRERELEASE at that time) on Compaq laptops,...
Quarta, Junho 11, 2014 Helio Loureiro Blog 15830
Nem só de discussões de licença, flamewares, releases de kernel e ativistas sapatênis vive o mundo do software livre. Às vezes é envolto de mistério também. Um dos enigmas recentes foi o sumiço da...
Sexta, Maio 20, 2005 Helio Loureiro Python 15530
Esse é o script usado para autenticar automaticamente no Speedy da Telefonica (região de São Paulo). Evita que usuários residenciais, como eu, precisem estar em frente à máquina, permitindo que a...

De tempos em tempos é necessário fazer uma *faxina* na lista de discussão que administro, a [linux-br]. Alguns usuários saem da lista, outros ativam os famosos *anti-spam*, e coisas do gênero começam a atolar a lista em mensagens incômodas. Isso pode ser resolvido com uma pequena remoção desses usuários (assim que comunicados). Infelizmente alguns desses usuários optam por fazer a inscrição na lista com um mail qualquer, em geral gratuito como gmail, e fazem o redirecionamento do mesmo para seu mail de recebimento. O que ocorre é que as mensagens retornam com um mail não inscrito na lista. Para encontrar o dono da mensagem, criei alguns script, dois na realidade.

Uma vez que não sou administrador do servidor de listas, não consigo simplesmente conectar e buscar a base de assinantes. Preciso solicitar a quem tem acesso shell para fazer isso. Como a CIPSGA é mantida por trabalho voluntário, nem sempre isso é rápido. Então criei um script para buscar os assinantes da lista, via web, e salvar em um arquivo:

#! /bin/sh 

pass_adm="senha_admin" 
lynx_opts="-accept_all_cookies -cookie_file=cookie -post_data" 
member_link="http://listas.cipsga.org.br/cgi-bin/mailman/admin/linux-br/members"
file_dst="/tmp/listagem" 

for char in a b c d e f g h i j k l m n o p q r s t u v x y w z 
   do for id in 0 1 2 
      do echo "Char=$char and ID=$id" 
      echo "adminpw=$pass_adm" | \
         lynx $lynx_opts "${member_link}?letter=$char&chunk=$id" | \
         grep @ | grep "^.*\[" | sed 's/.*\]//' | \
         grep -v "de .* para " >> $file_dst.$$
   done 
done 

cat $file_dst.$$ | sort -u > $file_dst 

Com isso cria-se a listagem de usuários.

Uma vez com a lista em mãos, falta enviar uma mensagem para cada assinante para verificar se o mesmo está ativo ou não. ?? interessante indexar o envio para saber quem é quem. O seguinte script faz o serviço:


#! /usr/bin/env python 
server="mail.dominio.com.br" 
port=25 
mailfrom="Helio Loureiro" 
rcptto="" subject="Checagem da linux-br" 

import sys, smtplib 
try:
   file = open(sys.argv[1])
   erro_f = open("/tmp/mail_err.lst","w") 
except:
   print "Use: %s [mails_list_file]" % sys.argv[0] sys.exit(0) 

id=1 
for line in file: 
   rcptto = line[:-1] 
   print "Sending for: " + rcptto + " [" + str(id) + "]" 
   msg = "From: " + mailfrom + "\r\n" 
   msg += "To: " + rcptto + "\r\n" 
   msg += "Subject: " + subject + "[" + str(id) + "]\r\n" 
   msg += """ 
Essa eh uma mensagem de verificacao de inscricao da linux-br.

Favor nao responder.

./helio (BOFH)

-= Developed in Python =-
""" try: mail = smtplib.SMTP(server,port) mail.sendmail(mailfrom, rcptto, msg) mail.quit() except: print "Error sending: " + rcptto error_f.write(line) error_f.flush() id += 1 sys.exit(0)

Com isso tem-se uma forma de saber quem é quem na lista e remover os indesejados.