SPF kasutamine Postfixiga

Allikas: Kuutõrvaja
Redaktsioon seisuga 11. oktoober 2019, kell 15:59 kasutajalt Aus (arutelu | kaastöö) (Piirangud)

Sissejuhatus

SPF http://www.openspf.org/ ...

SPF kontroll käib ümbriku saatja (envelope from) pihta (ehk siis kirja body sees olev From).

SPF on Sender Policy Framework, mis peaks koostöös DKIM ja DMARCiga tänapäevaste meetoditega võitlema spämmi saatmise vastu.

SPF töötab kirja VASTUVÕTVA postiserveris ja kontrollib saatja domeeni ja kirja saatnud e-posti serveri vastavust.

SPF on TXT nimekirje nimeserveris ja koosneb:

"v=spf1 a mx -all"

TXT kirje komponendid

  • v= - versioon, hetkel ainuke valiidne spf1
  • [a mx ... jne] - määrab ära, kes võib kirja saata
  • -all - vt piirangud

kirjasaatja võimalused

  • a - lubab kirjasaatmise domeeni A kirjelt (dünaamiline, st muutes A kirjet kehtib SPF reegel edasi)
  • mx - lubab kirjasaatmise domeeni MX kirjelt (dünaamiline, st muutes MX kirjet kehtib SPF reegel edasi)
  • include:_spf.protection.uusdomeen.ee - includeb _spf.protection.uusdomeen.ee kirje sinu kirje sisse (samuti dünaamiline, kuna selle kirje muutumisel muutub ka sinu kirje)
  • 193.40.0.2/32 - võid kasutada IPd ja/või vahemikku kirjasaatmise lubamisel

Piirangud

  • -all - range "fail" - keela kõik ülejäänud
  • ~all - pehmem "softfail" - hoiata kirjasaajat ja suhtu ettevaatlikkusega
  •  ?all - veelpehmem "neutral" - neutraalne olek, suhtutakse samamoodi nagu SPF kirjet "ei oleks"
  • +all - vägapehme "pass" - SPF kirje küll on, aga lase kõik teised ka läbi

Tarkvara paigaldamine

SPF tarkvara paigaldamiseks sobib öelda

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

Nimesüsteemi ettevalmistamine

spf.py skriptiga saab testida SPF DNS TXT kirjet, nt selliselt

  • küsida domeeni SPF andmeid
$ python /usr/share/pyshared/spf.py loomaaed.tartu.ee
v=spf1 ip4:192.168.10.0/24 mx a:mail.loomaaed.tartu.ee ~all
  • Testida ettenäidatud SPF andmetele vastavalt tulemust
$ python /usr/share/pyshared/spf.py "v=spf1 +mx +ip4:10.0.0.2 -all" 10.0.0.1 mart@loomaaed.tartu.ee a
('fail', 550, 'SPF fail - not authorized') -all

null SPF kirjed

www.loomaaed.tartu.ee.   IN  TXT  "v=spf1 -all"

SPF seadistamine kirju vastuvõtva Postfixi juures

Kirju vastuvõtva Postfixi juures juhib SPF tööd seadistusfail /etc/postfix-policyd-spf-python/policyd-spf.conf, mille sisu on vaikimisi selline ja võiks üldiselt sobida kasutamiseks

# cat /etc/postfix-policyd-spf-python/policyd-spf.conf
debugLevel = 1
defaultSeedOnly = 1

HELO_reject = SPF_Not_Pass
Mail_From_reject = Fail

PermError_reject = False
TempError_Defer = False 

skip_addresses = 127.0.0.0/8,::ffff:127.0.0.0//104,::1//128

kus

  • debugLevel - määrab mail.log faili logi kirjutamise määra
  • defaultSeedOnly - väärtus 0 kasutamisel posti liiklust SPF ei muuda, kuid kirjadele lisatakse vastavad päised
  • HELO_reject -
  • Mail_From_reject -
  • PermError_reject - kontrollib, mida teha, kui vasvata SPF TXT nimekirje lahendamisel saadakse vastuseks katkine kirje, nt kirjes esineb süntaksiviga; False puhul käsitletakse sellist olukorda samaväärselt kirje puudumisega
action=prepend Received-SPF: Permerror (SPF Permanent Error: Invalid IP4 address: ip4:1.2.3.4.5)
  • TempErrorDefer - kontrollib, mida teha kui, kui vasvata SPF TXT nimekirje lahendamine ei õnnestu, nt vastavalt nimeserverilt ei saada vastust; False puhul käsitletakse sellist olukorda samaväärselt kirje puudumisega
action=defer_if_permit Message deferred due to: SPF Temporary Error: DNS no working nameservers found.

Kasulikud lisamaterjalid

  • man policyd-spf.conf

SPF testimine

Öelda

$ python /usr/bin/policyd-spf /etc/postfix-policyd-spf-python/policyd-spf.conf < /tmp/sisend
action=prepend Received-SPF: None (no SPF record) identity=mailfrom; \
  client-ip=192.168.0.1; helo=mail.loomaaed.tartu.ee; envelope-from=mart@loomaaed.tartu.ee; receiver=priit@eesti.ee

kus

$ cat /tmp/sisend
request=smtpd_access_policy
protocol_state=RCPT
protocol_name=SMTP
helo_name=mail.loomaaed.tartu.ee
sender=mart@loomaaed.tartu.ee
recipient=priit@eesti.ee
client_address=192.168.0.1
TÜHI RIDA JA REA LÕPUS REAVAHETUS

Postfixi seadmistamine

Seadista main.cfi

# postfix-spf kasutamine
policy-spf_time_limit = 3600s

ja muutujasse

smtpd_recipient_restrictions=

lisa väärtus

check_policy_service unix:private/policy-spf

NB! policy-spf peab kattuma sellega, mida kasutad master.cf failis!

master.cf täienda järgnevalt

# SPF reeglid
policy-spf  unix  -       n       n       -       0       spawn
    user=nobody argv=/usr/bin/policyd-spf


Süsteemi kasutamine

TODO

SRS

Sender Rewrite Scheme

TODO

Märkused

  • TODO

Kasulikud lisamaterjalid