Se as caixas de correio forem diretórios, você poderá listar todos eles em uma única ação de entrega. Então tudo se torna tão simples quanto
:0
* ^Subject:.*60
'formail -zxSubject: | egrep -o 60[0-9]+ | sed 's%$%/%''
O script nos backticks produzirá algo como 60123456789/
(newline) 609876543210/
(newline) - quantos forem os números de telefone; cada um é tratado como um nome de pasta e a mensagem é entregue a todas essas pastas.
(Tenho certeza que o egrep | sed
pode ser refatorado em um único script sed
. Adicionar uma barra após cada nome de pasta é necessário para o Procmail tratar a entrega como uma entrega de diretório. Não é possível entregar em várias mbox pastas ao mesmo tempo.)
Minha resposta original segue abaixo da linha.
O que você está perguntando é bastante complicado de fazer no Procmail. Não há facilidade para loop em um conjunto de correspondências. Uma solução um pouco desesperada seria coletar as correspondências em uma variável e, em seguida, INCLUDERC=
em um arquivo de receita diferente, que processará um valor desde o início da variável, então SWITCHRC=
para si mesmo enquanto houver valores restantes na variável . Não precisa ser muito complicado, mas é decididamente difícil, a ponto de você precisar perguntar se o Procmail é realmente a ferramenta certa para o trabalho.
Naturalmente, há também a opção de força bruta; crie uma sequência de receitas para lidar com cada padrão 60xx possível.
:0c
* ^Subject:.*6000
myinbox/6000/
etc para 6001, 6002. Isto pressupõe que você tenha um número limitado destes, ou se você precisa lidar com cada caso de 00 a 99, talvez gerar as receitas com um script simples.
perl -e 'printf ("%02i\n", $_) for 0..99' |
while read i; do
cat <<____HERE
:0c
* ^Subject:.*60$i
myinbox/$i/
____HERE
done >60xx.rc