#
# Please don't modify this file as your changes will be overwritten with
# the next update. Use @@LOCAL_RULES_DIR@@/local.cf instead.
# See 'perldoc Mail::SpamAssassin::Conf' for details.
#
# <@LICENSE>
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to you under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# </@LICENSE>
#
###########################################################################

# contributed by Jesse Houwing, bug 3197
#
#              ..............................................................................
lang nl report Spam detectie software op het systeem "_HOSTNAME_", heeft dit bericht
lang nl report als mogelijke spam aangemerkt. Het originele bericht is bijgevoegd als
lang nl report bijlage bij dit bericht zodat u het kunt bekijken (als het geen spam is)
lang nl report of soortgelijke toekomstige berichten blokkeren. Zie _CONTACTADDRESS_
lang nl report voor meer details
lang nl report
lang nl report Gedeelte van de inhoud:  _PREVIEW_
lang nl report
lang nl report Analyse details:   (_SCORE_ punten, _REQD_ vereist)
lang nl report
lang nl report " pnt regel naam             omschrijving"
lang nl report  ---- ---------------------- -------------------------------------------------
lang nl report _SUMMARY_
#              ..............................................................................

#                    ........................................................................
lang nl unsafe_report Het originele bericht bestond niet geheel uit tekst en is mogelijk
lang nl unsafe_report onveilig om te openen im sommige emailprogramma's. Het bericht bevat
lang nl unsafe_report mogelijk een virus of code om te verifieren dat uw adres spam
lang nl unsafe_report berichten kan ontvangen. Het is veiliger om het bericht op te slaan
lang nl unsafe_report en het te bekijken in een tekstbewerkingsprogramma.
#                    ........................................................................

lang nl describe GTUBE                           Standaard test voor ongewenste bulk mail
lang nl describe TRACKER_ID                      Maakt gebruik van een nummer om het bericht te kunnen volgen
lang nl describe WEIRD_QUOTING                   Vreemde herhaalde dubbel aanhalingsteken
lang nl describe __MIME_BASE64                   Bevat een base64 bijlage
lang nl describe __MIME_QP                       Bevat een  quoted-printable bijlage
lang nl describe MIME_BASE64_BLANKS              Extra witregels in base64 codering
lang nl describe MIME_BASE64_TEXT                Bericht verborgen door middel van base64 codering
lang nl describe MIME_HTML_MOSTLY                Multipart bericht bestaat voornamelijk uit text/html MIME
lang nl describe MIME_HTML_ONLY                  Bericht bestaat enkel uit text/html MIME delen
lang nl describe MIME_HTML_ONLY_MULTI            Bericht heeft enkel text/html MIME delen
lang nl describe MIME_QP_LONG_LINE               Quoted-printable regel langer dan 76 karakters
lang nl describe MIME_CHARSET_FARAWAY            MIME karakterset wijst op vreemde taal
lang nl describe MPART_ALT_DIFF                  HTML en tekst delen zijn verschillend
lang nl describe CHARSET_FARAWAY                 Karakterset wijst op vreemde taal
lang nl describe EMAIL_ROT13                     Body bevat een ROT13-versleuteld emailadres
lang nl describe BLANK_LINES_80_90               Bericht bestaat voor 80-90% uit witregels
lang nl describe __RCVD_IN_SORBS                 SORBS: verzender is gevonden in SORBS
lang nl describe RCVD_IN_SORBS_HTTP              SORBS: verzender is een open HTTP proxy server
lang nl describe RCVD_IN_SORBS_MISC              SORBS: verzender is een open proxy server
lang nl describe RCVD_IN_SORBS_SMTP              SORBS: verzender is een open SMTP relay
lang nl describe RCVD_IN_SORBS_SOCKS             SORBS: verzender is een open SOCKS proxy server
lang nl describe RCVD_IN_SORBS_WEB               SORBS: verzender is een misbruikbare web server
lang nl describe RCVD_IN_SORBS_BLOCK             SORBS: verzender weigert getest te worden
lang nl describe RCVD_IN_SORBS_ZOMBIE            SORBS: verzender is een gekaapt netwerk
lang nl describe RCVD_IN_SORBS_DUL               SORBS: bericht is direct verstuurd vanaf een dynamisch IP adres
lang nl describe RCVD_IN_SBL                     Ontvangen via een relay die gevonden is in Spamhaus SBL
lang nl describe RCVD_IN_XBL                     Ontvangen via een relay die gevonden is in Spamhaus XBL
lang nl describe RCVD_IN_BL_SPAMCOP_NET          Ontvangen via een relay die gevonden is in bl.spamcop.net
lang nl describe RCVD_IN_MAPS_RBL                Relay in RBL, http://www.mail-abuse.org/rbl/
lang nl describe RCVD_IN_MAPS_DUL                Relay in DUL, http://www.mail-abuse.org/dul/
lang nl describe RCVD_IN_MAPS_RSS                Relay in RSS, http://www.mail-abuse.org/rss/
lang nl describe RCVD_IN_MAPS_NML                Relay in NML, http://www.mail-abuse.org/nml/
lang nl describe FROM_STARTS_WITH_NUMS           Van: begint met nummers
lang nl describe FROM_OFFERS                     Van: adres is van "at iets-aangeboden"
lang nl describe FROM_NO_USER                    Van: heeft geen lokaal deel voor het @-tje
lang nl describe PLING_QUERY                     Onderwerp heeft een uitroepteken en een vraagteken
lang nl describe SUBJ_ALL_CAPS                   Onderwerp bevat alleen hoofdletters
lang nl describe MSGID_SPAM_LETTERS              Spam tool Message-Id: (letters variant)
lang nl describe MSGID_OUTLOOK_INVALID           Message-Id is nep (in Outlook Express formaat)
lang nl describe MSGID_RANDY                     Message-Id bevat een patroon dat wordt gebruikt in SPAM
lang nl describe MSGID_FROM_MTA_HEADER           Message-Id was door een relay toegevoegd
lang nl describe DATE_SPAMWARE_Y2K               Datum heeft een vreemde Y2K opmaak
lang nl describe INVALID_DATE                    Ongeldige Date: header (niet RFC 2822)
lang nl describe INVALID_DATE_TZ_ABSURD          Ongeldige Date: header (tijdzone bestaat niet)
lang nl describe DATE_IN_PAST_03_06              Date: is 3 tot 6 uur voor Received: datum
lang nl describe DATE_IN_PAST_06_12              Date: is 6 tot 12 uur voor Received: datum
lang nl describe DATE_IN_PAST_12_24              Date: is 12 tot 24 uur voor Received: datum
lang nl describe DATE_IN_PAST_24_48              Date: is 24 tot 48 uur voor Received: datum
lang nl describe DATE_IN_PAST_96_XX              Date: is 96 of meer uur voor Received: datum
lang nl describe DATE_IN_FUTURE_03_06            Date: is 3 tot 6 uur na Received: datum
lang nl describe DATE_IN_FUTURE_06_12            Date: is 6 tot 12 uur na Received: datum
lang nl describe DATE_IN_FUTURE_12_24            Date: is 12 tot 24 uur na Received: datum
lang nl describe DATE_IN_FUTURE_24_48            Date: is 24 tot 48 uur na Received: datum
lang nl describe DATE_IN_FUTURE_48_96            Date: is 48 tot 96 uur na Received: datum
lang nl describe DATE_IN_FUTURE_96_XX            Date: is 96 of meer uur na Received: datum
lang nl describe SUBJ_ILLEGAL_CHARS              Onderwerp: bevat te veel 'raw' tekens
lang nl describe FROM_ILLEGAL_CHARS              Van: bevat te veel 'raw' tekens
lang nl describe HEAD_ILLEGAL_CHARS              Header: bevat te veel illegale tekens
lang nl describe JAPANESE_UCE_SUBJECT            Onderwerp: bevat een Japanese UCE tag
lang nl describe KOREAN_UCE_SUBJECT              Onderwerp: bevat een koreaanse ongewenste email tag
lang nl describe NO_DNS_FOR_FROM                 Domein in Van heeft geen MX of A DNS record
lang nl describe RCVD_NUMERIC_HELO               Received: bevat een numerieke HELO
lang nl describe RCVD_DOUBLE_IP_SPAM             Buld email vingerafdruk (dubbel IP) gevonden
lang nl describe RCVD_DOUBLE_IP_LOOSE            Received: door en van lijken op IP adressen
lang nl describe FORGED_TELESP_RCVD              Bevat een vervalde hostnaam voor een DSL IP in Brazilie
lang nl describe FORGED_HOTMAIL_RCVD2            hotmail.com 'Van' adres, maar geen 'Received:'
lang nl describe FORGED_YAHOO_RCVD               'Van' yahoo.com Komt niet overeen met 'Received' headers
lang nl describe CONFIRMED_FORGED                Received headers zijn vervalst
lang nl describe MULTI_FORGED                    Received headers wijzen op meerdere vervalsingen
lang nl describe NONEXISTENT_CHARSET             Karakterset bestaat niet
lang nl describe CHARSET_FARAWAY_HEADER          Een buitenlandse taal wordt gebruikt in de headers
lang nl describe MISSING_HEADERS                 Ontbrekende Aan: header
lang nl describe SUSPICIOUS_RECIPS               Vergelijkbare adressen in de ontvangerslijst
lang nl describe SORTED_RECIPS                   Ontvangerslijst is gesorteerd op alfabet
lang nl describe GAPPY_SUBJECT                   Onderwerp: bevat G.a.t.e.n.k.a.a.s
lang nl describe MISSING_MIMEOLE                 Bericht heeft een X-MSMail-Priority, maar geen X-MimeOLE
lang nl describe SUBJ_AS_SEEN                    Onderwerp bevat "As Seen"
lang nl describe SUBJ_DOLLARS                    Onderwerp begint met een bedrag in dollars
#lang nl describe SUBJ_YOUR_DEBT                  Onderwerp bevat "Your Bills" of iets dergelijks
lang nl describe SUBJ_YOUR_FAMILY                Onderwerp bevat  "Your Family"
lang nl describe RCVD_FAKE_HELO_DOTCOM           Received bevat een vervalde HELO hostnaam
lang nl describe MIME_BOUND_DIGITS_15            Spam tool patroon in MIME grens
lang nl describe MIME_BOUND_MANY_HEX             Spam tool patroon in MIME grens
lang nl describe TO_MALFORMED                    Aan: foutief opgesteld adres
lang nl describe MIME_HEADER_CTYPE_ONLY          'Content-Type' gevonden zonder de benodigde MIME headers
lang nl describe WITH_LC_SMTP                    Received regel bevat een spam merkteken (lowercase smtp)
lang nl describe SUBJ_BUY                        Onderwerp: begint met 'Buy(ing)'
lang nl describe RCVD_AM_PM                      Received headers vervalst (AM/PM)
lang nl describe HEADER_COUNT_CTYPE              Meerdere Content-Type headers gevonden
lang nl describe NO_RDNS_DOTCOM_HELO             Host HELO'd als een grote internet provider ISP, maar heeft geen rDNS
lang nl describe HTML_MESSAGE                    HTML opgenomen in het bericht
lang nl describe HTML_COMMENT_SAVED_URL          HTML bericht is een opgeslagen webpagina
lang nl describe HTML_EMBEDS                     HTML met plugin
lang nl describe HTML_FONT_LOW_CONTRAST          HTML tekstkleur lijkt er op de achtergrondkleur
lang nl describe HTML_FONT_FACE_BAD              HTML lettertype naam is geen woord
lang nl describe HTML_FORMACTION_MAILTO          HTML bevat een formulier dat email verstuurd
lang nl describe HTML_IMAGE_ONLY_04              HTML: plaatjes met 200-400 bytes aan woorden
lang nl describe HTML_IMAGE_ONLY_08              HTML: plaatjes met 600-800 bytes aan woorden
lang nl describe HTML_IMAGE_ONLY_12              HTML: plaatjes met 1000-1200 bytes aan woorden
lang nl describe HTML_IMAGE_RATIO_02             HTML heeft een lage verhouding tussen tekst en plaatjes
lang nl describe HTML_IMAGE_RATIO_04             HTML heeft een lage verhouding tussen tekst en plaatjes
lang nl describe HTML_IMAGE_RATIO_06             HTML heeft een lage verhouding tussen tekst en plaatjes
lang nl describe HTML_IMAGE_RATIO_08             HTML heeft een lage verhouding tussen tekst en plaatjes
lang nl describe HTML_OBFUSCATE_10_20            Bericht bevat 10% tot 20% HTML verdoezeling
lang nl describe HTML_OBFUSCATE_20_30            Bericht bevat 20% tot 30% HTML verdoezeling
lang nl describe HTML_OBFUSCATE_30_40            Bericht bevat 30% tot 40% HTML verdoezeling
lang nl describe HTML_OBFUSCATE_50_60            Bericht bevat 50% tot 60% HTML verdoezeling
lang nl describe HTML_OBFUSCATE_70_80            Bericht bevat 70% tot 80% HTML verdoezeling
lang nl describe HTML_OBFUSCATE_90_100           Bericht bevat 90% tot 100% HTML verdoezeling
lang nl describe HTML_TAG_BALANCE_BODY           HTML bevat ongebalanceerde "body" tags
lang nl describe HTML_TAG_BALANCE_HEAD           HTML bevat ongebalanceerde "head" tags
lang nl describe HTML_BADTAG_40_50               HTML bericht bevat 40% tot 50% foute tags
lang nl describe HTML_BADTAG_50_60               HTML bericht bevat 50% tot 60% foute tags
lang nl describe HTML_BADTAG_60_70               HTML bericht bevat 60% tot 70% foute tags
lang nl describe HTML_BADTAG_90_100              HTML bericht bevat 90% tot 100% foute tags
lang nl describe HTML_NONELEMENT_30_40           30% tot 40% van de HTML elementen zijn niet standaard
lang nl describe HTML_NONELEMENT_40_50           40% tot 50% van de HTML elementen zijn niet standaard
lang nl describe HTML_NONELEMENT_60_70           60% tot 70% van de HTML elementen zijn niet standaard
lang nl describe HTML_NONELEMENT_80_90           80% tot 90% van de HTML elementen zijn niet standaard
lang nl describe HTML_CHARSET_FARAWAY            Een vreemde taal wordt gebruikt in de karakterset
lang nl describe HTML_MIME_NO_HTML_TAG           HTML-only bericht, maar er is geen HTML tag
lang nl describe HIDE_WIN_STATUS                 Javascript om URLs te verbergen in het bericht
lang nl describe OBFUSCATING_COMMENT             HTML commentaar om het bericht te verdoezelen
lang nl describe UPPERCASE_50_75                 Bericht tekst bestaat voor 50-75% uit hoofdletters
lang nl describe UPPERCASE_75_100                Bericht tekst bestaat voor 75-100% uit hoofdletters
lang nl describe INVALID_MSGID                   Message-Id is ongeldig, volgens RFC 2822
lang nl describe FORGED_MUA_MOZILLA              Vervalste mail die afkomstig zou zijn van Mozilla
lang nl describe GUARANTEED_100_PERCENT          100% gegarandeerd
lang nl describe DEAR_FRIEND                     Beste vriend, klinkt niet erg bekend...
lang nl describe DEAR_SOMETHING                  Bevat 'Dear (iets)'
lang nl describe BILLION_DOLLARS                 Spreekt van heeel veel geld
lang nl describe EXCUSE_4                        Claimt dat je van de lijst verwijderd kan worden
lang nl describe EXCUSE_24                       Claimt dat je om deze advertentie hebt gevraagd
lang nl describe EXCUSE_REMOVE                   Heeft het over hoe je verwijderd kan worden van de lijst
lang nl describe STRONG_BUY                      Vertelt je over een goede aankoop
lang nl describe STOCK_ALERT                     Biedt aan je aandelen in de gaten te houden
lang nl describe NOT_ADVISOR                     Geen geregistreerde beleggings adviseur
lang nl describe PREST_NON_ACCREDITED            'Prestigieuze "Non-Accredited" Universiteiten'
lang nl describe BODY_ENHANCEMENT                Informatie over het vergroten van lichaamsdelen
lang nl describe BODY_ENHANCEMENT2               Informatie over het vergroten van lichaamsdelen
lang nl describe IMPOTENCE                       Medicijn voor impotentie
#lang nl describe NA_DOLLARS                      Praat over een miljoen Noord-Amerikaanse dollars
#lang nl describe US_DOLLARS_3                    Vermeldt miljoenen $ ($NN,NNN,NNN.NN)
#lang nl describe MILLION_USD                     Heeft het over miljoenen dollars
lang nl describe MONEY_BACK                      Niet-goed-geld-terug garantie
lang nl describe FREE_QUOTE_INSTANT              Gratis offerte
lang nl describe BAD_CREDIT                      Los al uw leningen op
lang nl describe REFINANCE_YOUR_HOME             Hyphoteek oversluiten
lang nl describe REFINANCE_NOW                   Hyphoteek oversluiten
lang nl describe NO_MEDICAL                      Geen medische keuring
lang nl describe FORWARD_LOOKING                 Aandelen waarschuwing
lang nl describe ONE_TIME                        Eenmalige afzettingspraktijk
lang nl describe JOIN_MILLIONS                   Voeg je bij miljoenen Amerikanen
lang nl describe ONLINE_PHARMACY                 Online apotheek
lang nl describe MARKETING_PARTNERS              Zegt dat je je bij een partner bedrijf hebt geregistreerd
lang nl describe LOW_PRICE                       Laagste prijzen
lang nl describe UNCLAIMED_MONEY                 Mensen laten het geld rondslingeren
lang nl describe OBSCURED_EMAIL                  Bevat een rot13ed adres
lang nl describe BANG_OPRAH                      Iets met Oprah!
lang nl describe ACT_NOW_CAPS                    Heeft het in hoofdletters over "nu in actie komen"
lang nl describe BANG_GUAR                  ...gegaranderd!
lang nl describe FREE_PORN                       Dikke kans op porno - Gratis Porno
lang nl describe CUM_SHOT                        Dikke kans op porno - Kwakjes
lang nl describe LIVE_PORN                       Dikke kans op porno - Rechtstreekse Porno uitzending
lang nl describe RATWARE_EGROUPS                 Bulk email kenmerk (eGroups) gevonden
lang nl describe RATWARE_OE_MALFORMED            X-Mailer bevat misvormde Outlook Express versie
lang nl describe FORGED_MUA_IMS                  Vals mailtje, pretendeert afkomstig te zijn van IMS
lang nl describe FORGED_MUA_OUTLOOK              Vals mailtje, pretendeert afkomstig te zijn van MS Outlook
lang nl describe FORGED_MUA_OIMO                 Vals mailtje, pretendeert afkomstig te zijn van MS Outlook IMO
lang nl describe FORGED_MUA_EUDORA               Vals mailtje, pretendeert afkomstig te zijn van Eudora
lang nl describe FORGED_MUA_THEBAT_CS            Mailtje dat pretendeert afkomstig te zijn van The Bat! (charset)
lang nl describe FORGED_MUA_THEBAT_BOUN          Mailtje dat pretendeert afkomstig te zijn van The Bat! (boundary)
lang nl describe FORGED_OUTLOOK_HTML             Outlook kan geen berichten met alleen HTML versturen
lang nl describe FORGED_IMS_HTML                 IMS kan geen berichten met alleen HTML versturen
lang nl describe FORGED_THEBAT_HTML              The Bat! kan geen berichten met alleen HTML versturen
lang nl describe FORGED_QUALCOMM_TAGS            QUALCOMM email programma's versturen geen HTML zoals deze
lang nl describe FORGED_IMS_TAGS                 IMS email programma's versturen geen HTML zoals deze
lang nl describe FORGED_OUTLOOK_TAGS             Outlook verstuurt geen HTML zoals deze
lang nl describe RATWARE_HASH_DASH               Bevat een hashbuster in Send-Safe opmaak
lang nl describe NUMERIC_HTTP_ADDR               Gebruikt een numeriek IP adres in een URL
lang nl describe HTTP_ESCAPED_HOST               Gebruikt %-escapes in de hostname van een URL
lang nl describe HTTP_EXCESSIVE_ESCAPES          Volkomen overbodige %-escapes in een URL
lang nl describe IP_LINK_PLUS                    "Dotted-decimal" IP address gevolgd door CGI
lang nl describe WEIRD_PORT                      Gebruikt een afwijkend poort nummer voor HTTP
lang nl describe YAHOO_RD_REDIR                  Bevat een Yahoo Redirect URI
lang nl describe YAHOO_DRS_REDIR                 Bevat een Yahoo Redirect URI

# 23_bayes.cf
ifplugin Mail::SpamAssassin::Plugin::Bayes
lang nl describe BAYES_00                        Bayesiaanse kans op spam is 0 tot 1%
lang nl describe BAYES_05                        Bayesiaanse kans op spam is 1 tot 5%
lang nl describe BAYES_20                        Bayesiaanse kans op spam is 5 tot 20%
lang nl describe BAYES_40                        Bayesiaanse kans op spam is 20 tot 40%
lang nl describe BAYES_50                        Bayesiaanse kans op spam is 40 tot 60%
lang nl describe BAYES_60                        Bayesiaanse kans op spam is 60 tot 80%
lang nl describe BAYES_80                        Bayesiaanse kans op spam is 80 tot 95%
lang nl describe BAYES_95                        Bayesiaanse kans op spam is 95 tot 99%
lang nl describe BAYES_99                        Bayesiaanse kans op spam is 99 tot 100%
lang nl describe BAYES_999                       Bayesiaanse kans op spam is 99.9 tot 100%
endif
#
lang nl describe DRUG_DOSAGE			Heeft het over een prijs per dosis

ifplugin Mail::SpamAssassin::Plugin::AntiVirus
lang nl describe MIME_SUSPECT_NAME               MIME bestandsnaam komt niet overeen met inhoud
endif

ifplugin Mail::SpamAssassin::Plugin::DCC
lang nl describe DCC_CHECK                       Gevonden in DCC (http://www.dcc-servers.net/dcc/)
endif

ifplugin Mail::SpamAssassin::Plugin::Pyzor
lang nl describe PYZOR_CHECK                     Gevonden in Pyzor (http://pyzor.sf.net/)
endif

ifplugin Mail::SpamAssassin::Plugin::TextCat
lang nl describe BODY_8BITS                      Bericht bevat 8 aaneengesloten 8-bit karakters
lang nl describe UNWANTED_LANGUAGE_BODY          Bericht is opgesteld in een ongewenste taal
endif

ifplugin Mail::SpamAssassin::Plugin::AccessDB
lang nl describe ACCESSDB                        Bericht zou gevangen zijn door accessdb
endif

lang nl describe NORMAL_HTTP_TO_IP               Gebruikt een "dotted-decimal" IP adres in een URL

