Tämän modulin kesto on kaksi lähipäivää. Ensimmäisenä päivänä tutustumme sähköpostin toimintaan teoriatasolla ja teemme harjoituksia. Harjoituksessa asennamme Linux-koneelle sähköpostipalvelinohjelman ja harjoittelemme sen käyttöä. Harjoitusten tekeminen jatkuu seuraavana päivänä, jolloin teemme asennuksia Linuxilla toteutettujen yleisimpien järjestelmien kanssa.
Sisällysluettelo |
Ihmisillä on aina ollut tarve kommunikoida toisten kanssa. Toiset kommunikoivat enemmän ja toiset vähemmän, mutta aina joku kommunikoi tavalla taikka toisella. Tietoverkot ovat mullistaneet kommunikointitavat ja -mallit aivan totaalisesti, sillä verkot poistavat esimerkiksi etäisyyksien mukanaan tuomat esteet. Ihmiset voivat lähettää viestin toiselle puolelle maapalloa, ja viesti on silmän räpäyksessä perillä. Ihmiset voivat luoda keskusteluryhmiä, joiden osapuolet ovat eri mantereilla, ja silti on tunne kuin he olisivat samassa huoneessa. Tietoverkoilla pienennetään kustannuksia matkustamisen vähentyessä, tuodaan kansainvälisyyttä maitten rajojen poistuessa, lisätään rikollisuutta vihamielisten ryhmittymien yhdistyessä ja muuta niin hyvä kuin pahaakin.
Eräs tunnetuimmista kommunikaatiojärjestelmistä on sähköposti. Sähköpostin käyttö on yleistä, mutta on valitettavasti leimautumassa yhä epävarmemmaksi tavaksi kommunikoida. Esimerkiksi tiukat roskapostisuodatukset ovat johtaneet siihen, että suodatetuksi saattaa joutua myös hyötyliikennettä. Tarinoita kuulee päivittäin siitä, miten jokin posti on jäänyt saapumatta perille. Toisaalta sähköposti kommunikointitapana johtaa helposti siihen, että viesti jää roikkumaan postilaatikkoon kenenkään siihen mitenkään reagoimatta. On sähköpostissa toki erittäin hyviäkin ominaisuuksia, kuten aikaan ja paikkaan sitomattomuus.
Sähköpostin korvaavia kommunikaatiojärjestelmiä ovat esimerkiksi puhelin, IM ja foorumit. Tyypillisesti puhelinliikenne on jätetty puhelinoperaattoreiden harteille, mutta puheen siirtyessä yhä enemmän dataksi integroituu se osaksi yrityksien tietojärjestelmiä. IM-järjestelmät ovat nousemassa yhä suositummiksi. Esimerkiksi Messenger, Skype ja Chat ovat monien tiedosssa ja erittäin monien käytössä. Myös yritykset ovat ottaneet kyseiset järjestelmät käyttöönsä, sillä yhä enemmän näkee esimerkiksi Skype-osoitteita yhteystiedoissa.
Sähköpostin rooli nyky-yhteiskunnassa on merkittävä. Sähköpostin tuntee lähes jokainen ja sitä käyttää päivittäin yhä useampi. Sähköpostilla hoidetaan niin työ- kuin yksityisasioita ja lisäksi yhä enemmän myös erilaiset palvelutarjoajat hyödyntävät sähköpostia erilaisissa ratkaisuissaan. Yhteenvetona voitaisiin sanoa, että sähköposti alkaa olla monelle ihmiselle ja yritykselle yksi tärkeimmistä kommunikaatiovälineistä.
Sähköpostijärjestelmän malli on kopioitu suoraan perinteisen postin mallista, sillä kaikessa yksinkertaisuudessaan sähköposti on vain tiedosto, joka siirretään lähettäjän koneelta vastaanottajan koneelle. Siirron keskeiset osapuolet ovat:
Malli on siis täysin sama kuin postin. Lähettäjä kirjoittaa kirjeen, vie sen postitoimistoon, joka välittää sen postijärjestelmän seuraavaan kohteeseen ja niin edespäin. Lopulta kirje saapuu postitoimistoon, josta postinkantaja toimittaa sen vastaanottajan postilaatikkoon. Oleellisin ero perinteisen postin ja sähköpostin välillä on hinta ja välimatkoista irroittautuminen. Sähköpostin lähettäminen on käytännössä ilmaista eli postin määrää ei rajoita mikään taloudellinen este. Ajankäytön kannalta on sama lähetänkö postin työkaverille tai Australian pääministerille. Toimintamalli vastaa siis perinteistä postia, mutta toimintaympäristö ei sinne päinkään!
Teknisesti ajatellen voimme sähköpostin siirron sisältävän seuraavat vaiheet:
Lopputulos näyttää käytännössä seuraavalta:
Return-path: <turo.lahteenmaki@pakk.fi>
Envelope-to: ville.heikkiniemi@digiverkot.fi
Delivery-date: Thu, 04 Sep 2008 12:52:52 +0300
Received: from mailhost.lounet.fi ([193.142.51.232]) by web2.futuron.fi with esmtp (Exim 4.69)
(envelope-from <turo.lahteenmaki@pakk.fi>)
id 1KbBWG-0001gM-Cy
for ville.heikkiniemi@digiverkot.fi; Thu, 04 Sep 2008 12:52:52 +0300
Received: from [193.185.76.20] (HELO HUB01.postipalvelut.lounet) by Return-path: <turo.lahteenmaki@pakk.fi>
Envelope-to: ville.heikkiniemi@digiverkot.fi
Delivery-date: Thu, 04 Sep 2008 12:52:52 +0300
Received: from EXVS02.postipalvelut.lounet ([193.185.74.203]) by HUB01.postipalvelut.lounet ([193.185.76.141]) with mapi; Thu, 4 Sep 2008 12:50:40 +0300
From: =?iso-8859-1?Q?Turo_L=E4hteenm=E4ki?= <turo.lahteenmaki@pakk.fi>
To: "ville.heikkiniemi@digiverkot.fi" <ville.heikkiniemi@digiverkot.fi>
Date: Thu, 4 Sep 2008 12:55:16 +0300
Subject: =?iso-8859-1?Q?P=F6yt=E4kirja?=
Thread-Topic: =?iso-8859-1?Q?P=F6yt=E4kirja?=
Thread-Index: AckOdFUF+1KmT64fSiGw7WqpaAgqRA==
Message-ID: <121289105D47A448A65264AFB61012CE3A4B9E59AC@EXVS02.postipalvelut.lounet>
Accept-Language: fi-FI, en-US
Content-Language: fi-FI
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: fi-FI, en-US
Content-Type: multipart/alternative;
boundary="_000_121289105D47A448A65264AFB61012CE3A4B9E59ACEXVS02postipa_"
MIME-Version: 1.0
X-Spam-Status: No, score=-1.0
X-Spam-Score: -9
X-Spam-Bar: -
X-Spam-Flag: NO
--_000_121289105D47A448A65264AFB61012CE3A4B9E59ACEXVS02postipa_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Moro!
Saitko sen p=F6yt=E4kirjan jonka tuossa jokin aikaa takaperin sinulle postitin?
t:
Turo L=E4hteenm=E4ki
kouluttaja NTM
Paimion AKK
050 594 3662
Yllä olevasta esimerkkiviestistä voimme huomata, että sähköpostin alkuperäinen ajatus on muuttunut vuosien saatossa. Muutoksia on tapahtunut monellakin tapaa, kuten esimerkiksi viestin muodossa ja roskapostiin liittyvissä asioissa. Tämä on johtanut väkisinkin siihen, että sähköpostin käytettävyys on kärsinyt valtavasti. Toisekseen sähköposti sisältää edelleenkin paljon parannettavaa, kuten esimerkiksi turvallisuus on edelleenkin täysin retuperällä. Jokaisen täytyisi muistaa, että ilman erillistä salausta viesti on kuin avoin kirjekuori. Luotatko sinä esimerkiksi postijärjestelmäämme niin paljon, että tohdit laittaa kirjekuoret postiin ilman kuoren sulkemista?
Sähköposti on siis tiedosto, jota siirretään sähköpostipalvelimelta toiselle. Palvelimen tärkein palvelu on SMTP-palvelin, joista esimerkkinä Postfix. SMTP-palvelin vie sille tulevan viestin oikeaan kansioon (ns. kotikansio) ja välittää siihen kuulumattomat viestit oikealle palvelimelle. Muille palvelimille (domainille) menevät viestit reititetään eteenpäin DNS-palvelimelta saatava MX-tietueen avulla. DNS-palvelin on siis oleellinen osa toimivaa järjestelmää. DNS-palvelimia on saatavana monia, joista me käytämme saman asian ajavaa DNSMasq-ohjelmaa.
Viestin saavuttua oikealle palvelimelle, voidaan käyttäjän kotikansio käydä lukemassa ihan normaaleilla tiedostojen katselu työkaluilla. Yleisesti kuitenkin käytetään IMAP- tai POP-palvelinta, sillä ne tarjoavat viestien integroinnin erilaisiin sähköpostiohjelmiin (Thunderbird...). IMAP- ja POP-palvelimia on myös monia, joista me käytämme Dovecot-ohjelmaa.
Muita olennaisia järjestelmän komponentteja ovat NTP-palvelin, joka pitää palvelimet oikeassa ajassa. Lisäksi WWW- ja SQL-palvelimista on tullut tärkeä osa järjestelmää, sillä ne tarjoavat Webmail-rajapinnan sekä ylläpitoa ja hallintaa helpottavia työkaluja.
IM on reaaliaikaista kommunikointia eri osapuolten välillä. Vaihtoehtoja ratkaisujen toteuttamiseen on valtavasti, mutta yleisimmäksi toteutustavaksi on muodostunut malli, jossa käyttäjät rekisteröityvät keskitetylle palvelimelle käyttäen tiettyä sovellusta. Nykyisin eräs tunnetuimmista tekniikoista on Microsoftin Messenger, joka on noussut kuuluisuuten erityisesti nuorison kautta. Mielenkiintoisin asia IM-järjestelmien osalta on se, että erittäin moni työntekijä käyttää organisaatioissa Messengeriä päivittäin, mutta työasioiden hoitamiseen hyvin vähän. IM-järjestelmien vahvuus on reaaliaikaisuus, yksinkertaiuus ja helppokäyttöisyys. IM-asiakasohjelmilla näkee yhdellä vilkaisulla, että onko kaveri tavoitettavissa. Kaverille voi viestittää kuulumisia ja lähettää tiedostoja. Mihin siis sähköpostia tarvitaan?
IM-järjestelmien keskeiset osapuolet ovat yleensä palvelin ja asiakassovellukset. Valitettavasti eräs suurimmista ongelmista tällä hetkellä on asiakassovelluksien suljetut tekniikat. Käytännössä tämä tarkoittaa sitä, että esimerkiksi Messenger ohjelma vaati Messenger-tilin, jonka avulla kyseinen ohjelma kirjautuu Messengerin palvelimille. Palvelin on yleensä organisaatioiden ulkopuolella, joten nettiyhteyden ollessa poikki viestien välittäminen ei onnistu. Jokainen tarvitsee siis Messenger tilin ja kaikki viestit tyypillisesti välitetään palvelimen kautta. Miten varmistetaan palvelun käytettävyys ja tietosuoja?
Onneksi IM-järjestelmille on luotu niin sanottu avoin standardi, jota kutsutaan XMPP-lyhenteellä. Eräs keskeisin osapuoli standardin hyödyntämisessä on ollut Google (Yllätys yllätys...!). XMPP-standardisointi on tarkoittanut sitä, että jo kauan aikaa on IM-asiakassovelluksia ollut saatavilla eri käyttöjärjestelmille sekä mobiililaitteille. XMPP-palvelimia on saatavilla monenlaista moniin tarkoituksiin, jolloin IM-asiakasovelluksien liikenne ollaan voitu eristää esimerkiksi organisaatioiden sisälle.
Puheen kuljettaminen tietoverkoissa eli VoIP (Voice over Internet Protocol) on odottanut nousua kukoistukseen jo vuosien ajan. Asian edistymistä ovat haitanneet useat asiat, joista esimerkkinä mainittakoon puhelinoperaattorit (miksi kehittää kannibaalituotetta..), IPv4-osoitteistus (UDP-tunnelin luonti NATin läpi ongelmallista) ja Business-mallin muutostila (puhe IP-liikenteeseen => kuka tahansa voi olla puhelinoperaattori). VoIP-järjestelmät ovat rakenteeltaan tyypillisesti samantapaisia kuin sähköposti- ja IM-järjestelmät. Esimerkiksi puhelinnumerona voidaan käyttää esimerkiksi sähköpostiosoitetta ja VoIP-asiakkaat rekisteröityvät keskitetylle palvelimelle kuten IM-sovellukset. Poikkeuksen tähän tekevät suljetut järjestelmät, joista yksi esimerkki on Skype. Skype on suljettu järjestelmä, jonka rakenteesta ei ole tietoa.
Tekniikkatasolla VoIP on siis jakautunut käytännössä kahteen leiriin, joista toinen edustaa perinteisiä puhelinjärjestelmiä ja toinen ohjelmistosidonnaisia ratkaisuja. Perinteisemmällä puolella käytetään SIP- ja H.323-tekniikka ja ohjelmistopuolelta varmasti tunnetuin on edellä mainittu Skype. Molemmissa on hyvät ja huonot puolet.
SIP ja H.323 ovat perinteisten isojen puhelinkeskusvalmistajien, kuten Cisco ja Siemens, tukemia tekniikkoja. Näistä SIP tulee korvamaan H.323:n, sillä SIP on standardoitu esimerkiksi 3G-verkkoihin tulevaisuuden kommunikointiprotokollaksi. SIP-protokollan kiistämätön hyvä puoli on avoin standardi, jota noudattaen valmistajat voivat rakentaa erilaisia laitteita ja sovelluksia. Niinpä SIP-protokollaa tukevia laitteita on valtava määrä.
Edellisessä kappaleessa lueteltiin sähköpostijärjestelmän tärkeimmät osat. Seuraavaksi aloitamme järjestelmän rakentamisen pala kerrallaan.
NTP on erittäin tärkeä osa tietoverkkoa ja sen palvelimia ja palveluita. Sähköpostin, laitteiden seuraamisen, vikojen selvittämisen, autentikoinnin, DHCP:n, DNS:n ja yleisen tiedostojen käsittelyn kannalta on tärkeää, että kaikissa laitteissa on täsmälleen sama kellonaika. NTP toimii niin, että verkossa on palvelin, joka synkkaa kellon jonkun yleisen palvelimen kanssa. NTP-palvelimet muodostavat puumaisen mallin, jossa jokainen palvelin saavuttaa tietyn tason (Stratum-tasot). Tasoja saa olla maksimissaan 16.
Liikenteen osalta synkkaaminen tapahtuu alla olevalla tavalla eli asiakas lähettää NTP kyselyn portista 123 porttiin 123. Jos yhteys ja palvelin on kunnossa, palvelin vastaa kyselyyn. Kyselyn tekijä päättelee vastauksesta kellonajan ja synkkaa tarvittaessa oman kellonsa palvelimen kanssa.
ville@ville-laptop:/etc$ sudo tcpdump -ni eth0 port 123 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 13:37:18.301653 IP 213.250.106.106.123 > 91.189.94.4.123: NTPv4, Client, length 48 13:37:18.345584 IP 91.189.94.4.123 > 213.250.106.106.123: NTPv4, Server, length 48 13:38:23.301652 IP 213.250.106.106.123 > 91.189.94.4.123: NTPv4, Client, length 48 13:38:23.348079 IP 91.189.94.4.123 > 213.250.106.106.123: NTPv4, Server, length 48 13:39:29.301649 IP 213.250.106.106.123 > 91.189.94.4.123: NTPv4, Client, length 48 13:39:29.345757 IP 91.189.94.4.123 > 213.250.106.106.123: NTPv4, Server, length 48 13:40:35.301653 IP 213.250.106.106.123 > 91.189.94.4.123: NTPv4, Client, length 48 13:40:35.345650 IP 91.189.94.4.123 > 213.250.106.106.123: NTPv4, Server, length 48 13:41:41.301695 IP 213.250.106.106.123 > 91.189.94.4.123: NTPv4, Client, length 48 13:41:41.348032 IP 91.189.94.4.123 > 213.250.106.106.123: NTPv4, Server, length 48 13:42:45.301651 IP 213.250.106.106.123 > 91.189.94.4.123: NTPv4, Client, length 48 13:42:45.345457 IP 91.189.94.4.123 > 213.250.106.106.123: NTPv4, Server, length 48
NTP-järjestelmän vahvuus on yksinkertaisuus. Sekä kysely että vastaus ovat mahdollisimman yksinkertaisia ja keveitä. Kyselyjä voidaan tehdä usealle palvelimelle, jolloin yhden palvelimen katoaminen ei haittaa järjestelmää laisinkaan.
Lähes jokaisessa Linuxissa on oletuksena komento ntpdate, jolla voidaan synkata koneen aika tiettyyn palvelimeen tietyllä hetkellä. Tämä toiminto voidaan tehdä ajastetusti esimerkiksi tapahtumaan kerran päivässä. Komennon vahvuus on keveys, sillä järjestelmää kuormitetaan vain komennon suorituksen aikana. Jos koneen synkkaaminen tapahtuu kyseisellä komennolla, kone ei pysty tarjoamaan kelloaan muiden käyttöön eli ei toimi NTP-palvelimena. Alla on esimerkki ntpdate-komennon käytöstä. Esimerkistä voidaan huomata, että kellonajan muuttaminen vaatii luonnollisesti pääkäyttäjän oikeudet.
ville@ville-laptop:~$ ntpdate ntp.ubuntu.com 25 Nov 20:28:54 ntpdate[7804]: bind() fails: Permission denied ville@ville-laptop:~$ sudo ntpdate ntp.ubuntu.com 25 Nov 20:29:06 ntpdate[7813]: adjust time server 91.189.94.4 offset -0.035292 sec ville@ville-laptop:~$
Alla esimerkki komennon ajastamisesta. Tässä kello säädetään kerran tunnista ntp.ubuntu.com palvelimen aikaan
echo "#!/bin/sh" > /etc/cron.hourly/ntpdate-hourly echo "ntpdate ntp.ubuntu.com > /dev/null" >> /etc/cron.hourly/ntpdate-hourly chmod 755 /etc/cron.hourly/ntpdate-hourly
Edellisen lisäksi on mahdollista, että Linux tarjoaa kelloaan myös muiden koneiden käyttöön eli toimii palvelimena. Tähän tarkoitukseen on yleisesti käytössä oleva ohjelma ja se löytyy esimerkiksi valmiina Debianin pakettivarastosta, jolloin asentaminen tapahtuu komennolla
apt-get install ntp
NTP-palvelin on oletuksena jatkuvasti päällä ja pollaa tiedostoon /etc/ntp.conf määriteltyjä palvelimia tietyn ajan välein. Tämä aika vaihtelee ja voi olla minimissään 16 sekunttia ja maksimissaan 36.4 tuntia. Oletuksena minimi (minpoll) on 64 sekunttia ja maksimi (maxpoll) 1024 sekunttia. Yksinkertaisesti verkon NTP-palvelimen ntp.conf tiedostoon määritellään haluttu synkronointipalvelin ja muiden koneiden ntp.conf-tiedostoon määritellään verkon palvelin.
ville@ville-laptop:~$ ntpdc -p
remote local st poll reach delay offset disp
=======================================================================
*europium.canoni 213.250.106.106 2 64 377 0.04378 -0.000668 0.06387
ville@ville-laptop:~$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*europium.canoni 193.79.237.14 2 u 12 64 377 43.778 -0.668 0.679
ville@ville-laptop:~$
Varmuuden vuoksi kannattaa kello lukita johonkin stratum-tasoon laittamalla alla olevat rivit ntp.conf-tiedostoon. Tämä siksi, että NTP-palvelua asennettaessa stratum-taso on oletuksena liian alhainen. Taso muuttuu hyväksyttäväksi, eli NTP-palvelin hakee paikkansa NTP-puusta, vasta muutaman minuutin kuluttua käynnistyksestä. Sama ilmiö tapahtuu, jos verkkoyhteys palvelimiin on poikki. Alla olevilla on riveillä on varmistettu, että kyseinen palvelin on aina vähintään tasolla kahdeksan.
server 127.127.1.0 fudge 127.127.1.0 stratum 8
SMTP-palvelinohjelma tehtävä on ohjata sähköpostiviestit (tiedostot) oikeaan osoitteeseen tai kansioon. Sähköpostipalvelinohjelmista käytetään yleisesti nimeä MTA. Debianissa oletusasennuksessa tulee aina mukana Exim-ohjelma, joka korvataan helpomman konfiguroitavuuden vuoksi Postfix-ohjelmalla. Muita mahdollisia vaihtoehtoja on paljon. Esimerkiksi Sendmail, Courier ja ESMTP ovat lähes vastaavia, ja suurimmat erot ovatkin oikeastaan konfiguroitavuudessa.
Yleisesti ottaen toimivan sähköpostijärjestelmän asennus on vaativaa. Tämä siksi, että järjestelmän keskeisimmässä roolissa ovat SMTP-palvelinohjelmat, jotka välittävät viestejä toisilleen. Jokainen SMTP-palvelinohjelma tutkii jokaisen sähköpostin sisältöä ja tekee reitityksen perustuen viestissä oleviin sähköpostiosoitteisiin. Viesti voi olla osoitettu itseensä, jolloin palvelinohjelma ottaa kantaa siihen, että voiko viestin välittänyt palvelin toimittaa kyseisen viestin, onko viestin sisältö aiheellinen, onko vastaanottajalla sähköpostitiliä, onko tilin kansiossa tilaa ja niin edelleen. SMTP-palvelimet tekevät siis suuria päätöksiä, ja tunnetusti koneiden loogisuus on vielä hyvinkin puutteellinen! Palvelimissa joudutaan siis säätämään paljon asioita, jolloin konfigurointi on erittäin haastaavaa ja virheiden todennäköisyys erittäin suuri.
Käyttämämme SMTP-palvelinohjelman asennus tapahtuu alla olevalla käskyllä. Asennus kannattaa mennä oletusasetuksilla loppuun, sillä lähes kaikkia asetuksia säädetään harjoituksien edetessä.
apt-get install postfix
Komennon jälkeen postfix-ohjelma on asennettu. Ohjelma on heti päällä eli kuuntelee porttia 25 ja on prosessina prosessilistauksessa. Katso ja totea komennoilla ps xa ja netstat -lunet.
Ohjelman tärkeimmät tiedot eli konfiguraatiotiedostot löytyvät kansiosta /etc/postfix, jossa sijaitsee esimerkiksi tiedostot main.cf ja master.cf. main.cf-tiedoston määritelmä Postfixin manuaalissa on alla. Käytännössä lähes kaikki postin toimintaan vaikuttavat asiat määritellään kyseiseen tiedostoon.
The Postfix main.cf configuration file specifies a very small subset of all the parameters that control the operation of the Postfix mail system.
master.cf-tiedosto on itse prosessin toiminnan kannalta oleellinen tiedosto ja sen määritelmä on alla
The master.cf configuration file defines how a client program connects to a service, and what daemon program runs when a service is requested.
Aloitetaan järjestelmän rakentaminen muokkaamalla tiedostoa main.cf alla olevan kaltaiseksi. Vaihda domainit! Vamista, että tiedossa /etc/hosts on esitelty myhostname-nimen IP-osoite.
gedit /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no append_dot_mydomain = no myhostname = mail.ekaverkko.info myorigin = $myhostname mydestination = $myhostname, localhost mynetworks = 127.0.0.0/8 relayhost = alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mailbox_command = mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all
Käynnistä Postfix uudestaan komennolla
/etc/init.d/postfix restart
Nyt Postfix toimii paikallisena MTA-ohjelmana eli välittää paikallisten tunnuksien välistä postia. Postit ohjataan oletuksena kansioon /var/mail. Asiaa voidaan testata asentamalla yksinkertainen sähköpostiohjelma koneellesi komennolla
apt-get install mailutils
Mennään kansioon /var/mail ja annetaan seuraavat komennot. Jos järjestelmä toimii oikein, kyseiseen kansioon tulee tiedosto nimeltään administrator, joka sisältää itse sähköpostiviestin.
cd /var/mail ls -l echo "Testipostia" | mail -s "Testipostin otsikko" administrator ls -l cat administrator
Viestien välitys näkyy useassa järjestelmän lokitiedostossa, joiden seuraaminen on järjestelmän rakennusvaiheessa äärimmäisen tärkeää. Tiedostoista löytyy yleensä vastaukset moneen ongelmaan. Tiedostot voidaan katsastaa vaikkapa seuraavilla komennoilla
cat /var/log/mail.info cat /var/log/mail.log cat /var/log/mail.warn cat /var/log/mail.err
Seuraavaksi liitetään Postfix tiettyyn nimiavaruuteen ja samalla ohjataan postit käyttäjien kotihakemistoihin. Tämä tapahtuu muokkaamalla tiedostoa main.cf, jonka pitäisi näyttää kokonaisuudessaan alla olevan kaltaiselta. Huom! nimiavaruus
gedit /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no append_dot_mydomain = no myhostname = mail.ekaverkko.info myorigin = ekaverkko.info mydestination = ekaverkko.info, localhost mynetworks = 127.0.0.0/8 relayhost = alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ mailbox_command = mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all
Mennään kansioon /home/administrator ja annetaan seuraavat komennot. Jos järjestelmä toimii oikein, kyseiseen kansioon tulee kansio Maildir ja sen alle kansio new, jossa on erikoisen niminen tiedosto sisältäen itse sähköpostiviestin.
cd /home/administrator ls -l echo "Testipostia1" | mail -s "Testipostin otsikko - 1" administrator echo "Testipostia2" | mail -s "Testipostin otsikko - 2" administrator@ekaverkko.info ls -l cd Maildir/new ls -l
Tästä eteenpäin kyseinen palvelin toimii sähköpostipalvelimena, jonka nimiavaruus yleistä nimiavaruuttamme. Käytännössä kyseisellä palvelimella ei tee vielä ulkopuolelle lähetettävien tai ulkopuolelta tulevien postien kannalta mitään. Toimii siis vain sisäisen liikenteen välittäjänä!
Postfixin main.cf-tiedostossa on alla olevat rivit, joilla viitataan kansiossa /etc oleviin tiedostoihin aliases ja aliases.db.
alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases
aliases-tiedosto sisältää osoitteet, joita Linux-järjestelmät käyttävät kommunikointiin. Esimerkiksi postmaster: root kertoo sen, että meidän tapauksessamme osoitteeseen postmaster@ekaverkko.info menevät postit ohjataan osoitteeseen root@ekaverkko.info. Tämä taasen ohjataan osoitteeseen administrator@ekaverkko.info, joka onkin jo olemassa oleva tili, jonne viestit toimitetaan. Oletuksena aliases-tiedosto näyttää alla olevalta.
mail:/etc# cat 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: administrator
Jos halutaan, että tehdään uusi ohjaus eli alias lisätään aliases-tiedostoon rivi, jossa esitellään nimi ja ohjaus. Esimerkiksi lisätään aliases-tiedoston loppuun rivi hyvin.pyyhkii: administrator ja annetaan alla oleva komento. Komennon jälkeen osoitteeseen hyvin.pyyhkii@ekaverkko.info tulevat postit ohjataan käyttäjälle administrator.
postalias /etc/aliases /etc/aliases
postalias-komento tekee Postfixin käyttämän tietokantatiedoston aliases.db, jonka Postfix lukee jokaisen saapuneen postin yhteydessä. Muutoksien voimaan tulo ei vaadi Postfixin uudelleen käynnistämistä! Alla havainnollistettu tilannetta.
mail:/etc# ls | grep aliases aliases aliases.db mail:/etc#
Jos halutaan luoda uusi käyttäjä, tapahtuu se esimerkiksi alla olevalla käskyllä. Käskyjen jälkeen osoitteeseen teemu@ekaverkko.info voidaan lähettää postia, joka ohjautuu kansioon /home/teemu/Maildir/new.
useradd -m -s /bin/bash teemu passwd teemu
Osoitteen ollessa esimerkiksi muotoa etunimi.sukunimi@ekaverkko.info, täytyy tehdä lisäys tiedostoon aliases ja antaa komento postalias. Tämä voidaan tehdä esimerkiksi alla olevilla komennoilla, joilla lisätään tiedostoon /etc/aliases rivi teemu.testeri: teemu ja otetaan alias käyttöön komennolla postalias.
echo "teemu.testeri: teemu" >> /etc/aliases postalias /etc/aliases /etc/aliases
Asia on testattu seuraavalla tavalla:
mail:/etc# echo "testi" | mail -s "testi" teemu.testeri@tokaverkko.info
mail:/etc# cd /home/teemu/Maildir/new/
mail:/home/teemu/Maildir/new# ls -l
yhteensä 4
-rw------- 1 teemu teemu 472 2009-01-21 13:26 1232537217.V809I80a0a7M10349.mail
mail:/home/teemu/Maildir/new# cat 1232537217.V809I80a0a7M10349.mail
Return-Path: <root@tokaverkko.info>
X-Original-To: teemu.testeri@tokaverkko.info
Delivered-To: teemu.testeri@tokaverkko.info
Received: by mail.tokaverkko.info (Postfix, from userid 0)
id F0E0220198C; Wed, 21 Jan 2009 13:26:56 +0200 (EET)
Subject: testi
To: <teemu.testeri@tokaverkko.info>
X-Mailer: mail (GNU Mailutils 1.1)
Message-Id: <20090121112656.F0E0220198C@mail.tokaverkko.info>
Date: Wed, 21 Jan 2009 13:26:56 +0200 (EET)
From: root@tokaverkko.info (root)
testi
mail:/home/teemu/Maildir/new#
IMAP on protokolla, jolla sähköpostit luetaan käyttäjien kansiosta. SMTP-palvelinohjelmistojen tapaan vaihtoehtoja on valtava määrä, joista me käytämme Dovecot-ohjelmaa. Ohjelma on erittäin hyväksi sekä turvalliseksi havaittu ja on lisäksi pitkälti kotimainen tuotos. Ohjelma asennus tapahtuu seuraavasti
apt-get install dovecot-imapd dovecot-common
Ohjelman oleellisin tiedosto on dovecot.conf, joka sijaitsee kansiossa /etc/dovecot. Tiedostossa on yli 1000 riviä, joista suurin osa on kommentoitu. Meidän tapauksessa muokkaa tiedostoa niin, että se sisältää vain seuraavat rivit:
protocols = imap disable_plaintext_auth = no log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:~/Maildir protocol imap { } auth default { mechanisms = plain passdb pam { } userdb passwd { } user = root }
Käynnistä dovecot uudestaan
/etc/init.d/dovecot restart
Ota yhteys toisella koneella kyseiseen koneeseen käyttäen esimerkiksi ohjelmaa Thunderbird. Luo Thunderbirdillä tili, jossa saapuvan ja lähtevän postin palvelimina on palvelimen IP-osoite sekä käyttäjätunnuksena esimerkiksi luotu teemu.
Haetaan teemun postit ja lähetetään postia palvelimen tileihin, esimerkiksi osoitteeseen administrator@ekaverkko.info.
Julkisessa verkossa toimivan sähköpostijärjestelmän rakennekuva on esitetty alla olevassa kuvassa. Olennainen asia edellisiin tilanteisiin verrattuna on se, että nyt SMTP-palvelinohjelmat liikennöivät keskenään. Tämä johtaa esimerkiksi siihen, että esimerkiksi DNS-palvelimen olemassa olo on lähes välttämätön.
DNS-palvelin rooli sähköpostijärjestelmissä on yksinkertainen, mutta lähes välttämätön. DNS-palvelimen aonia tehtävät on vastata siihen, että mihin palvelimeen SMTP-palvelimen tulee ottaa yhteyttä tiettyyn nimiavaruuteen kohdistuvissa sähköposteissa. Seuraavassa esimerkki komennosta nslookup
mail:~# nslookup > set q=MX > syotec.fi Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: syotec.fi mail exchanger = 10 mbox1.netikka.net. syotec.fi mail exchanger = 10 mbox2.netikka.net. Authoritative answers can be found from: mbox1.netikka.net internet address = 213.250.81.202 mbox2.netikka.net internet address = 213.250.81.203 > yle.fi Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: yle.fi mail exchanger = 10 dingus.yle.fi. Authoritative answers can be found from: yle.fi nameserver = ns2-fin.global.sonera.fi. yle.fi nameserver = ns2-usa.global.sonera.net. yle.fi nameserver = ns.yle.fi. yle.fi nameserver = ns-i.yle.fi. yle.fi nameserver = ns1-fin.global.sonera.fi. yle.fi nameserver = ns1-swe.global.sonera.se. dingus.yle.fi internet address = 193.65.105.168 ns.yle.fi internet address = 193.65.105.161 ns-i.yle.fi internet address = 194.252.88.195 ns1-fin.global.sonera.fi internet address = 193.210.18.31 ns1-swe.global.sonera.se internet address = 217.28.206.86 ns2-fin.global.sonera.fi internet address = 195.156.148.158 ns2-usa.global.sonera.net internet address = 69.20.9.109 >
DNS-palvelin palauttaa MX-tietueen, jossa on kerrottu sen palvelimen IP-osoite, johon SMTP-palveluohjelma ottaa yhteyttä. Me käytämme harjoituksissa DNSMasq-ohjelmaa, joka on erittäin pieni ja helposti konfiguroitava DNS- ja DHCP-palvelin. DNSMasq ei ole varsinaisesti DNS-palvelin, sillä se välittää pyynnöt vain eteenpäin. Myös paikallisten A-tietueiden luominen onnistuu eli paikallisia nimi-osoite-määrityksiä voidaan tehdä. Vahvuus yksinkertaisuus!
Linux Server - Verkkopalvelut -kurssilla keskityttiin nimipalvelimeen Bind, joka on eräs parhaimmista saatavilla olevista nimipalvelimista. Tämän kurssin aikana emme tarvitse niin massiivista ohjelmaa niin valtavalla määrällä ominaisuuksia, sillä vastaisuudessa nimipalvelimen rooli on tärkeä, muttei vaativa.
Tarvittavan ohjelman asennus tehdään seuraavalla komennolla
apt-get install dnsmasq
Muutokset tehdään tiedostoon /etc/dnsmasq.conf ja ohjelma käynnistetään uudelleen komennolla
/etc/init.d/dnsmasq restart
Käytämme DNSMasq-palvelinohjelmaa paikallisena nimipalvelimena, jolloin voimme lisätä itse haluamiamme nimiä ja esimerkiksi MX-ohjauksia.
Tee tiedosto, jossa on käytössä olevien nimipalvelimien osoitteet. Alla tiedoston /etc/resolv.conf.HML sisältö
nameserver 213.250.105.3 nameserver 213.250.106.4
Ohjaa paikallisen koneen nimipyynnöt paikalliseen nimipalvelimeen eli tiedoston /etc/resolv.conf sisältö tulee olla seuraava
nameserver 127.0.0.1
Laita tiedostoon /etc/dnsmasq.conf seuraava rivi
resolv-file=/etc/resolv.conf.HML
Tee ensimmäiset nimi-osoite-esittelyt tiedostoon /etc/dnsmasq.conf seuraavalla tavalla Huom! Osoite
address=/mail.ekaverkko.info/192.168.10.20 address=/imap.ekaverkko.info/192.168.10.20 ptr-record=20.10.168.192.in-addr.arpa,mail.testiverkko.info
Käynnistä palvelinohjelma uudelleen seuraavalla komennolla
/etc/init.d/dnsmasq restart
Testaa toiminta esimerkiksi seuraavasti
master:~# ping mail.ekaverkko.info PING mail.ekaverkko.info (192.168.10.20) 56(84) bytes of data. 64 bytes from mail.ekaverkko.info (192.168.10.20): icmp_seq=1 ttl=64 time=0.050 ms 64 bytes from mail.ekaverkko.info (192.168.10.20): icmp_seq=2 ttl=64 time=0.032 ms
Nyt käytössä on paikallinen nimipalvelin, jolla voidaan ohjata mihin tahansa nimiavaruuteen kohdistuvat pyynnöt ohjata mihin IP-osoitteeseen tahansa.
Lisää MX-tietue tiedostoon /etc/dnsmasq.conf seuraavalla rivillä
mx-host=ekaverkko.info,mail.ekaverkko.info,10
Käynnistä palvelinohjelma uudelleen seuraavalla komennolla
/etc/init.d/dnsmasq restart
Tästä eteenpäin ekaverkko.info-domainiin tulevat sähköpostit ohjataan osoitteeseen mail.testiverkko.info eli osoittetaan omaan palvelimeen.
Lisää toinen paikallinen domain tiedostoon /etc/dnsmasq.conf seuraavalla rivillä
server=/tokaverkko.info/192.168.10.10 ptr-record=10.10.168.192.in-addr.arpa,mail.tokaverkko.info
Ja käynnistä palvelinohjelma uudelleen seuraavalla komennolla
/etc/init.d/dnsmasq restart
Tämän toimenpiteen jälkeen tokaverkko.info-domainiin kohdistuvat nimipyynnöt ohjataan osoitteeseen 192.168.10.10
Kun liitetään SMTP-palvelin julkiseen verkkoon, täytyy ottaa huomioon aivan uusia asioita. Jo tässä vaiheessa Postfix ottaa vastaan postia, joka on osoitettu nimiavaruuteemme. Haluammeko, että mistä tahansa Internetistä nimiavaruuteemme lähetetty posti tulee palvelimellemme? Lähinnä roskapostien vuoksi emme, jolloin posti ohjataan MX-tietueella ulkopuoliselle roskapostin suodattajalle. Roskapostin suodatusta tarjoaa monet yritykset ja operaattorit, joista esimerkkinä mainittakoon D-fence. Jos halutaan toteuttaa suodatusta omassa palvelimessa, voidaan tarkoitukseen käyttää esimerkiksi SpamAssassin-ohjelmaa. Yksinkertaisuuden roskapostin suodatus perustuu pisteytykseen, jossa jokainen posti pisteytetään perustuen sähköpostin lähettäjään, postin sisältöön, postin lähetys tiheyteen ja muihin asioihin, joista voidaan päätellä häiriköintiä. Ohjeita asennukseen löytyy vaikka kuinka paljon:
http://www.debianadmin.com/how-to-filter-spam-with-spamassassin-and-postfix-in-debian.html http://www.debuntu.org/postfix-and-pamassassin-how-to-filter-spam
Toinen tärkeä asia on palvelimella olevien postien virustarkistus. Tähän tarkoitukseen on myös paljon vaihtoehtoja, joista esimerkkinä ClamAV. Tähänkin löytyy paljon ohjeita:
http://www.debianadmin.com/clamav-installation-and-configuration.html http://www.debianhelp.co.uk/postfixandcalmav.htm
Eräs erittäin paljon käytetty MailScanner-ohjelma, joka yhdistää muun muassa edelliset asiat.Ohjelman asentamiseen löytyy ohjeita muun muassa ohjelman sivuilta.
Edellisessä otettiin kantaa ulkopuolelta tuleviin koneellemme osoitettuihin posteihin. Me emme asenna kyseisiä ohjelmia, koska ehdottomasti yleisin ratkaisu on käyttää ulkopuolista palveluntarjoajaa tai operaattoria niin sanottuna reunapalvelimena, joka tekee kyseisen tehtävän. Ja hyvä niin, sillä tehokas suodatus perustuu laajaan referenssimateriaaliin, joka voidaan saavuttaa ainoastaan keskittämällä palvelua.
Me keskitymme huolehtimaan siitä, ettei meidän palvelin tule toimimaan roskapostittajana. Käytännössä siis, me kontrolloimme sitä, kuka lähettää meidän palvelimella postia maailmalle. Ensimmäisenä sallimme postinlähetyksen aliverkostamme. Tämä tapahtuu jälleen muokkaamalla tiedostoa main.cf, jonka pitäisi näyttää tässä vaiheessa kokonaisuudessaan alla olevan kaltaiselta. Huom! nimiavaruus sekä osoiteavaruus kohdassa mynetworks
gedit /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no append_dot_mydomain = no myhostname = mail.ekaverkko.info myorigin = ekaverkko.info mydestination = ekaverkko.info, localhost mynetworks = 127.0.0.0/8, 192.168.10.0/24 relayhost = alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ mailbox_command = mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all
Postfixin käynnistämisen jälkeen voimme lähettää Thunderbirdillä postia muille koneille.
Autentikoivalla SMTP:llä huolehditaan siitä, että palvelimen kautta lähettää postia ainoastaan ne, joilla on myös tili. Postin lähettämiseen käytettään siis samoja tunnuksia kuin lukemiseen. Autentikoinnista huolehtii Dovecot, joten ensimmäisen pitää Postfixille tulevat yhteydet ohjata autentikoitumaan Dovecotille. Tämä tapahtuu muokkaamalla tiedostoa /etc/postfix/main.cf, jonka pitäisi muokkaamisen jälkeen alla olevan kaltaiselta. Huom! nimiavaruus sekä osoiteavaruus kohdassa mynetworks
gedit /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination broken_sasl_auth_clients = yes smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no append_dot_mydomain = no myhostname = mail.ekaverkko.info myorigin = ekaverkko.info mydestination = ekaverkko.info, localhost mynetworks = 127.0.0.0/8, 192.168.10.0/24 relayhost = alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ mailbox_command = mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all
Seuraavaksi muokataan tiedostoa /etc/dovecot/dovecot.conf, joka näyttää muokkauksen jälkeen seuraavalta.
gedit /etc/dovecot/dovecot.conf
protocols = imap disable_plaintext_auth = no log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:~/Maildir protocol imap { } auth default { mechanisms = plain passdb pam { } userdb passwd { } user = root socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } }
Lopuksi käynnistetään ohjelmat uudestaan
/etc/init.d/dovecot restart /etc/init.d/postfix restart
Tästä eteenpäin sähköpostin lähettäminen onnistuu ainoastaan tunnuksen kanssa eli voidaan käyttää samoja tunnus/salasana-paria, jota käytetään postin lukemiseen.
Salatulla yhteydellä varmistetaan, ettei kukaan saa selvitettyä sähköpostipalvelimen ja sähköpostiasiakkaan välistä liikennettä haettaessa postia palvelimelta. Vaaravyöhykkeellä ovat itse postit ja tunnus sekä salasana.
Tehdään salaukseen käytettäville sertifikaateille kansiot
mkdir /etc/dovecot/certs mkdir /etc/dovecot/private
Muokataan oikeuksia sellaiseksi, ettei avainta päästä katsomaan
chown root:ssl-cert /etc/dovecot/private chmod 0710 /etc/dovecot/private
Tehdään sertifikaatti. HUOM! Tärkein kohta on COMMON NAME, johon laitetaan se osoite, jolle sertifikaatti tehdään
openssl req -new -outform PEM -out /etc/dovecot/certs/imapd.cert -newkey rsa:2048 -nodes -keyout \ /etc/dovecot/private/imapd.key -keyform PEM -days 365 -x509
Muokkaa tiedostoa /etc/dovecot/dovecot.conf niin, että se näyttää kokonaisuudessaan seuraavalta
gedit /etc/dovecot/dovecot.conf
protocols = imap imaps disable_plaintext_auth = no log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:~/Maildir ssl_cert_file = /etc/dovecot/certs/imapd.cert ssl_key_file = /etc/dovecot/private/imapd.key ssl_disable = no protocol imap { } auth default { mechanisms = plain passdb pam { } userdb passwd { } user = root socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } }
Käynnistä ohjelma uudestaan
/etc/init.d/dovecot restart
Tästä eteenpäin päästään kirjautumaan sähköpostiin käyttäen suojaamattoman yhteyden lisäksi myös TSL-salattua yhteyttä.
Salatun SMTP-yhteyden tarkoitus on sama kuin äsken. Nyt salataan lähtevään postiin liittyvä liikenne eli Thunderbirdillä lähetetty posti tulee salattuna palvelimelle ja jatkaa siitä matkaa salatun yhteyden läpi vastaanottajan sähköpostipalvelimelle. Ongelma! Tukeeko vastaanottajan postipalvelin salausta?
Luodaan salaukseen käytettävälle sertifikaatille ja avaimelle kansio
mkdir /etc/postfix/certs mkdir /etc/postfix/private
Muokataan oikeuksia sellaiseksi, ettei avainta päästä katsomaan
chown root:ssl-cert /etc/postfix/private chmod 0710 /etc/postfix/private
Tehdään sertifikaatti. HUOM! Tärkeintä kohta on COMMON NAME, johon laitetaan se osoite, jolle sertifikaatti tehdään
openssl req -new -outform PEM -out /etc/postfix/certs/smtpd.cert -newkey rsa:2048 -nodes -keyout \ /etc/postfix/private/smtpd.key -keyform PEM -days 365 -x509
Muuta tiedoston /etc/postfix/main.cf sisältöä seuraavasti kohdat
gedit /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination smtp_tls_security_level = may smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_tls_received_header = yes smtpd_tls_security_level = may smtpd_tls_session_cache_timeout = 30s smtpd_tls_auth_only = no smtpd_tls_key_file = /etc/postfix/private/smtpd.key smtpd_tls_cert_file = /etc/postfix/certs/smtpd.cert smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no append_dot_mydomain = no myhostname = mail.ekaverkko.info myorigin = ekaverkko.info mydestination = ekaverkko.info, localhost mynetworks = 127.0.0.0/8, 192.168.10.0/24 relayhost = alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ mailbox_command = mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all
Joissakin tilanteissa sähköpostiohjelma ei ymmärrä, että oletusportti 25 toimii myös salauksessa, jolloin käytännössä salausoperaation aloittava STARTTLS komento jätetään antamatta. Näissä tapauksissa pitää avata portti 465, joka on yleisesti sovelluksien käyttämä salatun liikenteen portti. Tämä tapahtuu muokkaamalla tiedostoa /etc/postfix/master.cf sellaiseksi, että kommenttimerkit ovat pois kahdelta alla olevalta riviltä
smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes
Käynnistä Postfix uudestaan komennolla
/etc/init.d/postfix restart
Tästä eteenpäin sähköposti lähetetään käyttäen joko suojaamatonta yhteyttä tai TSL-salattua yhteyttä.
PGP-salauksella voidaan salata sähköpostiviestit niin, että niiden selvittäminen on käytännössä mahdotonta. Salaus perustuu julkiseen ja salaiseen avainpariin, joista vastaanottajan julkisella avaimella salataan hänelle lähetettävä viesti.
Me käytämme harjoituksissa GnuPG-ohjelmaa, joka on integroitu Thunderbird-sähköpostiohjelmaan (Enigmail)
PGP:llä sähköposti salataan sellaiseksi, ettei kukaan muu kuin julkisen avaimen salaisen parin omaava henkilö ja avainten luontiin käytetyn salasanan tunteva pääse sen avaamaan.
Alla on Matti Meikäisen tekemän avainparin julkinen osa. Henkilö on siis tehnyt avaimen käyttäen esimerkiksi GnuPGP-työkalua. Avaimen luonnissa on käytetty salasanaa, jonka avaimen luonut henkilö on antanut. Avain on jaettu salaiseen ja julkiseen osaan.
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.9 (GNU/Linux) mQGhBEl4NeQRBACszRVdPga67f5SoPQAzHtvlB6uW2WUtbG6MEvcx6mraBaAoaVn AMojyB+z/VLUkh6VD6Ckr5uB45X87XcuB5ba6v8GNCEW6ZnCvfvZnMDfbjKvfJBT WV1v8wwwxpszGoEXR7ome7QVn4eZhaqiEnfsWka/ViF3hDZYkpB+DaLQSwCg2NkI bc27vE0Fr/l4ofsMmnskpFcD+QHdADGRRpXNEtciafAGnIcZfsqa4ZlNXUAv3Qec WihfoH70z9McTESGl1itxWJ+kI+7HgKlfwiwrDsCeK9eAwxlC/2cHzzmGpZgllZ7 zai/f4O/Lg2xHAT9rCCmDrrwWzv0Fq6eS53yaaKD+lOBt4ZmLrjg0pGwDIa5yX8B anfnA/Y2DixXVCXoaQ+hsgD6JaKyG5JPPbmQlU+V9Hk7kufj2nDMPESVAwwXMV8H oqix5xDuqocTSpfDOWHixW/LMMZvZY32lZzar/+BKasFRNTEm+44NoOcolHifxDr SNgYnDwg3so3v7HXyCs26f5lX93vsigoNrEFJ7tws4XgyAA3tDVNYXR0aSBtZWlr w6Rsw6RpbmVuIDxtYXR0Lm1laWthbGFpbmVuQGVrYXZlcmtrby5pbmZvPohgBBMR AgAgBQJJeDXkAhsjBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQEWIL2giIPW8Q fgCaAsimni9i2+8DKiNscnvAYAxzfb8An32eTQPmEf39WiGQOrY/dKgT/UJIuQIN BEl4NeQQCACtXv9sorvvLcG2qG3hPxcoUA5/kfWx2uIeyvSuVsd5MVHZtpykLiHu OzNuMyyd5C10I0EufgGGpYjILNuxlYlVSN5pgol13dRxN7lRJeM1LeVkxuU37DsM 5jBLY2+J7rVxdpggonCrmB9QFWXg+dLxLgHAbKRWkLSB0+IVg/+agrmaPHgXcP8C 9nbSL8Gp7FtNmyF4OrYCbOIVnD6pewvBACiHDddiC3LHRaPSsOz/kF9KgyhsNqNW cdYtjpKZsape6IozvjRfKCZ9G035UkHV8U1PSF+9L2J+5yEn2si6YxFVSw7zlsb+ vZcpg4+76X5cMTLNN7iKntGYlmRpVmFfAAMFB/9zpdv9grRqmn4jD5mSvAzNc7e2 ysauYh1fcSfy5QveQhVKJrwVW5x5X25c+KQkTo7m31QIO49vlGoVtMS2UJmHEN5v FhwjafasG1XrKbQOoESJVDFzt5D4OBxqX4CTQ59exoWprdYyWEmIeG8VxWFiSVXz TfQmVFDsK5neqxAw/KzOY/vFDYoiYaNedsKkDchn2FsuRHK/rl6mTZvi8DILBjV5 QCekX9OgBInsWFMPOcTOxp8ZfPyIIa3qqTi/apQrg3wyTIwc789KZ15Q8D4XEFh3 HzR4SRa/Fdn062v3CFYW/JSMxbFJAf3KpJECgMAnURJYBeBQ4zs863E+EMXQiEkE GBECAAkFAkl4NeQCGwwACgkQEWIL2giIPW+MLQCgvkVFOum5Mxop9HVXxsYsswe7 ewUAoIVVmto4LN+9cv9vA6373849zNnA =8TKe -----END PGP PUBLIC KEY BLOCK-----
Thunderbirdillä lähetetään sähköposti, joka salataan automaattisesti vastaanottajan julkisella avaimella, eli Matti Meikäläisen toimittamalla avaimella. Lisäksi viesti allekirjoitetaan lähettäjän (Teemu Testeri) avainparilla.
Verkon läpi mene sähköpostiviesti näyttää kaikessa komeudessaan tältä.
Message-ID: <49783E64.9010209@tokaverkko.info> Date: Thu, 22 Jan 2009 11:37:40 +0200 From: Teemu Testeri <teemu.testeri@tokaverkko.info> User-Agent: Thunderbird 2.0.0.19 (X11/20090105) MIME-Version: 1.0 To: matti.meikalainen@ekaverkko.info Subject: Salattu viesti X-Enigmail-Version: 0.95.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit -----BEGIN PGP MESSAGE----- Charset: ISO-8859-1 Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org hQIOA1eHSofWHbF5EAgAnkm13K270r0PllmsjEmgwCgT/7UCWdiPa9GbxTs5sP2x Eme8uYsL6axGVL6vngLOCcuWXWMA7pJ+ObaEZmShAGvjQ4eC9ifHxRKIBTzjDOmo mTkjK0Sqe+wwRa8yp63n4cCBo3QLefUe2VxyJNGHzQ6a1rFzljgmdcsh7KakkWx5 xPtuaXfIdHgBews0uNJOb8ikNxEob8Yx/Npxow1FRhV1daH3tJT02tKd+Bh9JAkg +vb9XeB+wGQFrTCmgWOqXztmQlRivI/9KRXBxfzOjQlCFTii0LgDcOViCGM6dRIk Gq/xjWKKTqpgl3PzGKbQnV24z+rCgV5MYTPEMrdrcgf/fCamyKQvaCzgXzCBVFFs 16/F7ww8W4hCnhH3zT4zU7hYm0TSmsgISW6eJOqBBdbfYFsj5EsdYjW7rHNzhBXO FoP7k+0Sj1xNa1NgLZ5z0IL49rpxAXjT4uQqebfhBHe+RAxU1fMaZ8Wa+zGB80f6 NCnp1SVrdUyZCXKJoSBHQctcQzMjehyEvq7kPFsvydW3m7o5PX56dD/bUwUq9LBg kb54f8qQQgeI0RxTOW7U+hdc1lNU+jqdBu4lL75l7hJz7gTk57YnghkEvIEsNrR7 W6Pwj8QyQDx9RGEYxe6Lr9JvobPehZtZ9Okm0xEANxxNyZQRnNVFqgf6JqJUJsz4 6IUCDgOzKyM5aXgWLBAIAJK2rQXdAZHBf+bnYOYTf0dCJFs1ttDizpVV72R42TwO gEl1qxrWNWDeBLwEHcY630o1o1aQRmctkIsQvjXAStf92aS2wgkeiHasKNoU9k9q VssoWo4RpqFskzJDs+BVk6CamUEsqWgSLh+kG9HvOeTBfekbL0Z3WvBOSVsKo7O1 LWeAgc9n1lrS9Xiv78FcTFmgt8iGXp6FCqJF0A5LnRVg6XrvAmUvUc3H85NL3lhX unyVCSiGQWsfCy/JHepcwyQRJ77D/1sbD8puHkRKmi3v3TLRUQRewwxZQDnUhV6H 3gDO7YE+GmnKXewn0a1V7dpzrRLg+Wdal/d7X7muRvEIAIXGpNyvpXrhN5uQTL0E 5LcBWi1sMUjcaSDSESPMR8I8gsmj4mwjq+0+s90qDXv8P4EugNHqIvIu44BgkNSn m4QrFf+on26oZ0ZvDB0n/1b90o3A4EOHBEDzrCzrIN6bSWu0MQ2GQoU6QEcI3vJI mhnIsgTGXcRiZd+TZ7Ckcu58m8XhKgQOHxBPccnRKaSM53Wt6bw7pqfrI7rqO8dg bm5uQDZ6GFPNFkidrpZqSByL4RUqoiQK6+TYPPdij++abtAQ7/2v7MnUNQCXXDa1 Z8W29Hpj3XHyBzggURMinb8/JxPkxhZafRqZ7n8tj746FyhzcfxteeyIFGHBmrmM yV3SmgEs4yOOAzc4qZEayGnT+3gxJh416t6AATBrbDJOOduVjZcbx5JjbOWbT3wn 0bEjQ93WTWXdU522XiMUrHaftn6YGd16BGNFwMWJhypakgphJwwtUjZMXu04yERy GUQI9PtL677HZx9n/lY1KG2Y8bLK7S3I6KSGDbtCDWCYox6Aw+OHsK5ZcDiPizRv FMARIO798gCIvCex7Hw= =o/xm -----END PGP MESSAGE-----
Viestin saapuessa avaamiseen tarvitaan siis Matti Meikäläisen luoman avainpari kokonaisuudessaan sekä salasana. Julkinen avain jo olikin yllä, mutta viestin avaamisen kannalta se on hyödytön ilman alla olevaa avainta ja salasanaa.
-----BEGIN PGP PRIVATE KEY BLOCK----- Version: GnuPG v1.4.9 (GNU/Linux) lQHgBEl4NeQRBACszRVdPga67f5SoPQAzHtvlB6uW2WUtbG6MEvcx6mraBaAoaVn AMojyB+z/VLUkh6VD6Ckr5uB45X87XcuB5ba6v8GNCEW6ZnCvfvZnMDfbjKvfJBT WV1v8wwwxpszGoEXR7ome7QVn4eZhaqiEnfsWka/ViF3hDZYkpB+DaLQSwCg2NkI bc27vE0Fr/l4ofsMmnskpFcD+QHdADGRRpXNEtciafAGnIcZfsqa4ZlNXUAv3Qec WihfoH70z9McTESGl1itxWJ+kI+7HgKlfwiwrDsCeK9eAwxlC/2cHzzmGpZgllZ7 zai/f4O/Lg2xHAT9rCCmDrrwWzv0Fq6eS53yaaKD+lOBt4ZmLrjg0pGwDIa5yX8B anfnA/Y2DixXVCXoaQ+hsgD6JaKyG5JPPbmQlU+V9Hk7kufj2nDMPESVAwwXMV8H oqix5xDuqocTSpfDOWHixW/LMMZvZY32lZzar/+BKasFRNTEm+44NoOcolHifxDr SNgYnDwg3so3v7HXyCs26f5lX93vsigoNrEFJ7tws4XgyAA3/gMDAvWjP5N1q24Z YOd8FrZsRYSCpAtnq7gZhWrZz99v6kwy4YdnOt2k5DABCHjoTt3aegX/1VIVvcdU lvAJtDVNYXR0aSBtZWlrw6Rsw6RpbmVuIDxtYXR0Lm1laWthbGFpbmVuQGVrYXZl cmtrby5pbmZvPohgBBMRAgAgBQJJeDXkAhsjBgsJCAcDAgQVAggDBBYCAwECHgEC F4AACgkQEWIL2giIPW8QfgCaAsimni9i2+8DKiNscnvAYAxzfb8An32eTQPmEf39 WiGQOrY/dKgT/UJInQJjBEl4NeQQCACtXv9sorvvLcG2qG3hPxcoUA5/kfWx2uIe yvSuVsd5MVHZtpykLiHuOzNuMyyd5C10I0EufgGGpYjILNuxlYlVSN5pgol13dRx N7lRJeM1LeVkxuU37DsM5jBLY2+J7rVxdpggonCrmB9QFWXg+dLxLgHAbKRWkLSB 0+IVg/+agrmaPHgXcP8C9nbSL8Gp7FtNmyF4OrYCbOIVnD6pewvBACiHDddiC3LH RaPSsOz/kF9KgyhsNqNWcdYtjpKZsape6IozvjRfKCZ9G035UkHV8U1PSF+9L2J+ 5yEn2si6YxFVSw7zlsb+vZcpg4+76X5cMTLNN7iKntGYlmRpVmFfAAMFB/9zpdv9 grRqmn4jD5mSvAzNc7e2ysauYh1fcSfy5QveQhVKJrwVW5x5X25c+KQkTo7m31QI O49vlGoVtMS2UJmHEN5vFhwjafasG1XrKbQOoESJVDFzt5D4OBxqX4CTQ59exoWp rdYyWEmIeG8VxWFiSVXzTfQmVFDsK5neqxAw/KzOY/vFDYoiYaNedsKkDchn2Fsu RHK/rl6mTZvi8DILBjV5QCekX9OgBInsWFMPOcTOxp8ZfPyIIa3qqTi/apQrg3wy TIwc789KZ15Q8D4XEFh3HzR4SRa/Fdn062v3CFYW/JSMxbFJAf3KpJECgMAnURJY BeBQ4zs863E+EMXQ/gMDAvWjP5N1q24ZYGHjTQndAhgiqveteCkGib85wHRervfb AZTirGaAQPnqyxjH+75oJqwURyxoS8bwzncJsldHKHPZJdv/L33xJUXwaCW0lQvz QdeISQQYEQIACQUCSXg15AIbDAAKCRARYgvaCIg9b4wtAKCTk+zQRQzYQN1IV94e c2idpOh3OgCfZZ4Km/Y+ToQAUr2nYWWCxh0HydA= =5Ga8 -----END PGP PRIVATE KEY BLOCK-----
Salausjärjestelmä on periaatetasolla huippuluokkaa. Valitettavasti käytännön ongelmia on yhteensopivuuden ja avainten hallinnoin osalta. Näiden ongelmia vuoksi lähes 100% sähköpostista on täysin salaamatonta ja selväkielistä
Webmail on kuin mikä tahansa sähköpostiohjelma, jonka käyttöliittymänä toimii Internet-selain. Tällä hetkellä yleisin ratkaisu on niin sanottu LAMP-kokonaisuus, jossa kokonaisuus muodostuu siis Linux-käyttöjärjestelmästä, Apache- WWW-palvelimesta, MySQL-tietokannasta ja PHP-rajapinnasta. Yleisin käyttöliittymä on ehkä Horde, joka pitää sisällään ison läjän erilaisia sovelluksia ja laajennuksia. Me käytämme harjoituksissa Roundcubemailia, joka on erittäin kevyt ja helppokäyttöinen käyttöliittymä. WWW-palvelinohjelmana toimii Apachen sijaan Lighttpd, joka on keveämpi vaihtoehto kyseiseen tarkoitukseen.
Lighttpd ja muiden tarvittavien ohjelmien asennus
apt-get install lighttpd mysql-server php5-cgi php5-imap php5-mysql php5-gd php5-mcrypt
Ohjelma on heti käyttövalmis. Kokeileppa vaikka menemällä osoitteeseen
http://localhost
WWW-palvelinohjelman konfigurointi tapahtuu muokkaamalla kansion /etc/lighttpd tiedostoa lighttpd.conf
Lähes kaikki asetukset saadaan muutettua edellä mainittua tiedostoa muokkaamalla. Erittäin hyvä ohjeistus löytyy alla olevasta osoitteesta
http://redmine.lighttpd.net/wiki/lighttpd
Otetaan WWW-palvelinohjelmalla tarvittavia moduleja käyttöön
lighty-enable-mod fast-cgi simple-vhost
Haetaan käyttöliittymä
cd wget http://sunet.dl.sourceforge.net/project/roundcubemail/roundcubemail/0.2.2/roundcubemail-0.2.2.tar.gz tar -xzvf roundcubemail-0.2.2.tar.gz mv roundcubemail-0.2.2 /usr/share/
Alustetaan tietokanta.
mysql -u root -pSala1234 CREATE DATABASE webmaildb; GRANT ALL ON webmaildb.* TO 'webmail'@'localhost' IDENTIFIED BY 'salasana'; exit;
Tee tietokannan alustus seuraavalla komennolla
mysql -u webmail -psalasana webmaildb < /usr/share/roundcubemail-0.2.2/SQL/mysql.initial.sql
Tehdäään Virtual Host eli tietyllä nimellä tulevat pyynnöt WWW-palvelinohjelma ohjaa tiettyyn kansioon. Lisätään tiedostoon /etc/lighttpd/conf-available/10-simple-vhost.conf alla oleva
$HTTP["host"] == "webmail.testiverkko.info" {
server.document-root = "/usr/share/roundcubemail-0.2.2"
}
Käynnistä lighttpd uudestaan esimerkiksi seuraavalla komennolla
/etc/init.d/lighttpd restart
Tehdään nimi-osoite-esittely ohjelmalle DNSMasq lisäämällä tiedostoon /etc/dnsmasq.conf' rivi
address=/webmail.ekaverkko.info/192.168.10.20
Käynnistä dnsmasq uudestaan komennolla
/etc/init.d/dnsmasq restart
Mene selaimelle osoitteeseen http://webmail.ekaverkko.info/installer ja suorita asennus loppuun.
Annetaan komento
chown www-data:www-data {logs,temp}
Kirjaudu selaimella palveluun osoitteessa http://webmail.ekaverkko.info
Lighttpd:llä voit laittaa sivusi suojatun yhteyden taakse seuraavasti:
Lisätään ssl-moduli
lighty-enable-mod ssl
Tehdään kansio, johon sertifikaatti ja avain laitetaan
mkdir -p /etc/lighttpd/ssl
Tehdään sertifikaatti. HUOM! Tärkeintä kohta on COMMON NAME, johon laitetaan se osoite, jolle sertifikaatti tehdään
openssl req -new -out /etc/lighttpd/ssl/webmail.ekaverkko.info.pem \ -keyout /etc/lighttpd/ssl/webmail.ekaverkko.info.pem -days 365 -x509 -nodes
Määritetään /etc/lighttpd/conf-available/10-ssl-conf-tiedostoon seuraavat asiat.
gedit /etc/lighttpd/conf-available/10-ssl.conf
$SERVER["socket"] == "0.0.0.0:443" { ssl.engine = "enable" ssl.pemfile = "/etc/lighttpd/ssl/webmail.ekaverkko.info.pem" server.name = "webmail.ekaverkko.info" server.document-root = "/usr/share/roundcubemail-0.2-stable" }
Käynnistetään lighttpd uudestaan
/etc/init.d/lighttpd restart
Ota yhteys osoitteeseen https://webmail.ekaverkko.info
Nyt selaimen ja webmail-palvelimen välinen yhteys on salattu.
Asennetaan lisämodulit
apt-get install php5 php5-imagick php-pear php-file php-log php-mail-mime php-cache php-date php-http-request \ php-services-weather lighttpd-mod-webdav php-xml-serializer php5-memcache php5-tidy php5-idn
Asennetaan itse alusta
cd wget ftp://ftp.horde.org/pub/horde/horde-3.3.3.tar.gz tar -xzvf horde-3.3.3.tar.gz mv horde-3.3.3 /usr/share/
Alustetaan tietokanta
cd /usr/share/horde-3.3.3/scripts/sql mysql -u root < create.mysql.sql
Otetaan oletuskonfiguraatiotiedostoista varmuuskopiot
cd /usr/share/horde-3.3.3/config for f in *.dist; do cp $f `basename $f .dist`; done
Tehdään oletuskonfiguraatiotiedosto
gedit /usr/share/horde-3.3.3/config/conf.php
<?php /* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */ // $Horde: horde/config/conf.xml,v 1.74.2.81 2008/11/27 05:29:45 chuck Exp $ $conf['vhosts'] = false; $conf['debug_level'] = E_ALL & ~E_NOTICE; $conf['max_exec_time'] = 0; $conf['compress_pages'] = true; $conf['secret_key'] = '649bda094e4b24a94cd99df22bedc53028d72c30'; $conf['umask'] = 077; $conf['use_ssl'] = 2; $conf['server']['name'] = $_SERVER['SERVER_NAME']; $conf['server']['port'] = $_SERVER['SERVER_PORT']; $conf['urls']['token_lifetime'] = 30; $conf['urls']['hmac_lifetime'] = 30; $conf['urls']['pretty'] = false; $conf['safe_ips'] = array(); $conf['session']['name'] = 'Horde'; $conf['session']['use_only_cookies'] = true; $conf['session']['cache_limiter'] = 'nocache'; $conf['session']['timeout'] = 0; $conf['cookie']['domain'] = $_SERVER['SERVER_NAME']; $conf['cookie']['path'] = '/'; $conf['sql']['persistent'] = false; $conf['sql']['username'] = 'horde'; $conf['sql']['password'] = 'horde'; $conf['sql']['protocol'] = 'unix'; $conf['sql']['database'] = 'horde'; $conf['sql']['charset'] = 'utf-8'; $conf['sql']['splitread'] = false; $conf['sql']['phptype'] = 'mysql'; $conf['auth']['admins'] = array('matti'); $conf['auth']['checkip'] = true; $conf['auth']['checkbrowser'] = true; $conf['auth']['alternate_login'] = false; $conf['auth']['redirect_on_logout'] = false; $conf['auth']['params']['dsn'] = '{imap.ekaverkko.info:143/imap/notls}'; $conf['auth']['params']['imapconfig'] = 'dsn'; $conf['auth']['driver'] = 'imap'; $conf['signup']['allow'] = false; $conf['log']['enabled'] = false; $conf['log_accesskeys'] = false; $conf['prefs']['params']['driverconfig'] = 'horde'; $conf['prefs']['driver'] = 'sql'; $conf['alarms']['driver'] = false; $conf['datatree']['params']['driverconfig'] = 'horde'; $conf['datatree']['driver'] = 'sql'; $conf['group']['driver'] = 'datatree'; $conf['group']['cache'] = false; $conf['perms']['driver'] = 'datatree'; $conf['share']['no_sharing'] = false; $conf['share']['any_group'] = false; $conf['share']['cache'] = false; $conf['share']['driver'] = 'datatree'; $conf['cache']['default_lifetime'] = 86400; $conf['cache']['params']['sub'] = 0; $conf['cache']['driver'] = 'file'; $conf['lock']['driver'] = 'none'; $conf['token']['driver'] = 'none'; $conf['mailer']['params']['sendmail_path'] = '/usr/lib/sendmail'; $conf['mailer']['params']['sendmail_args'] = '-oi'; $conf['mailer']['type'] = 'sendmail'; $conf['mailformat']['brokenrfc2231'] = false; $conf['vfs']['type'] = 'none'; $conf['sessionhandler']['type'] = 'none'; $conf['sessionhandler']['memcache'] = false; $conf['problems']['email'] = 'webmaster@ekaverkko.info'; $conf['problems']['maildomain'] = 'ekaverkko.info'; $conf['problems']['tickets'] = false; $conf['problems']['attachments'] = true; $conf['menu']['apps'] = array(); $conf['menu']['always'] = false; $conf['menu']['links']['help'] = 'all'; $conf['menu']['links']['options'] = 'authenticated'; $conf['menu']['links']['problem'] = 'all'; $conf['menu']['links']['login'] = 'all'; $conf['menu']['links']['logout'] = 'authenticated'; $conf['hooks']['permsdenied'] = false; $conf['hooks']['username'] = false; $conf['hooks']['preauthenticate'] = false; $conf['hooks']['postauthenticate'] = false; $conf['hooks']['authldap'] = false; $conf['hooks']['groupldap'] = false; $conf['portal']['fixed_blocks'] = array(); $conf['accounts']['driver'] = 'null'; $conf['user']['verify_from_addr'] = false; $conf['imsp']['enabled'] = false; $conf['kolab']['enabled'] = false; $conf['memcache']['enabled'] = false; /* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */
Haetaan sähköpostirajapinta
cd wget http://ftp.horde.org/pub/imp/imp-h3-4.3.3.tar.gz tar -xzvf imp-h3-4.3.3.tar.gz mkdir /usr/share/horde-3.3.3/imp/ mv imp-h3-4.3.3/* /usr/share/horde-3.3.3/imp/ rm -R imp-h3-4.3.3
Otetaan IMPin oletuskonfiguraatiotiedostoista varmuuskopiot
cd /usr/share/horde-3.3.3/imp/config for f in *.dist; do cp $f `basename $f .dist`; done
Alustetaan tietokanta
cd /usr/share/horde-3.3.3/imp/scripts/sql mysql -u root horde < imp.sql
Tehdään oletuskonfiguraatiotiedosto
gedit /usr/share/horde-3.3.3/imp/config/conf.php
<?php /* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */ // $Horde: imp/config/conf.xml,v 1.53.2.39 2008/09/03 18:56:45 slusarz Exp $ $conf['spell']['driver'] = ''; $conf['utils']['gnupg'] = '/usr/bin/gpg'; $conf['utils']['gnupg_keyserver'] = array('pgp.mit.edu'); $conf['utils']['gnupg_timeout'] = 10; $conf['utils']['openssl_cafile'] = '/etc/ssl/certs'; $conf['utils']['openssl_binary'] = '/usr/bin/openssl'; $conf['menu']['apps'] = array(); $conf['user']['select_sentmail_folder'] = false; $conf['user']['allow_resume_all_in_drafts'] = false; $conf['user']['allow_folders'] = true; $conf['user']['allow_resume_all'] = false; $conf['user']['allow_view_source'] = true; $conf['user']['alternate_login'] = false; $conf['user']['redirect_on_logout'] = false; $conf['user']['select_view'] = true; $conf['server']['change_server'] = false; $conf['server']['change_port'] = false; $conf['server']['change_protocol'] = false; $conf['server']['change_smtphost'] = false; $conf['server']['change_smtpport'] = false; $conf['server']['server_list'] = 'none'; $conf['server']['fixed_folders'] = array(); $conf['server']['sort_limit'] = 0; $conf['server']['cache_folders'] = true; $conf['server']['token_lifetime'] = 1800; $conf['server']['cachejs'] = 'none'; $conf['server']['cachecss'] = 'none'; $conf['mailbox']['show_preview'] = false; $conf['fetchmail']['show_account_colors'] = false; $conf['fetchmail']['size_limit'] = 4000000; $conf['msgcache']['use_msgcache'] = false; $conf['mlistcache']['use_mlistcache'] = false; $conf['msgsettings']['filtering']['words'] = './config/filter.txt'; $conf['msgsettings']['filtering']['replacement'] = '****'; $conf['spam']['reporting'] = false; $conf['notspam']['reporting'] = false; $conf['print']['add_printedby'] = false; $conf['msg']['prepend_header'] = true; $conf['msg']['append_trailer'] = true; $conf['compose']['allow_receipts'] = true; $conf['compose']['special_characters'] = true; $conf['compose']['use_vfs'] = false; $conf['compose']['link_all_attachments'] = false; $conf['compose']['link_attachments_notify'] = true; $conf['compose']['link_attachments'] = true; $conf['compose']['attach_size_limit'] = 0; $conf['compose']['attach_count_limit'] = 0; $conf['compose']['reply_limit'] = 200000; $conf['hooks']['vinfo'] = false; $conf['hooks']['postlogin'] = false; $conf['hooks']['postsent'] = false; $conf['hooks']['signature'] = false; $conf['hooks']['trailer'] = false; $conf['hooks']['fetchmail_filter'] = false; $conf['hooks']['mbox_redirect'] = false; $conf['hooks']['mbox_icon'] = false; $conf['hooks']['spam_bounce'] = false; $conf['hooks']['msglist_format'] = false; $conf['maillog']['use_maillog'] = true; $conf['sentmail']['driver'] = 'none'; $conf['tasklist']['use_tasklist'] = true; $conf['notepad']['use_notepad'] = true; /* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */
Muokataan palvelinten konfiguraatiotiedostoa
gedit /usr/share/horde-3.3.3/imp/config/servers.php
<?php $servers['imap'] = array( 'name' => 'IMAP Server', 'server' => 'imap.ekaverkko.info', 'hordeauth' => false, 'protocol' => 'imap/notls', 'port' => 143, 'maildomain' => 'ekaverkko.info', 'smtphost' => 'mail.ekaverkko.info', 'smtpport' => 25, 'realm' => '', 'preferred' => '', );
Haetaan kalenterirajapinta
cd wget http://ftp.horde.org/pub/kronolith/kronolith-h3-2.3.tar.gz tar -xzvf kronolith-h3-2.3.tar.gz mkdir /usr/share/horde-3.3.3/kronolith/ mv kronolith-h3-2.3/* /usr/share/horde-3.3.3/kronolith/ rm -R kronolith-h3-2.3
Otetaan kronolithin oletuskonfiguraatiotiedostoista varmuuskopiot
cd /usr/share/horde-3.3.3/kronolith/config for f in *.dist; do cp $f `basename $f .dist`; done
Alustetaan tietokanta
cd /usr/share/horde-3.3.3/kronolith/scripts/sql mysql -u root horde < kronolith.mysql.sql
Tehdään oletuskonfiguraatiotiedosto
gedit /usr/share/horde-3.3.3/kronolith/config/conf.php
<?php /* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */ // $Horde: kronolith/config/conf.xml,v 1.14.10.5 2007/12/20 14:12:23 jan Exp $ $conf['calendar']['params']['table'] = 'kronolith_events'; $conf['calendar']['params']['driverconfig'] = 'horde'; $conf['calendar']['driver'] = 'sql'; $conf['storage']['params']['table'] = 'kronolith_storage'; $conf['storage']['params']['driverconfig'] = 'horde'; $conf['storage']['driver'] = 'sql'; $conf['metadata']['keywords'] = false; $conf['reminder']['server_name'] = 'mail.ekaverkko.info'; $conf['reminder']['from_addr'] = 'webmaster@ekaverkko.info'; $conf['autoshare']['shareperms'] = 'none'; $conf['holidays']['enable'] = true; $conf['menu']['print'] = true; $conf['menu']['import_export'] = true; $conf['menu']['apps'] = array(); /* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */
IM viestin ehdoton vahvuus on siinä, että osapuolten kanssa voidaan kommunikoida reaaliaikaisesti sijainnista riippumatta. Yksinkertaiseti IM-järjestelmillä säästetään rahaa. Kustannussäästöjen lisäksi kommunikointiin saadaan aivan toinen luotettavuus ja turvallisuus esimerkiksi sähköpostiin verrattuna, sillä IM-palvelin voidaan integroida osaksi organisaatioiden muita palvelimia. Lisäksi IM-pohjainen kommunikointi on huomattavasti tehokkaampaa ja jouhevampaa kuin muut kommunikointitavat.
Pidgin on erittäin hyvä ja moniin IM-järjestelmiin sopiva kevyt asiakasohjelma. Se tukee monia erittäin monia protokollia mukaan lukien MSN. Pidgin tulee Gnome-käyttöliittymillä varustettujen Linuksien mukana, mutta on saatava myös Windowssille. Eräs Pidginin vahvuuksista on Bonjour-prokollan tuki, eli voidaan luoda kommunikaatioyhteys ilman yhteyspalvelinta.
Ejabberd on erittäin paljon käytetty XMPP-palvelin. Ejabberd löytyy valmiina debianin pakettivarastosta, joten asentaminen on kohtuullisen helppoa. Asennus tapahtuu komennolla
apt-get install ejabberd
Asennuksen jälkeen ohjelmaa voidaan käyttää normaalilla tavalla
/etc/init.d/ejabberd start /etc/init.d/ejabberd stop /etc/init.d/ejabberd restart
Esitellään nimialue ja pääkäyttäjä
gedit /etc/ejabberd/ejabberd.cfg
{hosts, ["localhost","ekaverkko.info"]}.
{acl, admin, {user, "admin", "ekaverkko.info"}}.
Tehdään pääkäyttäjä
ejabberdctl register admin ekaverkko.info Sala1234
Kirjaudutaan hallintapaneliin Huom! Tunnus admin@ekaverkko.info
http://localhost:5280/admin
Lisätään DNS-palvelimelle SRV-tietueet
_xmpp-server._tcp.ekaverkko.info. SRV 20 0 5269 mail.ekaverkko.info. _xmpp-server._udp.ekaverkko.info. SRV 20 0 5269 mail.ekaverkko.info. _xmpp-client._tcp.ekaverkko.info. SRV 20 0 5222 mail.ekaverkko.info. _xmpp-client._udp.ekaverkko.info. SRV 20 0 5222 mail.ekaverkko.info. _jabber._tcp.ekaverkko.info. SRV 20 0 5269 mail.ekaverkko.info. _jabber._udp.ekaverkko.info. SRV 20 0 5269 mail.ekaverkko.info. _jabber-client._tcp.ekaverkko.info. SRV 20 0 5222 mail.ekaverkko.info. _jabber-client._udp.ekaverkko.info. SRV 20 0 5222 mail.ekaverkko.info.
Tehdään salaukseen käytettäville serfikaateille kansio
mkdir /etc/ejabberd/ssl
Tehdään sertifikaatit
cd /etc/ejabberd/ssl openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem openssl rsa -in privkey.pem -out privkey.pem cat privkey.pem >> server.pem
Muuta tiedostoa ejabberd.cfg seuraavaksi
{5222, ejabberd_c2s, [
%%
%% If TLS is compiled and you installed a SSL
%% certificate, put the correct path to the
%% file and uncomment this line:
%%
{certfile, "/etc/ejabberd/ssl/server.pem"}, starttls,
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536}
]},
Käynnistä ohjelma uudestaan komennolla
/etc/init.d/ejabberd restart
Määritellään ejabberd käyttämään PAM:n tilejä.
{auth_method, pam}.
{pam_service, "ejabberd"}.
Tehdään PAM-tiedosto
gedit /etc/pam.d/ejabberd
#%PAM-1.0 @include common-auth @include common-account @include common-session
openSIPS on yksi monista SIP-palvelinohjelmista. openSIPS on saatavilla myös Debianin pakettivarastosta, mutta VoIP-alan ollessa vielä suhteellisen tuore kannattaa käyttää ohjelman julkaisijan uusinta ja vakainta versiota. Asennus aloitetaan hakemalla ohjelman lähdekoodi.
cd /usr/src wget http://opensips.org/pub/opensips/latest/src/opensips-1.5.2-tls_src.tar.gz
Puretaa paketti, asennetaan tarvittavat lisäpaketit ja siirrytään ohjelman kansioon
tar -xzvf opensips-1.5.2-tls_src.tar.gz apt-get install build-essential bison flex openssl libsnmp10 debhelper dpatch libmysqlclient15-dev libexpat1-dev \ libxml2-dev libpq-dev libradiusclient-ng-dev zlib1g-dev unixodbc-dev libxmlrpc-c3-dev libperl-dev libsnmp-dev libdb-dev \ xsltproc libconfuse-dev libldap2-dev libcurl4-gnutls-dev libgeoip-dev libpcre3-dev cd /usr/src/opensips-1.5.2-tls_src
make all make deb cd .. dpkg -i opensips_1.5.2-0_i386.deb dpkg -i opensips-mysql-module_1.5.2-0_i386.deb cd /etc/default pico opensips ---- RUN_OPENSIPS=yes ---- cd /etc/opensips mysql -u root -p ---- GRANT ALL PRIVILEGES ON *.* TO opensips@localhost IDENTIFIED BY 'opensips'; ---- pico opensipsctlrc opensipsdbctl create