fdm - ネスト操作

fdm - ネスト操作

チケットシステムから着信メールをチケット番号を含むメールディレクトリに分類しようとしています。

送信者は次のとおりです。[email protected]

トピックには常に以下が含まれます。RequestID: <numbers>

だから私は次のルールセットを試しました。

match "^From:.*ticketsys@test\.de"             in headers {
   match "^Subject:.*RequestID:[  \t]*([0-9]*)" action tag "ticketno" value "%1" continue
    match matched action "ticket"
    match unmatched action keep
}

ジョブチケットは次のとおりです。

action "ticket"        maildir  "%h/Mails/work/INBOX.Ticket-%[ticketno]"

一致するが新しく作成されたフォルダは、Mails/work/INBOX.Ticket-マーキングに失敗したかのようにマイナス記号()で終わります。

修正する:

次のログは次のとおりですfdm -kvvvv fetch

WORK: trying (match) message 26
WORK: matching from 0 to 1586 (size=3876, body=1586)
WORK: tried regexp "^From:.*ticketsys@test\.de" in headers, result now 1
WORK: finished rule 17, result 1
WORK: matched to rule 17
WORK: entering nested rules
WORK: trying (match) message 26
WORK: matching from 0 to 3876 (size=3876, body=1586)
WORK: tried regexp "^Subject:.*RequestID:[      ]*([0-9]*)" in any, result now 1
WORK: finished rule 18, result 1
WORK: matched to rule 18
WORK: action <rule 18>:0 (tag), user andres
WORK: match message 26, deliver
WORK: trying (deliver) message 26
WORK: message 26, running action <rule 18>:0 (tag) as user andres
WORK: tagging message: ticketno ()
WORK: message 26 delivered (rule 18, tag) in 0.000 seconds
WORK: trying (deliver) message 26
WORK: deliver message 26, blocked
WORK: calling fetch state (0x416b00, flags 0x00)
WORK: 5 file descriptors in use
WORK: deliver started, pid 10023
WORK: deliver user is: andres (1001/1001), home is: /home/andres
WORK: saving to maildir /home/andres/Mails/work/INBOX.Ticket-
WORK: creating /home/andres/Mails/work
WORK: trying /home/andres/Mails/work/INBOX.Ticket-/tmp/1485412884.10023_0.HGL-049
WORK: writing to /home/andres/Mails/work/INBOX.Ticket-/tmp/1485412884.10023_0.HGL-049
WORK: moving .../tmp/1485412884.10023_0.HGL-049 to .../new/1485412884.10023_0.HGL-049
WORK: reading mail from: /home/andres/Mails/work/INBOX/cur/1485348562_1.29104.HGL-049,U=443306,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,S

チケット番号はメールディレクトリに書き込まれません。

アップデート2:

すべての修正が含まれるように、最新のfdmバージョンにアップデートしてください。

メールディレクトリ名にラベルを書き込むには?

アップデート3:

タイトル行は次のとおりです。

Subject: =?iso-8859-1?Q?Empfangsbest=E4tigung_f=FCr_Service?=
        =?iso-8859-1?Q?_Request_mit_der_Service_RequestID:?=
        =?iso-8859-1?Q?_1710000261_/__Domain:.test.de?=
        =?iso-8859-1?Q?_Subdmonains_f=FCr_Staging_Zwecke?=

ベストアンサー1

MIMEヘッダーのデコードが行われないように見えるfdmため、メッセージヘッダーがエンコードされている場合(たとえば=?iso-8859-1?Q?...、正規表現で明示的に考慮する必要があります)、fdmは正規表現フェーズで複数行のヘッダーを1行にリンクするのに役立ちます。

したがって、メッセージ送信者が常に同じヘッダーエンコーディングを使用することを保証できる場合は、正規表現を次のように置き換えることができます。

match "^Subject:.*RequestID:.*\?Q\?_([0-9]*)" action tag "ticketno" value "%1" continue

これにより、エンコードヘッダーをスキップできます。しかし、よりきれいな解決策は、いくつかのPerlコード(または同様のコード)を導入してヘッダーをuft8にデコードし、それを元の正規表現と一致させることです。/tmp/decodesubjectたとえば、次の内容でファイルを作成します。

#!/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";

実行可能にしてくださいchmod +x /tmp/decodesubject。これらの機能を入手するには、perl-MIME-toolsまたは同じパッケージをインストールする必要があります。このスクリプトは標準入力でメールを読み取り、復号化された件名ヘッダーのみを印刷します。構成ファイルから呼び出すには、上記の行を次に置き換えます。libmime-tools-perlMail::Headermatch

match pipe "/tmp/decodesubject" returns (0,"Subject:.*RequestID:[ \t]*([0-9]*)")
action tag "ticketno" value "%[command1]" continue

コマンドの正規表現からキャプチャグループを取得するにはpipe使用できないようですが、使用する必要が%1あります"%[command1]"

おすすめ記事