Jul 16, 2015

Postfix u lokalnoj mreži

Ovde je opisano LAN okruženje sa jednim glavnim mejl serverom i više drugih sistema koji šalju i primaju mejlove. Kao i obično, uzećemo  za domen example.com. Svi sistemi su konfigurisani da šalju mejlove kao user@example.com i svi sistemi primaju mejlove kao user@hostname.example.com. Glavni server takođe prima mejlova za user@example.com. Ova mašina će se zvati mailhost.example.com.

Nedostatak je što kada se šalju mejlovi kao user@example.com mejlovi za root i ostali sistemski nalozi se šalju u glavni/centralni server.

Prvo da pokažemo konfiguraciju za spordne servere. Serveri šalju mejlove kao user@example.com, a krajnja destinacija su za mejlove user@hostname.example.com.

1 /etc/postfix/main.cf:
2     myorigin = $mydomain
3     mynetworks = 127.0.0.0/8 10.0.0.0/24
4     relay_domains =
5     # Optional: forward all non-local mail to mailhost
6     #relayhost = $mydomain

Linija 2 obezbeđuje da se mejlovi šalju kao user@example.com.

Linija 3 definiše autorizovane mreže

Linija 4 obezbeđuje da ovaj server ne prosleđuje mejlove sa mreža koje nisu autorizovane.

Linija 6 je potrebno ako ne postoji direktna internet konekcije.


Sledeće ćemo prezentovati konfiguraciju glavnog servera. Ova mašina šalje mejlova kao user@example.com i krajnja je destinacija za user@example.com.

 1 DNS:
 2     example.com    IN    MX  10 mailhost.example.com.
 3
 4 /etc/postfix/main.cf:
 5     myorigin = $mydomain
 6     mydestination = $myhostname localhost.$mydomain localhost $mydomain
 7     mynetworks = 127.0.0.0/8 10.0.0.0/24
 8     relay_domains =
 9     # Optional: forward all non-local mail to firewall
10     #relayhost = [firewall.example.com]

Linija 2: Mejlovi koji se šalju za domen example.com treba poslati na mailhost.example.com.  Ne zaboravite da dodate . na kraju MX zapisa.

Linija 5: Mašina šalje mejlova kao user@example.com.

Linija 6: Ovaj host je krajnja destinacija za mejlove sa domenom example.com i za mejlove sa imenom ove mašine.

Linija 7: Definiše pouzdane autorizovane mreže

Linija 8 Ovaj host ne prosleđuje mejlove iz nepouzdanih mreža

Linija 10. Ovo je neophodno samo kada mailhost prosleđuje spoljne mejlove preko mejla na firewall-u. Zagrade [] sprečavaju Postfix da proverava MX rekord.

U okruženjima kao što su ova, korisnici pristupaju svom mailbox-u na jedan od sledećih načina:

  • preko NFS ili ekvivalentno
  • preko POP ili IMAP-a
  • poštansko sanduče je na preferiranoj mašini korisnika

U poslednjem slučaju svaki korisnik ima alias na glavnom serveru kojim se prosleđuje mejl ka preferiranim mašinama:
/etc/aliases:
    joe:    joe@joes.preferred.machine
    jane:   jane@janes.preferred.machine
Na nekim sistemima alias baza nije u /etc/aliases. Da biste saznali lokaciju izvršite komandu postconf alias_maps.
Izvršite komandu newaliases svaki put kada promenite alias bazu.

Postfix bez klijenata

Postfix bez klijenata je mašina koja može samo da šalje mejlove. Ona ne dobija mejlove iz mreže i ne dostavlja mejlove lokalno. Postfix bez klijenata obično se koristi POP, IMAP ili NFS za pristup poštanskom sandučetu.

U ovom primeru pretpostavljamo da je internet domen example.com i da je naziv mašine hostname.example.com.  Kao i obično, ovde su prikazani parametri koji nemaju podrazumevane vrednosti.

1 /etc/postfix/main.cf:
2     myhostname = hostname.example.com
3     myorigin = $mydomain
4     relayhost = $mydomain
5     inet_interfaces = loopback-only
6     mydestination =

Linija 2 opstavlja hostname mašine u slučaju da ime mašine nije u FQDN 
formatu. Koristite komandu postconf -d myhostname da saznate ime mašine. 
Linija 2 obezbeđuje i podrazumevanu vrednost za parametar mydomain, 
što je ovde example.com.
Linija 3 obezbeđuje da se mejl šalje kao user@example.com umesto da je 
user@hostname.example.com.
Linija 4 Prosleđuje svu poštu serveru koji je odgovoran za example.com 
domen. Ovde stavite hostname ako nemate MX rekord u DNS-u za dati domen.

Linija 5 ne prihvate mejlove sa mreže.

Linija 6 brani lokalnu isporuku mejlova. Svi mejlovi idu ka serveru 
definisanom u liniji 4.

Postfix na samostalnom internet hostu

Možete koristiti komandu postconf -n da saznate koja podrazumevana podešavanja iz main.cf fajla su promenjena.
Osnovna podešavanja za samostalan rad mašine:
/etc/postfix/main.cf:
    # Opciono: šalji mejl kao user@domainname uesto user@hostname.
    #myorigin = $mydomain

    # Opciono: navedi NAT/proxy spoljnu IP adresu.
    #proxy_interfaces = 1.2.3.4

    # Alternativa 1: ne prosleđuj mejlove sa drugih hostova.
    mynetworks_style = host
    relay_domains =

    # Alternativa 2: prosleđuj mejlova samo sa lokalnih klijenata.
    # mynetworks = 192.168.1.0/28
    # relay_domains =

Koji način isporuke: direktan ili indirektan

Podrazumevno je da će Postfix pokušati isporuku mejlova direktno na Internet. U zavisnosti od lokanih uslova ovo možda ne bude moguće ili poželjno. Na primer, vaš sistem može biti isključen van radnog vremena, može biti iza firewall-a, ili može biti povezan preko provajdera koji ne dozvoljava direktno slanje mejlova preko interneta. U takvim slučajevima potrebno je da podesite Postfix da isporuči mejlove indirektno preko relay hosta.

Primer:
/etc/postfix/main.cf:
    relayhost =                   (podrazumevano: direct delivery to Internet)
    relayhost = $mydomain         (isporuka preko lokalnog mailhub-a)
    relayhost = [mail.$mydomain]  (isporuka preko lokalnog mailhub-a)
    relayhost = [mail.isp.tld]    (isporuka preko mailhub provajdera)

Forma [] eliminiše DNS MX lookup. Postavite [] ako koristite mail provajdera kako ne bi došlo do pogrešne dostave.

Na koje destinacije proslediti mejl?

Podrazumevano, Postfix će proslediti mejlove od klijenata izvan ovlašćene mreže samo ka ovlašćenim udaljenim destinacijama. Ovlašćene udaljene destinacije su definisane parametrom reley_domains. Uobičajno je da se odobre svi domeni sa liste definisane sa parametrom mydestination.

Primer:
/etc/postfix/main.cf:
    relay_domains = $mydestination (podrazumevano)
    relay_domains =           (bezbedno: nikad ne prosleđuj mejlove od korisnika koji su izvan ovlašćene mreže)
    relay_domains = $mydomain (prosledi mejlove svom domenu i poddomenima)

Od kojih klijenata proslediti mail?

Podrazumevano, Postfix će prosleđivati mejlove od klijenata u ovlašćenim (autorizovanim) mrežama ka bilo kojoj destinaciji. Ovlašćene mreže se definišu konfiguracionim parametrom mynetworks. Uobičajno je da ovlaste svi klijenti u IP podopsegu u kome se nalazi i ova mašina.

Postfix se mođe konfigurisati da šalje mejlove sa mobilnih uređaja koji su van ovlašćene (autorizovane) mreže. O tome kada bude reči o SASL i TLS-u.

Primeri (navesti samo jedno od sledećih):
/etc/postfix/main.cf:
    mynetworks_style = subnet  (podrazumevano: ovlašćene podmreže)
    mynetworks_style = host    (sigurnije: autorizovana je samo lokalna mašina)
    mynetworks = 127.0.0.0/8   (sigurnije: autorizovana je samo lokalna mašina)
    mynetworks = 127.0.0.0/8 168.100.189.2/32

Možete odrediti pouzdane (trusted) mreže u main.cf fajlu ili možete prepustiti da to uradi Postix.  Podrazumevano podešavanje je da Postfix to uradi. Rezultat zavisi od mynetwork_style parametra.

Navedite "mynetworks_style = host" kada Postfix treba da prosledi poštu samo sa lokalne mašine.

Navedite "mynetworks_style = subnet" kada Postfix treba da prosledi mejlove sa SMTP klijenata u isto IP podmreži kao i lokalna (ova) mašina.

Navedite "mynetworks_style = class" kada Postfix treba da prosledi mejl sa SMTP klijenata koji su  u istom IP opsegu A/B/C kao i lokalna mašina.

Alternativno, možete odrediti listu za mynetworks parametar ručno, u tom slučaju Postfix ignoriše mynetwork_style parametar. Da biste ručno naveli listu pouzdanih mreža koristite network/mask notaciju, na primer:
/etc/postfix/main.cf:
    mynetworks = 168.100.189.0/28, 127.0.0.0/8


Za koje domene primiti mejl?

mydestination parametar određuje koje domene će ova mašina isporučiti lokalno, umesto da prosledi drugoj mašini. Uobičajno je da primi poštu za sebe.
Možete navesti da nema nijednog domena ili više domena, "/file/name" šema ili "type:table" pronalaženje tabela (kao što su hash, btree, nis, ldap ili mysql), razdvojeni razmakom ili zarezom

"/file/name" šema je zamena za sadržaj u fajlu. "type:table" zahteva da se tabela može pronaći i izvršiti.

Ako je ova mašina mejl server za ceo domen, potrebno je setovati ovaj parametar kao $mydomain.

Primer 1: podrazumevano podešavanje
/etc/postfix/main.cf:
    mydestination = $myhostname localhost.$mydomain localhost

Primer 2: mail server za ceo domen
/etc/postfix/main.cf:
    mydestination = $myhostname localhost.$mydomain localhost $mydomain

Primer 3: host sa višestrukim DNS A rekordima
/etc/postfix/main.cf:
    mydestination = $myhostname localhost.$mydomain localhost
        www.$mydomain ftp.$mydomain

U cilju izbegavanja petlji prilikom dostave mejlova, morate navesti kompletnu listu hostname-ova mašine, uključujući i $myhostname i localhost.$mydomain.

Koje ime domena koristiti u izlaznim mejlovima?

Parametar myorigin određuje domen koji se pojavljuje u mejlu koji je napisan na ovoj mašini. Uobičajno je da se koristi lokalni naziv mašine, $myhostanme, što je difoltno ime mašine. Osima ako se ne radi o zaista malom sajtu, verovatno biste promenili to u $mydomain, što podrazumeva domen u kome se nalazi mašina

U cilju doslednosti između adrese primaoca i pošiljaoca, myorigin označava domen koji je priložen uz nekvalifikovene adrese primaoca.

Primer:

/etc/postfix/main.cf:
    myorigin = $myhostname (podrazumevano: šalje mejl kao "user@$myhostname")
    myorigin = $mydomain   (šalje mejl kao : "user@$mydomain")