Antispam hadjárat - SPF, Postfix és társai

A kéretlen reklámlevél terjesztők egyik roppant bosszantó szokása, hogy mások e-mail címét felhasználva terjesztik küldeményeiket szerte az Interneten. A postafiók valódi tulajdonosa pedig értetlenül szemléli a neki visszapattanó értesítéseket, amely szerint a címzett ismeretlen, vagy levelének kézbesítése el lett utasítva, mivel kéretlen üzenetet tartalmazott. Levelező szerver üzemeltetőként az egyik alapvető feladatunk az, hogy megpróbáljuk az ilyen e-mail cím visszaéléseket kiküszöbölni.

Ennek egyik lehetséges megoldása az úgynevezett SPF - Sender Policy Framework - alkalmazása. Az SPF alkalmazásával a DNS zóna tulajdonosa meghatározhatja, hogy mely levelező szerverek jogosultak a kérdéses tartomány nevében leveleket küldeni. Az alábbi példában egy tartomány DNS bejegyzése látható, az SPF rekorddal együtt:

$TTL 43200
@ IN SOA ns1.pelda.hu. hostmaster.pelda.hu. (
         2014111401 ; Serial
               3600 ; Refresh
               3600 ; Retry
            1209600 ; Expire
             43200) ; Minimum TTL

         IN     NS    ns1.pelda.hu.
         IN     NS    ns2.pelda.hu.
         IN     MX 10 mail.pelda.hu.
         IN     A     195.56.45.39
         IN     TXT   "v=spf1 ip4:195.56.45.39 a -all"

ns1             A     195.56.45.39
ns2             A     195.56.45.39
www             A     195.56.45.39
server01        A     195.56.45.39
mail            A     195.56.45.39

Az SPF bejegyzés valójában egy TXT rekord a DNS-ben, amely azt állítja, hogy a pelda.hu tartomány e-mail fiókjai nevében kizárólag a 195.56.45.39 IP címmel rendelkező levelezőszerver jogosult e-mailt küldeni. A paraméterek jelentése a következő:

  • "v=spf1" - az SPF verziószáma
  • "ip4:195.56.45.39" - ha a küldő számítógép ezzel az IP címmel (itt megadható IP tartomány is) rendelkezik, akkor egyezés áll fenn
  • "a" - ha a domain név tartalmaz egy olyan "A" rekordot, amely feloldható a küldő IP címére, akkor szintén egyezés áll fenn
  • "-all" - ha az előző, úgynevezett mechanizmusok nem találtak egyezést, a beérkező e-mail el lesz dobva, vagyis nem kerül kézbesítésre

Ha a fogadó levelezőszerver leellenőrzi a DNS-ben található SPF rekordot, akkor könnyedén megállapíthatja, hogy a levelet küldő számítógép jogosult-e e-mailt küldeni a tartomány nevében. Ha igen, megpróbálja azt kézbesíteni, ha viszont nem, akkor eldobja a levelet, mivel bizonyos, hogy kéretlen levélről van szó.

Látható tehát, hogy a DNS-ben található TXT rekord szükséges, de nem elégséges feltétel az SPF alkalmazásához. A levelezőszervereket is be kell állítani, hogy használják a DNS-ben található SPF rekordokat. Az alábbiakban a Postfix levelezőt állítjuk be egy Debian Wheezy-t futtató szerveren az SPF rekordok ellenőrzésére.

Telepítsük az alábbi csomagot:

sudo apt-get install postfix-policyd-spf-python

A /etc/postfix/main.cf fájlba illesszük be az alábbi sort:

policy-spf_time_limit = 3600s

Szintén a /etc/postfix/main.cf fájlba illesszünk be egy bejegyzést (lásd a 11. sort), az smtpd_recipient_restrictions részbe:

smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_pipelining,
    reject_non_fqdn_recipient,
    reject_unknown_recipient_domain,
    reject_unauth_destination,
    reject_non_fqdn_hostname,
    reject_non_fqdn_sender,
    reject_invalid_hostname,
    check_policy_service unix:private/policy-spf,
    reject_rbl_client zen.spamhaus.org,
    reject_rbl_client bl.spamcop.net,
    permit

A /etc/postfix/master.cf fájlba pedig illesszük be az alábbi két sort:

policy-spf unix - n n - - spawn
       user=nobody argv=/usr/bin/policyd-spf

Indítsuk újra a Postfix levelezőszervert:

service postfix restart

És ezzel készen is vagyunk. Célszerű minden, általunk felügyelt DNS tartományba felvenni SPF rekordokat, illetve levelezőszervereinket ellátni SPF ellenőrzési képességekkel. Itt az idő, hogy mi keserítsük meg a spammerek életét.

Felhasznált irodalom:

https://help.ubuntu.com/community/Postfix/SPF

http://en.wikipedia.org/wiki/Sender_Policy_Framework