Parece que fdm
não faz decodificação MIME-Header, portanto, quando um cabeçalho de e-mail foi codificado, por exemplo, como =?iso-8859-1?Q?...
, você terá que explicitamente levar isso em consideração em seu regexp. Observe que o fdm unirá cabeçalhos de várias linhas em uma linha durante a fase de regexp para ajudá-lo.
Assim, se você puder garantir que o remetente do e-mail sempre usará exatamente a mesma codificação de cabeçalho, você poderá substituir seu regexp por algo como
match "^Subject:.*RequestID:.*\?Q\?_([0-9]*)" action tag "ticketno" value "%1" continue
para que você pule o cabeçalho de codificação. No entanto, uma solução mais limpa seria introduzir algum código perl (ou similar) para decodificar o cabeçalho no uft8 e depois combinar com o seu regexp original. Crie um arquivo, digamos /tmp/decodesubject
, com o seguinte conteúdo:
#!/usr/bin/perl
use open qw/:std :encoding(utf-8)/;
use Mail::Header; # perl-MailTools
use Encode;
my $head = new Mail::Header \*STDIN, FoldLength=>999;
my $subject = $head->get('Subject');
$subject = Encode::decode('MIME-Header', $subject); # -> utf8
print "Subject: $subject";
e torne-o executável com chmod +x /tmp/decodesubject
. Talvez seja necessário instalar um pacote como perl-MIME-tools
ou libmime-tools-perl
para obter as funções Mail::Header
.
O script lê um e-mail em stdin e imprime apenas o cabeçalho Assunto decodificado. Para chamá-lo de seu arquivo de configuração, substitua a linha match
acima por
match pipe "/tmp/decodesubject" returns (0,"Subject:.*RequestID:[ \t]*([0-9]*)")
action tag "ticketno" value "%[command1]" continue
Observe que, para obter os grupos de captura no comando regular de um comando pipe
, parece que você não pode usar %1
, mas deve usar "%[command1]"
.