
チケットシステムから着信メールをチケット番号を含むメールディレクトリに分類しようとしています。
送信者は次のとおりです。[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-perl
Mail::Header
match
match pipe "/tmp/decodesubject" returns (0,"Subject:.*RequestID:[ \t]*([0-9]*)")
action tag "ticketno" value "%[command1]" continue
コマンドの正規表現からキャプチャグループを取得するにはpipe
使用できないようですが、使用する必要が%1
あります"%[command1]"
。