Páginas

viernes, 27 de agosto de 2010

Filtrar Spam en Sendmail por medio de PROCMAIL

Esta es una pequeña receta de procmail que me a ayudado mucho para el filtro de correos no deseados, estos filtros son el resultado de revisar los SUBJECT (Asunto) mas comunes en el Spam como lo son viagra lover exotic, nude, etc.
En si, este pequeño script lo que hace es hacer que procmail revise el Subject de los correos y si una de las palabras definidas en este se encuentra lo envíe a un buzón especifico en este caso “spam” para su posterior revisión. Para que procmail pueda hacer esta reasignación necesitaremos que el buzon “spam” permita el acceso a todos los usuarios, para esto podemos copiar cualquier otro buzón, vaciarlo y luego darle los accesos. lo podemos hacer de esta forma.
cd /var/mail/
cp jrosado spam  ///Copiamos el buzón de jrosado a el archivo spam
mutt –f spam /// Revisamos el buzon spam y lo vaciamos
chmod 777 spam /// damos acceso a Lectura, ejecución y lectura para el dueño, grupo y todos los usuarios.

Una vez ya creado el buzón spam, editamos el archivo /etc/procmailrc y escribimos el siguiente código:
LOGFILE=$HOME/procmail.log
:0
* ^Subject:(.*Acai|.*Treat|.*Viagr|.*manhood|.*Viagra|.*Setup|.*Twitter|.*lover|

.*nude|.*exotic|.*energy|.*libido|.*bikini|.*male|.*prescription|
.*pills|*.Enhancing|.*virility|.*luxury|.*orgasm|.*Astounding|
.*Enlarging|.*sale|.*Penis|.*Free|.*Obama|.*answer|
.*health|.*spears|.*jolie|.*discount|.*empower|
.*Pharmacy|.*dollars|.*trials|.*sexual|.*transaction|.*sales)

/var/spool/mail/spam
lo que está escrito con color azulado va en la misma línea por espacio se ven en diferentes lineas.
Espero que les sirva para su administración de correos electrónicos y ayude a dar el mejor servicio a sus usuarios.
Nota: la Distribución de Linux utilizada en este ejemplo es Oracle Linux Enterprise 4. (Basado en Redhat).

lunes, 23 de agosto de 2010

Un poco de código en C# [Llenado de TreeView]

Muchas veces necesitamos crear una estructura de árbol sin saber cual es el nivel de recurrencia de nodos hijos, en programación es posible gracias a la característica de recurrencia un pequeño ejemplo en C# de como invocar a una función desde la misma función haciendo posible la estructuración de un Treeview con una sola función.
void ReadStruct()
     {
         TreeNode node;
         treeView1.Nodes.Clear();
         node = treeView1.Nodes.Add(“Nodo padre");
         node.Tag = contenedordenodos;
         foreach (Nodo oNodo in contenedordenodos.Nodos)
         {
             AgregaNodo(oNodo,node);
         }
     }
   void AgregaNodo(Nodo oNodo,TreeNode NodeContainer)
    {
         TreeNode node;
         node = NodeContainer.Nodes.Add(oNodo.descripcion);
         node.Tag = oNodo;
        node.ImageIndex = 0;
        node.SelectedImageIndex = 1;
        foreach (Nodo oNodoX in oNodo.Nodos)
        {
             AgregaNodo(oNodoX,node);
         }
    }
Para hacer posible este tipo de estructuración creamos anteriormente una clase Serializable [Osea que permita guardar su estructura y contenido en archivos.] que contenga en forma jerargica la información de los nodos. en este caso el código con el que está  creada la clase para este ejemplo es el siguiente:
[Serializable]   //// Objetivo que se pueda guardar en un archivo esto
public class Nodo
{
    public Collection<Nodo> Nodos = new Collection<Nodo>();
    public Nodo()
    {
        descripcion = "Nuevo Nodo";
    }
}
una de las propiedades es “Nodos” que es una colección de objetos de la misma clase, lo que permite crear la estructura jerargica.
[Serializable] Permite guardar el contenido de esta clase en tiempo de ejecución teniendo la posibilidad de recuperarla y llenar el Tree tal como lo dejamos.