Copyright (c) 1999-2008 Maurice de Bijl
Copyright (c) 1999-2008 Maurice de Bijl
Nederlandstalige site teksten Nederlandstalige site teksten English site texts English site texts Deutsche sprache
Start pagina
Projectjes
Reviews
How-to's
Automotive
Blog
Archief

Downloads
Smartphone
PocketPC
Windows
Linux
Scripts
Alle downloads

Overzichten van artikelen en software
Meest populair
Laatst geupdate
Op alfabet
Alle tags

Handigheidjes
Sitemap
Alle trefwoorden
RSS Feed RuweBit General RSS Feed
Del.icio.us
eKudos
Mail webmaster
Disclaimer

Gerelateerde sites
Software kopen
Leo Bueno
Mijn Eigen Wereld


Linux  How-to`s  
0% spam met een challenge/response spamfilter
Talen:Lees in originele taal(Nederlands) Translate to English Deutsche Übersetzung Tools:Printer vriendelijke versieDownload artikel als PDFBookmark:Bookmark deze pagina in je browserBookmark deze pagina op GoogleBookmark deze pagina op DiggBewaar dit artikel op del.icio.usGeef dit artikel een eKudo
auteur: Maurice, geplaatst: 2006-12-01, laatste update: 2006-12-01, populariteit: 6716 keer opgevraagd6716 keer opgevraagd6716 keer opgevraagd6716 keer opgevraagd 6700+



Een challenge/response spam-filter is:

Wikipedia zei: a family of protocols in which one party presents a question (challenge) and another party must provide a valid answer (response) to be authenticated.

Volledige uitleg op Wikipedia. In deze context betekent het simpelweg dat iemand die jou voor het eerst een mail stuurt zich eerst moet laten valideren.

Hoe werkt het?

In grote lijnen werkt het als volgt:

Iemand stuurt jou voor het eerst een E-mail
Deze persoon krijgt een automatisch (bounce-)mailtje terug waar hij of zij op moet antwoorden, totdat hij/zij antwoordt blijft het mailtje 'hangen' in de mail queue
Hij/zij beantwoordt het mailtje
Het eerste mailtje dat in eerste instantie tegen werd gehouden, wordt nu naar jou doorgestuurd
Het E-mail adres van de afzender wordt in een 'whitelist' geplaatst en voortaan wordt al zijn/haar mail direct doorgestuurd naar jou.

Deze werkwijze houdt praktisch alle spam tegen, omdat spammers hun mail automatisch in grote getale versturen. Een bounce mailtje dat terugkomt wordt genegeerd.

Voor en nadelen

Praktisch geen spam meer
Sommige mensen snappen de 'bounce' mail niet
Je moet een eigen mailserver draaien (in de oplossing die ik verderop beschrijf in ieder geval)
Configuratie is lasting

TMDA, een implementatie

In deze paragraaf in het kort een implementatie van een challenge/response spamfilter. Het is niet de bedoeling om een hele handleiding te schrijven maar het wijst je in de jusite richting. Er zijn meerdere oplossingen, dit is er een van.

Benodigdheden:
Eigen domeinnaam met DNS beheer
Een eigen Linux mailserver (ik gebruik Postfix als mailtransfer agent en Qpopper als POP3 programma)
TMDA als challenge/response spamfilter
Tmda-cgi als web-frontend

TMDA heeft ook een SMTP-proxy (genaamd 'tmda-ofmipd') die je kunt gebruiken als SMTP-server in je netwerk. Als je een mail verstuurd via die server wordt de geadresseerde automatisch toegevoegd aan de whitelist.


Mijn configuratie ziet er als volgt uit:

  +----+

|mail|
+----+
|
V
+--------+ +--------+ +--------+
| | | | | |
| Mail |----->| TMDA |----->| ISP |-----> Ontvanger
| client | | SMTP | | SMTP |
| | | @ 25| | |
+--------+ +--------+ +--------+
^
| +--------+ +--------+ +--------+ +--------+
| | | | | | | | | +----+
+-----------| QPOPPER|<-----| TMDA |<-----| POSTFIX|<-----| BASEMO-|<--|mail|
| POP3 | | FILTER | | SMTP | | TIVE.NL| +----+
| @ 110| | | | @ 9925| | | @jouwdomein nl
+--------+ +--------+ +--------+ +--------+

Postfix draait bij mij op poort 9925 ipv poort 25 omdat mijn internetprovider (ISP) @Home poort 25 heeft dichtgezet. Basemotive.nl zorgt er voor dat de mail op een afwijkende poort wordt afgeleverd.

Voordeel van deze afwijkende poort is dat ik de TMDA SMTP-proxy 'tmda-ofmipd' op poort 25 kan laten draaien. Al mijn clients op het interne netwerk sturen mail via die proxy. Wanneer de poort al in gebruik is moet je voor tmda-ofmipd dus een andere poort verzinnen.

Let op: tmda-ofmipd vereist authenticatie, dus je moet in je E-mail ook een naam en wachtwoord configureren bij de uitgaande mail


Voorbeelden van configuratie files

Op de site van TMDA staat uitgebreide documentatie. In deze paragraaf wat voorbeelden van configuratie files, zonder verdere uitleg.

~/.forward
"|/usr/bin/procmail -p"


~/.procmailrc
# Run the message through tmda-filter.
:0 w
| /usr/sbin/tmda/bin/tmda-filter

# Take the exit code from TMDA.
EXITCODE=$?

# TMDA takes care of final delivery
DEFAULT=/dev/null


~/tmdarc
#
# Global TMDA settings
#
# Additional TMDA settings can be found in ~/.tmda/config
#
# We use postfix
MAIL_TRANSFER_AGENT = "postfix"

# We use - as delimiter (name-123123-bladibla(at)www(dot)jouwdomein.nl)
RECIPIENT_DELIMITER = "-"

# This URL is for web confirmation
CGI_URL = "http://www.jouwdomein.nl/cgi-bin/tmda.cgi"

# Bounce and error texts
BOUNCE_TEXT_INVALID_CONFIRMATION = "This confirmation address is invalid. Are you sending the confirmation messages from another address than the original message?"
BOUNCE_TEXT_FILTER_INCOMING = "Message rejected by recipient due to spam filtering"
BOUNCE_TEXT_NONEXISTENT_PENDING = "Your original message could not be located. Please send another (non-confirmation) message."

# Template dir (for cgi app)
TEMPLATE_DIR = "/usr/sbin/tmda/templates/"

# Hostname (for correct display in CGI scripts)
HOSTNAME = "jouwdomein.nl"


~/.tmda/config
# -*- python -*-

# sample.config - Sample configuration file for TMDA.
#
# See http://tmda.net/config-vars.html for descriptions of all
# the available options.
#
# NOTE: ~/.tmda/config must be chmod 400 or chmod 600 !

#########################################################
# qmail/Courier required variables; required only for
# qmail/Courier users
#
# (none at this time)
#
#########################################################

#################################################################
# Non-qmail/Courier required variables; required only for
# non-qmail/Courier users
#
# Uncomment one line from each section.
#
# Please read http://tmda.net/config-vars.html for more information
# on these variables.
#################################################################

DELIVERY = "/var/mail/naam"
CONFIRM_ADDRESS = "naam(at)jouwdomein(dot)nl"
RECIPIENT_HEADER = "To"
FULLNAME = "Je volledige naam"
CONFIRM_APPEND = "/home/naam/.tmda/lists/confirmed"
BARE_APPEND = "/home/naam/.tmda/lists/auto_whitelist"

######################################################################
# No other variables are required, but you may be interested in
# further customization. See http://tmda.net/config-vars.html for
# more information on the other available configuration variables.
#
# Here are examples of some recommended configuration variables.
######################################################################

LOGFILE_DEBUG = os.path.expanduser("~/.tmda/logs/debug")
LOGFILE_INCOMING = os.path.expanduser("~/.tmda/logs/incoming")
LOGFILE_OUTGOING = os.path.expanduser("~/.tmda/logs/outgoing")


~/.tmda/filters/incoming
### ~/.tmda/filters/incoming (first match wins) ###

# Accept all bounces (messages with an empty envelope sender)
from <> ok

# Include my blacklist and whitelist

# manual blacklist
from-file ~/.tmda/lists/blacklist drop

# manual whitelist
from-file ~/.tmda/lists/whitelist accept

# auto whitelist (recipients of sent messages)
from-file ~/.tmda/lists/auto_whitelist accept

# confirmation whitelist (senders of confirmed messages)
from-file ~/.tmda/lists/confirmed accept

# Manual accept
to prive(at)jouwdomein(dot)nl accept

# Manual bounces
to spam(at)jouwdomein(dot)nl bounce

# Razor is een tool om te checken of de ontvangen mail spam is,
# zo ja: lekker laten vallen
pipe "/usr/bin/razor-check" drop


~/.tmda/filters/outgoing
### ~/.tmda/filters/outgoing (first match wins) ###

# Do not use ~/ directories because this script
# will be run under the tofmipd account

# Send all messages untagged and put recipient on whitelist
to * bare=append


Nog wat tips voor postfix


/etc/postfix/main.cf
mydomain = jouwdomein.nl
myorigin = $mydomain

mydestination = $myhostname, localhost.$mydomain, $mydomain

# Je interne netwerk
mynetworks = 10.0.0.0/24, 127.0.0.0/8

# Allow all interfaces
inet_interfaces = all

#
# relay host is de mailserver die gebruikt wordt om mail te sturen
# dit moet mail.home.nl zijn, want dynamische mailservers staan
# in SORBS gelist!!
#
relayhost =

local_recipient_maps =
# dit zorgt er voor dat er geen users gereject worden
# (henk-123123-123123bla(at)jouwdomein(dot)nl wordt anders gereject)

recipient_delimiter = -


Na wijziging, postfix even opnieuw starten:
/etc/rc.d/postfix restart


/etc/postfix/master.cf

# In mijn geval moet ik niet luisteren op poort 25 maar op 9925
# In /etc/postfix/master.cf toevoegen:
#
# lmtp unix - - n - - lmtp
#
9925 inet n - n - - smtpd -o content_filter=
#
# En smtp (1 regel) uitcommentarieren
#

De recipient delimiter moet in TMDA en postfix gelijk zijn



Tags  Linux  How-to`s  

end
Copyright © 1999-2008 Maurice de Bijl
Dit artikel is gepubliceerd op 2006-12-01
Talen:Lees in originele taal(Nederlands) Translate to English Deutsche Übersetzung Tools:Printer vriendelijke versieDownload artikel als PDFBookmark:Bookmark deze pagina in je browserBookmark deze pagina op GoogleBookmark deze pagina op DiggBewaar dit artikel op del.icio.usGeef dit artikel een eKudo

Reacties op dit artikel
Er zijn nog geen reacties geplaatst op dit artikel. Je kunt de eerste zijn.

Reactie toevoegen
Een reactie toevoegen is simpel en registratie is niet nodig!

Je IP-adres wordt gelogd, maar niet gepubliceerd, alle reacties hebben een E-mail bevestiging nodig en worden stuk voor stuk gemodereerd. Misbruik wordt niet getolereerd.
Naderhand wijzigen van je reactie is niet mogelijk

Naam:
E-mail adres:

E-mail wordt alleen gebruikt voor bevestiging en zal niet gepubliceerd worden.

Reactie:

Reacties a.u.b. in taal van artikel (Nederlands).
HTML is niet toegestaan, BB-code wel.


 Gerelateerde onderwerpen Klik om te dicht te klappen
Mijn groene server project
'Module is unknown' bij het inloggen
Waarom Linux software RAID?
Yellow Dog 6 voor de PS3
HOEDOE ik draadloze netwerken kraken
Meer gerelateerde artikelen
 Tag wolk Klik om te dicht te klappen

announcements automotive gaming gran turismo hacking hoedoe htc linux mobile phone news playstation pocketpc projects ps3 reviews smartphone software tv tweaking video virtualization vista windows windows mobile wireless
Laat alle tags zien

 Zoek trefwoord Klik om te dicht te klappen

Meer..
 Populair Klik om te dicht te klappen
WakeOnLan Silvermine Snappixx
 Ondersteuning Klik om te dicht te klappen
WakeOnLan
Silvermine
Snappixx
 Spreuk van de Dag Klik om te dicht te klappen
 Webwinkel Klik om te dicht te klappen
RuweBit Merchandising
Store 1 Store 2
Site's contents and design are copyright © 1999-2008 Maurice de Bijl - 6717 page requests
gegeneerd op Thu, 20 Nov 2008 16:04:40 CET (GMT+0100) in 87.23 msec op host srv010106.webreus.nl
bron: http://www.ruwebit.net/article/177 - [Lage bandbreedte versie]