Question

J'utilise la recette Procmail (classique) suivante pour attraper les e-mails de la liste de diffusion et les placer dans un dossier par nom de liste:

:0
* ^((List-Id|X-(Mailing-)?List):(.*[<]\/[^>]*))
{
    LISTID=$MATCH
    :0
    * LISTID ?? ^\/[^@\.]* 
    Lists/$MATCH/
}

Le problème est: si un nom de liste passe de toutes les minuscules à FirstLetterCap, je me retrouve avec deux dossiers, un pour «listname» et un autre pour «listName».

Je voudrais minuscule la variable $ match avant de l'utiliser dans la règle de livraison finale, mais je ne suis pas en mesure de trouver une référence à une fonction LC (), ou un regex / remplacement qui peut être utilisé pour le faire.

Un commentaire ci-dessous a suggéré ceci:

:0
 * ^((List-Id|X-(Mailing-)?List):(.*[<]\/[^>]*))
 {
    LISTID=`echo "$MATCH" | tr A-Z a-z`
    :0
    * LISTID ?? ^\/[^@\.]*
    .Lists.$MATCH/
 }

Ce qui ne semble pas non plus faire ce que je recherche. Bien que, en regardant maintenant, la translittération ne se produit clairement que lors de la première occurrence de $ MATCH et je suppose que cela ne le change pas du tout pour l'utilisation dans la ligne d'attribution de dossier.

MISE À JOUR # 1: Si j'essaie d'utiliser ListID dans la ligne d'affectation de dossier, j'obtiens quelque chose comme 'Bricolage.project.29601.LighthouseApp' au lieu de simplement 'Bricolage' ou - ce que je recherche - simplement 'Bricolage'.

Était-ce utile?

La solution

Procmail lui-même n'a aucune fonctionnalité pour remplacer le texte par un autre texte. Vous pouvez faire passer le match à travers tr, ou si éviter les processus externes est vraiment important, créez une règle pour chaque lettre que vous devez cartographier.

LISTID=`echo "$LISTID" | tr A-Z a-z`

# or alternatively
:0D
* LISTID ?? ^A\/.*
{ LISTID="a$MATCH" }
:0D
* LISTID ?? ^B\/.*
{ LISTID="b$MATCH" }
# ... etc

Vous pouvez combiner cela avec le traitement final du match, mais je le laisse à ce sujet à des fins de clarté.

Autres conseils

Afaik Procmail Les expressions régulières sont toujours insensibles aux cas de toute façon, donc vous obtenez déjà ce que vous voulez sans rien faire de spécial. Au moins, je l'ai toujours utilisé de cette façon, et tous les sites avec la documentation Procmail que j'ai vérifié (3+) l'ont dit aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top