SRS tarkvara postsrsd kasutamine Postfix keskkonnas

Allikas: Imre kasutab arvutit

Sissejuhatus

SRS (Sender Rewriting Scheme) http://www.openspf.org/SRS aitab remaileril töötada SPF'i kasutavate domeenide kirjadega. Käesolev tekst tutvustab postsrsd https://github.com/roehling/postsrsd tarkvara kasutamist Postfix keskkonnas.

Mõisted

  • SRS - Sender Rewriting Scheme
  • remailer - spetsialiseeritud postimasin, mis suunab ühele aadressile saabunud kirju edasi teisele aadressile; remailer ei sisalda postkasti; üldselt toimub see sisse tulnud kirja 'rcpt to' väärtuse asendamise abil (nt /etc/aliases failiga)
  • mail from - ümbriku saatja aadress
  • rcpt to - ümbriku saaja aadress
  • header From - kirja nn body osa päis, saatja aadress
  • header To - kirja nn body osa päis, saaja aadress

Tööpõhimõte

SRS tehnika aitab remailerit kahes osas

  • remailerist väljuva kirja 'mail from' peab sisaldab remaileri teenuse pakkuja domeeni
  • remailer peab oskama välja saadetud kirjale vastava võimaliku internetist tuleva veateate toimetada kirja algsele 'mail from' aadressile

Näited remaileritest

  • Mailman listserver - tundub, et Mailman ise sisaldab piisavat palju SRS instrumente ja postsrsd tarkvara kasutamine ei ole vajalik
  • @eesti.ee epostindus

Legacy edasisuunamine

Priit saadab kirja Imrele kasutades tema vana aadressi, kust on tehtud edasisuunamine Imre uuele aadressile.

             _____                                                 _____
            |     | mail from: priit@vana-sober.ee                |     | imre@uus-aadress.ee
            |  A  | 10.100.1.25                                   |  C  |
            |_____|                                               |_____|
  
                                      _____
                                     |     | imre@vana-aadress.ee
                                     |  B  | 10.200.1.25 
                                     |_____|

kus

  • arvutist A saadetakse välja kiri, 'mail from: priit@vana-sober.ee' ja 'rcpt to: imre@vana-aadress'
  • domeeni vana-sober.ee spf on 'v=spf1 ip4:10.100.1.25 -all'
  • domeeni vana-aadress.ee spf on 'v=spf1 ip4:10.200.1.25 -all'
  • kirju jõuab remailer arvutisse B ja /etc/aliases faili abil kirjutatakse rcpt to aadressi ringi; mail from aadress jääb samaks
rcpt to: imre@vana-aadress.ee -> imre@uus-aadress.ee
mail from: priit@vana-sober.ee -> priit@vana-sober.ee
  • kiri jõuab kohale arvutisse C; tekib probleem, et 'mail from' mõttes vana-sober.ee kiri tuli spf mõttes sobimatult ip aadressilt 10.200.1.25

SRS edasisuunamine

Priit saadab kirja Imrele kasutades tema vana aadressi; kust on tehtud edasisuunamine Imre uuele aadressile.

             _____                                                 _____
            |     | mail from: priit@vana-sober.ee                |     | imre@uus-aadress.ee
            |  A  | 10.100.1.25                                   |  C  |
            |_____|                                               |_____|
  
                                      _____
                                     |     | remailer
                                     |  B  | imre@vana-aadress.ee
                                     |_____| 10.200.1.25 

kus

  • arvutist A saadetakse välja kiri, 'mail from: priit@vana-sober.ee' ja 'rcpt to: imre@vana-aadress'
  • domeeni vana-sober.ee spf on 'v=spf1 ip4:10.100.1.25 -all'
  • domeeni vana-aadress.ee spf on 'v=spf1 ip4:10.200.1.25 -all'
  • kirju jõuab remailer arvutisse B ja /etc/aliases faili abil kirjutatakse rcpt to aadressi ringi
rcpt to: imre@vana-aadress.ee -> imre@uus-aadress.ee
  • postsrsd abil kirjutatakse mail from aadress ringi
mail from: priit@vana-sober.ee -> SRS0=wsq7=2A=vana-sober.ee=priit@vana-aadress.ee
  • kiri jõuab kohale arvutisse C; probleemi ole, vana-sober.ee kiri tuli 'mail from' muudetud väärtusega vana-aadress.ee ja spf mõttes sobivalt ip aadressilt 10.200.1.25

SRS edasisuunamisele internetist tuleva vastuse algsele mail from aadressile toimetamine

Priit saadab kirja Imrele kasutades tema vana aadressi; kust on tehtud edasisuunamine Imre uuele aadressile.

             _____                                                 _____                     
            |     | mail from: priit@vana-sober.ee                |     | imre@uus-aadress.ee
            |  A  | 10.100.1.25                                   |  C  |                    
            |_____|                                               |_____|                    
  
                                      _____                                               _____
                                     |     | remailer                                    |     | imre@vaga-uus-aadress.ee
                                     |  B  | imre@vana-aadress.ee                        |  D  | mida ei ole
                                     |_____| 10.200.1.25                                 |_____|


kus

  • arvutist A saadetakse välja kiri, 'mail from: priit@vana-sober.ee' ja 'rcpt to: imre@vana-aadress'
  • domeeni vana-sober.ee spf on 'v=spf1 ip4:10.100.1.25 -all'
  • domeeni vana-aadress.ee spf on 'v=spf1 ip4:10.200.1.25 -all'
  • kirju jõuab remailer arvutisse B ja /etc/aliases faili abil kirjutatakse rcpt to aadressi ringi
rcpt to: imre@vana-aadress.ee -> imre@uus-aadress.ee
  • postsrsd abil kirjutatakse mail from aadress ringi
mail from: priit@vana-sober.ee -> SRS0=wsq7=2A=vana-sober.ee=priit@vana-aadress.ee
  • kiri jõuab kohale arvutisse C ja sealt püütakse saata edasi arvutisse D, mis ebaõnnestub
  • arvuti C proovib mõnda aega ja saadab siis veateate kirja aadressile SRS0=wsq7=2A=vana-sober.ee=priit@vana-aadress.ee arvutisse B
  • arvuti B tuletab postsrsd tarkvara abiga SRS0=wsq7=2A=vana-sober.ee=priit@vana-aadress.ee aadressist algse saatja aadressi priit@vana-sober.ee ning krüpto ja ajatempli osa (wsq7 ja 2A) abil veendub, et asi on õige
  • arvuti B saadab veateate edasi algsele aadressile priit@vana-sober.ee

Seejuures

  • arvuti C koostatud veateate kirjas on 'mail from' on <> ja mille 'header From:' on 'MAILER-DAEMON ...', algsesse kohta jõuab see teade just sellisena
  • arvuti C koostatud veateate kirjas on 'rctp to' ja 'header To:' aadressiks 'SRS0=wsq7=2A=vana-sober.ee=priit@vana-aadress.ee'
  • arvuti B postsrsd + postfix teisendavad ja asendavad need mõlemad aadressiga 'priit@vana-sober.ee'

Väited

  • tavaliselt on kirja internetti saatev arvuti (kus toimib SRS) on sama, mis võtab võimalikud bounce'id internetist vastu; tundub ei kui sama SRS_SECRET väärtust kasutada, siis võivad need olla ka erinevad arvutid
  • postsrsd kasutab Postfixi canonical tabeleid, ja omakorda tcp-tüüpi variante neist
  • recipient_canonical_maps abil saab sisuliselt tekitada /etc/aliases funktsionaalsuse
  • srs eposti aadressi on kodeeritud aadress, kuhu postimasin saadab edasisuunatud kirja, selles mõttes tegu on võimalusega süsteemi väärkasutada
  • postsrsd tarkvara ei pruugi kasutada spetsialiseeritud remaileri juures, vaid see võiks olla asjakohane suvalises muu hulgas ainult natuke /etc/aliases abil kirju edasisuunavas arvutis
  • srs muutumise vastu open relay smtp sõlmeks aitab srs aadressi lisaks kodeeritud nn signatuur ja ajatempel
SRS0=wsq7=2A=gmail.com=imre.oolberg@moraal.ee

kus

  • wsq7 - signatuur
  • 2A - ajatempel

Tarkvara paigaldamine, seadistamine ja käivitamine

Tarkvara paialdamiseks sobib öelda

# apt-get install postsrsd

postsrsd seadistused asuvad failis /etc/default/postsrsd

# egrep -v "^$|^#" /etc/default/postsrsd 
SRS_DOMAIN=moraal.ee
SRS_EXCLUDE_DOMAINS=auul.pri.ee
SRS_SEPARATOR==
SRS_SECRET=/etc/postsrsd.secret
SRS_FORWARD_PORT=10001
SRS_REVERSE_PORT=10002
RUN_AS=postsrsd
CHROOT=/var/lib/postsrsd

kus

  • SRS_DOMAIN - millise domeeni peale teisendatud aadressid moodustatakse (moodustatud aadressi @ märgist paremale jääv osa)

Postfixiga integreerimiseks peab main.cf faili sisaldama muu hulgas

sender_canonical_maps = tcp:localhost:10001
sender_canonical_classes = envelope_sender

recipient_canonical_maps = tcp:localhost:10002
recipient_canonical_classes = envelope_recipient, header_recipient

local_header_rewrite_clients = static:all

kus

  • ilma 'local_header_rewrite_clients = static:all' parameetrita töötab kirja body 'From:' aadressi ümberkirjutamine vaid lokaalselt genereeritud kirjade jaoks; kuna bounce teated tulevad internetist, siis on see praktiliselt alati vajalik
  • recipient_canonical_classes = envelope_recipient, header_recipient - envelope_* ja header_* tähendavad, et tegeldakse vastavalt ümbriku mail from ja body osa header From: aadresside teisendamisega

TCP tabelite tööd saab kontrollida, teisendus

# postmap -q imre.oolberg@gmail.com tcp:localhost:10001
SRS0=wsq7=2A=gmail.com=imre.oolberg@moraal.ee

pöördteisendus

# postmap -q SRS0=wsq7=2A=gmail.com=imre.oolberg@moraal.ee tcp:localhost:10002
imre.oolberg@gmail.com

muutuseta teisendus

# postmap -q imre.oolberg@moraal.ee tcp:localhost:10001
imre.oolberg@moraal.ee

Kasutamine

Kirja saatmise testimiseks sobib öelda

$ sendemail -f priit@auul.pri.ee -t imre@moraal.ee -u 'test 36' -s 127.0.0.1 -m 'test 36' -o tls=no

kus

  • TODO

Lähtetekstist kompileerimine

Ettevalmistuseks peab olema

# apt-get install build-essentials make cmake

Pakkida .zip lahti kataloogi ja öelda

$ make

tulemusena tekib fail build/postsrsd, käivitamiseks tekistada

  • /etc/postsrsd.secret

ja öelda

$ ./postsrsd -f 10001 -r 10002 -d moraal.ee -s /etc/postsrsd.secret -a = -u imre -X

Tulemusena saab portidele 10001 ja 10002 esitada postmap abil päringuid.

Kasulikud lisamaterjalid