From d468ecfa65b01f1482eeb3601f458087476ced43 Mon Sep 17 00:00:00 2001
From: andryyy <andre.peters@debinux.de>
Date: Fri, 27 Dec 2019 22:03:06 +0100
Subject: [PATCH] [Web] Add more sieve presets

---
 data/web/inc/presets/sieve/sieve_1.yml | 13 ++++++++-----
 data/web/inc/presets/sieve/sieve_3.yml |  3 +++
 data/web/inc/presets/sieve/sieve_4.yml |  4 ++++
 data/web/inc/presets/sieve/sieve_5.yml | 16 ++++++++++++++++
 data/web/inc/presets/sieve/sieve_6.yml | 10 ++++++++++
 data/web/inc/presets/sieve/sieve_7.yml |  7 +++++++
 data/web/lang/lang.de.json             |  7 ++++++-
 data/web/lang/lang.en.json             |  7 ++++++-
 8 files changed, 60 insertions(+), 7 deletions(-)
 create mode 100644 data/web/inc/presets/sieve/sieve_3.yml
 create mode 100644 data/web/inc/presets/sieve/sieve_4.yml
 create mode 100644 data/web/inc/presets/sieve/sieve_5.yml
 create mode 100644 data/web/inc/presets/sieve/sieve_6.yml
 create mode 100644 data/web/inc/presets/sieve/sieve_7.yml

diff --git a/data/web/inc/presets/sieve/sieve_1.yml b/data/web/inc/presets/sieve/sieve_1.yml
index f89cc9f5..e7fa8c84 100644
--- a/data/web/inc/presets/sieve/sieve_1.yml
+++ b/data/web/inc/presets/sieve/sieve_1.yml
@@ -1,7 +1,10 @@
 headline: lang.sieve_preset_1
 content: |
-  if header :contains "x-attached"
-    [".exe",".bat",".js",".com",".cmd",".ini",".dll",".bas",".cpl",".drv",".inf",".sys",".pif",".doc",".docx"] {
-    discard;
-    stop;
-  }
+  require ["reject","body","regex"];
+  if anyof (body :raw :regex ["filename=.*\.doc","filename=.*\.exe","filename=.*\.moo"]) {
+    reject text:
+  doc, exe and moo are dangerous file extensions.
+  Why would you do that? I am a sad cow.
+  .
+  ;
+  }
\ No newline at end of file
diff --git a/data/web/inc/presets/sieve/sieve_3.yml b/data/web/inc/presets/sieve/sieve_3.yml
new file mode 100644
index 00000000..92f0e109
--- /dev/null
+++ b/data/web/inc/presets/sieve/sieve_3.yml
@@ -0,0 +1,3 @@
+headline: lang.sieve_preset_3
+content: |
+  discard; stop;
\ No newline at end of file
diff --git a/data/web/inc/presets/sieve/sieve_4.yml b/data/web/inc/presets/sieve/sieve_4.yml
new file mode 100644
index 00000000..38c7b5f6
--- /dev/null
+++ b/data/web/inc/presets/sieve/sieve_4.yml
@@ -0,0 +1,4 @@
+headline: lang.sieve_preset_4
+content: |
+  require "fileinto";
+  fileinto "INBOX"; stop;
\ No newline at end of file
diff --git a/data/web/inc/presets/sieve/sieve_5.yml b/data/web/inc/presets/sieve/sieve_5.yml
new file mode 100644
index 00000000..adef7572
--- /dev/null
+++ b/data/web/inc/presets/sieve/sieve_5.yml
@@ -0,0 +1,16 @@
+headline: lang.sieve_preset_5
+content: |
+  require "vacation-seconds";
+  if true
+  {
+    # Only send once a day:
+    # vacation :seconds 86400 text:
+    # Only send once every 300 seconds:
+    # vacation :seconds 300 text:
+    # Else:
+    vacation text:
+  I am on holidays, yay!
+  Mail me later, alligator.
+  .
+  ;
+  }
\ No newline at end of file
diff --git a/data/web/inc/presets/sieve/sieve_6.yml b/data/web/inc/presets/sieve/sieve_6.yml
new file mode 100644
index 00000000..38eaa7c9
--- /dev/null
+++ b/data/web/inc/presets/sieve/sieve_6.yml
@@ -0,0 +1,10 @@
+headline: lang.sieve_preset_6
+content: |
+  require ["reject"];
+  # Rejects are sent from postmaster@mailcow_hostname, make sure DMARC/SPF are fine
+  # You should prefer rejects via mailcow blacklists
+  reject text:
+  I am not taking mail from you, and I don't
+  want your birdseed, either!
+  .
+  ;
\ No newline at end of file
diff --git a/data/web/inc/presets/sieve/sieve_7.yml b/data/web/inc/presets/sieve/sieve_7.yml
new file mode 100644
index 00000000..6f405e96
--- /dev/null
+++ b/data/web/inc/presets/sieve/sieve_7.yml
@@ -0,0 +1,7 @@
+headline: lang.sieve_preset_7
+content: |
+  redirect "other-address@domain.tld";
+  # Either keep after redirecting:
+  # keep;
+  # Or redirect and drop:
+  discard; stop;
\ No newline at end of file
diff --git a/data/web/lang/lang.de.json b/data/web/lang/lang.de.json
index 15ffa019..6e3bc660 100644
--- a/data/web/lang/lang.de.json
+++ b/data/web/lang/lang.de.json
@@ -673,7 +673,12 @@
         "insert_preset": "Beispiel \"%s\" laden",
         "sieve_preset_header": "Beispielinhalte zur Einsicht stehen nachstehend bereit. Siehe auch <a href=\"https://de.wikipedia.org/wiki/Sieve\" target=\"_blank\">Wikipedia</a>.",
         "sieve_preset_1": "E-Mails mit potenziell gefährlichen Dateitypen abweisen",
-        "sieve_preset_2": "E-Mail eines bestimmten Absenders immer als gelesen markieren"
+        "sieve_preset_2": "E-Mail eines bestimmten Absenders immer als gelesen markieren",
+        "sieve_preset_3": "Lautlos löschen, weitere Ausführung von Filtern verhindern",
+        "sieve_preset_4": "Nach INBOX einsortieren und weitere Filterbearbeitung stoppen",
+        "sieve_preset_5": "Auto-Responder (Vacation, Urlaub)",
+        "sieve_preset_6": "E-Mails mit Nachricht abweisen",
+        "sieve_preset_7": "Weiterleiten und behalten oder verwerfen"
     },
     "edit": {
         "generate": "generieren",
diff --git a/data/web/lang/lang.en.json b/data/web/lang/lang.en.json
index df3ce2b7..f1c18d15 100644
--- a/data/web/lang/lang.en.json
+++ b/data/web/lang/lang.en.json
@@ -672,7 +672,12 @@
         "insert_preset": "Insert example preset \"%s\"",
         "sieve_preset_header": "Please see the example presets below. For more details see <a href=\"https://en.wikipedia.org/wiki/Sieve_(mail_filtering_language)\" target=\"_blank\">Wikipedia</a>.",
         "sieve_preset_1": "Discard mail with probable dangerous file types",
-        "sieve_preset_2": "Always mark the e-mail of a specific sender as seen"
+        "sieve_preset_2": "Always mark the e-mail of a specific sender as seen",
+        "sieve_preset_3": "Discard silently, stop all further sieve processing",
+        "sieve_preset_4": "File into INBOX, skip further processing by sieve filters",
+        "sieve_preset_5": "Auto responder (vacation)",
+        "sieve_preset_6": "Reject mail with reponse",
+        "sieve_preset_7": "Redirect and keep/drop"
     },
     "edit": {
         "generate": "generate",