Introducció
El programari lliure
Els programes anti-spam
En aquest document descriurem el programi lliure que fem servir per a rebutjar els missatges spam. Durant 2004, el nostre servidor va rebre entre 300.000 i 400.000 connexions SMTP cada mes, el 72.13% de les quals van ser rebutjades abans que el remitent enviés la comanda DATA (vegeu http://www.ietf.org/rfc/rfc0821.txt). Heus ací el gràfic:

Considerem que és millor rebutjar com més aviat millor la connexió amb l'ordinador que ens vol enviar spam, idealment abans que el remitent enviï la comanda DATA, ja que així no es malgasta ample de banda acceptant els missatges ni responent-los. A més, tot i que tenim l'obligació moral d'explicar als clients rebutjats el motiu del rebuig, mai no volem enviar tals explicacions (bounces) a les adreces que apareixen com a remitents ens els camps Return-Path i From, ja que són fàcilment falsificades.
Principi de la pàgina | Els programes anti-spam
El programi lliure que fem servir és el següent:
Principi de la pàgina | Els programes anti-spam
rblsmtpd, que forma part del programari ucspi-tcp, controla les connexions a port 25 (SMTP). Abans d'acceptar cap connexió, el rblsmtpd consulta una o més llistes DNSBL (DNS Blackhole Lists o Llistes negres de servidors de dominis), les quals consten de les adreces IP d'ordinadors que tenen fama d'enviar spam. Si la IP s'hi troba, la connexió es talla i l'ordinador del remitent rep una resposta explanatòria.
Heus ací els noms de les quatre llistes DNSBL que fem servir i exemples de les respostes que donen:
2005-02-13 19:44:25.385212500 rblsmtpd: 220.175.197.129 pid 884: \ 451 http://www.spamhaus.org/SBL/sbl.lasso?query=SBL12656
2005-02-13 19:44:51.903734500 rblsmtpd: 200.150.186.25 pid 26542: \ 451 http://dsbl.org/listing?200.150.186.25
2005-02-13 00:54:56.313103500 rblsmtpd: 200.206.158.161 pid 29225: \ 451 This mail was handled by an open relay - please visit \ <http://ORDB.org/lookup/?host=200.206.158.161>
2005-02-14 20:53:04.389340500 rblsmtpd: 210.178.90.5 pid 19892: \ 451 Open proxy - see http://opm.blitzed.org/210.178.90.5
Notem que es pot fer excepcions a aquestes llistes. Per exemple, el bloc d'adreces 213.4.0.0/16 (terra.es) es troba a moltes llistes negres: 213.4.129.129 a nou, 213.4.129.49 a quatorze, etc. (vegeu http://www.dnsstuff.com/tools/ip4r.ch?ip=). Però molts usuaris que no envien mai spam no tenen opcions sinó fer servir aquests servidors de terra i, per tant, no volem rebutjar-los. Així podem incloure la línia següent com a regla per a tcpserver per tal que les connexions d'aquest bloc s'acceptin:
213.4.:allow,RBLSMTPD=""
Com veurem en la secció següent, també podem aprofitar aquest arxiu de configuració per enviar una resposta a les IPs que rebutgem, en lloc de disconnectar-les a seques.
Principi de la pàgina | Els programes anti-spam
tcpserver accepta o rebutja connexions TCP seguint les instruccions compilades per tcprules. Aquestes instruccions consten de línies de text com les següents:
127.0.0.:allow,RELAYCLIENT=""209.150.128.170:allow,NOMFCHECK="1"213.4.:allow,RBLSMTPD=""141.52.27.52:allow,RBLSMTPD="Connection rejected: see
http://visca.com/rej/?141.52.27.52"18.23.0.32:denyEl nostre procés per afegir IPs a la llista de rebutjades és el següent:
IP::allow,RBLSMTPD="Connection rejected: see http://visca.com/rej/?IP).
216.136.204.119 => 280 => mx2.freebsd.org freebsd-user@visca.com 85.136.2.203 => 118 Rejected by badrcptto 202.138.195.203 => 72 dropped connection 71.35.105.27 => 72 => 71-35-105-27.tukw.qwest.net ****@remote.com *****@remote.com *****@remote.com 127.0.0.1 => 49 => localhost 65.122.27.205 => 36 Denied in tcp.smtp file 83.33.163.190 => 46 dropped connection 141.52.27.52 => 42 => fzkmail2.fzk.de localuser@visca.com 213.97.182.177 => 38 Rejected by badrcptto 80.32.82.150 => 34 => (correu legítim) 217.126.126.59 => 28 dropped connection 213.97.33.124 => 21 => (correu legítim)
Tot és correu vàlid excepte els 42 missatges enviats des de 141.52.27.52 a localuser@visca.com. Després de comprovar que eren missatges spam, vam afegir aquesta IP a la llista llegida per tcprules per denegar accés a 141.52.27.52.
Per acabar aquest apartat, veurem un intent de connectar al servidor des d'una IP rebutjada per tcpserver/tcprules:
$ telnet visca.com 25 Trying 69.41.171.207... Connected to visca.com. Escape character is '^]'. 220 rblsmtpd.local helo petonets.com 250 rblsmtpd.local mail from: user@petonets.com 250 rblsmtpd.local rcpt to: user@visca.com 250 rblsmtpd.local data 451 Connection rejected: see http://visca.com/rej/?213.97.34.143
El nostre diari de visites SMTP mostra el següent:
2005-02-27 16:39:22.343981500 tcpserver: pid 26381 from 213.97.34.143 2005-02-27 16:39:22.344302500 tcpserver: ok 26381 :69.41.171.207:25 :213.97.34.143::61242 2005-02-27 16:39:22.346300500 rblsmtpd: 213.97.34.143 pid 26381: \ 451 Connection rejected: see http://visca.com/rej/?213.97.34.143
Principi de la pàgina | Els programes anti-spam
El mfcheck només comprova que existeixen records DNS tipus 'A' (Address Records) i 'MX' (Mail Exchange Records) per al domini que intenta connectar al nostre servidor (vegeu http://support.algx.net/cst/dns/dns2.html#A i http://support.algx.net/cst/dns/dns2.html#MX). Si no n'hi ha, el missatge es rebutja.
Heus ací un intent de connectar al servidor utilitzant un domini que no existeix:
$ telnet visca.com 25 Trying 69.41.171.207... Connected to visca.com. Escape character is '^]'. 220 server.visca.com ESMTP helo petonets.com 250 server.visca.com mail from: lou@pepepepepepepepepepep 553 sorry, your envelope sender domain must exist (#5.7.1)
El nostre diari de visites SMTP mostra el següent:
2005-02-13 20:06:25.128602500 tcpserver: pid 3391 from 213.97.34.143 2005-02-13 20:06:25.143097500 tcpserver: ok 3391 :69.41.171.207:25 :213.97.34.143::62530 2005-02-13 20:06:51.904363500 pid 3391 \ mfcheck permanent lou@pepepepepepepepepepep
Principi de la pàgina | Els programes anti-spam
Aquest program ens permet rebutjar connexions especificades en un arxiu a /var/qmail/control/badhelo. L'única entrada que tenim a l'arxiu és la nostra pròpia IP 69.41.171.207, ja que si un altre intenta connectar al nostre servidor dient que tingui la nostra IP, sabem que no és cert.
Aquí sota tenim un intent de connectar al servidor des d'una màquina remota utilitzant la salutació helo 69.41.171.207:
$ telnet visca.com 25 Trying 69.41.171.207... Connected to visca.com. Escape character is '^]'. 220 server.visca.com ESMTP helo 69.41.171.207 250 server.visca.com mail from: user@petonets.com 250 ok rcpt to: user@visca.com 553 sorry, your helo parameter is in my badhelo list (#5.7.1)
El nostre diari de visites SMTP mostra el següent:
2005-02-13 19:59:37.671821500 tcpserver: pid 12283 from 213.97.34.143 2005-02-13 19:59:37.674522500 tcpserver: ok 12283 :69.41.171.207:25 :213.97.34.143::62404 2005-02-13 19:59:52.084769500 pid 12283 badhelo 69.41.171.207
Principi de la pàgina | Els programes anti-spam
El programa badrcptto rebutja tot missatge dirigit a adreces en l'arxiu ./badrcptto. Hi ha dues raons importants que hem de tenir aquesta capacitat: per a rebutjar correctament missatges a adreces no existents i per a defensar-nos contra els joe-jobs.
Un cop que una adreça de correu electrònic formi part de les llistes dels spammers no hi ha res a fer per treure'n. L'adreça rebrà spam per a sempre més i considerem que val més donar-la de baixa. Però donant de baixa a una adreça no atura l'arribada cada dia de centenars de missatges al servidor dirigits a aquesta adreça obsoleta.
El badrcptto rebutja tots aquests missatges en el moment de veure que el destinatari ja no és vàlid, sense gastar l'ample de banda necessari per a acceptar el missatge sencer ni, encara més important, sense retornar un resposta de rebuig (bounce) als innocents que poden aparèixer en els camps Return-Path i From.
Un joe-job és l'acte d'enviar milions de missatges spam utilitzant l'adreça d'una víctima innocent en els camps Return-Path o From. Si els qui reben aquest spam no miren atentament les capçaleres, podran pensar que la víctima innocent n'és l'autèntic originador i denunciar-lo. Però potser encara pitjor, una part important dels missatges spam va dirigida a adreces no existents, així provocant respostes de rebuig (bounces) que poden arribar a inundar el servidor de la víctima. En casos extrems --milers de missatges cada hora-- no hi ha res a fer sinó afegir temporalment l'adreça de la víctima a l'arxiu badrcptto.
També hi ha casos en què el joe-job va dirigit contra un domini, amb les adreces falsificades creades a l'atzar (aba@victima.com, abd@victima.com, etc.). En aquest cas, si el volum de missatges de rebuig fa que el servidor no pot funcionar amb normalitat, la millor solució és la instal·lació dels pedaços goodrcptto, realrcptto o validrctptto, els quals rebutgen missatges a usuaris no existents. També podem eliminar aquests missatges amb qmail-qfilter.
Aquí sota tenim un intent d'enviar un missatge a una adreça que forma part de l'arxiu badrcpttto:
$ telnet visca.com 25 Trying 69.41.171.207... Connected to visca.com. Escape character is '^]'. 220 server.visca.com ESMTP helo petonets.com 250 server.visca.com mail from: user@petonets.com 250 ok rcpt to: lou@visca.com 553 sorry, this recipient is in my badrecipientto list (#5.7.1)
El nostre diari de visites SMTP mostra el següent:
2005-02-13 19:58:12.293372500 tcpserver: pid 26485 from 213.97.34.143 2005-02-13 19:58:12.296056500 tcpserver: ok 26485 :69.41.171.207:25 :213.97.34.143::62377 2005-02-13 19:59:16.155637500 qmail-smtpd: badrcptto: lou@visca.com at 213.97.34.143
Principi de la pàgina | Els programes anti-spam
El programa badmailfrom rebutja tot missatge si el envelope sender (Return-Path) troba en l'arxiu ./badmailfrom.
Aquí sota tenim un intent d'enviar un missatge des d'una adreça que forma part de l'arxiu badmailfrom:
$ telnet visca.com 25 Trying 69.41.171.207... Connected to visca.com. Escape character is '^]'. 220 server.visca.com ESMTP helo there 250 server.visca.com mail from: success4U@opportunity.com 250 ok rcpt to: user@visca.com 553 sorry, your envelope sender is in my badmailfrom list (#5.7.1)
El nostre diari de visites SMTP mostra el següent:
2005-02-13 20:09:35.094038500 tcpserver: pid 2647 from 213.97.34.143 2005-02-13 20:09:35.106705500 tcpserver: ok 2647 :69.41.171.207:25 :213.97.34.143::62589 2005-02-13 20:09:53.687669500 pid 2647 badmailfrom success4U@opportunity.com
Principi de la pàgina | Els programes anti-spam
El programa qmail-qfilter permet filtrar el envelope o el cos del missatge; també pot tallar la connexió i enviar a l'ordinador del remitent un missatge explicant el motiu del rebuig. Òbviament, per a fer això cal acceptar el missatge, però podem fer que els missatges de rebuig --una sola línia de text, no tot el missatge sencer-- van directament a l'ordinador del remitent, no als innocents que poden aparèixer en els camps Return-Path i From.
Per exemple, es pot rebutjar missatges a usuaris no-existents o bé missatges que tenen vinculacions amb una extensió perillosa per als usuaris de Windows.
Aquí sota tenim un intent d'enviar un missatge a un usuari no-existent:
$ telnet visca.com 25 Trying 69.41.171.207... Connected to visca.com. Escape character is '^]'. 220 server.visca.com ESMTP helo petonets.com 250 server.visca.com mail from: user@petonets.com 250 ok rcpt to: djdjdj@visca.com 250 ok data 354 go ahead Hi. . 554 mail rejected: recipient address does not exist (#5.3.0)
El nostre diari de visites QFILTER mostra el següent:
TIME=02-13 20:50:03 TCPREMOTEIP=213.97.34.143 QMAILHOST=petonets.com QMAILUSER=lou QMAILRCPTS=djdjdj@visca.com Non-existent: djdjdj@visca.com
Aquí sota tenim un intent d'enviar un missatge amb una vinculació que té una extensió prohibida:
$ telnet visca.com 25 Trying 69.41.171.207... Connected to visca.com. Escape character is '^]'. 220 server.visca.com ESMTP helo petonets.com 250 server.visca.com mail from: user@petonets.com 250 ok rcpt to: user@visca.com 250 ok data 354 go ahead Subject: Imatge falsa From: sexi-sexi@meuca.com Content-Type: image/jpeg Content-Disposition: attachment; filename=pervers.jpeg.scr /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAA0JCgsKCA0LCwsPDg0QFCEVFBISFCgdHhghMCoyMS8q Li00O0tANDhHOS0uQllCR05QVFVUMz9dY1xSYktTVFH/2wBDAQ4PDxQRFCcVFSdRNi42UVFRUVFR UVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVH/wAARCAKcBE4DASIA AhEBAxEB/8QAGwAAAgMBAQEAAAAAAAAAAAAAAAECAwQFBgf/xABJEAACAgEDAgQDAwgFCgYDAQEB etc. . 554 mail rejected: attachment has banned extension (#5.3.0)
El nostre diari de visites QFILTER mostra el següent:
TIME=02-13 20:50:03 TCPREMOTEIP=213.97.34.143 QMAILHOST=petonets.com QMAILUSER=lou QMAILRCPTS=user@visca.com Subject: Imatge falsa From: sexi-sexi@meuca.com Checking filename... File named pervers.jpeg.scr matched a banned extension!
Principi de la pàgina | Els programes anti-spam
DATA si:
Principi de la pàgina | Els programes anti-spam
Martin Louis Hevly és administrador de sistems del servidor visca.com, on s'allotja uns cinquanta dominis. També és autor dels cinc volums de Gramàtica anglesa i de la web Anglès fàcil, un mètode per a aprendre l'anglès on-line. Finalment, podeu seguir els enllaços següents per a escoltar la seva música:
Ni Quarts Ni Hores
La música d'en
Lou Hevly
Robert the Robot and Lou the Human
Principi de la pàgina | Els programes anti-spam