Mainos / Advertisement:

Postfix

Kohteesta Taisto
Versio hetkellä 18. joulukuuta 2015 kello 11.50 – tehnyt Minh (keskustelu | muokkaukset) (→‎Varasähköpostipalvelin)
Siirry navigaatioon Siirry hakuun
Muut kielet:
English • ‎suomi

Postfix on sähköpostin välitysohjelmisto (MTA). Postfix on avoimen lisenssillä varustettu ohjelmisto. Tietoturvallisessa ja suorituskykyisessä Postfixissä on hyvä roskapostin suodatus.

Suosittelemme käyttämään myös Spamassassin ja Amavis suojaamaan sähköpostipalvelinta roskapostittajilta.

Asennus

 aptitude install postfix

Seuraa asennusohjelman ohjeita

Postfix1.png


Tämän jälkeen sinun tulee antaa palvelimen isäntänimi

esimerkiksi:

 mail.example.com

Konfigurointi

Avaa konfigurointi tiedosto:

 nano /etc/postfix/main.cf

Tarkista postifixin konfigurointi tiedostossa on määritetty tietokoneen isäntänimi ja palvelimen osoite

 myhostname = server.example.com
 alias_maps = hash:/etc/aliases
 alias_database = hash:/etc/aliases
 myorigin = example.com
 mydestination = example.com, server.example.com, localhost, localhost.example.com$
 #relayhost =
 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
 mailbox_command = procmail -a "$EXTENSION"
 mailbox_size_limit = 0
 recipient_delimiter = +
 inet_interfaces = all

Tallenna tiedosto ja avaa seuraavaksi tiedosto

 nano /etc/postfix/master.cf

Oletuksena master.cf tiedostossa on sallittu normaali SMTP yhteys portissa 25.

 smtp      inet  n       -       -       -       -       smtpd


Oletuksena seuraavat ovat risuaidalla merkitty (#).

Ota käyttöön poistamalla risuaita 587 portissa tapahtuva SMTP tiedonsiirtoa. Sillä voi myös siirtää salattua liikennettä komennolla STARTTLS.

 submission inet n       -       -       -       -       smtpd
   -o syslog_name=postfix/submission
   -o smtpd_tls_security_level=encrypt
   -o smtpd_sasl_auth_enable=yes
   -o smtpd_client_restrictions=permit_sasl_authenticated,reject
   -o milter_macro_daemon_name=ORIGINATING

Ota käyttöön poistamalla risuaita SMTPS yhteys (portissa 465). SSL salaus käytetään tässä yhteydessä oletuksena. SASL todennusta suositellaan käytettäväksi.

 smtps     inet  n       -       -       -       -       smtpd
   -o syslog_name=postfix/smtps
   -o smtpd_tls_wrappermode=yes
   -o smtpd_sasl_auth_enable=yes
   -o smtpd_client_restrictions=permit_sasl_authenticated,reject
   -o milter_macro_daemon_name=ORIGINATING

Selitetään:

Palvelimesi nimi (tarkista että on sama kuin hostname (komento: hostname)):

 myhostname = server.example.com

Kirjautumisen tunnukset = sama kuin Debian. Ei muuteta

 alias_maps = hash:/etc/aliases
 alias_database = hash:/etc/aliases

Domain (määritetään palvelimesi sähköpostiosoitteeseen [email protected]). Oletuksena määritetty /etc/mailname:

 myorigin = example.com

Tietokoneen isäntänimet:

 mydestination = example.com, server.example.com, localhost, localhost.example.com$
 #relayhost = 127.0.0.1:10111

Tämä vaaditaan jos ei ole suoraa yhteyttä verkkoon.

Esimerkkinä Soneran postipalvelin:

 relayhost = [mail.inet.fi]:25

DNA postipalvelin:

 relayhost = [smtp.dnainternet.net]:25


Lähiverkkosi:

 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
 mailbox_command = procmail -a "$EXTENSION"
 mailbox_size_limit = 0
 recipient_delimiter = +

Verkkoliitännät

 inet_interfaces = all

Sulje tiedosto ja käynnistä postfix uudelleen

 service postfix restart

Lisäasetukset

Virtuaali sähköpostiosoitteet

Voit ohjata virtuaali sähköpostiosoitteet esimerkiksi [email protected] ja [email protected] omalle käyttäjällesi.

Avaa tiedosto:

 /etc/aliases
# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root = [username]

Muuttamalla [username] kohta omaksi käyttäjätiliksi saat kaikki näiden käyttäjätilien sähköpostit samaan sähköpostilaatikkoon. Voit lisätä muitakin osoitteita tiedoston loppuun:

[alias_postinimi] = [käyttäjälle]

Vahvista muutokset

 newaliases

Virtuaali domainit

Virtuaaliset domainit siis ovat tarkoitettu sähköpostipalvelimelle joka lähettää ja vastaanottaa usealle eri domainille.


Avaa Postfixin konfigurointi tiedosto main.cf

 /etc/postfix/main.cf

Lisää seuraavat rivit:

 virtual_alias_domains = example.com
 virtual_alias_maps = hash:/etc/postfix/virtual

Luo uusi tiedosto

 [email protected] postmaster
 [email protected]       matti
 [email protected]      kalle
 # Uncomment entry below to implement a catch-all address
 # @example.com         aleksi

Älä lisää virtual_alias_domain:ia mydestination domainiksi!

Sähköpostin uudelleenohjaus

Sähköpostin uudelleenohjaus [email protected] -> matti.example2.com esimerkiksi.

Avaa Postfixin konfigurointi tiedosto main.cf

 /etc/postfix/main.cf:

Lisää seuraavat rivit tiedostoon:

   virtual_alias_domains = example.com
   virtual_alias_maps = hash:/etc/postfix/virtual

Luo uusi tiedosto

 /etc/postfix/virtual:

Lisää seuraavat rivit tiedostoon

  [email protected] postmaster
  [email protected]        [email protected]
  [email protected]       [email protected]
  # Uncomment entry below to implement a catch-all address
  # @example.com         jim@yet-another-site

Uudelleenohjattava sähköpostin domain tulee olla mydestination merkitty. Et voi uudelleenohjata aliaksia /etc/alias

Tarkista konfiguraatio

  postmap /etc/postfix/virtual

Testataan Postfixin toimintaa

Lähetetään testisähköposti:

Asenna tämä sähköpostityökälut jos ei ole asennettu:

 apt-get install mailutils

ja sen jälkeen lähetetään sähköpostia:

 mail [email protected]

Komento tulostaa:

 Subject: Aiheesi viestille

Tämän jälkeen kirjoita viesti (ja ENTER) ja tulostuu:

 CC: 

jonka voi jättää tyhjäksi. Lähetä sähköposti näppäinyhdistelmällä CTRL+D.

Sähköpostipalvelimen suojaaminen

Kun luot oman sähköpostipalvelimen, sitä pitää heti alkaa suojaamaan ahkerasti roskapostittajia vastaan. Suositus on ottaa myös SASL todennus käyttöön.

Roskapostien suodatus

Lisäämällä seuraava koodi pätkä tarkistaa onko lähettäjän verkkotunnus olemassa:

 nano /etc/postfix/main.cf


 smtpd_recipient_restrictions = reject_invalid_hostname,
       reject_unknown_recipient_domain,
       reject_unauth_destination,
       reject_rbl_client sbl.spamhaus.org, # Tämä rivi ei Soneran verkkoon
       permit
smtpd_helo_restrictions = reject_invalid_helo_hostname,
       reject_non_fqdn_helo_hostname,
       reject_unknown_helo_hostname

Ja tämä tarkistaa listan onko verkkotunnus merkitty roskapostittajaksi:

 nano /etc/postfix/main.cf
 smtpd_client_restrictions = reject_rbl_client dnsbl.sorbs.net

SMTPS SASL todennus

Lisäämällä seuraava rivi, niin estät sähköpostin välitykset muusta kuin omasta verkostasi. SASL tunnistuksen avulla voit lähettää muustakin verkosta

 nano /etc/postfix/main.cf
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject

Hyödynnä Dovecottia SASL todennuksessa. Tämä toimii siis Dovecotin todennuksen kanssa.

# SASL authentication
smtpd_sasl_auth_enable=yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous

Lisäksi poista risuaita tiedostosta

 nano /etc/dovecot/conf.d/10-master.conf

kohdasta

 # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
        user = postfix
        group = postfix

}
 nano /etc/postfix/master.cf

Ota seuraavilta riveiltä risuaita pois submission ja smtps kohdasta. Jos haluat SMTP portille myös audikoinnin, lisää tämä seuraavat rivi sen alle.

 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject

TLS (STARTSSL)

Esimerkki konfiguraatio tiedostosta /etc/postfix/main.cf

mtpd_use_tls=yes
smtpd_tls_security_level = may
smtpd_tls_cert_file=/etc/ssl/postfix.cert
smtpd_tls_key_file=/etc/ssl/postfix.key
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3
smtpd_tls_protocols=!SSLv2,!SSLv3,TLSv1,TLSv1.1,TLSv1.2
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 , DES, ADH, !RC4, PSD, SRP, 3DES, eNULL
smtpd_tls_mandatory_ciphers = high
tls_high_cipherlist = AES128+EECDH:AES128+EDH

Ota käyttöön Submission kohdasta risuaidat pois.

Testaa STARTSSL: https://starttls.info/

http://checktls.com/ https://ssl-tools.net/mailservers/

Testaa openssl_client komennolla toimivuuksia

 openssl s_client -connect mail.example.org:587


SMTPS

Postfixissä on tuki SSL yhteydelle TLS:n kanssa mutta ei pelkästään SSL kanssa. Tämä seuraava ohje on pelkästään SSL, mutta jos on tuki TLS salaukselle, on suositeltavaa käyttää sitä.

Ohjeen lähde: http://www5.sonera.fi/keskustele/viewtopic.php?f=59&t=9210

SMTPS on salattu SMTP yhteys ja nykyisin suositus olisi käyttää tätä ominaisuutta.

Esimerkkinä on Soneran verkko:

 relayhost = [mail.inet.fi]

Nyt olisi aika siirtyä salattuun postiin ja tämä on hieman hankalempi, kun Soneran omat postipalvelimet eivät tue TLS salausta. Postfix ei tue SSL salausta, mutta asennetaan pieni kiertotie niin se onnistuu.

Asennetaan ensin Stunnel

 aptitude install stunnel

Luodaan tiedosto /etc/stunnel/postfix.conf ja kopioi alla oleva koodi:

 [ssmtp_c2s]
   accept = 127.0.0.1:10111
   client = yes
   connect = mail.inet.fi:465
   delay = yes  

ja tämän jälkeen avaa tiedosto: /etc/default/stunnel ja muuta se seuraavanlaiseksi:

 # Change to one to enable stunnel automatic startup
 # MUUTOS
 #ENABLED=0
 ENABLED=1
 FILES="/etc/stunnel/*.conf"
 OPTIONS=""
 
 # Change to one to enable ppp restart scripts
 PPP_RESTART=0

Tämän jälkeen muokkaa /etc/postfix/main.cf seuraavanlaiseksi:

 relayhost = 127.0.0.1:10111
   
 # SASL authentication
 smtp_sasl_auth_enable=yes
 smtp_sasl_password_maps = hash:/etc/postfix/passwd
 smtp_sasl_security_options = noanonymous
 smtp_sasl_tls_security_options = noanonymous
    
 # TLS
 smtp_tls_eccert_file =
 smtp_tls_eckey_file =
 # http://www.postfix.org/TLS_README.html#client_tls_may
 smtp_tls_security_level = may
 smtpd_tls_received_header = yes
tls_random_source = dev:/dev/urandom
 # http://www.postfix.org/TLS_README.html#client_tls_may
 smtpd_tls_security_level = may
 

Luo tiedosto /etc/postfix/passwd ja kirjoita siihen Soneran sähköpostisi käyttäjätunnus ja salasana

 mail.inet.fi:465 KÄYTTÄJÄTUNNUS:SALASANA

Esimerkiksi:

 mail.inet.fi:465 [email protected]:taisto

Tämän jälkeen anna tämä komento:

 postmap hash:/etc/postfix/passwd

Kokeile toimiiko antamalla seuraava komento:

 postmap -q mail.inet.fi:465 /etc/postfix/passwd

Jos komento tulostaa käyttäjätunnuksesi ja salasanasi, kaikki toimii tähän asti


Estä muiden käyttäjien näkemästä salasanaasi:

 chmod go-rwx /etc/postfix/passwd*

Käynnistä lopuksi palvelut uudelleen

 service stunnel4  restart
 service postfix restart

Varasähköpostipalvelin

Varasähköpostipalvelimen avulla varmistat ettei sähköpostit häviä jos ensisijainen sähköpostipalvelin ei olisikaan verkossa. Varasähköpostipalvelimia voi olla useita ja ne tallentavat sähköpostit jonotus listalle odottamaan kunnes ensisijainen sähköpostipalvelin palaa takaisin toimintaan.

Sinun tulee määrittää MX tietueet DNS palveluun. MX1 on ensisijainen palvelin ja MX2 on toissijainen palvelin. Priority arvolla määritetään mikä palvelin on ensisijainen ja toissijaiset. Pienin arvo (10) on ensisijainen ja suurin arvo (20) on toissijainen.

example.com.               86400   IN      MX      10 mx1.example.com.
example.com.               86400   IN      MX      20 mx2.example.com.

Konfiguroidessa MX2 palvelimesta varapalvelin, sinun tulee konfiguroida main.cf tiedostoon

 nano /etc/postfix/main.cf

Määritä seuraavanlaiset konfiguraatiot. smtpd_recipient_restrictions tulee olla permit_mynetworks ja reject_unauth_destination. Relay_domainissa tulee olla example.org, eli domain joka ohjataan eteenpäin. Tämä määrittää mikä sähköpostidomainien postit ohjataan eteenpäin. relay_recipient_maps tulee olla tyhjä.

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

relay_domains = $mydestination, example.com

relay_recipient_maps =

Varmista että seuraavat parametrit ovat tyhjiä: mydestination, virtual_alias_domains, virtual_mailbox_domains

Käynnistä palvelu uudelleen

 service postfix restart

Testaa sammuttamalla pääsähköpostipalvelin ja lähetä example.org osoitteelle sähköpostia. mail.log voit seurata toimiiko sähköpostit oikein.

Postfix toiminta PHP5 kanssa

PHP5 sisältää mail funktion. Sinun tulee konfiguroida php.ini tiedostoa

 nano /etc/php5/apache2/php.ini

ja muuttaa se tälläiseksi:

 ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
 ; http://php.net/sendmail-path
 sendmail_path = "/usr/sbin/sendmail -t -i"

ja käynnistä apache uudelleen

 service apache2 restart

Postfix AD

Hyvä ohje löytyy ICT-academyn Wikistä

Virheilmoituksia

Ongelmien sattuessa kannattaa lukea palvelimen lokia:

 /var/log

Tässä lista yleisistä virheilmoituksista mitä ilmenee usein postfixin konfiguroinnista:

Sender address rejected: Domain not found (in reply to RCPT TO command

myorigin on määritetty väärin /etc/mailname tiedostosta. Tämän tulee olemaan domainin nimi.

 myorigin /etc/mailname
 example.com  

Client host rejected: Access denied

Relayhost on estänyt sinut, ehkä roskapostien takia.

connect to mx3.hotmail.com[65.55.37.104]:25: No route to host

Tarkista Relayhost main.cf tiedostossa. Mahdollisesti sinulla on suljettu suoraan portti 25.

Host or domain name not found. Name service error for name=gmail.con type=A: Host not found

DNS Virhe. Tarkista resolv.conf tiedostossa määriteytyt DNS asetukset. Kokeile nslookup komentoa.

Invalid mail address, must be fully qualified domain (in reply to RCPT TO command))

Isäntänimessä ongelma. Varmista että DNS on oikein määritetty ja isäntänimi main.cf tiedostossa.

unable to verify address (in reply to MAIL FROM command))

DNS ongelma. Varmista että sinulla on määritetty oikein A-records DNS palvelimelle ja MX-records. Tarkista /etc/hosts tiedosto. Korjaus:

nano /etc/hosts
127.0.0.1       localhost mail.example.com server
127.0.1.1       example.com mail.example.com server

Lähteet

http://www.postfix.org/

https://wiki.debian.org/Postfix

http://www.sami-lehtinen.net/blog/securing-email-transport-starttls-postfix-ca-certificates-fingerprint-authority

Mainos / Advertisement: