Provided by:
manpages-es-extra_0.8a-16_all 
NOMBRE
procmailrc - fichero de recursos de procmail
SINOPSIS
$HOME/.procmailrc
DESCRIPCIÓN
Para un comienzo rápido, véase NOTAS al final de la página de manual
de procmail(1).
El fichero de recursos puede contener una mezcla de asignaciones de
variables de entorno (algunas de las cuales pueden tener un significado
especial para procmail) y recetas. En su apariencia más simple, las
recetas son sólamente una expresión regular de una lÃnea que se busca
en las cabeceras del correo entrante. La primera receta que concuerda
se usa para determinar adonde tiene que ir el correo (normalmente un
fichero). Si el procesado llega al final del fichero de recursos,
procmail entrega el correo a $DEFAULT.
Hay dos clases de recetas: recetas de entrega y de no entrega. Si se
encuentra una receta de entrega que concuerda, procmail considera el
correo (vd. lo supone) entregado y terminará el procesamiento del
fichero de recursos tras haber ejecutado adecuadamente la lÃnea de
acción de la receta. Si se encuentra una receta de no entrega que
concuerda, el procesado del fichero de recursos continuará una vez que
la lÃnea de acción haya sido ejecutada.
Las recetas de entrega son aquellas que hacen que las cabeceras y/o
cuerpo del corres sean: escritas a un fichero, absorbidas por un
programa o reenviadas a otra dirección de correo.
Las recetas de no entrega son aquellas que: hacen que la salida de un
programa o filtro sean capturadas por procmail o aquellas que inician
un bloque anidado.
Le puede decir a procmail que trate una receta de entrega como si
fueran una receta de no entrega especificando la cacera ‘c’ en dicha
receta. Esto hará que procmail genere una copia de carbón del correo
para entregarlo a esta receta y continúa procesando el fichero de
recursos.
Usando cierto número de recetas puede ordenar el correo en varias
carpetas. Tenga en cuenta que el correo puede llegar de forma
concurrente en estas carpetas (si varios programas procmail se ejecutan
a la misma vez, no es improbable si llega mucho correo). Para estar
seguro de que esto no degenera en problemas, es muy recomendable el uso
de ficheros de bloqueo.
Las asignaciones de variables de entorno y recetas se pueden mezclar
libremente en el fichero de recursos. Si cualquier variable de entorno
tiene un significado especial para procmail, se usará apropiadamente en
el momento en que se analiza (i.e. puede cambiar el directorio actual
cuando quiera especificando un nuevo MAILDIR, cambiar ficheros de
bloqueo especificando un nuevo LOCKFILE, cambiar umask en cualquier
momento, etc., las posibilidades son ilimitadas :-).
Las asignaciones y sustituciones de estas variables de entorno se
gestionan exactamente como en sh(1) (esto incluye todas las posibles
comillas (quotes) y escapes), con el valor añadido de que los blancos
alrededor del signo ‘=’ se ignoran y que, si una variable de entorno
aparece sin un ’=’ tras ella se elimina del entorno. Cualquier programa
entre comillas invertidas (‘) iniciado por procmail tendrá el todo el
correo como su entrada estándar.
Comentario
Una palabra que comience por # y el resto de los caracteres hasta el
carácter de nueva lÃnea se ignoran. Esto no se aplica a las lÃneas de
condición, que no se pueden comentar.
Recetas
Una lÃnea que comience por ’:’ indica el comienzo de una receta. Esto
tiene el siguiente formato:
:0 [banderas] [ : [fichero_bloqueo_local] ]
<ninguna o más condiciones (una por lÃnea)>
<exactamente una lÃnea de acción>
Las condiciones comienzan con un ‘*’ inicial, todo lo que viene tras
este carácter se pasa al egrep interno literalmente, salvo los espacios
en blanco iniciales y finales. Estas expresiones regulares son
completamente compatibles con las expresiones regulares extendidas del
egrep(1) normal. Véase también Expresiones regulares extendidas.
La condiciones se unen mediante Y (and); si no hay condiciones el
resultado será verdadero por defecto.
Banderas pueden ser cualesquiera de las siguientes:
H Hace egrep sobre la cabecera (por defecto).
B Hace egrep sobre el cuerpo.
D Indica al egrep interno que distinga entre mayúsculas y minúsculas
(contrario al comportamiento por defecto que ignora esta
distinción).
A Esta receta no se ejecutará salvo que las condiciones de la última
receta precedente (del nivel de bloque anidado actual) sin las
banderas ‘A’ o ‘a’ se verificaron. Esto permite encadenar acciones
que dependan de una condición común.
a Tiene el mismo significado que la bandera ‘A’, con la condición
adicional que la receta inmediatamente precedente tiene que
completarse correctamente antes de ejecutar esta receta.
E Esta receta sólo se ejecuta si la receta inmediatamente precedente
no se ejecutó. La ejecución de esta receta también desactiva
cualquier receta inmediatamente posterior con la bandera ’E’. Esto
le permite especificar acciones ‘else if’.
e Esta receta sólo se ejecuta si falló la receta inmediatamente
anterior (i.e. la acción se intentó, pero ocasionó un error).
h Alimenta la cabecera a un tuberÃa, fichero o destino de correo
(por defecto).
b Alimenta el cuerpo a un tuberÃa, fichero o destino de correo (por
defecto).
f Considera la tuberÃa como un filtro.
c Genera una copia de carbón de este mensaje. Esto sólo tiene
sentido en las recetas de entrega. En la única receta de no
entrega que esta bandera tiene efecto es en un bloque anidado,
para generar una copia de carbón esto duplica el proceso procmail
en ejecución (los ficheros de bloqueo no se heredan), por lo cual
el proceso duplicado actuará de forma normal y el padre saltará el
bloque.
w Espera que termine el filtro o programa y verifica su código se
salida (normalmente ignorado); si el filtro no tiene éxito, el
texto no será filtrado.
W Tiene el mismo significado que la bandera ‘w’, pero suprimirá
cualquier mensaje ‘Fallo de Programa’.
i Ignora cualquier error de escritura en esta receta (i.e.
normalmente debido a una tuberÃa cerrada prematuramente).
r Modo de estado original (raw mode), no intenta asegurarse de que
el mensaje termina en un lÃnea vacÃa, lo escribe tal cual.
Hay algunas condiciones especiales que puede usar que no son
expresiones regulares puras. Para seleccionarlas, la condición debe
comenzar con:
! Invierte la condición.
$ Evalúa el resto de esta condición según las reglas de sustitución
de sh(1) dentro de las dobles comillas, salta los espacios
iniciales y entonces la vuelve a analizar.
? Usa el código de salida del programa especificado.
< Verifica si la longitud total del correo es más corta que el
número de octetos especificado (en decimal).
> Análogo a ’<’.
nombre_de_variable ??
Concuerda el resto de esta condición con el valor de esta variable
de entorno (que no puede ser una pseudo variable). Un caso
especial es si nombre_de_variable es igual a ‘B’, ‘H’, ‘HB’ o
‘BH’; esto simplemente se sobrepone al área cabecera/cuerpo por
defecto definida por la bandera inicial de esta receta.
\ Para entrecomillar algo de lo anterior al inicio de la lÃnea.
Fichero de bloqueo local
Si pone unos segundos ’:’ (detrás) en la primera lÃnea de receta,
entonces procmail usará un fichero de bloqueo local (para esta receta
sólo). Opcionalmente puede especificar el fichero de bloqueo local que
quiere usar; si no lo hace procmail usará el nombre de fichero destino
(o el nombre de fichero a continuación del primer ’>>’) y le añadirá
$LOCKEXT.
LÃnea de acción de receta
La lÃnea de acción puede comenzar con los siguientes caracteres:
! ReenvÃa a todas las direcciones de correo especificadas.
| Inicia el programa especificado, posiblemente en $SHELL si
incluya alguno de los caracteres $SHELLMETAS. Opcionalmente
puede incluir el sÃmbolo de tuberÃa en variable=, lo que hará
que la salida estándar del programa sea capturado en la variable
de entorno (procmail no termina el preprocesado del fichero de
recursos en este punto). si especifica el sÃmbolo de tuberÃa,
sin ningún programa, procmail dirige el correo a la salida
estándar.
{ Seguido de al menos un espacio, tabulador o nueva lÃnea, marcará
el inicio de un bloque anidado. Todo lo que hay hasta la
siguiente llave cerrada dependerá de la condición especificada
para esta receta. Está permitido el anidamiento ilimitado La
llave que cierra existe simplemente para delimitar el bloque, no
hará que procmail termine de ninguna forma. Si se llega al final
del bloque el procesamiento continuará de la forma habitual
después del bloque. En los bloque anidados, las banderas ‘H’ y
‘B’ sólo afecta a las iniciales del bloque, las banderas ‘h’ y
‘b’ no tienen efecto.
Cualquier otra cosa se tomará como un nombre de buzón (bien un nombre
de fichero o bien un directorio, absoluto o relativo al directorio
actual (véase MAILDIR)). Si es un nombre de fichero (posiblemente
inexistente), el correo se añade a él.
Si es un directorio, el correo se entregará a un fichero creado nuevo
con un nombre que se garantiza único llamado $MSGPREFIX* en el
directorio especificado. Si el nombre del directorio directorio termina
en "/.", entonces se presupone que es una carpeta MH; i.e. procmail
usará el siguiente número que encuentre disponible. Cuando procmail
está entregando a directorios, puede especificar múltiples directorios
para entregar (procmail la hará usando enlaces duros).
Variables de entoro por defecto
LOGNAME, HOME y SHELL Sus valores (del recipiente) por defecto
SHELLMETAS &|<>~;?*[
SHELLFLAGS -c
ORGMAIL /var/spool/mail/$LOGNAME
(Salvo que se haya especificado -m, en cuyo caso
no tiene valor)
MAILDIR $HOME/
(Salvo que el nombre del primer fichero de
recursos abierto correctamente empiece con Unless
the name of the first successfully opened rcfile
starts with ‘./’ o si se ha especificado -m, ne
cuyo caso se pone por defecto a ‘.’)
DEFAULT $ORGMAIL
MSGPREFIX msg.
SENDMAIL /usr/sbin/sendmail
SENDMAILFLAGS -oi
HOST El nombre actual del host
COMSAT no
(Si se ha especificado un fichero de recursos en
la lÃnea de comando)
PROCMAIL_VERSION 3.13.1
LOCKEXT .lock
Otras variables limpiadas o prefijadas son IFS, ENV, PWD and
PATH=$HOME/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
:/usr/local/sbin:/usr/bin/X11.
Entorno
Antes de que se pierda en la multitud de varables de entorno, tenga en
cuenta que todas ellas tienen valores por defecto razonables.
MAILDIR Directorio actual mientras procmail está en ejecución (que
significa que todas las rutas son relativas a $MAILDIR).
DEFAULT Fichero buzón por defecto (si no se ha dicho otra cosa,
procmail volcará el correo en este buzón). Procmail usará
automáticamente $DEFAULT$LOCKEXT como fichero de bloqueo
antes de escribir en este buzón. No necesita fijar esta
variable, ya que apunta al buzón estándar del sistema.
LOGFILE Este fichero también contendrá cualquier mensaje de error o
diagnóstico de procmail (normalmente ninguno :-) o
cualquier otro programa iniciado por procmail. Si no se
especifica este fichero, cualquier mensaje de diagnóstico o
error se devolverá por correo al remitente. Véase también
LOGABSTRACT.
VERBOSE Puede activar diagnósticos extendidos fijando esta variable
a ‘yes’ u ‘on’, para desactivarlos de nuevo póngala a ‘no’
u ‘off’.
LOGABSTRACT Justo antes de que procmail termine registra una
descripción del mensaje entregado en $LOGFILE mostrando los
campos ‘From ’ y ‘Subject:’ de la cabecera, a qué carpeta
se entregó finalmente y qué tamaño tenÃa (en octetos).
Fijando esta variable a ‘no’, se suprime la generación de
estos mensajes. Si le asigna el valor ‘all’, procmail
registrará una descripción para cada receta de entrega
procesada con éxito.
LOG Cualquier cosa asignada a esta variable se añade a
$LOGFILE.
ORGMAIL Normalmente el buzón del sistema (ORiGinal MAILbox). Si
por alguna oscura razón (como ‘sistema de ficheros lleno’)
el correo no pudiera entregarse, entonces este buzón es el
último recurso. Si procmail falla para guardar el correo
aquà (gran, gran problema :-), entonces el correo vuelve al
remitente.
LOCKFILE Fichero semáforo global. Si este fichero existe ya,
procmail esperará hasta que se haya ido antes de proceder,
y lo creará él mismo (eliminándolo cuando esté listo, desde
luego). Si se especifica más de un fichero de bloqueo ,
entonces el previo sólo se eliminará antes de intentar
crear el nuevo. El uso de un fichero de bloqueo global es
desaconsejable, cuando sea posible use en su lugar ficheros
de bloqueo locales (uno por receta base).
LOCKEXT Extensión por defecto que se añade al fichero destino para
determinar que fichero de bloqueo local usar (sólo si se
activa, activo por receta base).
LOCKSLEEP Número de segundos que procmail dormirá antes de reintentar
sobre un fichero de bloqueo (si ya existe); si no se
especifica, el valor por defecto es 8 segundos.
LOCKTIMEOUT Número de segundos que tienen que pasar desde que un
fichero de bloqueo fue modificado/creado antes de que
procmail decida que este deber ser fichero de bloqueo
erróneamente dejado y que puede ser eliminado ahora a la
fuerza. Si es cero el fichero de bloqueo se elimina, si no
se especifica, toma un valor por defecto de 1024 segundos.
Esta variable es útil para prevenir cuelgues infinitos de
sendmail/procmail. Procmail es inmune a las desviaciones
de reloj a través de máquinas.
TIMEOUT Número de segundos que tienen que haber transcurrido antes
de que procmail decida que algún proceso hijo que él inició
tiene que terminarlo. El programa en cuestión recibirá una
señal TERMINATE de procmail, y el procesamiento del fichero
de recursos continuará. Si vale cero, no se usa
temporizador y procmail esperará indefinidamente hasta que
el hijo termine; si no se especifica, el valor por defecto
es 960 segundos.
MSGPREFIX El prefijo de nombre de fichero que se usa cuando se
entrega a un directorio (no se usa cuando se entrega a un
directorio MH).
HOST Si esto no es el nombre de host de la máquina, el procesado
del fichero de recursos actual cesa inmediatamente. Si otro
fichero de recursos fuera especificado en la lÃnea de
comando, el procesamiento continuará con el siguiente. Si
se agotan todos los ficheros de recursos, el programa
terminará, pero no generará un error (i.e. para el programa
de correo parecerá que el correo ha sido entregado).
UMASK El nombre lo dice todo (si no, olvide esto :-). Cualquier
cosa asignada a UMASK se toma como un número octal. Si no
se especifica, el valor por defecto de umask será 077. Si
umask permite o+x, todos los buzones a los que entrega
procmail directamente sufrirán un cambio de modo a o+x.
Esto se puede usar para verificar si ha llegado nuevo
correo.
SHELLMETAS Si cualesquiera de los caracteres de SHELLMETAS aparece en
la lÃnea que especifica un filtro o programa, la lÃnea se
pasará a $SHELL en lugar de ser ejecutada directamente.
SHELLFLAGS Cualquier llamada a $SHELL será como:
"$SHELL" "$SHELLFLAGS" "$*";
SENDMAIL Si no usa la facilidad forwarding no se preocupe por esto.
Especifica el programa que se llama para reenviar cualquier
correo.
Se llama como: "$SENDMAIL" "$SENDMAILFLAGS" "$@";
NORESRETRY Número de reintentos que se llevan a cabo si sucede alguno
de los errores ‘tabla de procesos llena’, ‘tabla de
ficheros llena’, ‘memoria agotada(out of memory)’ o
‘espacio swap agotado (out of swap space)’. Si este número
es negativo, entonces procmail reintentará indefinidamente;
si no se especifica su valor por defecto es 4 veces. Los
reintentos se producen con un intervalo de $SUSPEND
segundos. La idea que hay detrás de esto es, que si v.g. el
espacio swap se ha agotado o la tabla de procesos está
llena, normalmente muchos otros programas lo detectarán
también y abortarán o fallarán 8-), en relación con esto,
libere los recursos que puedan se valiosos para procmail.
SUSPEND Número de segundos que procmail estará en pausa si tiene
que esperar algo que actualmente no está dispoible
(memoria, fork, etc.); si no se especifica tomará un valor
por defecto de 16 segundos. Véase también: LOCKSLEEP.
LINEBUF Longitud de las lÃneas de buffer internas, no pueden ser
menores de 128. Todas las lÃneas leÃdas del fichero de
recursos Si no se especifica toma el valor por defecto de
2048. Este lÃmite, desde luego, no se aplica al propio
mensaje, que puede tener una longitud de lÃneas arbitrario,
o podrÃa ser un fichero binario. Véase también
PROCMAIL_OVERFLOW.
DELIVERED Si está con un valor ‘yes’ procmail parecerá (al agente de
correo) que el correo ha sido entregado. Si el correo o se
puede entregar tras haberse encontrado con esta asignación
(puesta a ‘yes’), el correo se perderá (i.e. el correo no
rebota).
TRAP Cuando procmail termina ejecutará el contenido de esta
variable. Se puede leer una copia del correo de la entrada
estándar. Cualquuier salida producida por este comando se
añadirá a $LOGFILE. Los posibles usos de TRAP son:
eliminación de ficheros temporales, registrar incidencias
personalizadas, etc. Véase también EXITCODE y LOGABSTRACT.
EXITCODE Cuando procmail termina y a esta variable se le ha asignado
un valor numérico positivo, procmail los usará como código
de salida. Si esta variable está definida pero vacÃa,
procmail asignará el código de salida con cualquier cosa
que devuelva el programa TRAP devuelva. Si esta variable
no se ha fijado, procmail la fijará antes de llamar al
programa TRAP program.
LASTFOLDER Procmail asigna esta variable cuando está entregando a una
carpeta o programa. Siempre contiene el nombre de la última
carpeta (o programa) al que entregó procmail.
MATCH Procmail asigna esta variable cuando se le dice que
extraiga el texto que concuerda con una expresión regular.
Contendrá todo el texto que concuerda con la expresión
regular pasado el ‘\/’.
SHIFT La asignación de un valor positivo a esta variable tiene el
mismo efecto que el mandato ‘shift’ en sh(1). Este comando
es más útil para extraer argumentos extra pasados a
procmail cuando actúa como filtro de correo genérico.
INCLUDERC Nombres de ficheros de recursos (relativos al directorio
actual) se se incluirán aquà como si fueran parte del
fichero de recursos actual. Se permite el anidamiento
ilimitado. Como no se realizan verificaciones sobre los
permisos o la propiedad del fichero de recursos, los
usuarios de INCLUDERC deberÃan estar seguros de que sólo
los usuarios con confianza tienen permiso de escritura en
el fichero de recurso incluido o el directorio en el que
está.
PROCMAIL_VERSION
El número de versión del binario procmail en ejecución.
PROCMAIL_OVERFLOW
Esta variable se fijará a un valor no vacÃo si procmail
detecta un desbordamiento del buffer. Véase también la
sección fallos de abajo para otros detalles de operación
cuando ocurren los desbordamientos.
COMSAT La notificación Comsat(8)/biff(1) está activa por defecto,
se puede desactivar fijando esta variable a ‘no’. De forma
alternativa, el servicio biff se puede personalizar
poniéndolo como ‘service@’, ‘@hostname’, o
‘service@hostname’. Cuando no se especifica por defecto to
biff@localhost.
DROPPRIVS Si está a ‘yes’ procmail anulará todos los privilegios que
pudiera tener (suid o sgid). Esto sólo es útil si quiere
garantizar que la última mitad del fichero /etc/procmailrc
se ejecuta en nombre del recipiente.
Expresiones regulares extendidas
Los siguientes elementos se conocen por el egrep interno de procmail y
el egrep(1) estándar (tenga cuidado que algunos desarrollos de egrep
incluyen otras extensiones no estándar):
^ Inicio de lÃnea.
$ Fin de lÃnea.
. Cualquier carácter salvo nueva lÃnea.
a* Cualquier secuencia de ninguna o más aes.
a+ Cualquier secuencia de una o más aes.
a? Ninguna o una a.
[^-a-d] Cualquier carácter que no sea un guion, a, b, c, d o nueva
lÃnea.
de|abc Las secuencias ‘de’ o ‘abc’.
(abc)* Ninguna o más veces la secuencia ‘abc’.
\. Concuerda con un simple punto; use \ para proteger cualquiera
de los caracteres mágicos para suprimir su significado
especial. Véase también la sustitción de variables $\ .
Esto eran sólo ejemplos, desde luego, cualquier combinación más
compleja es válida también.
Los significados de los siguientes elementos son extensiones especiales
de procmail:
^ or $ Concuerda con una nueva lÃnea(para concordancia multilÃnea).
^^ Asocia la expresión al comienzo del área de búsqueda, o si se
encuentra al final de la expresión, lo asocia al final de
área de búsqueda.
\< o \> Concuerda con el carácter anterio o posterior a una palabra.
Simplemente son abreviaturas de ‘[^a-zA-Z0-9_]’, pero también
puede concordar con nuevas lÃneas. Como concuerdan con los
caracteres actuales, sólo sirven para delimitar palabras, no
para delimitar espacio entre palabras.
\/ Divide la expresión en dos partes. Todo lo que cocuerda con
la parte derecha se asignará a la variable de entorno MATCH.
EJEMPLOS
Mire la página de manual procmailex(5).
ADVERTENCIAS
Las lÃneas que continúan en la siguiente en una lÃnea de acción que
especifiquen un programa siempre tienen que terminar en barra
invertida, incluso en el caso que la shell subyacente no necesitara o
quisiera las barras invertidas para indicar la continuación. Esto es
debido proceso de análisis en dos pasadas que se necesita (primero
procmail, luego la shell (o no, dependiendo de SHELLMETAS)).
No ponga comentarios en las lÃneas de condiciones de expresiones
regulares de una receta, estas lÃneas alimentan al egrep interno
literalmente (salvo las barras invertidas al final de lÃnea).
Los espacios en blanco iniciales en las continuaciones de expresiones
regulares normalmente se ignoran (para que se pueda sangrar), pero no
en las lÃneas de condición que se evalúan de acuerdo a las reglas de
sustitución de sh(1) comprendidas entre comillas dobles.
Vigile los bloqueos muertos cuando haga cosas poco saludables como
reenviar correo a us propia cuenta. Los bloqueos muertos se pueden
romper con uso adecuado de LOCKTIMEOUT.
Cualesquiera valores por defecto que tenga procmail para alguna
variable de entorno siempre se sobrepone a los que ya estuvieran
definidos. Si realmente quiere sobreponer estos valores por defecto,
los puede poner bien en el fichero de recursos o en la lÃnea de
mandatos como un argumento.
Las variables de entorno fijadas dentro de la parte de acción
interpretadas por la the shell-‘|’ de una receta no conservará sus
valores tras haber finalizado la receta ya que se asignan en uan
subshell de procmail. Para estar seguro de que el valor de las
variables de entorno retienen su valor tiene que poner la asignación a
la variable antes del ‘|’ inicial de una receta, de forma que pueda
capturar la salida estándar del programa.
Si especifica sólo una bandera ‘h’ o una ‘b’ en una receta de entrega,
y la receta concuerda, entonces, salvo que esté presente la bandera ‘c’
también, el cuerpo y las cabeceras respectivas del correo se pierden
silenciosamente.
VÉASE TAMBIÉN
procmail(1), procmailsc(5), procmailex(5), sh(1), csh(1), mail(1),
mailx(1), binmail(1), uucp(1), aliases(5), sendmail(8), egrep(1),
regexp(5), grep(1), biff(1), comsat(8), lockfile(1), formail(1)
FALLOS (BUGS)
La única sustitución de variables de entorno que puede ser gestionada
por el propio procmail son del tipo $name, ${name}, ${name:-text},
${name:+text}, ${name-text}, ${name+text}, $\name, $#, $n, $$, $?, $_,
$- y $=; por lo cual $\name se sustituirá por todos caracteres de la
expresión regular mágica desarmada equivalente de $name, $_ por el
nombre del fichero de recursos actual, $- por $LASTFOLDER y $=
contendrá la puntuación de la última receta. Cuando se usan las
opciones -a o -m, "$@" se expande a los argumentos especÃficos
respectivos (lista); pero sólo cuando se pasa en la lista de argumentos
a un programa.
Procmail no soporta la expansión de ‘~’.
Se usa una lÃnea de buffer de longitud $LINEBUF cuando se procesa el
fichero de recursos, cualquier expansión que no se ajuste a estos
lÃmites se truncará y se asigna valor a PROCMAIL_OVERFLOW. Si la lÃnea
desbordada es una condición o una lÃnea de acción, se considerará fallo
y procmail continuará procesando. Si es una asignación de variable o
lÃnea de comienzo de receta entonces procmail abortará el fichero de
recursos entero.
Si el fichero de bloquo global tiene una ruta relativa y el directorio
actual no es el mismo que cuando el fichero de bloqueo local se creó,
entonces el fichero de bloquo global no se eliminará si porcmail existe
en ese punto (remedio: use rutas absolutas para especificar ficheros de
bloqueo globales).
Si un fichero de recursos tiene una ruta relativa y cuando el fichero
se abre por primera vez MAILDIR contiene una ruta relativa, y si en
este punto procmail tiene que clonarse y el directorio actual ha
cambiado desde que el fichero de recusos se abrió, entonces procmail no
podrá colonarse él mismo (remedio: use una ruta absoluta para indicar
el fichero de recursos o esté seguro que MAILDIR contiene una ruta
absoluta como el fichero de recursos abierto).
Un fichero de bloqueo local de una receta que marca el comienzo de un
bloque anidado sin fork no funciona como se esperarÃa.
Cuando capture la salida estándar de una receta en una variable de
entorno, se eliminará exactamente un carácter final de nueva lÃnea.
MISCELANEA
Si la expresión regular contiene ‘^TO_’ será sustituido por
‘(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope
|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)’, que deberÃa capturar
todas las especificaciones de destino que contienen una dirección
especÃfica.
Si la expresión regular contiene ‘^TO’ será sustituido por
‘(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope
|Apparently(-Resent)?)-To):(.*[^a-zA-Z])?)’, que deberÃa capturar todas
las especificaciones de destino que contienen una palabra especifica.
Si la expresión regular contiene ‘^FROM_DAEMON’ será sustituido por
‘(^(Mailing-List:|Precedence:.*(junk|bulk|list)|To: Multiple recipients
of |(((Resent-)?(From|Sender)|X-Envelope-From):|>?From )([^>]*[^(.%@a-
z0-9])?(Post(ma?(st(e?r)?|n)|office)|(send)?Mail(er)?|daemon|m(mdf
|ajordomo)|n?uucp|LIST(SERV|proc)|NETSERV|o(wner|ps)|r(e(quest|sponse)
|oot)|b(ounce|bs\.smtp)|echo|mirror|s(erv(ices?|er)|mtp(error)?|ystem)
|A(dmin(istrator)?|MMGR|utoanswer))(([^).!:a-z0-9][-_a-z0-9]*)?[%@>\t
][^<)]*(\(.*\).*)?)?$([^>]|$)))’, que deberÃa capturar los correos que
llegan de la mayorÃa de los demonios (como es eso para una expresión
regular :-).
Si la expresión regular contiene ‘^FROM_MAILER’ se susrituirá por
‘(^(((Resent-)?(From|Sender)|X-Envelope-From):|>?From )([^>]*[^(.%@a-
z0-9])?(Post(ma(st(er)?|n)|office)|(send)?Mail(er)?|daemon|mmdf|n?uucp
|ops|r(esponse|oot)|(bbs\.)?smtp(error)?|s(erv(ices?|er)|ystem)
|A(dmin(istrator)?|MMGR))(([^).!:a-z0-9][-_a-z0-9]*)?[%@>\t
][^<)]*(\(.*\).*)?)?$([^>]|$))’ (una versión reducida de
‘^FROM_DAEMON’), que deberÃa capturar los correo que llegan de la
mayorÃa de los demonios de correo.
Cuando asigna valores booleanos a variables como VERBOSE, DELIVERED o
COMSAT, procmail acepta como verdadero cualquier cadena que comience
por un valor no cero, ‘on’, ‘y’, ‘t’ or ‘e’. Falso es todo lo que
empiece por una valor cero, ‘off’,‘n’, ‘f’ o ‘d’.
Si la lÃnea de acción de una receta especifica un programa, un único
par barra invertida-nueva lÃnea en ella sobre una lÃnea vacÃa se
convertirá en una nueva lÃnea.
El motor de expresión regular construido en procmail no soporta
denominaciones de clases de caracteres
NOTAS
Como lo espacios iniciales sin commillas son ignorados en el fichero de
recuros, puede sangra el texto a su gusto.
El sÃmpbolo ‘|’ inicial en la lÃnea de acción para especificar un
programa o filtro se elimina antes de verificar $SHELLMETAS.
Los ficheros incluidos en la directiva INCLUDERC que sólo contengan
asignaciones de variables de entorno se puede compartir con sh.
Para procesamientos realmente complicados incluso puede considerar el
llamar a procmail recursivamente.
En los viejos tiempos, la ‘:0’ que marca el comienzo de una receta,
tuvo que cambiarse a ‘:n’, donde ‘n’ indica el número de condiciones
que siguen.
AUTOR
Stephen R. van den Berg
<srb@cuci.nl>