Door Anoniem: Kent er iemand een mailomgeving waarin je het aantal CC ontvangers kunt beperken en de limiet van BCC wel groter is?
Iets wat voor Postfix werkt (en dacht ik al achterhaald is door iets wat handiger werkt, maar ik ben daar nooit ingedoken), waar serieuze spam- en malwarefilters mee zijn opgezet, waar in principe élke filterwens mee geïmplementeerd kan worden, en waar ik zelf wel eens een eenvoudig filter voor gemaakt heb is het volgende:
• Je filter draait in een apart proces, dat zowel als SMTP-server als -client fungeert.
• Postfix is geconfigureerd om alle op de standaard SMTP-poort binnenkomende e-mail niet de normale verwerking in te laten gaan maar via SMTP aan het filterproces door te geven.
• Het filter doet zijn werk, en kan een e-mail weigeren, accepteren, en eventueel ook aanpassen (voor de duidelijkheid: een Received-header toevoegen is al een aanpassing).
• Als het filter een e-mail accepteert dan legt het via een alternatieve poort verbinding met Postfix en levert daar de (al dan niet aangepaste) e-mail aan. Postfix is geconfigureerd om mail die op deze poort binnenkomt wél de normale verwerking in te laten gaan.
• Belangrijk detail: pas als Postfix de ontvangst van de gefilterde e-mail heeft bevestigd bevestigt het filter op zijn beurt de ontvangst van het origineel aan Postfix over de nog openstaande originele verbinding. Hierdoor kan het filter volledig meeliften op alle maatregelen die Postfix neemt om geen e-mails kwijt te raken. Het filter hoeft niet zelf iets op te slaan bijvoorbeeld.
Ik heb jaren geleden zo'n filter gemaakt, met voor die server specifieke filterwensen (die op zich niet ingewikkelder waren dan wat jij nu wilt). Het is het eerste wat ik ooit in Python heb geschreven (op wat vingeroefeningen na) en het bleek kinderlijk eenvoudig te zijn (voor een ervaren programmeur dan), alles wat ik nodig had zat al in de standaard-library van Python, en het was zelfs zo recht voor zijn raap dat het domweg in een keer bleek te werken, iets wat maar zelden gebeurt. Als je een basis hebt die filters als functies kan aanroepen dan is een functie om bijvoorbeeld alle e-mails te weigeren die meer dan 5 externe e-mailadressen in de To- en Cc-headers heeft staan waarschijnlijk een kwestie van slechts een paar regels Python-code. Voor de duidelijkheid: alle bestemmingsadressen worden via het SMTP-protocol afgehandeld zonder onderscheid te maken tussen To, Cc en Bcc. De eerste twee zijn gewoon MIME-headers waarin adressen herhaald worden die ook in de SMTP-dialoog voorkomen, en SMTP bemoeit zich helemaal niet met die headers, voor SMTP is dat data die onderdeel uitmaakt van het bericht. Wat Bcc wordt genoemd is simpelweg het ontbreken van bestemmingsadressen in de To- en Cc-headers.
Natuurlijk kan de werkelijkheid een stuk weerbarstiger zijn dan ik het hier even luchtig opschrijf. Als je organisatie niet ingericht is op het zelf schrijven en onderhouden van software dan komt er schrikbarend veel meer bij kijken dan even wat in elkaar flansen. En als de mailserver grote volumes moet kunnen verwerken dan moet je rekening met schaalbaarheid houden. De opzet is op zich uitermate schaalbaar, het is gewoon een SMTP-server extra in de pijplijn, maar het filterproces moet natuurlijk de volumes ook aankunnen.
Het is ook iets wat in een mailsysteem met iedere SMTP-server die ik serieus zou willen nemen ingebouwd moet kunnen worden, SMTP-servers moeten tenslotte in staat zijn om e-mail direct naar een andere SMTP-server door te routeren, en aan die mogelijkheid van Postfix is dit opgehangen.
Ik reageer met deze beschrijving omdat je uit lijkt te gaan van mogelijkheden die een ander (leverancier) in een mailsysteem heeft ingebouwd. Daar is niets mis mee, maar zie niet over het hoofd dat dat soort software vaak ook generieke uitbreidingsmogelijkheden heeft waar gebruikers met voldoende kennis van zaken hun eigen wensen in kunnen implementeren.