Procmail · 11 min read · Dec 30, 2025

6.0 Coincidencias y expresiones regulares (regexps)

Autor: Jari Aalto.

1.0 ID del documento

  • 1.1 General
  • 1.2 ¿Qué es Procmail?
  • 1.3 Abreviaturas y agradecimientos
  • 1.4 Información de la versión
  • 1.5 Diseño y mantenimiento del documento
  • 1.6 Sobre las recetas presentadas
  • 1.7 Variables utilizadas en las recetas
  • 1.8 Sobre el “premio al uso inútil de cat”
    2.0 Puntos de referencia de Procmail
  • 2.1 ¿Dónde se desarrolla procmail?
  • 2.2 Recursos de Procmail
  • 2.3 Modo Procmail para Emacs
  • 2.4 Proyecto de biblioteca de módulos de Procmail
  • 2.5 Código de Procmail para filtrar UBE
    3.0 Pruebas de ejecución en seco
  • 3.1 ¿Qué es una prueba en seco?
  • 3.2 ¿Por qué el campo De no está bien después de la prueba en seco?
  • 3.3 Obtener el valor predeterminado de una variable de procmail
    4.0 Cosas a recordar
  • 4.1 Obtén la versión más reciente de procmail
  • 4.2 La tilde de Csh no es compatible
  • 4.3 Asegúrate de escribir la receta correctamente
  • 4.4 Siempre establece SHELL
  • 4.5 Verifica y establece PATH
  • 4.6 Mantén el registro todo el tiempo
  • 4.7 Nunca agregues una barra inclinada al final para directorios
  • 4.8 Recuerda lo que significa el término ENTREGA
  • 4.9 Ten cuidado al poner comentarios en lugares incorrectos
  • 4.10 Colocación de llaves
  • 4.11 Uso de archivo de bloqueo local
  • 4.12 Archivo de bloqueo global
  • 4.13 Vaya, ¿dónde pongo todos esos ! * $ ??
  • 4.14 Si envías una respuesta automática, usa el encabezado X-loop
  • 4.15 Evita una capa adicional de shell y verifica el comando para SHELLMETAS
  • 4.16 Piensa en qué comandos de shell usas
  • 4.17 Usando rutas absolutas al llamar a un programa de shell
  • 4.18 Deshabilitando temporalmente una receta
  • 4.19 Mantén una copia de seguridad del mensaje, pase lo que pase
  • 4.20 Orden de las recetas de procmail
    5.0 Banderas de Procmail
  • 5.1 El orden de las banderas
  • 5.2 Banderas HB en la parte superior de la receta (advertencia)
  • 5.3 Bandera w y receta con |
  • 5.4 Bandera w, archivo de bloqueo y receta con |
  • 5.5 Bandera f y w juntos
  • 5.6 Banderas h y b
  • 5.7 Bandera h y hundimiento a /dev/null
  • 5.8 Bandera i y bandera de tubería f
  • 5.9 Bandera r
  • 5.10 Antecedentes de la bandera c
  • 5.11 Bandera c antes de que el bloque anidado fork un hijo
  • 5.12 Bandera c y comprensión de la posible penalización por bifurcación
  • 5.13 Banderas antes del bloque anidado
  • 5.14 Tutorial de banderas aAeE
    6.0 Coincidencias y regexps (expresiones regulares)
  • 6.1 Filosofía de la abstracción en regexps
  • 6.2 Las coincidencias no son sensibles a mayúsculas
  • 6.3 Procmail utiliza coincidencias de múltiples líneas
  • 6.4 Los encabezados se despliegan antes de la coincidencia
  • 6.5 Mejorando el síndrome de espacio-tab
  • 6.6 Manejo del carácter de exclamación
  • 6.7 Reglas para generar una clase de caracteres
  • 6.8 Coincidencia de espacio al final de la condición
  • 6.9 Cuidado con la barra invertida inicial
  • 6.10 Uso correcto de la macro TO
  • 6.11 Motor regexp de Procmail
  • 6.12 Diferencias entre Procmail y egrep
  • 6.13 Comprendiendo la coincidencia mínima de procmail (tacaño vs. codicioso)
  • 6.14 Explicando \/ y ()\/
  • 6.15 Explicando ^^ y ^
  • 6.16 ANDing tradicionalmente
  • 6.17 ORing tradicionalmente
  • 6.18 ORing y receta de puntuación
  • 6.19 ORing utilizando las reglas de De Morgan
    7.0 Variables
  • 7.1 Estableciendo y desestableciendo variables
  • 7.2 Inicialización de variables y sintaxis sh
  • 7.3 Pruebas de variables
  • 7.4 ¿Qué significa $\VAR?
  • 7.5 Errores comunes al usar variables
  • 7.6 Citando: Usando comillas simples o dobles
  • 7.7 Citando: Pasando valores a un programa externo
  • 7.8 Pasando valores desde un programa externo
  • 7.9 Incrementando una variable por un valor N
  • 7.10 Comparando valores
  • 7.11 Cadenas: ¿Cuántos caracteres hay en una cadena dada?
  • 7.12 Cadenas: Cómo eliminar la nueva línea final.
  • 7.13 Cadenas: derivando los últimos N caracteres de una cadena.
  • 7.14 Cadenas: Obteniendo coincidencias parciales de una cadena.
  • 7.15 Cadenas: Ejemplo de manipulación de cadenas de Procmail
  • 7.16 Cómo elevar una bandera si el mensaje fue archivado
  • 7.17 Signo de dólar en líneas de condición.
  • 7.18 Encontrando la misteriosa variable foo
  • 7.19 Almacenando código en una variable
  • 7.20 Obteniendo encabezados en una variable.
  • 7.21 Convirtiendo valor a minúsculas
    8.0 Sugerencias y varios
  • 8.1 Acelerando procmail
  • 8.2 Ver los ejemplos de instalación de procmail
  • 8.3 Imprimiendo estadísticas de tu correo entrante
  • 8.4 Almacenando buzones UBE fuera de la cuota
  • 8.5 Usando las primeras 5-30 líneas del mensaje
  • 8.6 ¿Usando cat o echo en scripts?
  • 8.7 Cómo ejecutar un comando de shell adicional como efecto secundario?
  • 8.8 Forzando el estado de retorno “ok” desde un script de shell
  • 8.9 Haz que tu propio .procmailrc esté disponible para otros
  • 8.10 Usando fechas de manera eficiente
  • 8.11 Mantén un registro simple de encabezados
  • 8.12 Gzipping mensajes
  • 8.13 Parada de emergencia para tu .procmailrc
    9.0 Puntuación
  • 9.1 Usando puntuaciones mediante un ejemplo
  • 9.2 Breve tutorial de puntuación
  • 9.3 Alcance de la puntuación
  • 9.4 Contando la longitud de una cadena
  • 9.5 Contando líneas en un mensaje (Agregando líneas: encabezado)
  • 9.6 Determinando si el cuerpo es más largo que el encabezado
  • 9.7 Coincidiendo con el último encabezado Recibido
  • 9.8 Probando el rango de valores con puntuación (bogofilter)
  • 9.9 Cómo agregar el encabezado Content-Length
  • 9.10 Probando el tamaño del mensaje o el número de líneas
  • 9.11 Contando comas con includerc recursivo
    10.0 Uso de Formail
  • 10.1 Obteniendo campos con formail -x
  • 10.2 Siempre usa el interruptor -rt de formail
  • 10.3 Usando -rt y reescribiendo la dirección From
  • 10.4 Formail -rt y encabezado Resent-From
  • 10.5 Citando el mensaje
  • 10.6 Sin citar el mensaje
  • 10.7 Cómo incluir encabezados y cuerpo en el mensaje de respuesta
  • 10.8 Agregando texto al principio del mensaje
  • 10.9 Agregando texto al final del mensaje
  • 10.10 Agregando texto antes del mensaje citado
  • 10.11 Agregando encabezados adicionales desde un archivo
  • 10.12 Dividiendo el resumen
  • 10.13 Buzón: Dividiendo en archivos individuales
  • 10.14 Buzón: Extrayendo todas las direcciones From del buzón
  • 10.15 Buzón: Aplicando receta de procmail en todo el buzón
  • 10.16 Buzón: ejecutando una serie de comandos para cada correo (buzón dividido)
  • 10.17 Opción -D y caché
  • 10.18 Opción -D y message-id en el cuerpo
  • 10.19 Reducción de llamadas a formail (agregando campos condicionalmente)
  • 10.20 Formail -A -a opciones
  • 10.21 Formail -e -s opciones
    11.0 Guardando mensajes de listas de correo
  • 11.1 Usando la subrutina pm-jalist.rc para detectar listas de correo
  • 11.2 Usando la dirección plus [email protected]
  • 11.3 Usando el truco de comentario RFC para información adicional
  • 11.4 Manejo simple de listas de correo
  • 11.5 Archivando según TO
  • 11.6 Usando Return-Path para detectar listas de correo
    12.0 Procmail, MIME y HTML
  • 12.1 Bibliografía de Mime
  • 12.2 Notas de Mime
  • 12.3 Software para tratar con mime o HTML
  • 12.4 Tipo de contenido de mime application/ms-tnef
  • 12.5 Capturando mensajes mime HTML
  • 12.6 Quejándose de mensajes HTML
  • 12.7 Convirtiendo el cuerpo HTML a texto plano
  • 12.8 Deshaciéndose de archivos adjuntos mime no deseados (HTML, vcard)
  • 12.9 Enviando el contenido de una página HTML en texto plano a alguien
    13.0 Ejemplos de recetas simples
  • 13.1 Guardando: carpetas MH – mensajes numerados
  • 13.2 Guardando: en carpetas mensuales
  • 13.3 Modificando: conceptos básicos de filtrado
  • 13.4 Modificando: comprimiendo líneas vacías alrededor del cuerpo del mensaje
  • 13.5 Modificando: reorganizando encabezados siempre en el mismo orden
  • 13.6 Servicio: Contestador automático para mensajes vacíos
  • 13.7 Servicio: Respondedor de ping
  • 13.8 Servicio: vacaciones simples con procmail
  • 13.9 Servicio: ejemplo de código de vacaciones
  • 13.10 Servicio: Reenvío automático
  • 13.11 Servicio: reenviar solo mensajes específicos
  • 13.12 Servicio: Creando resúmenes
  • 13.13 Matar: eliminando encabezados y pies de publicidad
  • 13.14 Matar: receta simple de archivo kill con procmail
  • 13.15 Matar: mensajes duplicados
  • 13.16 Matar: filtro de spam con recetas simples
  • 13.17 Matar: (des)suscribir mensajes
  • 13.18 Tiempo: Trabajo cron diario
  • 13.19 Tiempo: Ejecutando una receta a una hora determinada
  • 13.20 Tiempo: Activando correo y usando cron
  • 13.21 Decodificación: Uudecode
  • 13.22 Decodificación: MIME
  • 13.23 Cómo enviar comandos en el cuerpo del mensaje
  • 13.24 Coincidiendo dos palabras en una línea, pero no una
  • 13.25 Cómo definir macros personales XX?
  • 13.26 Cómo cambiar el asunto por coincidencia en el cuerpo
  • 13.27 Cómo cambiar el Asunto de acuerdo con algún otro encabezado
  • 13.28 Cómo llamar a un programa con parámetros 14.0 Recetas varias
  • 14.1 Coincidiendo con encabezado Message-Id válido
  • 14.2 Enviando dos archivos en un mensaje
  • 14.3 Citando excesivamente el mensaje
  • 14.4 Enviando mensajes a un pagador en partes
  • 14.5 Reproduciendo un sonido particular cuando llega un mensaje
  • 14.6 Combinando múltiples encabezados Original-Cc y Original-To
  • 14.7 Reenviando mensajes sensibles en formato cifrado 15.0 Procmail y PGP
  • 15.1 Desencriptar mensajes pgp automáticamente
  • 15.2 Obtener claves del servidor de claves
  • 15.3 Captura automática de claves pgp entrantes 16.0 Uso de Includerc
  • 16.1 Usando: múltiples archivos rc
  • 16.2 Usando: llamar a un archivo rc condicionalmente
  • 16.3 Usando: autoloading de un archivo rc
  • 16.4 Haciendo: nombrando el archivo rc
  • 16.5 Haciendo: Usando espacio de nombres al guardar variables procmail
  • 16.6 Haciendo: Variables públicas y privadas en el archivo rc
  • 16.7 Las reglas generales para construir un archivo rc de propósito general
  • 16.8 Un esqueleto de includerc 17.0 Servidor de listas de correo
    18.0 Problemas comunes
  • 18.1 Modos de Procmail: normal, entrega y filtro de correo.
  • 18.2 Procmail como dispositivo de filtrado de correo Mlocal de sendmail
  • 18.3 Procmail no pasa caracteres de 8 bits
  • 18.4 Mi ISP no está muy interesado en instalar procmail
  • 18.5 Mi ISP tiene procmailrc a nivel de sistema; ¿es esto una buena idea?
  • 18.6 Procmail cambia los permisos de buzón y directorio
  • 18.7 Cambiando permisos de mbox durante la compilación a 660
  • 18.8 El archivo .forward debe ser un archivo real
  • 18.9 Usando .forward si procmail ya es LDA
  • 18.10 El correo debe ser puesto en la cola de correo si falla la escritura
  • 18.11 Qmail: cómo hacerlo funcionar con procmail
  • 18.12 Qmail: Procmail busca archivos solo en /var/spool/mail
  • 18.13 Qmail: parche a procmail 3.11pre7 para trabajar con Maildirs
  • 18.14 AFS: Cómo usar Procmail cuando HOME está en la celda AFS
  • 18.15 Ayuda, algún idiota envió mi dirección a 30 listas de correo
  • 18.16 Ayuda, Procmail pita e imprime en mi consola
  • 18.17 Ayuda, procmail vuelca correo en la consola
  • 18.18 Ayuda, línea From_ corrupta en el buzón
  • 18.19 Dirigiendo el correo del usuario a HOME en lugar de /var/spool/
  • 18.20 Montar NFS /var/mail es una buena manera de obtener un mal rendimiento
  • 18.21 No puedo ver la respuesta de sendmail en LOGFILE
  • 18.22 Compilando procmail y eligiendo esquema de bloqueo
  • 18.23 Reenviar mucho correo causa una carga pesada
  • 18.24 ¿Qué pasa con el correo si falla el MDA Procmail?
  • 18.25 Procmail lee todo el mensaje de 90Mb en memoria
  • 18.26 Ayuda, procmail usa ocasionalmente un gran trozo de memoria
  • 18.27 Procmail señalizado fuera de memoria en mi registro detallado
  • 18.28 Variables DEFAULT y ORGMAIL
  • 18.29 Cuando DEFAULT no puede ser enviado
  • 18.30 Variable DROPPRIVS
  • 18.31 Variable HOME
  • 18.32 Variable HOST
  • 18.33 Variable LINEBUF
  • 18.34 Variable LOG y LOGFILE
  • 18.35 Variable TRAP
  • 18.36 Variable UMASK
  • 18.37 UMASK y permisos
  • 18.38 Diferencia de rendimiento entre el backtick y la receta “|”
  • 18.39 Nombres de archivos temporales de Procmail al escribir archivos
  • 18.40 Parámetro $@
  • 18.41 Las variables de Procmail están terminadas en nulo (detectando cadena nula)
  • 18.42 FROMDAEMON TO y TO y sensibilidad a mayúsculas
  • 18.43 Macro TO_ descifrada
  • 18.44 Macro TO_ y RFC 822
  • 18.45 FROM_DAEMON descifrado 19.0 Asuntos técnicos
  • 19.1 Lista de códigos de salida
  • 19.2 Lista de códigos de precedencia
  • 19.3 Sendmail y -t
  • 19.4 RFC822 Reply-To y problema de formail con múltiples destinatarios
  • 19.5 Procmail y servidor IMAP
  • 19.6 Máquina que procesa correo
  • 19.7 Compilando procmail y MAILSPOOLHOME 20.0 Software Procmail para Emacs
  • 20.1 ¿Qué es Emacs?
  • 20.2 Modo procmail de Emacs y verificación de código Procmail (Lint)
  • 20.3 ¿Por qué usar procmail con Gnus?
  • 20.4 Configurando Gnus para procmail - Conceptos básicos
  • 20.5 Gnus para procmail - Más sobre ello
  • 20.6 Emacs y Gnus - Manipulando archivos de spool
  • 20.7 Fragmentos de artículos de Gnus 21.0 RFC, Solicitud de comentarios
  • 21.1 RFC y su jurisdicción (Direcciones modificadas)
  • 21.2 Comentarios sobre direcciones modificadas
  • 21.3 RFC y caracteres de dirección de correo válidos
  • 21.4 RFC y login-name@fdqn
  • 21.5 RFCs y firmas de mensajes
  • 21.6 RFC y uso de MIME en grupos de noticias de Usenet
  • 21.7 Algunos apuntadores de RFC 22.0 Introducción a los encabezados de correo electrónico
  • 22.1 Para saber más sobre correo (Recursos)
  • 22.2 Conferencia de Alan Stebbens
  • 22.3 Encabezados de mensajes
  • 23.1 ¿Cuál es la sintaxis correcta de la dirección From?
  • 23.2 ¿Qué es ese encabezado X-UIDL?
  • 23.3 ¿Qué es ese primer encabezado From_?
  • 23.4 Encabezado Message-Id
  • 23.5 Encabezado Recibido
  • 23.6 Return-Path
  • 23.7 Errors-To
  • 23.8 X-Subscription-Info
  • 23.9 Encabezado Reply-To
  • 23.10 Encabezado Mail-Copies-To
  • 23.11 Encabezado Mail-Followup-To y Reply-To-Personal
  • 23.12 Encabezado Content-Length y especificación From_
  • 23.13 Moral sobre las copias CC en Usenet
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.