procmailrc - fichero de recursos de procmail
$HOME/.procmailrc
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.
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.
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.
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.
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).
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.
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 (
ORi
Ginal
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.
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.
Mire la página de manual
procmailex(5).
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.
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)
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.
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
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.
Stephen R. van den Berg
<srb@cuci.nl>