Helio Loureiro

-= o cozinheiro de bits =-

Procurando receitas exóticas? O que acompanha melhor um bom vinho do porto? O melhor da comida lusitana? Pois você está completamente perdido, pois quem cobre esse assunto é outro Hélio Loureiro, um famoso cozinheiro português. Por aqui, nem receita de ovo frito tem.

Limpando listas com mailman

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.


 
Bookmark and Share

Adds

Links patrocinados:

Visitors Counter

Hoje38
Ontem99
Semana511
Mês767
Visitantes137421
38.107.179.207

Statistics

Content View Hits : 151668

Random Image

mvc-95.jpg