Provided by: manpages-es-extra_0.8a-17_all bug

NOMBRE

       procmailsc - tecnica puntuacion de peso de procmail

SINOPSIS

       [*] w^x condici'on

DESCRIPCI'ON

       Ademas  de  las  condiciones  tradicionales verdadero o falso que puede
       especificar en una receta, puede usar tecnicas de  puntuacion  de  peso
       para  decidir  si  una  cierta  receta concuerda o no. Cuando se usa la
       puntuacion de peso en una receta, la puntuacion  final  de  esa  receta
       debe ser positiva para que concuerde.

       Una  cierta  condicion  puede contribuir a la puntuacion si le situa un
       `peso' (w) y un `exponente' (x).  Esto lo hace precediendo la condicion
       (en la misma linea) con:
              w^x
       Considerando  que  w  y  x  son  numeros  reales entre  -2147483647.0 y
       2147483647.0.

Condiciones de expresi'on regular sopesadas

       La primera vez que se encuentra la expresion regular, se anadira w a la
       puntuacion.  La segunda vez que la encuentre anadira w*x La tercera vez
       que la encuentre anadira w*x*x La cuarta  vez  anadira  w*x*x*x  y  asi
       sucesivamente.

       Esto se puede describir con la siguiente formula concisa:

                                   n
                   n   k-1        x - 1
              w * Sum x    = w * -------
                  k=1             x - 1

       Representa  la  puntuacion  total  anadida  para  esta  condicion si se
       encuentran n concordancias.

       Observe que se pueden hacer las siguientes distinciones de casos:

       x=0     Solo la primera concordancia contribuira w a la puntuacion.  Se
               ignoran cualquier concordancia posterior.

       x=1     Cada  concordancia  contribuira  el mismo w a la puntuacion. La
               puntuacion crece linealmente con  el  numero  de  concordancias
               encontradas.

       0<x<1   Cada  concordancia  contribuye  menos  a  la  puntuacion que la
               previa. La puntuacion  se  aproxima  asintoticamente  a  cierto
               valor (vease la seccion notas NOTAS abajo).

       1<x     Cada  concordancia  contribuira  mas  a  la  puntuacion  que la
               previa. La puntuacion crece exponencialmente.

       x<0     Se puede utilizar para favorecer numeros  pares  o  impares  de
               concordancias.

       Si   la  expresion  regular  esta  negada  (i.e.  concuerda  si  no  se
       encuentra), entonces n obviamente puede ser cero o uno.

Condiciones de programa sopesadas

       Si el programa devuelve un codigo de salida EXIT_SUCCESS (=0), entonces
       la  puntuacion total anadida sera w.  Si devuelve cualquier otro codigo
       de salida (indicando fallo), la puntuacion total anadida sera x.

       Si el codigo de salida del programa esta negado, el codigo de salida se
       considerara  como  si  fuera  un  numero  virtual de concordancias.  El
       calculo de la puntuacion anadida prosigue como si tuviera una expresion
       regular normal con n=`exitcode' concordancias.

Condiciones de longitud sopesadas

       Si la longitud del correo actual es M entonces:

              * w^x  > L

       generara una puntuacion adicional de:

                         x
                  /  M  \
              w * | --- |
                  \  L  /

       Y:

              * w^x  < L

       generara una puntuacion adicional de:

                         x
                  /  L  \
              w * | --- |
                  \  M  /

       En  ambos  casos,  si L=M, esto anadira w a la puntuacion. En el primer
       caso, sin embargo, se favorecen los correos grandes, en  el  ultimo  se
       favorecen  los  pequenos. Aunque x se puede variar para un mejor ajuste
       el decrecimiento de la funcion, el uso tipico fija x=1.

MISCEL'ANEA

       Puede consultar la puntuacion total de todas  las  condiciones  de  una
       receta  de  la  variable de entorno $=.  Esta variable se fija cada vez
       cuando procmail ha  analizado  todas  las  condiciones  de  una  receta
       (incluso si la receta no esta siendo ejecutada).

EJEMPLOS

       La  siguiente  receta  separa  tdos  los  correos que tienen mas de 150
       lineas en el cuerpo.   La  primera  condicion  contiene  una  expresion
       regular  vacia que, debido a que siempre se verifica, se usa para dar a
       nuestra puntuacion un desplazamiento  negativo.  La  segunda  condicion
       concuerda  con  cada  linea  del  correo  y  consume  el desplazamiento
       negativo previo que le  dimos  (un  punto  por  linea).  Al  final,  la
       puntuacion sera solo positiva si el correo contiene mas de 150 lineas.

              :0 Bh
              * -150^0
              *    1^1  ^.*$
              /dev/null

       Supongamos  que  tiene una carpeta prioritaria que siempre lee primero.
       La siguiente receta toma la prioridad  del  correo  y  lo  almacena  en
       carpetas   especiales.   La  primera  condicion  es  regular,  i.e.  no
       contribuye a la puntuacion, simplemente  tiene  que  satisfacerse.  Las
       otras  condiciones  describen  cosas  como: john and claire normalmente
       tienen cosas importantes  que  decir,  las  reuniones  son  normalmente
       importantes,  las  respuestas se favorecen un poco, los mail respecto a
       Elvis (esto es solo un ejemplo :- se favorecen (cuando mas se mencione,
       mas  se  favorece  el correo , pero la maxima puntuacion extra debida a
       Elvis sera 4000, no importa con que frecuencia sea mencionado),  muchas
       lineas  marcadas  como  de  respuesta  no  no gustan, los "smileys" son
       apreciados (la puntuacion de ellos alcanza un maximo de 3500, esas tres
       personas  normalmente no envian correos interesantes, lo correos serian
       preferentemente  pequenos  (v.g.  mails  con  2000  octetos  de  largos
       puntuaran -100, 4000 bytes de largos -800).  Como puede ver, si alguien
       de esas personas poco interesantes envia correo, el coreo todavia tiene
       una  oportunidad  de  aterrizar  en  la carpeta prioritaria, v.g. si es
       sobre una reunion (meeting), o si contiene al menos dos "smileys".

              :0 HB
              *         !^Precedence:.*(junk|bulk)
              * 2000^0   ^From:.*(john@home|claire@work)
              * 2000^0   ^Subject:.*meeting
              *  300^0   ^Subject:.*Re:
              * 1000^.75 elvis|presley
              * -100^1   ^>
              *  350^.9  :-\)
              * -500^0   ^From:.*(boss|jane|henry)@work
              * -100^3   > 2000
              carpeta_prioritaria

       Si esta suscrito a una lista de correo y le gustaria leer los  mensajes
       de calidad, entonces las siguientes recetas podrian
        realizar  el  truco. Primero estamos seguros que el correo proviene de
       la lista de correo, Entonces comprobamos si es de ciertas  personas  de
       las  que  valoramos su opinion, o sobre un motivo sobre el que queremos
       saber absolutamente todo.  Si  es  asi,  lo  guardamos.  En  otro  caso
       verificamos si la razon de lineas citadas del original es al menos 1:2.
       Si  lo  excede  separamos  el  correo.  Todo  lo  que  sobreviva  a  la
       verificacion previa se almacena.

              :0
              ^From mailinglist-request@some.where
              {
                :0:
                * ^(From:.*(paula|bill)|Subject:.*skiing)
                mailinglist

                :0 Bh
                *  20^1 ^>
                * -10^1 ^[^>]
                /dev/null

                :0:
                mailinglist
              }

       Para mas ejemplos deberia mirar en la pagina de manual procmailex(5).

ADVERTENCIAS

       Debido  a  que esto incrementa la busqueda por un orden de magnitud, el
       egrep interno de procmail siempre buscara la concordancia m'as corta por
       la  izquierda  salvo  que este determinado que asignar a MATCH, en cuyo
       caso busca la  concordancia  m'as  larga  por  la  izquierda.   V.g.  la
       concordancia  m'as  corta  por  la izquierda, por el mismo, la expresion
       regular:

       .*     siempre concuerda con una cadena de longitud cero  en  el  mismo
              sitio.

       .+     siempre  concordara  con  un  caracter  (salvo  nueva linea, por
              supuesto).

V'EASE TAMBI'EN

       procmail(1), procmailrc(5), procmailex(5), sh(1), csh(1), egrep(1),
       grep(1),

FALLOS (BUGS)

       Si,  en  una  condicion  de  longitud  especifica  un  x  que  causa un
       desbordamiento, procmail esta a la meced de la  funcion  pow(3)  de  su
       libreria matematica.

       No  se  aceptan  numero  en  coma flotante en formato exponencial (v.g.
       12e5).

MISCEL'ANEA

       Tan pronto como  se  alcanza  `mas  infinito'  (2147483647),  cualquier
       condicion de peso simplemente se salta.

       Tan pronto como se alcanza `menos infinito' (-2147483647), la condicion
       se considerara como `sin concordancia' y la receta termina antes.

NOTAS

       Si en una expresion regular formula sopesada 0<x<1, la puntuacion total
       anadida para esta condicion se aproximara asintoticamente:

                 w
              -------
               1 - x

       Para alcanzar la mitad del valor maximo necesita

                   - ln 2
              n = --------
                     ln x

       concordancias.

AUTOR

       Stephen R. van den Berg
              <srb@cuci.nl>