table of contents
PROCMAIL(1) | General Commands Manual | PROCMAIL(1) |
procmail - procesador autónomo de correo
procmail [-ptoY] [-f dequien]
[parámetro=valor | fichero_de_recursos] ...
procmail [-toY] [-f dequien] [-a
argumento] -d recipiente ...
procmail [-ptY] -m [parámetro=valor] ...
fichero_de_recursos [argumento] ...
procmail -v
Para un comienzo rápido véase NOTAS al final.
Procmail se debería llamar automáticamente sobre el mecanismo
del fichero .forward tan pronto como llegue el correo. De forma
alternativa, cuando se lo instale el administrador del sistema, se puede
llamar desde el programa de correo inmediatamente. Cuando se llama, primero
fija algunas variables de entorno a sus valores por defecto, lee el mensaje de
correo de la entrada estándar hasta un EOF, separa el cuerpo de la
cabecera, y entonces, si no hay argumentos en la línea de mandatos,
empieza a buscar un fichero llamado $HOME/.procmailrc. De acuerdo con
las recetas de procesado de este fichero, el mensaje de correo que acaba de
llegar se distribuye a la carpeta adecuada (y más). Si no se encuentra
fichero_de_recursos, o el procesado del fichero_de_recursos llega al final,
procmail almacenará el mensaje en el buzón por defecto del sistema.
Si no se ha especificado fichero_de_recursos y tampoco se ha especificado la
opción -p en la línea de mandatos, procmail, antes de leer
$HOME/.procmailrc, interpreta los mandatos de /etc/procmailrc (if
existe). Hay que tener cuidado cuando se cree /etc/procmailrc, debido, si las
circunstancias lo permiten, se ejecutará con privilegios de root
(contrario al fichero $HOME/.procmailrc por supuesto).
Sise ejecuta con suid root o con privilegios de root, procmail podrá
funcionar con funcionalidad mejorada, compatible con el agente de entrega.
Procmail también se puede usar como filtro de correo de propósito
general, i.e. se han realizado las medidas necesarias para que procmail se
pueda llamar en un regla especial de sendmail.
El formato del fichero_de_recursos se describe en detalle en la página de
manual procmailrc(5).
La técnica de puntuación de peso se describe en detalla en la
página del manual procmailsc(5).
Se pueden encontrar ejemplos de recetas del fichero_de_recursos en la
página del manual procmailex(5).
TERMINATE Termina prematuramente y reencola el correo.
HANGUP Termina prematuramente y rebota el correo.
INTERRUPT Termina prematuramente y rebota el correo.
QUIT Termina prematuramente y pierde el correo silenciosamente.
ALARM Fueza el temporizador (véase TIMEOUT).
USR1 Equivalente a un VERBOSE=off.
USR2 Equivalente a un VERBOSE=on.
-v Procmail imprimirá su número de versión number, muestra
su fecha de configuración de compilación y sale.
-p Guarda cualquir entorno viejo. Normalmente procmail limpia el entorno
al comenzar, salvo el valor TZ. Sin embargo, en cualquier caso: cualquier
valor por defecto se sobrepone a cualquier variable de entorno existente, i.e.
procmail no presta atención a cualquier variable de entorno predefinida,
simplemente las escribe con sus propios valores por defecto. Para ver la lista
de variables de entorno que procmail prfija véase la página de
manual procmailrc(5). Si se especifican las dos opciones If both -p y
-m are la lista de variables prefijadas se limita a: LOGNAME, HOME, SHELL,
ORGMAIL y MAILDIR.
-t Hace que procmail falle suavemente, i.e. si procmmil no puede entregar
el correo a alguno de los destinos que le dio, el correo no rebota, sino que
retorna a la cola de correo. En elagún momento futuro se realiza otro
intento de entrega.
-f dequien Hace que procmail regenere la línea `From' inicial
con dequien como remitente (en lugar de -f uno podría usar el
alternativo y obsoleto -r). Si dequien consiste en n simple `-',
procmail sólo actualizará la marca de tiempo de la linea `From ' (si
está presente, si no, generará una nueva).
-o En lugar de permitir a cualquiera generar líneas `From ',
simplemente sobrepone los falsos.
-Y Supone el formato de buzón tradicional de Berkeley, ignora
cualquier campo Content-Length:.
-a argumento Esto fijará $1 igual a argumento. Se
puede usar para pasar metainformación a procmail. Esto se hace para pasar
la información de la regla $@x de sendmail.
-d recipiente ... Esto activa el modo de entrega, la entrega
será al recipiente. del usuario local. Esto, por supuesto,
sólo es posible si procmail tiene privilegios de root (o si procmail ya
estáen ejecución con los euid y egid del recipiente). Procmail
tomará la identidad (setuid) del recipiente y entrega el correo como si
fuera llamado por el recipiente sin argumentos ((i.e. si no se encuentra
fichero_de_recursos, la entrega es como correo ordinario). Esta opción es
incompatible con -p.
-m Vuelve a procmail en un filtro de correo de propósito general. En
este modo se tiene que especificar un fichero_de_recursos en la línea de
mandatos. Tras el fichero_de_recursos, procmail acepta un número
ilimitado de argumentos. Si el fichero_de_recursos está en una ruta
absoluta comenzando por /etc/procmailrcs/ sin referencias anteriores
(i.e. no se puede mencionar el directorio padre) procmail, si no encuentra
violaciones de seguridad, tomará la identidad del propietario del the
fichero_de_recursos(o enlace simbólico). Para algunos usos avanzados de
esta opción, debería mirar en la sección EXAMPLES
más abajo.
Cualesquiera argumentos que contengan un '=' se consideran asignaciosn de
variables de entorno, todas serán evaluadas tras asignar los
valores por defecto y antes de abrir el primer fichero_de_recursos.
Cualesquiera otros argumentos se supone que son rutas de fichero_de_recursos
(bien absolutas o relativas al directorio actual si empiezan por `./';
cualquier otra ruta es relativa a $HOME, salvo que se haya dado la
opción -m, en cuyo caso todas las rutas relativas son relativas al
directorio actual); procmail empezará con el primero que encuentre en la
línea de mandatos. Los siguientes sólo se analizan si los previos
tienen una entrada de directiva de no concordancia con HOST, o en l caso de
que no existieran.
Si no se ha especificado fichero_de_recursos, buscará
$HOME/.procmailrc. Si no lo ha podido encontrar, el procesamiento
continuará de acuerdo a los valores por defecto de las variables de
entorno y las especificadas en la línea de comando.
Se pueden encontar ejemplos de recetas para fichero_de_recursos en la
página de manual procmailex(5). Se puede encontrar n ejemplo
pequeño de fichero_de_recursos en la sección NOTAS más
abajo.
Salte el resto de estos EJEMPLOS salvo que sea un administrador de systema que
esté vagamente familiarizado con la sintaxis de sendmail.cf.
La opción -m se usa típicamente cuando procmail se llama desde
una regla del fichero sendmail.cf. Para poder hacer esto es conveniente crear
un "mailer" procmail extra en su fichero sendmail.cf (además
del, quizás presente "mailer" local que lanza procmail). Para
crear el "mailer" `procmail' le sugiero algo como:
/etc/passwd para fijar las variables LOGNAME, HOME y SHELL del recipiente
/var/spool/mail/$LOGNAME buzón del sistema; tanto el buzón del
sistema como el directorio inmediato que lo contiene se crearán cada vez
que procmail se inicie si alguno de ellos no existe.
/etc/procmailrc fichero_de_recursos global inicial
/etc/procmailrcs/ ruta de provilegios especiasles para el
fichero_de_recursoss
$HOME/.procmailrc fichero_de_recursos por defecto
/var/spool/mail/$LOGNAME.lock fichero de bloqueo para el buzón del
sistema (procmail no lo usa automáticamente, salvo que $DEFAULT sea igual
a /var/spool/mail/$LOGNAME y procmail esté entregando a $DEFAULT)
/usr/sbin/sendmail programa de reenvío de correo por defecto
_????`hostname` ficheros temporales únicos de longitud cero creados
por procmail
procmailrc(5), procmailsc(5), procmailex(5), sh(1),
csh(1), mail(1), mailx(1), binmail(1),
uucp(1), aliases(5), sendmail(8), egrep(1),
grep(1), biff(1), comsat(8), lockfile(1),
formail(1), cron(1)
Autoforwarding mailbox found El buzón del sistema tiene activos sus bits
suid o sgid bit, procmail termina con EX_NOUSER suponiendo que no debe
entregar a este buzón.
Bad substitution of "x" Especificado un nombre de variable de entorno
inválido.
Closing brace unexpected No está el paréntesis abierto correspondiente
(bloque anidado).
Conflicting options No todas las combinaciones de opciones son útiles.
Conflicting x suppressed La bandera x no es compatible con alguna otra bandera
de esta receta.
Couldn't create "x" El buzón del sistema desapareció y no se
puede/quiere crear.
Couldn't determine implicit lockfile from "x" No había redirector
`>>', usando simplemente `$LOCKEXT' como fichero de bloqueo local.
Couldn't unlock "x" El fichero de bloqueo se perdió o los
permisos de escritura del directorio donde está lo han denegado.
Deadlock attempted on "x" El fichero de bloqueo local especificado en
esta receta es igual a un $LOCKFILE activo.
Denying special privileges for "x" Procmail no tomará la
identidad que viene con el fichero_de_recursos porque se encontró un
violación de seguridad (v.g. -p o asignaciones de variables en la
línea de comando) o procmail no tiene privilegios suficientes para
hacerlo.
Descriptor "x" was not open Cuando se inició procmail, la entrada
estándar o las salidas estándar o de errores no estaba conectada
(posiblemente un intento de subvertir la seguridad)
Enforcing stricter permissions on "x" El buzón del sistema del
recipiente parece ser inseguro, procmail lo asegura.
Error while writing to "x" Directorio inexistente, falta permiso de
escritura, pipe muerto o disco lleno.
Exceeded LINEBUF Detectado desbordamiento de buffer, LINEBUF era muy
pequeño, se ha fijado PROCMAIL_OVERFLOW.
Excessive output quenched from "x" El programa o filtro "x"
intentó producir mucha salida para el LINEBUF actual, el resto se
descartó.
Extraneous x ignored The action line of this recipe makes flag x meaningless.
Failed forking "x" La tabla de procesos está llena (y NORESRETRY
se ha agotado).
Failed to execute "x" El programa no está en la ruta o no es
ejecutable.
Forced unlock denied on "x" No hay permisos de escritura en el
directorio donde reside el fichero de bloqueo "x", o más
de un procmail intenta forzar un bloque exactamente al mismo tiempo.
Forcing lock on "x" El fichero de bloqueo x se va a eliminar por la
fuerza por sobrepasar el temporizador (véase también:
LOCKTIMEOUT).
Incomplete recipe Se encontró el comienzo de la receta, pero se quedó
en un EOF.
Insufficient privileges Procmail necesita privilegios de root o debe tener los
(e)uid y (e)gid adecuados para ejecutarse en modo entrega. El correo
rebota.
Invalid regexp "x" La expresión regular "x" contiene
errores (lo más probable algún paréntesis extraño o
perdido).
Kernel-lock failed Mientras intentaba usar las llamadas de bloqueo del
núcleo, una de ellas falló (normalmente indica un error de S. O.),
procmail ignora este error y continúa.
Kernel-unlock failed Véase arriba.
Lock failure on "x" Sólo puede ocurrir si especifica algún
nombre real de fichero de bloqueo extraño (e ilegal) o si el fichero
de bloqueo no se pudiera crear por falta de permisos o subdirectorios
inexistentes.
Lost "x" Procmail intentó duplicarse pero no pudo encontrar el
fichero_de_recursos "x" (ha sido eliminado o tenía una ruta
relativa ya ha cambiado del directorio desde que procmail lo abrió la
última vez).
Missing action La receta actual está incompleta.
Missing closing brace Se ha iniciado un bloque anidado que nunca termina.
Missing name La opción -f necesita un argumento extra.
Missing argument Ha especificado la opción -a pero olvidó el
argumento.
Missing fichero_de_recursos Ha especificado la opción -m , procmail espera
el nombre de un fichero_de_recursos como argumento.
Missing recipient Ha especificado la opción -d o llamó a procmail bajo
un nombre diferente, espera uno o más recipientes como argumentos.
No space left to finish writing "x" El sistema de ficheros que
contiene "x" no tiene suficiente espacio libre para permitir la
entrega del mensaje al fichero.
Out of memory Al sistema no le queda espacio de intercambio (swap) (y NORESRETRY
se ha agotado).
Processing continued Las opciones no reconocidas de la línea de mandatos se
ignoran, se prosigue de forma normal.
Program failure (nnn) of "x" El programa que inició procmail
devolvió nnn en lugar de EXIT_SUCCESS (=0); Si nnn es negativo, esta es
la señal por la que murió el programa.
Renaming bogus "x" into "x" El buzón del sistema del
recipiente es inútil, procmail realiza acciones evasivas.
Skipped: "x" No pudo hacer nada con "x" en el
fichero_de_recursos (error de sintaxis), ignorándolo.
Suspicious rcfile "x" El propietario del fichero_de_recursos no era el
recipiente o root, el fichero tenía permiso global de escritura, el
directorio que lo contenía tenía permiso global de escritura, o es
el fichero_de_recursos por defecto ($HOME/.procmailrc) y tenía permiso de
escritura para el grupo o o el directorio que lo contiene tenía permiso
de escritura para el grupo (el fichero_de_recursos no se usó).
Terminating prematurely whilst waiting for ... Procmail recibió una
señal mientras esperaba ...
Quota exceeded while writing "x" El tamaño de la quota de
ficheros del recipiente en el sistema de ficheros que contiene a "x"
no permite la entrega del mensaje al fichero.
Timeout, terminating "x" Timeout has occurred on program or filter
"x".
Timeout, was waiting for "x" Ha pasado el temporizador en el programa,
filtro o fichero "x". Si era un programa o filtro, entonces no
parece ejecutarse más.
Truncated file to former size El el fichero no se pudo entregar con éxito,
el fichero se truncó a un tamaño adecuado.
Truncating "x" and retrying lock "x" no parece un nombre de
fichero válido o el fichero no está vacío.
Rescue of unfiltered data succeeded/failed Un filtro falló, procmail
intentó devolver el texto original.
Unexpected EOL Falta cerrar comillas o se intenta proteger un EOF.
Unknown user "x" El recipiente especificado no tiene un uid adecuado.
Los diagnósticos extendidos se pueden activar o desactivar fijando la
variable VERBOSE .
[pid] time & date El pid de procmail y la marca de tiempo. Generado cuado
procmail registra un diagnótico y ha transcurrido al menos un segundo
desde la última marca de tiempo.
Acquiring kernel-lock Procmail ahora intenta un bloqueo del núcleo del
fichero (descriptor) abierto más reciente.
Assigning "x" Asignación de variable de entorno.
Assuming identity of the recipient, VERBOSE=off Eliminado todoslo privilegios
(si exisen), desctiva implícitamente los diagnísticos extendidos.
Bypassed locking "x" El directorio de spool de correo ne es accesible
para procmail, éste depende únicamente de los bloqueos del
núcleo.
Executing "x" Iniciando el programa "x". Si se inició
por procmail directamente (sin una shell intermedia), procmail mostrará
donde separó los argumentos insertando comas.
HOST mismatched "x" Este host se llamó "x", HOST
contenía algo más.
Locking "x" Creando el fichero de bloque "x".
Linking to "x" Creando enlaces duros entre carpetas de directorios
Match on "x" Concordancia con la condición.
Matched "x" Asignado "x" a MATCH.
No match on "x" La condición no concordaba, receta saltada.
Notified comsat: "$LOGNAME@desplazamiento:fichero" Enviado a
comsat/biff una notificación de que ha llegado correo para $LOGNAME en
`desplazamiento' en `fichero'.
Opening "x" Abiendo fichero "x" para añadir.
rcfile: "x" fichero_de_recursos cambiado a "x".
Reiterating kernel-lock Mientras intentaba varios métodos de bloqueo, uno
de estos falló. Procmail reintentará hasta que todos tengan
éxito en una rápida sucesión.
Score: added newtotal "x" Esta condición puntuó `added'
puntos, queresulta en una puntuación `newtotal'.
Unlocking "x" Eliminado fichero de bloqueo "x" de nuevo.
Debería crear un guion de shell que use lockfile(1) antes de llamar
a su shell de correo sobre cualquier fichero buzón distinto del
buzón del sistema (salvo, por supuesto, que su shell de correo use el
mismo fichero de bloqueo (local o global) que especificó en su
fichero_de_recursos).
En el caso improbable de que necesite absolutamente matar al procmail antes de
que haya acabado, primero intente y use el comando regular kill (i.e.
no kill -9, véase la subsección Signals para
sugerencias), en otro caso algún fichero de bloqueo podría no
eliminarse.
Tenga cuidado cuando use la opción -t, si procmail repetidamente es
incapaz de de entregar el correo (v.g. debido a un fichero_de_recursos
incorrecto), la cola de correo del sistema podría llenarse. Esto
podría molestar al postmaster local y a otros usuarios.
El fichero /etc/procmailrc se podría ejecutar con privilegios de
root, por tanto, tenga cuidado con lo que pone en él. SHELL
será igual a la del recipiente actual, por tanto, si procmail tiene que
llamar a la shell, mejor la pone prrimero como un valor seguro. Véase
también : DROPPRIVS.
Tenga en cuenta que si se permite chown(1) en ficheros de
/etc/procmailrcs/, se pueden cambiar a root (o cualquier otro) por sus
actuales propietarios. Para una seguridad máxima, esté seguro de que
este directorio es ejecutable sólamente por root.
Procmail no es la herramienta adecuada pra compartir un buzón entre varios
usuarios, tales como cuando tiene una cuenta POP3 para todo el correo de su
dominio. Se puede hacer si configura su MTA para añadir algunas cabeceras
con los datos del sobre del recipiente para decir a procmail para quien es el
mensaje, pero esto normalmente no es la forma correcta de hacerlo. Quizás
quiera investigar si su MTA se ofrece `tablas de usuarios virtuales' o ver
v.g. la facilidad `multidrop' de Fetchmail.
Tras eliminar un fichero de bloqueo por la fuerza, procmail espera $SUSPEND
segundos antes de de crear un nuevo fichero de bloqueo de forma que otro
proceso que decida eliminar el fichero de bloqueo viejo no eliminará por
error el nuevo bloqueo creado.
Procmail usa la señal regular TERMINATE para terminar cualquier filtro que
esté corriendo, pero no verifica si el filtro responde a esa señal y
sólo la envía al propio filtro, no a los hijos del filtro.
Un campo Content-Length: que continúe no se gestiona correctamente.
Los caracteres de nueva línea embebidos en una cabecera que continúe
se deberían saltar cuando concuerden en lugar de ser tratados como un
simple espacio como ahora.
Si existe un campo Content-Length: en la cabecera del correo y no se ha
especificado la opción -Y, procmail eliminará espacios para
indicar el tamaño correcto. Procmail no cambia el ancho de campo.
Si no existe campo Content-Length: o se ha especificado la opción
-Y y procmail añade a buzones regulares, cualquier línea del
cuerpo del mensaje que parezca un marca de correo se precede con `>'
(desactiva falsas cabeceras). La expresión regular que se usa para buscar
estas marcas de correo es:
/etc/passwd, procmail procederá como si el modo de entrega explícito no tuviera efecto. Si no está en modo de entrega explícito y el uid bajo el que se ejecuta procmail no tiene la correspondiente entrada en /etc/passwd, entonces HOME tomará por defecto /, LOGNAME será #uid y SHELL será por defecto /bin/sh. Cuando está en modo de entrega explícito, procmail generará una línea `From' inicial si no está presente. Si alguna está ya presente, procmail la dejará intacta. Si procmail no se llama con alguno de los siguientes identificadores de usuario o grupo : root, daemon, uucp, mail, x400, network, list, slist, lists o news, pero todavía tiene que generar o aceptar una nueva línea `From ', generará una línea `>From ' inicial para ayudar a distinguir correos falsos. Por razones de seguridad, procmail sólo usará un fichero_de_recursos absoluto o relativo a $HOME si es propiedad del recipiente o root, si permiso de escritura global y el directorio que lo contiene no tiene permiso de escritura global. El fichero $HOME/.procmailrc tiene la restricción adicional de no tener permiso de escritura para el grupo ni el directorio que lo contiene tampoco. Si /var/spool/mail/$LOGNAME es un buzón inviable (i.e. no pertenece al recipiente, no se puede escribir, es un enlace simbólico o es un enlace duro), procmail al empezar intentará renombrarlo como un fichero empezando por `BOGUS.$LOGNAME.' y terminando en un código de secuencia de i-nodo. Si esto resulta imposible ORGMAIL no tendrá valor inicial, y por tanto se inhibirá de la entrega sin un fichero de
fichero_de_recursos adecuado. Si /var/spool/mail/$LOGNAME es ya un buzón válido, pero tiene que perder muchos permisos, procmail corregirá esto. Para prevenir que procmail haga esto, esté seguro de poner el bit u+x. Cuando se entregue a directorios (o carpetas MH) no necesita usar ficheros de bloqueo para prevernir varios procmail en ejecución concurrentes lo estropeen. La entrega a carpetas MH consume ligeramente más tiempo que la entrega a directorios normales o buzones, ya que procmail tiene que buscar el suiguiente número disponible (en lugar de tener el nombre de fichero disponible de forma inmediata). En caso de fallo general procmail devolverá EX_CANTCREAT, salvo que se especifique la opción -t, en cuyo caso devolverá EX_TEMPFAIL. Para hacer un `egrep' más consistente de las cabeceras, procmail concatena todos los campos de cabecera continuados; pero sólo interamente. Cuando se entregue el correo, las rupturas de línea aparecerán como antes. Si procmail se llama bajo un nombre que no empieza por `procmail' (v.g. si está enlazado a otro nombre y es llamado como tal), se pone en modo de entrega explícito, y espera los nombres de recipientes como argumentos de la línea de mandato (como si se hubiera especificado
-d ). Las notificaciones comsat/biff se realizan usando udp. Se envían una vez que procmail genera la entrada regular al fichero de registo. La notificación de mensajes tiene el siguiente formato extendido (o tan parecido como se pueda cuando la entrega fial no sea un fichero):
La llamada a procmail con las opciones -h o -? hará que muestre una ayuda
en la línea de mandatos de una página de referencia rápida y
las banderas de las recetas.
Existe una PUF (FAQ) excelente para novatos sobre filtros de correo (y procmail
en particular), la mantiene Nancy McGough <nancym@ii.com> y se puede
obtener enviando un mensaje a mail-server@rtfm.mit.edu con lo siguiente en el
cuerpo:
Si quisiera estar informado sobre nuevas versiones y parches oficiales envíe una solicitud de suscripción a
Stephen R. van den Berg
Mprocmail, P=/usr/bin/procmail, F=mSDFMhun, S=11, R=21, A=procmail -m $h $g $uEsto le permite usar reglas como las siguientes (más probable en ruleset 0) para filtrar correo a través del mailer procmail (por favor observe el tabulador inicial para continuar la regla, y el tabulador para separar los comentarios):
R$*<@some.where>$* $#procmail $@/etc/procmailrcs/some.rc $:$1@some.where.procmail$2 R$*<@$*.procmail>$* $1<@$2>$3 Ya filtrado, map backY /etc/procmailrcs/some.rc podría ser tan simple como:
:0 # elimina el correo basura * ^Subject:.*junk /dev/null :0 # pasa el resto del correo ! -oi -f "$@"Vigile cuando envíe correo desde un fichero /etc/procmailrcs/some.rc file, si envía correo a direcciones que concuerdan la primera regla de nuevo, podría estar creando un bucle de correo sin fin.
`\nFrom 'Si el nombre destino usado en el modo de entrega explícito no está en
/etc/passwd, procmail procederá como si el modo de entrega explícito no tuviera efecto. Si no está en modo de entrega explícito y el uid bajo el que se ejecuta procmail no tiene la correspondiente entrada en /etc/passwd, entonces HOME tomará por defecto /, LOGNAME será #uid y SHELL será por defecto /bin/sh. Cuando está en modo de entrega explícito, procmail generará una línea `From' inicial si no está presente. Si alguna está ya presente, procmail la dejará intacta. Si procmail no se llama con alguno de los siguientes identificadores de usuario o grupo : root, daemon, uucp, mail, x400, network, list, slist, lists o news, pero todavía tiene que generar o aceptar una nueva línea `From ', generará una línea `>From ' inicial para ayudar a distinguir correos falsos. Por razones de seguridad, procmail sólo usará un fichero_de_recursos absoluto o relativo a $HOME si es propiedad del recipiente o root, si permiso de escritura global y el directorio que lo contiene no tiene permiso de escritura global. El fichero $HOME/.procmailrc tiene la restricción adicional de no tener permiso de escritura para el grupo ni el directorio que lo contiene tampoco. Si /var/spool/mail/$LOGNAME es un buzón inviable (i.e. no pertenece al recipiente, no se puede escribir, es un enlace simbólico o es un enlace duro), procmail al empezar intentará renombrarlo como un fichero empezando por `BOGUS.$LOGNAME.' y terminando en un código de secuencia de i-nodo. Si esto resulta imposible ORGMAIL no tendrá valor inicial, y por tanto se inhibirá de la entrega sin un fichero de
fichero_de_recursos adecuado. Si /var/spool/mail/$LOGNAME es ya un buzón válido, pero tiene que perder muchos permisos, procmail corregirá esto. Para prevenir que procmail haga esto, esté seguro de poner el bit u+x. Cuando se entregue a directorios (o carpetas MH) no necesita usar ficheros de bloqueo para prevernir varios procmail en ejecución concurrentes lo estropeen. La entrega a carpetas MH consume ligeramente más tiempo que la entrega a directorios normales o buzones, ya que procmail tiene que buscar el suiguiente número disponible (en lugar de tener el nombre de fichero disponible de forma inmediata). En caso de fallo general procmail devolverá EX_CANTCREAT, salvo que se especifique la opción -t, en cuyo caso devolverá EX_TEMPFAIL. Para hacer un `egrep' más consistente de las cabeceras, procmail concatena todos los campos de cabecera continuados; pero sólo interamente. Cuando se entregue el correo, las rupturas de línea aparecerán como antes. Si procmail se llama bajo un nombre que no empieza por `procmail' (v.g. si está enlazado a otro nombre y es llamado como tal), se pone en modo de entrega explícito, y espera los nombres de recipientes como argumentos de la línea de mandato (como si se hubiera especificado
-d ). Las notificaciones comsat/biff se realizan usando udp. Se envían una vez que procmail genera la entrada regular al fichero de registo. La notificación de mensajes tiene el siguiente formato extendido (o tan parecido como se pueda cuando la entrega fial no sea un fichero):
$LOGNAME@desplazamiento_del_mensaje_en_buzón :ruta_absoluta_al_buzónCuando el mismo procmail abre un fichero para entregar, usa la siguiente estrategia de bloqueo del núcleo : fcntl(2). Procmail resistente a NFS-resistant y procesa los 8 bits.
send usenet/news.answers/mail/filtering-faqEn lugar de usar la llamada de procmail proporcionada por el sistema cuando llega el correo, puede controlar la llamada Vd. mismo. En este caso su fichero $HOME/.forward (tenga cuidado, tiene que tener permiso global de lectura) debería contener la línea de abajo. Esté seguro de incluir las comillas dobles y simples, y tiene que ser una ruta absoluta. #YOUR_USERNAME actualmente no es un parámetro que sea requerido por procmail, de hecho, se descartará por sh antes de que incluso procmail lo vea; sin embargo es un truco de programación necesario contra programas sendmail sobreoptimizados.
" |exec /usr/bin/procmail"Procmail también se puede llamar para procesar a posteriori un buzón del sistema lleno con anterioridad. Esto puede ser útil si no quiere o no puede un fichero $HOME/.forward (en cuyo caso el siguiente guión se podría llamar periódicamente desde cron(1), o cuando empiece a leer el correo):
#!/bin/sh ORGMAIL=/var/spool/mail/$LOGNAME if cd $HOME && test -s $ORGMAIL && lockfile -r0 -l1024 .newmail.lock 2>/dev/null then trap "rm -f .newmail.lock" 1 2 3 13 15 umask 077 lockfile -l1024 -ml cat $ORGMAIL >>.newmail && cat /dev/null >$ORGMAIL lockfile -mu formail -s procmail <.newmail && rm -f .newmail rm -f .newmail.lock fi exit 0
PATH=/bin:/usr/bin:/usr/bin MAILDIR=$HOME/Mail #mejor esté seguro de que existe DEFAULT=$MAILDIR/mbox #completamente opcional LOGFILE=$MAILDIR/from #recomendado :0: * ^From.*berg from_me :0 * ^Subject:.*Flame /dev/nullSe pueden encontrar otros ejemplos de recetas de fichero_de_recursos en la página del manual procmailex(5). Este programa es parte del This program is part of the paquete de procesamiento de correo procmail (v3.13.1) disponible en http://www.procmail.org/ o ftp.procmail.org en pub/procmail/. Existe un lista de correo para cuestiones relacionadas con cualquier programa del paquete procmail:
<procmail-users@procmail.org> para enviar preguntas/respuestas<procmail-users-request@procmail.org>
para solicitudes de suscripción.
Si quisiera estar informado sobre nuevas versiones y parches oficiales envíe una solicitud de suscripción a
procmail-announce-request@procmail.org(esta es una lista de sólo lectura).
<srb@cuci.nl>
1999/03/30 | BuGless |