feat: add missing KF6 framework recipes

This commit is contained in:
2026-05-07 07:53:26 +01:00
parent d8d498f831
commit a69f479b52
2374 changed files with 2610246 additions and 0 deletions
@@ -0,0 +1,394 @@
<!DOCTYPE html>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>test.sieve</title>
<meta name="generator" content="KF5::SyntaxHighlighting - Definition (Sieve) - Theme (Breeze Light)"/>
</head><body style="background-color:#ffffff;color:#1f1c1b"><pre>
<span style="color:#898887"># Sieve syntax highlighting test</span>
<span style="color:#898887"># see RFC 5228</span>
<span style="color:#898887"># comments §2.3.</span>
<span style="color:#898887"># Single line with alerts </span><span style="color:#ca9219;background-color:#451e1a;font-weight:bold">TODO</span><span style="color:#898887"> </span><span style="color:#81ca2d;background-color:#f7e6e6;font-weight:bold">###</span>
<span style="color:#898887">/*</span>
<span style="color:#898887"> Multiline comment with alerts </span><span style="color:#ca9219;background-color:#451e1a;font-weight:bold">FIXME</span>
<span style="color:#898887"> this also should be folding region</span>
<span style="color:#898887"> */</span>
<span style="color:#898887"># literal data §2.4.</span>
<span style="color:#898887"># numbers §2.4.1.</span>
<span style="color:#b08000">42</span>
<span style="color:#b08000">100K</span>
<span style="color:#b08000">10M</span>
<span style="color:#b08000">3G</span>
<span style="color:#898887"># strings §2.4.2.</span>
<span style="color:#bf0303">"string"</span>
<span style="color:#bf0303">"string</span><span style="color:#924c9d">\n</span><span style="color:#bf0303">with</span><span style="color:#924c9d">\"</span><span style="color:#bf0303">special chars"</span>
<span style="color:#898887"># not a string</span>
<span style="color:#bf0303">"multi \</span>
<span style="color:#bf0303"> line \</span>
<span style="color:#bf0303"> #with</span><span style="color:#924c9d">\a</span><span style="color:#bf0303"> \</span>
<span style="color:#bf0303"> continuation"</span>
<span style="color:#898887"># not a string</span>
<span style="color:#bf0303">text:</span>
<span style="color:#bf0303">Multiline</span>
<span style="color:#bf0303">string</span><span style="color:#924c9d">\"</span><span style="color:#bf0303"> "with quotes"</span>
<span style="color:#bf0303">or # comments</span>
<span style="color:#bf0303">this should also be a folding region</span>
<span style="color:#bf0303">.dot</span>
<span style="color:#bf0303">..dot</span>
<span style="color:#bf0303">dotstuffed dot:</span>
<span style="color:#bf0303">..</span>
<span style="color:#bf0303">ending with a single .</span>
<span style="color:#bf0303">.</span>
<span style="color:#898887"># encoded characters §2.4.2.4.</span>
<span style="color:#898887"># valid</span>
<span style="color:#bf0303">"$</span><span style="color:#924c9d">${hex:24 24}</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"</span><span style="color:#924c9d">${unicode:40}</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"$</span><span style="color:#924c9d">${hex:40}</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"</span><span style="color:#924c9d">${hex: da }</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"</span><span style="color:#924c9d">${hex:FE }</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"</span><span style="color:#924c9d">${HEX: 40}</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"</span><span style="color:#924c9d">${unicode:40}</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"</span><span style="color:#924c9d">${UNICODE:40}</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"</span><span style="color:#924c9d">${UnICoDE:0000040}</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"</span><span style="color:#924c9d">${Unicode:ff}</span><span style="color:#bf0303">"</span>
<span style="color:#898887">#invalid</span>
<span style="color:#bf0303">"${hex:40"</span>
<span style="color:#bf0303">"${hex:4</span><span style="color:#924c9d">${hex:30}</span><span style="color:#bf0303">}"</span>
<span style="color:#bf0303">"${ unicode:40}"</span>
<span style="color:#bf0303">"${Unicode:Cool}"</span>
<span style="color:#898887"># semantic errors, syntactically correct</span>
<span style="color:#bf0303">"</span><span style="color:#924c9d">${hex:400}</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"</span><span style="color:#924c9d">${unicode:200000}</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"</span><span style="color:#924c9d">${Unicode:DF01}</span><span style="color:#bf0303">"</span>
<span style="color:#898887"># test lists §2.5.1</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">anyof</span> (<span style="color:#644a9b;font-weight:bold">not</span> <span style="color:#644a9b;font-weight:bold">exists</span> [<span style="color:#bf0303">"From"</span>, <span style="color:#bf0303">"Date"</span>],
<span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#0095ff;font-weight:bold">:contains</span> <span style="color:#bf0303">"from"</span> <span style="color:#bf0303">"fool@example.com"</span>) {
<span style="color:#644a9b">discard</span>;
}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">allof</span> (<span style="color:#644a9b;font-weight:bold">not</span> <span style="color:#644a9b;font-weight:bold">exists</span> [<span style="color:#bf0303">"From"</span>, <span style="color:#bf0303">"Date"</span>],
<span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#0095ff;font-weight:bold">:contains</span> <span style="color:#bf0303">"from"</span> <span style="color:#bf0303">"fool@example.com"</span>) {
<span style="color:#644a9b">discard</span>;
}
<span style="color:#898887"># match types §2.7.1.</span>
<span style="color:#0095ff;font-weight:bold">:contains</span>
<span style="color:#0095ff;font-weight:bold">:matches</span>
<span style="color:#0095ff;font-weight:bold">:is</span>
<span style="color:#898887"># comparators §2.7.3.</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#0095ff;font-weight:bold">:contains</span> <span style="color:#006e28">:comparator</span> <span style="color:#bf0303">"i;octet"</span> <span style="color:#bf0303">"Subject"</span> <span style="color:#bf0303">"MAKE MONEY FAST"</span> {
<span style="color:#644a9b">discard</span>;
}
<span style="color:#898887"># comparison against addresses §2.7.4.</span>
<span style="color:#006e28">:localpart</span>
<span style="color:#006e28">:domain</span>
<span style="color:#006e28">:all</span>
<span style="color:#898887"># commands §2.9.</span>
<span style="color:#644a9b">keep</span>;
<span style="color:#644a9b">fileinto</span> <span style="color:#bf0303">"inbox.bla"</span>;
<span style="color:#644a9b">redirect</span> <span style="color:#bf0303">"test@kde.org"</span>;
<span style="color:#644a9b">discard</span>;
<span style="color:#898887"># control if §3.1.</span>
<span style="color:#898887"># this also should create folding regions</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#0095ff;font-weight:bold">:contains</span> <span style="color:#bf0303">"from"</span> <span style="color:#bf0303">"foo"</span> {
<span style="color:#644a9b">discard</span>;
} <span style="font-weight:bold">elsif</span> <span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#0095ff;font-weight:bold">:contains</span> [<span style="color:#bf0303">"subject"</span>] [<span style="color:#bf0303">"$$$"</span>] {
<span style="color:#644a9b">discard</span>;
} <span style="font-weight:bold">else</span> {
<span style="color:#644a9b">fileinto</span> <span style="color:#bf0303">"INBOX"</span>;
}
<span style="color:#898887"># control require §3.2.</span>
<span style="font-weight:bold">require</span> <span style="color:#bf0303">"fileinto"</span>;
<span style="font-weight:bold">require</span> [<span style="color:#bf0303">"vacation"</span>, <span style="color:#bf0303">"imapflags"</span>];
<span style="color:#898887"># control stop §3.3.</span>
<span style="color:#644a9b">stop</span>;
<span style="color:#898887"># test commands §5.</span>
<span style="color:#644a9b;font-weight:bold">address</span>
<span style="color:#644a9b;font-weight:bold">allof</span>
<span style="color:#644a9b;font-weight:bold">anyof</span>
<span style="color:#644a9b;font-weight:bold">exists</span>
<span style="color:#644a9b;font-weight:bold">false</span>
<span style="color:#644a9b;font-weight:bold">header</span>
<span style="color:#644a9b;font-weight:bold">not</span>
<span style="color:#644a9b;font-weight:bold">size</span>
<span style="color:#644a9b;font-weight:bold">true</span>
<span style="color:#898887"># test address §5.1.</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">address</span> <span style="color:#0095ff;font-weight:bold">:is</span> <span style="color:#006e28">:all</span> <span style="color:#bf0303">"from"</span> <span style="color:#bf0303">"kde@example.com"</span> {
<span style="color:#644a9b">discard</span>;
} <span style="font-weight:bold">elsif</span> <span style="color:#644a9b;font-weight:bold">address</span> <span style="color:#006e28">:domain</span> <span style="color:#0095ff;font-weight:bold">:is</span> [<span style="color:#bf0303">"From"</span>, <span style="color:#bf0303">"To"</span>] <span style="color:#bf0303">"example.com"</span> { <span style="color:#898887"># comment</span>
<span style="color:#644a9b">keep</span>; <span style="color:#898887"># comment</span>
}
<span style="color:#898887"># test envelope §5.4.</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">envelope</span> <span style="color:#006e28">:all</span> <span style="color:#0095ff;font-weight:bold">:is</span> <span style="color:#bf0303">"from"</span> <span style="color:#bf0303">"kde@example.com"</span> {
<span style="color:#644a9b">discard</span>;
}
<span style="color:#898887"># test exists §5.5.</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">not</span> <span style="color:#644a9b;font-weight:bold">exists</span> [<span style="color:#bf0303">"From"</span>,<span style="color:#bf0303">"Date"</span>] {
<span style="color:#644a9b">discard</span>;
}
<span style="color:#898887"># test header §5.7.</span>
<span style="color:#644a9b;font-weight:bold">not</span> <span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#0095ff;font-weight:bold">:matches</span> <span style="color:#bf0303">"Cc"</span> <span style="color:#bf0303">"?*"</span>
<span style="color:#898887"># test size §5.9.</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">size</span> <span style="color:#006e28">:over</span> <span style="color:#b08000">500K</span> { <span style="color:#644a9b">discard</span>; }
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">size</span> <span style="color:#006e28">:under</span> <span style="color:#b08000">1M</span> { <span style="color:#644a9b">keep</span>; } <span style="font-weight:bold">else</span> { <span style="color:#644a9b">discard</span>; }
<span style="color:#898887">/*</span>
<span style="color:#898887"> * Extensions</span>
<span style="color:#898887"> * see https://www.iana.org/assignments/sieve-extensions/sieve-extensions.xhtml</span>
<span style="color:#898887"> */</span>
<span style="color:#898887"># Body RFC5173</span>
<span style="color:#006e28">:raw</span>
<span style="color:#006e28">:content</span>
<span style="color:#006e28">:text</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">body</span> <span style="color:#006e28">:raw</span> <span style="color:#0095ff;font-weight:bold">:contains</span> <span style="color:#bf0303">"MAKE MONEY FAST"</span> {
<span style="color:#644a9b">discard</span>;
}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">body</span> <span style="color:#006e28">:content</span> <span style="color:#bf0303">"text"</span> <span style="color:#0095ff;font-weight:bold">:contains</span> [<span style="color:#bf0303">"bla"</span>, <span style="color:#bf0303">"blub"</span>] {
<span style="color:#644a9b">fileinto</span> <span style="color:#bf0303">"inbox.foo"</span>;
}
<span style="color:#898887"># Convert RFC6558</span>
<span style="font-weight:bold">require</span> [<span style="color:#bf0303">"convert"</span>];
<span style="color:#644a9b">convert</span> <span style="color:#bf0303">"image/tiff"</span> <span style="color:#bf0303">"image/jpeg"</span> [<span style="color:#bf0303">"pix-x=320"</span>,<span style="color:#bf0303">"pix-y=240"</span>];
<span style="color:#898887"># Copy RFC3894</span>
<span style="font-weight:bold">require</span> [<span style="color:#bf0303">"copy"</span>, <span style="color:#bf0303">"fileinto"</span>];
<span style="color:#644a9b">fileinto</span> <span style="color:#006e28">:copy</span> <span style="color:#bf0303">"incoming"</span>;
<span style="color:#898887"># Date RFC5260</span>
<span style="font-weight:bold">require</span> [<span style="color:#bf0303">"date"</span>, <span style="color:#bf0303">"relational"</span>, <span style="color:#bf0303">"fileinto"</span>];
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">allof</span>(<span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#0095ff;font-weight:bold">:is</span> <span style="color:#bf0303">"from"</span> <span style="color:#bf0303">"boss@example.com"</span>,
<span style="color:#644a9b;font-weight:bold">date</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"ge"</span> <span style="color:#006e28">:originalzone</span> <span style="color:#bf0303">"date"</span> <span style="color:#bf0303">"hour"</span> <span style="color:#bf0303">"09"</span>,
<span style="color:#644a9b;font-weight:bold">date</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"lt"</span> <span style="color:#006e28">:originalzone</span> <span style="color:#bf0303">"date"</span> <span style="color:#bf0303">"hour"</span> <span style="color:#bf0303">"17"</span>)
{ <span style="color:#644a9b">fileinto</span> <span style="color:#bf0303">"urgent"</span>; }
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">anyof</span>(<span style="color:#644a9b;font-weight:bold">date</span> <span style="color:#0095ff;font-weight:bold">:is</span> <span style="color:#bf0303">"received"</span> <span style="color:#bf0303">"weekday"</span> <span style="color:#bf0303">"0"</span>,
<span style="color:#644a9b;font-weight:bold">date</span> <span style="color:#0095ff;font-weight:bold">:is</span> <span style="color:#bf0303">"received"</span> <span style="color:#bf0303">"weekday"</span> <span style="color:#bf0303">"6"</span>)
{ <span style="color:#644a9b">fileinto</span> <span style="color:#bf0303">"weekend"</span>; }
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">anyof</span>(<span style="color:#644a9b;font-weight:bold">currentdate</span> <span style="color:#0095ff;font-weight:bold">:is</span> <span style="color:#bf0303">"weekday"</span> <span style="color:#bf0303">"0"</span>,
<span style="color:#644a9b;font-weight:bold">currentdate</span> <span style="color:#0095ff;font-weight:bold">:is</span> <span style="color:#bf0303">"weekday"</span> <span style="color:#bf0303">"6"</span>,
<span style="color:#644a9b;font-weight:bold">currentdate</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"lt"</span> <span style="color:#bf0303">"hour"</span> <span style="color:#bf0303">"09"</span>,
<span style="color:#644a9b;font-weight:bold">currentdate</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"ge"</span> <span style="color:#bf0303">"hour"</span> <span style="color:#bf0303">"17"</span>)
{ <span style="color:#644a9b">redirect</span> <span style="color:#bf0303">"pager@example.com"</span>; }
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">allof</span>(<span style="color:#644a9b;font-weight:bold">currentdate</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"ge"</span> <span style="color:#bf0303">"date"</span> <span style="color:#bf0303">"2007-06-30"</span>,
<span style="color:#644a9b;font-weight:bold">currentdate</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"le"</span> <span style="color:#bf0303">"date"</span> <span style="color:#bf0303">"2007-07-07"</span>)
{ <span style="color:#644a9b">vacation</span> <span style="color:#006e28">:days</span> <span style="color:#b08000">7</span> <span style="color:#bf0303">"I'm away during the first week in July."</span>; }
<span style="font-weight:bold">require</span> [<span style="color:#bf0303">"date"</span>, <span style="color:#bf0303">"variables"</span>, <span style="color:#bf0303">"fileinto"</span>];
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">currentdate</span> <span style="color:#0095ff;font-weight:bold">:matches</span> <span style="color:#bf0303">"month"</span> <span style="color:#bf0303">"*"</span> { <span style="color:#644a9b">set</span> <span style="color:#bf0303">"month"</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${1}</span><span style="color:#bf0303">"</span>; }
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">currentdate</span> <span style="color:#0095ff;font-weight:bold">:matches</span> <span style="color:#bf0303">"year"</span> <span style="color:#bf0303">"*"</span> { <span style="color:#644a9b">set</span> <span style="color:#bf0303">"year"</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${1}</span><span style="color:#bf0303">"</span>; }
<span style="color:#644a9b">fileinto</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${month}</span><span style="color:#bf0303">-</span><span style="color:#0057ae">${year}</span><span style="color:#bf0303">"</span>;
<span style="font-weight:bold">require</span> [<span style="color:#bf0303">"variables"</span>, <span style="color:#bf0303">"date"</span>, <span style="color:#bf0303">"editheader"</span>];
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">currentdate</span> <span style="color:#0095ff;font-weight:bold">:matches</span> <span style="color:#bf0303">"std11"</span> <span style="color:#bf0303">"*"</span> {<span style="color:#644a9b">addheader</span> <span style="color:#bf0303">"Processing-date"</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${0}</span><span style="color:#bf0303">"</span>;}
<span style="font-weight:bold">require</span> [<span style="color:#bf0303">"date"</span>, <span style="color:#bf0303">"relational"</span>, <span style="color:#bf0303">"index"</span>];
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">date</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"gt"</span> <span style="color:#006e28">:index</span> <span style="color:#b08000">2</span> <span style="color:#006e28">:zone</span> <span style="color:#bf0303">"-0500"</span> <span style="color:#bf0303">"received"</span> <span style="color:#bf0303">"iso8601"</span> <span style="color:#bf0303">"2007-02-26T09:00:00-05:00"</span>
{ <span style="color:#644a9b">redirect</span> <span style="color:#bf0303">"aftercutoff@example.org"</span>; }
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#006e28">:index</span> <span style="color:#b08000">1</span> <span style="color:#0095ff;font-weight:bold">:matches</span> <span style="color:#bf0303">"received"</span> <span style="color:#bf0303">"*(* [*.*.*.*])*"</span> {}
<span style="color:#898887"># Duplicate RFC7352</span>
<span style="font-weight:bold">require</span> [<span style="color:#bf0303">"duplicate"</span>, <span style="color:#bf0303">"variables"</span>];
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">duplicate</span> { <span style="color:#644a9b">discard</span>; }
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">duplicate</span> <span style="color:#006e28">:header</span> <span style="color:#bf0303">"message-id"</span> { <span style="color:#644a9b">discard</span>; }
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#0095ff;font-weight:bold">:matches</span> <span style="color:#bf0303">"message-id"</span> <span style="color:#bf0303">"*"</span> {
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">duplicate</span> <span style="color:#006e28">:uniqueid</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${0}</span><span style="color:#bf0303">"</span> { <span style="color:#644a9b">discard</span>; }
}
<span style="color:#898887"># Editheader RFC5293</span>
<span style="color:#644a9b">addheader</span> <span style="color:#bf0303">"X-Hello"</span> <span style="color:#bf0303">"World"</span>;
<span style="color:#644a9b">deleteheader</span> <span style="color:#006e28">:index</span> <span style="color:#b08000">1</span> <span style="color:#bf0303">"X-Hello"</span>;
<span style="color:#898887"># Enclose RFC5703</span>
<span style="color:#006e28">:mime</span>
<span style="color:#006e28">:anychild</span>
<span style="color:#006e28">:type</span>
<span style="color:#006e28">:subtype</span>
<span style="color:#006e28">:contenttype</span>
<span style="color:#006e28">:param</span>
<span style="color:#644a9b">replace</span>
<span style="color:#644a9b">enclose</span>
<span style="color:#644a9b">extracttext</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#006e28">:mime</span> <span style="color:#006e28">:type</span> <span style="color:#bf0303">"Content-Type"</span> <span style="color:#bf0303">"image"</span> {}
<span style="color:#644a9b">replace</span> <span style="color:#bf0303">"Executable attachment removed by user filter"</span>;
<span style="font-weight:bold">foreverypart</span> {
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#006e28">:mime</span> <span style="color:#006e28">:param</span> <span style="color:#bf0303">"filename"</span> <span style="color:#0095ff;font-weight:bold">:matches</span> [<span style="color:#bf0303">"Content-Type"</span>, <span style="color:#bf0303">"Content-Disposition"</span>]
[<span style="color:#bf0303">"*.com"</span>, <span style="color:#bf0303">"*.exe"</span>, <span style="color:#bf0303">"*.vbs"</span>, <span style="color:#bf0303">"*.scr"</span>, <span style="color:#bf0303">"*.pif"</span>, <span style="color:#bf0303">"*.hta"</span>, <span style="color:#bf0303">"*.bat"</span>, <span style="color:#bf0303">"*.zip"</span> ] {
<span style="color:#898887"># these attachment types are executable</span>
<span style="color:#644a9b">enclose</span> <span style="color:#006e28">:subject</span> <span style="color:#bf0303">"Warning"</span> <span style="color:#bf0303">text:</span>
<span style="color:#bf0303">WARNING! The enclosed message contains executable attachments.</span>
<span style="color:#bf0303">These attachment types may contain a computer virus program</span>
<span style="color:#bf0303">that can infect your computer and potentially damage your data.</span>
<span style="color:#bf0303">.</span>
;
<span style="color:#644a9b">break</span>;
}
}
<span style="color:#644a9b">extracttext</span> <span style="color:#006e28">:first</span> <span style="color:#b08000">100</span> <span style="color:#bf0303">"msgcontent"</span>;
<span style="color:#898887"># Notify RFC5435</span>
<span style="color:#644a9b">notify</span> <span style="color:#006e28">:importance</span> <span style="color:#bf0303">"1"</span> <span style="color:#006e28">:message</span> <span style="color:#bf0303">"This is probably very important"</span> <span style="color:#bf0303">"mailto:kde@example.com"</span>;
<span style="color:#644a9b">notify</span> <span style="color:#006e28">:message</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${from_addr}${env_from}</span><span style="color:#bf0303">: </span><span style="color:#0057ae">${subject}</span><span style="color:#bf0303">"</span> <span style="color:#bf0303">"mailto:kde@example.com"</span>;
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">not</span> <span style="color:#644a9b;font-weight:bold">valid_notify_method</span> [<span style="color:#bf0303">"mailto:"</span>, <span style="color:#bf0303">"http://gw.example.net/notify?test"</span>] { <span style="color:#644a9b">stop</span>; }
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">notify_method_capability</span> <span style="color:#bf0303">"xmpp:tim@example.com?message;subject=SIEVE"</span> <span style="color:#bf0303">"Online"</span> <span style="color:#bf0303">"yes"</span> {}
<span style="color:#644a9b">set</span> <span style="color:#006e28">:encodeurl</span> <span style="color:#bf0303">"body_param"</span> <span style="color:#bf0303">"stuff"</span>;
<span style="color:#898887"># Envelope DSN RFC6009</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">envelope</span> <span style="color:#bf0303">"notify"</span> <span style="color:#bf0303">"SUCCESS"</span> {}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">allof</span> (<span style="color:#644a9b;font-weight:bold">envelope</span> <span style="color:#bf0303">"notify"</span> <span style="color:#bf0303">"FAILURE"</span>, <span style="color:#644a9b;font-weight:bold">envelope</span> <span style="color:#006e28">:comparator</span> <span style="color:#bf0303">"i;ascii-numeric"</span> <span style="color:#0095ff;font-weight:bold">:count</span> <span style="color:#bf0303">"eq"</span> <span style="color:#bf0303">"notify"</span> <span style="color:#bf0303">"1"</span>) {}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">envelope</span> <span style="color:#0095ff;font-weight:bold">:matches</span> <span style="color:#bf0303">"orcpt"</span> <span style="color:#bf0303">"rfc822;*@example.com"</span> {}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">anyof</span> (<span style="color:#644a9b;font-weight:bold">envelope</span> <span style="color:#0095ff;font-weight:bold">:contains</span> <span style="color:#bf0303">"bytimerelative"</span> <span style="color:#bf0303">"-"</span>, <span style="color:#644a9b;font-weight:bold">envelope</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"eq"</span> <span style="color:#006e28">:comparator</span> <span style="color:#bf0303">"i;ascii-numeric"</span> <span style="color:#bf0303">"bytimerelative"</span> <span style="color:#bf0303">"0"</span>) {}
<span style="color:#644a9b">redirect</span> <span style="color:#006e28">:copy</span> <span style="color:#006e28">:notify</span> <span style="color:#bf0303">"NEVER"</span> <span style="color:#bf0303">"elsewhere@example.com"</span>;
<span style="color:#644a9b">redirect</span> <span style="color:#006e28">:copy</span> <span style="color:#006e28">:bytimerelative</span> <span style="color:#b08000">600</span> <span style="color:#bf0303">"cellphone@example.com"</span>;
<span style="color:#644a9b">redirect</span> <span style="color:#006e28">:copy</span> <span style="color:#006e28">:bytimeabsolute</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${date}</span><span style="color:#bf0303">T20:00:00</span><span style="color:#0057ae">${zone}</span><span style="color:#bf0303">"</span> <span style="color:#006e28">:bymode</span> <span style="color:#bf0303">"return"</span> <span style="color:#bf0303">"cellphone@example.com"</span>;
<span style="color:#898887"># Environment RFC5183</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">environment</span> <span style="color:#0095ff;font-weight:bold">:contains</span> <span style="color:#bf0303">"item"</span> <span style="color:#bf0303">""</span> {}
<span style="color:#898887"># Reject RFC5429</span>
<span style="color:#644a9b">ereject</span> <span style="color:#bf0303">"I no longer accept mail from this address"</span>;
<span style="color:#644a9b">reject</span> <span style="color:#bf0303">text:</span>
<span style="color:#bf0303">Your message is too big. If you want to send me a big attachment,</span>
<span style="color:#bf0303">put it on a public web site and send me a URL.</span>
<span style="color:#bf0303">.</span>
;
<span style="color:#898887"># External Lists RFC6134</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">envelope</span> <span style="color:#006e28">:list</span> <span style="color:#bf0303">"from"</span> <span style="color:#bf0303">":addrbook:default"</span> {}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">currentdate</span> <span style="color:#006e28">:list</span> <span style="color:#bf0303">"date"</span> <span style="color:#bf0303">"tag:example.com,2011-01-01:localHolidays"</span> {}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">allof</span> (<span style="color:#644a9b;font-weight:bold">envelope</span> <span style="color:#006e28">:detail</span> <span style="color:#bf0303">"to"</span> <span style="color:#bf0303">"mylist"</span>, <span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#006e28">:list</span> <span style="color:#bf0303">"from"</span> <span style="color:#bf0303">"tag:example.com,2010-05-28:mylist"</span>) {
<span style="color:#644a9b">redirect</span> <span style="color:#006e28">:list</span> <span style="color:#bf0303">"tag:example.com,2010-05-28:mylist"</span>;
}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">string</span> <span style="color:#006e28">:list</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${ip}</span><span style="color:#bf0303">"</span> <span style="color:#bf0303">"tag:example.com,2011-04-10:DisallowedIPs"</span> {}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#006e28">:mime</span> <span style="color:#006e28">:param</span> <span style="color:#bf0303">"filename"</span> <span style="color:#006e28">:list</span> [<span style="color:#bf0303">"Content-Type"</span>, <span style="color:#bf0303">"Content-Disposition"</span>] <span style="color:#bf0303">"tag:example.com,2011-04-10:BadFileNameExts"</span> {}
<span style="color:#898887"># ihave RFC5463</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">ihave</span> <span style="color:#bf0303">"fileinto"</span> {}
<span style="color:#644a9b">error</span> <span style="color:#bf0303">"failed!"</span>;
<span style="color:#898887"># IMAP Sieve RFC6785</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">anyof</span> (<span style="color:#644a9b;font-weight:bold">environment</span> <span style="color:#0095ff;font-weight:bold">:is</span> <span style="color:#bf0303">"imap.cause"</span> <span style="color:#bf0303">"APPEND"</span>, <span style="color:#644a9b;font-weight:bold">environment</span> <span style="color:#0095ff;font-weight:bold">:is</span> <span style="color:#bf0303">"imap.cause"</span> <span style="color:#bf0303">"COPY"</span>) {
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">environment</span> <span style="color:#0095ff;font-weight:bold">:is</span> <span style="color:#bf0303">"imap.mailbox"</span> <span style="color:#bf0303">"ActionItems"</span> {
<span style="color:#644a9b">redirect</span> <span style="color:#006e28">:copy</span> <span style="color:#bf0303">"actionitems@example.com"</span>;
}
}
<span style="color:#898887"># IMAP4 Flags RFC5232</span>
<span style="color:#644a9b">setflag</span> <span style="color:#bf0303">"</span><span style="color:#924c9d">\\</span><span style="color:#bf0303">Deleted"</span>;
<span style="color:#644a9b">setflag</span> <span style="color:#bf0303">"flagvar"</span> <span style="color:#bf0303">"</span><span style="color:#924c9d">\\</span><span style="color:#bf0303">Flagged"</span>;
<span style="color:#644a9b">addflag</span> <span style="color:#bf0303">"flagvar"</span> <span style="color:#bf0303">"</span><span style="color:#924c9d">\\</span><span style="color:#bf0303">Deleted"</span>;
<span style="color:#644a9b">addflag</span> <span style="color:#bf0303">"flagvar"</span> [<span style="color:#bf0303">"</span><span style="color:#924c9d">\\</span><span style="color:#bf0303">Deleted"</span>, <span style="color:#bf0303">"</span><span style="color:#924c9d">\\</span><span style="color:#bf0303">Answered"</span>];
<span style="color:#644a9b">removeflag</span> <span style="color:#bf0303">"flagvar"</span> <span style="color:#bf0303">"$MDNRequired"</span>;
<span style="color:#644a9b;font-weight:bold">hasflag</span> <span style="color:#0095ff;font-weight:bold">:contains</span> <span style="color:#bf0303">"MyVar"</span> <span style="color:#bf0303">"Junk"</span>
<span style="color:#644a9b;font-weight:bold">hasflag</span> <span style="color:#0095ff;font-weight:bold">:contains</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${MyVar}</span><span style="color:#bf0303">"</span> [<span style="color:#bf0303">"label"</span>, <span style="color:#bf0303">"forward"</span>]
<span style="color:#644a9b;font-weight:bold">hasflag</span> <span style="color:#0095ff;font-weight:bold">:count</span> <span style="color:#bf0303">"ge"</span> <span style="color:#006e28">:comparator</span> <span style="color:#bf0303">"i;ascii-numeric"</span> <span style="color:#bf0303">"MyFlags"</span> <span style="color:#b08000">2</span>
<span style="color:#644a9b">fileinto</span> <span style="color:#006e28">:flags</span> <span style="color:#bf0303">"</span><span style="color:#924c9d">\\</span><span style="color:#bf0303">Deleted"</span> <span style="color:#bf0303">"INBOX.bla"</span>;
<span style="color:#898887"># Include RFC6609</span>
<span style="color:#644a9b">include</span> <span style="color:#006e28">:personal</span> <span style="color:#bf0303">"always_allow"</span>;
<span style="color:#644a9b">include</span> <span style="color:#006e28">:global</span> <span style="color:#bf0303">"spam_tests"</span>;
<span style="color:#644a9b">return</span>;
<span style="font-weight:bold">global</span> <span style="color:#bf0303">"i_am_on_vacation"</span>;
<span style="color:#644a9b">set</span> <span style="color:#bf0303">"global.i_am_on_vacation"</span> <span style="color:#bf0303">"1"</span>;
<span style="color:#898887"># Mailbox RFC5490</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">mailboxexists</span> <span style="color:#bf0303">"bla"</span> {}
<span style="color:#644a9b">fileinto</span> <span style="color:#006e28">:create</span> <span style="color:#bf0303">"inbox.bla"</span>;
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">metadata</span> <span style="color:#0095ff;font-weight:bold">:is</span> <span style="color:#bf0303">"INBOX"</span> <span style="color:#bf0303">"/private/vendor/vendor.isode/auto-replies"</span> <span style="color:#bf0303">"on"</span> {}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">metadataexists</span> <span style="color:#bf0303">"INBOX"</span> <span style="color:#bf0303">"/private/vendor/foo"</span> {}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">servermetadata</span> <span style="color:#0095ff;font-weight:bold">:matches</span> <span style="color:#bf0303">"/private/vendor/vendor.isode/notification-uri"</span> <span style="color:#bf0303">"*"</span> {}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">servermetadataexists</span> <span style="color:#bf0303">"/private/vendor/foo"</span> {}
<span style="color:#898887"># Regexp (draft)</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">not</span> <span style="color:#644a9b;font-weight:bold">address</span> <span style="color:#0095ff;font-weight:bold">:regex</span> [<span style="color:#bf0303">"to"</span>, <span style="color:#bf0303">"cc"</span>, <span style="color:#bf0303">"bcc"</span>] <span style="color:#bf0303">"me(</span><span style="color:#924c9d">\\</span><span style="color:#bf0303">+.*)?@company</span><span style="color:#924c9d">\\</span><span style="color:#bf0303">.com"</span> {}
<span style="color:#898887"># Relational RFC5231</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">address</span> <span style="color:#0095ff;font-weight:bold">:count</span> <span style="color:#bf0303">"ge"</span> <span style="color:#006e28">:comparator</span> <span style="color:#bf0303">"i;ascii-numeric"</span> [<span style="color:#bf0303">"to"</span>, <span style="color:#bf0303">"cc"</span>] [<span style="color:#bf0303">"3"</span>] {}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"lt"</span> <span style="color:#006e28">:comparator</span> <span style="color:#bf0303">"i;ascii-numeric"</span> [<span style="color:#bf0303">"x-priority"</span>] [<span style="color:#bf0303">"3"</span>] {}
<span style="color:#898887"># Spamtest RFC5235</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">spamtest</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"eq"</span> <span style="color:#006e28">:comparator</span> <span style="color:#bf0303">"i;ascii-numeric"</span> <span style="color:#bf0303">"0"</span> {}
<span style="font-weight:bold">elsif</span> <span style="color:#644a9b;font-weight:bold">spamtest</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"ge"</span> <span style="color:#006e28">:comparator</span> <span style="color:#bf0303">"i;ascii-numeric"</span> <span style="color:#bf0303">"3"</span> {}
<span style="font-weight:bold">elsif</span> <span style="color:#644a9b;font-weight:bold">spamtest</span> <span style="color:#006e28">:percent</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"lt"</span> <span style="color:#006e28">:comparator</span> <span style="color:#bf0303">"i;ascii-numeric"</span> <span style="color:#bf0303">"37"</span> {}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">virustest</span> <span style="color:#0095ff;font-weight:bold">:value</span> <span style="color:#bf0303">"eq"</span> <span style="color:#006e28">:comparator</span> <span style="color:#bf0303">"i;ascii-numeric"</span> <span style="color:#bf0303">"4"</span> {}
<span style="color:#898887"># Subaddress RFC5233</span>
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">envelope</span> <span style="color:#006e28">:user</span> <span style="color:#bf0303">"to"</span> <span style="color:#bf0303">"postmaster"</span> {}
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">envelope</span> <span style="color:#006e28">:detail</span> <span style="color:#bf0303">"to"</span> <span style="color:#bf0303">"mta-filters"</span> {}
<span style="color:#898887"># Vacation RFC5230</span>
<span style="color:#644a9b">vacation</span> <span style="color:#bf0303">"I'm out"</span>;
<span style="color:#644a9b">vacation</span> <span style="color:#006e28">:subject</span> <span style="color:#bf0303">"Automatic response to: </span><span style="color:#0057ae">${1}</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"I'm away -- send mail to foo in my absence"</span>;
<span style="color:#644a9b">vacation</span> <span style="color:#006e28">:handle</span> <span style="color:#bf0303">"ran-away"</span> <span style="color:#bf0303">"I'm out"</span>;
<span style="color:#644a9b">vacation</span> <span style="color:#006e28">:mime</span> <span style="color:#bf0303">text:</span>
<span style="color:#bf0303"> Content-Type: multipart/alternative; boundary=foo</span>
<span style="color:#bf0303"> --foo</span>
<span style="color:#bf0303"> Hello </span><span style="color:#0057ae">${sender}</span><span style="color:#bf0303">, I'm at the beach relaxing.</span>
<span style="color:#bf0303"> --foo</span>
<span style="color:#bf0303"> Content-Type: text/html; charset=us-ascii</span>
<span style="color:#bf0303"> &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"</span>
<span style="color:#bf0303"> "http://www.w3.org/TR/REC-html40/strict.dtd"></span>
<span style="color:#bf0303"> &lt;HTML>&lt;HEAD>&lt;TITLE>How to relax&lt;/TITLE></span>
<span style="color:#bf0303"> &lt;BASE HREF="http://home.example.com/pictures/">&lt;/HEAD></span>
<span style="color:#bf0303"> &lt;BODY>&lt;P>I'm at the &lt;A HREF="beach.gif">beach&lt;/A> relaxing.</span>
<span style="color:#bf0303"> &lt;/BODY>&lt;/HTML></span>
<span style="color:#bf0303"> --foo--</span>
<span style="color:#bf0303">.</span>
;
<span style="color:#644a9b">vacation</span> <span style="color:#006e28">:days</span> <span style="color:#b08000">23</span> <span style="color:#006e28">:addresses</span> [<span style="color:#bf0303">"kde@example.edu"</span>] <span style="color:#bf0303">"I'm away until October 19."</span>;
<span style="color:#898887"># Vacation Seconds RFC6131</span>
<span style="color:#644a9b">vacation</span> <span style="color:#006e28">:addresses</span> [<span style="color:#bf0303">"kde@example.edu"</span>] <span style="color:#006e28">:seconds</span> <span style="color:#b08000">1800</span>
<span style="color:#bf0303">"I am in a meeting, and do not have access to email."</span>;
<span style="color:#898887"># Variables RFC5229</span>
<span style="color:#bf0303">"&amp;%${}!"</span> <span style="color:#898887"># invalid</span>
<span style="color:#bf0303">"${doh!}"</span> <span style="color:#898887">#invalid</span>
<span style="color:#bf0303">"</span><span style="color:#0057ae">${company}</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"bla </span><span style="color:#0057ae">${var42}</span><span style="color:#bf0303"> blub"</span>
<span style="color:#bf0303">"</span><span style="color:#0057ae">${1}</span><span style="color:#bf0303">"</span>
<span style="color:#bf0303">"${BAD</span><span style="color:#0057ae">${Company}</span><span style="color:#bf0303">"</span> <span style="color:#898887"># second one is the variable</span>
<span style="color:#bf0303">"${President, </span><span style="color:#0057ae">${Company}</span><span style="color:#bf0303"> Inc.}"</span> <span style="color:#898887"># inner one is the variable</span>
<span style="color:#644a9b">set</span> <span style="color:#bf0303">"var"</span> <span style="color:#bf0303">"value"</span>;
<span style="color:#644a9b">set</span> <span style="color:#bf0303">"var2"</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${var}</span><span style="color:#bf0303">"</span>;
<span style="color:#644a9b">set</span> <span style="color:#bf0303">"a"</span> <span style="color:#bf0303">"juMBlEd lETteRS"</span>;
<span style="color:#644a9b">set</span> <span style="color:#006e28">:length</span> <span style="color:#bf0303">"b"</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${a}</span><span style="color:#bf0303">"</span>;
<span style="color:#644a9b">set</span> <span style="color:#006e28">:lower</span> <span style="color:#bf0303">"b"</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${a}</span><span style="color:#bf0303">"</span>;
<span style="color:#644a9b">set</span> <span style="color:#006e28">:upperfirst</span> <span style="color:#bf0303">"b"</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${a}</span><span style="color:#bf0303">"</span>;
<span style="color:#644a9b">set</span> <span style="color:#006e28">:upperfirst</span> <span style="color:#006e28">:lower</span> <span style="color:#bf0303">"b"</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${a}</span><span style="color:#bf0303">"</span>;
<span style="color:#644a9b">set</span> <span style="color:#006e28">:quotewildcard</span> <span style="color:#bf0303">"b"</span> <span style="color:#bf0303">"Rock*"</span>;
<span style="color:#644a9b">set</span> <span style="color:#006e28">:lowerfirst</span> <span style="color:#bf0303">"b"</span> <span style="color:#bf0303">"</span><span style="color:#0057ae">${a}</span><span style="color:#bf0303">"</span>;
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">string</span> <span style="color:#0095ff;font-weight:bold">:matches</span> <span style="color:#bf0303">" </span><span style="color:#0057ae">${state}</span><span style="color:#bf0303"> "</span> <span style="color:#bf0303">"* pending *"</span> {}
<span style="color:#898887"># Dovecot debug extension</span>
<span style="font-weight:bold">require</span> <span style="color:#bf0303">"vnd.dovecot.debug"</span>;
<span style="font-weight:bold">if</span> <span style="color:#644a9b;font-weight:bold">header</span> <span style="color:#0095ff;font-weight:bold">:contains</span> <span style="color:#bf0303">"subject"</span> <span style="color:#bf0303">"hello"</span> {
<span style="color:#644a9b">debug_log</span> <span style="color:#bf0303">"Subject header contains hello!"</span>;
}
</pre></body></html>