Child pages
  • Levelezés - Spamszűrés
Skip to end of metadata
Go to start of metadata

Gondolom nem kell leírnom, hogy mit jelent a spamszűrés, mindenki ismeri a spam fogalmát. A spam levelek ellen alapvetően kétféle módon védekezhetünk, az egyik az, amikor a szabályos SMTP működést követeljük meg, a másik esetben a levelek tartalma alapján dönti el a spamszűrő, hogy dobja-e a levelet, vagy kézbesítse. Az első megoldásra a postgrey kényelmes, a második megoldásra majd a későbbiekben visszatérünk, ha a postgrey nem válna be.

Postgrey

Csapjunk a közepébe:

# yum install postgrey
# chkconfig postgrey on

Majd hozzuk létre a /etc/sysconfig/postgrey fájlt és írjuk bele az alábbit:

/etc/sysconfig/postgrey
options="--unix=/var/spool/postfix/postgrey/socket --delay=60 --greylist-text 'User disk quota has been exceeded'"

Ennek a lényege az, hogy 60 másodperc után engedi be az ismeretlen feladótól és szerverről származó leveleket, és ennyi a működésének alapja. A normál SMTP szerver újraküldi a levelet, a spammer pedig nem fog azzal szórakozni, hogy újraküldje. Ha mégis elolvassa az üzenetet, akkor azt látja, hogy a felhasználó átmenetileg nem képes leveleket fogadni, mert betelt a neki szánt terület (az SMTP szerverek szoktak ilyen választ küldeni, ekkor a küldő szerver kicsit később újra megpróbálja a levelet átadni, hátha közben lett hely).

Indítsuk el a szolgáltatást:

# service postgrey start
Starting postgrey:                                         [  OK  ]

Majd nézzük meg a naplót a /var/log/maillog állományban:

Jun 27 08:29:17 2619 postgrey[31851]: Process Backgrounded
Jun 27 08:29:17 2619 postgrey[31851]: 2012/06/27-08:29:17 postgrey (type Net::Server::Multiplex) starting! pid(31851)
Jun 27 08:29:17 2619 postgrey[31851]: Binding to UNIX socket file /var/spool/postfix/postgrey/socket using SOCK_STREAM#012
Jun 27 08:29:17 2619 postgrey[31851]: Setting gid to "496 496"
Jun 27 08:29:17 2619 postgrey[31851]: Setting uid to "496"

Tökéletes, egy apróság van vissza, a Postfix-et megtanítani arra, hogy kérdezze meg a Postgrey-t a levél átvételének lehetőségéről, ehhez egy – már meglévő – sort kell módosítanunk a /etc/postfix/main.cf fájlban:

/etc/postfix/main.cf
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, check_policy_service unix:postgrey/socket, permit

Majd újra kell indítanunk a Postfix szolgáltatást:

# service postfix restart
Shutting down postfix:                                     [  OK  ]
Starting postfix:                                          [  OK  ]

Próbáljuk ki, működik-e:

$ telnet 193.178.119.31 25
Trying 193.178.119.31...
Connected to javaforum.hu.
Escape character is '^]'.
220 mail.javaforum.hu ESMTP Postfix
HELO javaforum.hu
250 mail.javaforum.hu
mail from: auth.gabor@gmail.com
250 2.1.0 Ok
Rcpt to: felhasznalo@javaforum.hu
450 4.2.0 <felhasznalo@javaforum.hu>: Recipient address rejected: User disk quota has been exceeded

Hát a leveleket már visszadobja:

Jun 27 08:32:40 2619 postgrey[324]: action=greylist, reason=new, client_name=ebo.hu, client_address=193.142.214.109, sender=auth.gabor@gmail.com, recipient=felhasznalo@javaforum.hu
Jun 27 08:32:40 2619 postfix/smtpd[32674]: NOQUEUE: reject: RCPT from ebo.hu[193.142.214.109]: 450 4.2.0 <felhasznalo@javaforum.hu>: Recipient address rejected: User disk quota has been exceeded; from=<auth.gabor@gmail.com> to=<felhasznalo@javaforum.hu> proto=SMTP helo=<javaforum.hu>

Látjuk a naplórészletben, hogy új kliensnek gondolta az úgynevezett tripletet (client_name – sender – recipient), várjuk meg a megadott 60 másodpercet és próbáljuk újra:

$ telnet 193.178.119.31 25
Trying 193.178.119.31...
Connected to javaforum.hu.
Escape character is '^]'.
220 mail.javaforum.hu ESMTP Postfix
HELO javaforum.hu
250 mail.javaforum.hu
mail from: auth.gabor@gmail.com
250 2.1.0 Ok
Rcpt to: felhasznalo@javaforum.hu
250 2.1.5 Ok
quit
221 2.0.0 Bye
Connection closed by foreign host.

Működik, nagyszerű! (smile)

      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels