Initial status for developed files on dagda

This commit is contained in:
mailcat
2026-07-20 20:49:36 +02:00
commit 337378a362
102 changed files with 37778 additions and 0 deletions
+242
View File
@@ -0,0 +1,242 @@
# mailrules.sieve
# Automatische mailsortering voor hans@australius.nl
# Upload via: python3 upload_sieve.py
#
# Noot: fileinto-paden zijn relatief aan de persoonlijke namespace.
# Op Dovecot-servers met INBOX. als prefix: voeg "INBOX." toe aan elke
# fileinto-waarde als mail niet aankomt (zie SIEVE_PREFIX in upload_sieve.py).
require [
"fileinto", "redirect", "copy",
"date", "variables",
"mime", "foreverypart",
"imap4flags"
];
# ════════════════════════════════════════════════════════════════════════════
# 1. FACTUREN (altijd eerst — vóór nieuwsbrieven en diensten)
# PDF-bijlagen worden doorgestuurd naar boekhouding@australius.nl
# (alleen voor nieuwe mail, geen terugwerkende kracht)
# ════════════════════════════════════════════════════════════════════════════
if anyof (
header :contains "Subject" ["factuur", "Factuur",
"invoice", "Invoice",
"rekening", "Rekening",
"nota", "Nota",
"betaalverzoek", "Betaalverzoek",
"receipt", "Receipt",
"orderbevestiging", "Orderbevestiging",
"order confirmation",
"betaling ontvangen",
"payment received",
"uw factuur", "Uw factuur",
"your invoice", "Your invoice",
"je factuur"]
) {
# Kwartaal bepalen op basis van ontvangstdatum
if currentdate :matches "year" "*" { set "jaar" "${1}"; }
if anyof (currentdate :is "month" "1",
currentdate :is "month" "2",
currentdate :is "month" "3") { set "kwartaal" "Q1"; }
elsif anyof (currentdate :is "month" "4",
currentdate :is "month" "5",
currentdate :is "month" "6") { set "kwartaal" "Q2"; }
elsif anyof (currentdate :is "month" "7",
currentdate :is "month" "8",
currentdate :is "month" "9") { set "kwartaal" "Q3"; }
else { set "kwartaal" "Q4"; }
# PDF aanwezig → doorsturen naar boekhouding (nieuwe mail vanaf activatiedatum)
foreverypart {
if anyof (
header :mime :param "filename" :matches "Content-Disposition" ["*.pdf", "*.PDF"],
header :mime :is "Content-Type" "application/pdf"
) {
redirect :copy "boekhouding@australius.nl";
break;
}
}
fileinto "Financieel.Facturen.${jaar}.${kwartaal}";
stop;
}
# ════════════════════════════════════════════════════════════════════════════
# 2. BANK & VERZEKERING
# ════════════════════════════════════════════════════════════════════════════
if address :domain :is "From" ["nl.abnamro.com", "abnamro.nl"] {
fileinto "Financieel.Bank.ABN AMRO"; stop;
}
if address :domain :is "From" ["icscards.nl", "icsmarketing.icscards.nl",
"service.icscards.nl"] {
fileinto "Financieel.Bank.ICS"; stop;
}
if address :domain :is "From" ["npex.nl"] { fileinto "Financieel.Bank.NPEX"; stop; }
if address :domain :is "From" ["snelstart.nl"] { fileinto "Financieel.Bank.SnelStart"; stop; }
if address :domain :is "From" ["tellow.nl"] { fileinto "Financieel.Bank.Tellow"; stop; }
if address :domain :is "From" ["unive.nl", "nieuwsbrief.unive.nl"] {
fileinto "Financieel.Verzekering.Univé"; stop;
}
if address :domain :is "From" ["heinenoord.nl"] {
fileinto "Financieel.Verzekering.VEZA"; stop;
}
# ════════════════════════════════════════════════════════════════════════════
# 3. WERK / OPDRACHTEN
# ════════════════════════════════════════════════════════════════════════════
if address :domain :is "From" ["flextender.nl"] { fileinto "Werk.Opdrachten.Flextender"; stop; }
if address :domain :is "From" ["onestopsourcing.nl"] { fileinto "Werk.Opdrachten.OneStopSourcing"; stop; }
if address :domain :is "From" ["immens.nu"] { fileinto "Werk.Opdrachten.IMMENS"; stop; }
if address :domain :is "From" ["circle8.nl"] { fileinto "Werk.Opdrachten.Circle8"; stop; }
if address :domain :is "From" ["getthere.nl"] { fileinto "Werk.Opdrachten.Get There"; stop; }
if address :domain :is "From" ["huckr.ai"] { fileinto "Werk.Opdrachten.Huckr"; stop; }
if address :domain :is "From" ["hey.meetjamie.ai"] { fileinto "Werk.Opdrachten.Jamie"; stop; }
if address :domain :is "From" ["futurexl.nl"] { fileinto "Werk.Opdrachten.FutureXL"; stop; }
if address :domain :is "From" ["boip.int"] { fileinto "Werk.Overig.BOIP"; stop; }
if address :domain :is "From" ["groningen.nl", "groningenbereikbaar.nl"] {
fileinto "Werk.Overig.Gemeente Groningen"; stop;
}
# ════════════════════════════════════════════════════════════════════════════
# 4. MOBILITEIT / EV
# ════════════════════════════════════════════════════════════════════════════
if address :domain :is "From" ["eneco-emobility.com", "eneco.nl"] {
fileinto "Mobiliteit.EV.Eneco eMobility"; stop;
}
if address :domain :is "From" ["shellrecharge.com"] { fileinto "Mobiliteit.EV.Shell Recharge"; stop; }
if address :domain :is "From" ["fastned.nl"] { fileinto "Mobiliteit.EV.FastNed"; stop; }
if address :domain :is "From" ["opngo.com"] { fileinto "Mobiliteit.EV.OPnGO"; stop; }
if address :domain :is "From" ["tesla.com"] { fileinto "Mobiliteit.EV.Tesla"; stop; }
if address :domain :is "From" ["mmsn.nl"] { fileinto "Mobiliteit.EV.Mitsubishi"; stop; }
if address :domain :is "From" ["alfen.com"] { fileinto "Mobiliteit.EV.Alfen"; stop; }
# ════════════════════════════════════════════════════════════════════════════
# 5. MOBILITEIT / OV & REIZEN
# ════════════════════════════════════════════════════════════════════════════
if address :domain :is "From" ["ns.nl", "email.ns.nl"] {
fileinto "Mobiliteit.OV & Reizen.NS"; stop;
}
if address :domain :is "From" ["booking.com"] { fileinto "Mobiliteit.OV & Reizen.Booking"; stop; }
if address :domain :is "From" ["flitsmeister.nl"]{ fileinto "Mobiliteit.OV & Reizen.Flitsmeister"; stop; }
# ════════════════════════════════════════════════════════════════════════════
# 6. BESTELLINGEN & BEZORGING
# ════════════════════════════════════════════════════════════════════════════
if address :domain :is "From" ["postnl.nl", "edm.postnl.nl",
"notificatie.postnl.nl"] { fileinto "Bestellingen.PostNL"; stop; }
if address :domain :is "From" ["dhlparcel.nl", "dhlecommerce.nl"] { fileinto "Bestellingen.DHL"; stop; }
if address :domain :is "From" ["gls-netherlands.com"] { fileinto "Bestellingen.GLS"; stop; }
if address :domain :is "From" ["bol.com", "feedback.bol.com"] { fileinto "Bestellingen.bol"; stop; }
if address :domain :is "From" ["coolblue.nl", "coolblue.eu"] { fileinto "Bestellingen.Coolblue"; stop; }
if address :domain :is "From" ["allekabels.nl"] { fileinto "Bestellingen.Allekabels"; stop; }
if address :domain :is "From" ["vikingdirect.nl",
"delivery.vikingdirect.nl",
"online.vikingdirect.nl"] { fileinto "Bestellingen.Viking"; stop; }
if address :domain :is "From" ["123inkt.nl", "m.123inkt.nl"] { fileinto "Bestellingen.123inkt"; stop; }
if address :domain :is "From" ["officecentre.nl"] { fileinto "Bestellingen.Office Centre"; stop; }
if address :domain :is "From" ["sligro.nl"] { fileinto "Bestellingen.Sligro"; stop; }
if address :domain :is "From" ["makro.nl"] { fileinto "Bestellingen.Makro"; stop; }
if address :domain :is "From" ["smartphonehoesjes.nl"] { fileinto "Bestellingen.Smartphonehoesjes"; stop; }
# ════════════════════════════════════════════════════════════════════════════
# 7. DIENSTEN / HOSTING
# ════════════════════════════════════════════════════════════════════════════
if address :domain :is "From" ["strato.com", "news.strato.com",
"marketingradar.strato.com"] { fileinto "Diensten.Hosting.STRATO"; stop; }
if address :domain :is "From" ["transip.nl"] { fileinto "Diensten.Hosting.TransIP"; stop; }
if address :domain :is "From" ["letsencrypt.org"] { fileinto "Diensten.Hosting.Lets Encrypt"; stop; }
if address :domain :is "From" ["backblaze.com"] { fileinto "Diensten.Hosting.Backblaze"; stop; }
# ════════════════════════════════════════════════════════════════════════════
# 8. DIENSTEN / TELECOM
# ════════════════════════════════════════════════════════════════════════════
if address :domain :is "From" ["kpn.com", "campagnes.kpn.com"] { fileinto "Diensten.Telecom.KPN"; stop; }
if address :domain :is "From" ["zakelijk.vodafone.nl",
"vodafone.nl"] { fileinto "Diensten.Telecom.Vodafone"; stop; }
# ════════════════════════════════════════════════════════════════════════════
# 9. DIENSTEN / SOFTWARE
# ════════════════════════════════════════════════════════════════════════════
if address :domain :is "From" ["cursor.com"] { fileinto "Diensten.Software.Cursor"; stop; }
if address :domain :is "From" ["1password.com"] { fileinto "Diensten.Software.1Password"; stop; }
if address :domain :is "From" ["home.sophos.com",
"cleverbridge.com"] { fileinto "Diensten.Software.Sophos"; stop; }
if address :domain :is "From" ["cogsciapps.com"] { fileinto "Diensten.Software.CogSci Apps"; stop; }
if address :domain :is "From" ["claude.com"] { fileinto "Diensten.Software.Claude"; stop; }
if address :domain :is "From" ["microsoft365.com"] { fileinto "Diensten.Software.Microsoft Teams"; stop; }
if address :domain :is "From" ["getmatter.com"] { fileinto "Diensten.Software.Matter"; stop; }
if address :domain :is "From" ["mindnode.com"] { fileinto "Diensten.Software.MindNode"; stop; }
if address :domain :is "From" ["papersapp.com"] { fileinto "Diensten.Software.Papers"; stop; }
if address :domain :is "From" ["team.kahoot.com"] { fileinto "Diensten.Software.Kahoot"; stop; }
if address :domain :is "From" ["perplexity.ai"] { fileinto "Diensten.Software.Perplexity"; stop; }
# ════════════════════════════════════════════════════════════════════════════
# 10. NIEUWSBRIEVEN / LEREN
# ════════════════════════════════════════════════════════════════════════════
if address :domain :is "From" ["coursera.org", "email.coursera.org",
"m.mail.coursera.org", "m.learn.coursera.org"] {
fileinto "Nieuwsbrieven.Leren.Coursera"; stop;
}
if address :domain :is "From" ["technologyreview.com",
"fulfillment.technologyreview.com"] {
fileinto "Nieuwsbrieven.Leren.MIT Technology Review"; stop;
}
if address :domain :is "From" ["mit.edu"] { fileinto "Nieuwsbrieven.Leren.MIT Open Learning"; stop; }
if address :domain :is "From" ["storytellingwithdata.com"]{ fileinto "Nieuwsbrieven.Leren.Storytelling with Data"; stop; }
if address :domain :is "From" ["linkingyourthinking.com"] { fileinto "Nieuwsbrieven.Leren.Nick Milo"; stop; }
if anyof (
address :domain :is "From" ["evakeiffenheim.com"],
header :contains "List-ID" "evakeiffenheim"
) {
fileinto "Nieuwsbrieven.Leren.Eva Keiffenheim"; stop;
}
if address :domain :is "From" ["tiggelaar.nl"] { fileinto "Nieuwsbrieven.Leren.Ben Tiggelaar"; stop; }
if address :domain :is "From" ["briankeating.com"] { fileinto "Nieuwsbrieven.Leren.Brian Keating"; stop; }
if address :domain :is "From" ["beehiiv.com", "mail.beehiiv.com"] {
fileinto "Nieuwsbrieven.Leren.AI Report"; stop;
}
if address :domain :is "From" ["elizabethbutlermd.com"] { fileinto "Nieuwsbrieven.Leren.Elizabeth Butler"; stop; }
# ════════════════════════════════════════════════════════════════════════════
# 11. NIEUWSBRIEVEN / NIEUWS & VAKBLADEN
# ════════════════════════════════════════════════════════════════════════════
if address :domain :is "From" ["crisismanager.nl"] { fileinto "Nieuwsbrieven.Nieuws & Vakbladen.Vakblad Crisismanager"; stop; }
if address :domain :is "From" ["jaarbeurs.nl"] { fileinto "Nieuwsbrieven.Nieuws & Vakbladen.Computable"; stop; }
if address :domain :is "From" ["presentation-guru.com"]{ fileinto "Nieuwsbrieven.Nieuws & Vakbladen.The Presentation Guru"; stop; }
# ════════════════════════════════════════════════════════════════════════════
# 12. NIEUWSBRIEVEN / OVERIG
# ════════════════════════════════════════════════════════════════════════════
if address :domain :is "From" ["lendahand.com"] { fileinto "Nieuwsbrieven.Overig.Lendahand"; stop; }
if address :domain :is "From" ["thegoodroll.nl"] { fileinto "Nieuwsbrieven.Overig.The Good Roll"; stop; }
# ════════════════════════════════════════════════════════════════════════════
# 13. TECHNISCH
# ════════════════════════════════════════════════════════════════════════════
if anyof (
header :contains "Subject" ["DMARC", "SPF", "DKIM"],
header :contains "From" "dmarc"
) {
fileinto "Technisch.DMARC"; stop;
}
if anyof (
header :contains "Subject" ["delivery failed", "undeliverable",
"mailer-daemon", "mail delivery"],
address :is "From" "mailer-daemon@australius.nl"
) {
fileinto "Technisch"; stop;
}