fetchmail

Linux.fista
Siirry navigaatioon Siirry hakuun

fetchmail on ohjelma, joka hakee sähköpostit (palveluntarjoajan) palvelimelta ja toimittaa ne paikallisille vastaanottajille, yleensä paikallisen sähköpostipalvelimen kautta.

Ongelmankuvaus[muokkaa]

Unix-järjestelmissä on yleensä paikallinen sähköpostipalvelin, joka huolehtii sekä paikallisesta että maailmalta menevästä ja maailmalta tulevasta sähköpostiliikenteestä. Kotikoneilla tämä palvelin ei kuitenkaan (tietoturvasyistä) yleensä kuuntele ulkoa tulevia yhteyksiä, eikä monikaan kotikäyttäjän palveluntarjoaja yritä toimittaa posteja perille saakka.

Windowsissa ratkaisu on, että jokainen sähköpostiasiakas käyttää suoraan palveluntarjoajan sähköpostipalvelinta. Tällöin asetukset on tehtävä joka asiakasohjelmalle erikseen eikä oman sähköpostipalvelimen ominaisuuksia voi hyödyntää.

fetchmail on kypsä ohjelma, joka hoitaa mahdolliset erikoistilanteet varmemmin kuin satunnainen posteja hakeva sähköpostiasiakas. Se toimittaa postit koneen omalle sähköpostipalvelimelle, joka tarjoaa ne luettaviksi vakiopaikoista. Näin mitä tahansa sähköpostiasiakasta pystyy käyttämään vakioasetuksilla, ilman eri säätöä. Paikallisen sähköpostipalvelimen voi myös säätää haluamallaan tavalla.

Jos sähköposti tulee (palveluntarjoajan) IMAP-palvelimelle, johon omalta koneelta on hyvä yhteys, fetchmail-ohjelmalle ei juurikaan ole tarvetta. Muissa tapauksissa se on harkitsemisen arvoinen vaihtoehto.

Asennus[muokkaa]

fetchmail sisältyy useimpiin jakeluihin ja asennetaan paketinhallinnan kautta. Ennen kuin sitä pystyy käyttämään, sille pitää kertoa, mistä sähköpostit haetaan.

Ohjelmaa voi käyttää koko ajan käynnissä olevana taustaohjelmana, joka määräajoin tarkistaa postit, sen voi käynnistää määräajoin cronin ja anacronin avulla tai sen voi ajaa tarvittaessa komentoriviltä (tai ikonista). Se voi kerralla hakea kaikkien käyttäjien postit (arvaten kenelle mikin posti on) tai hakea postit erikseen eri käyttäjille eri postilaatikoista.

Yhden käyttäjän koneella yksinkertainen ratkaisu on ajaa fetchmail /etc/crontab-tiedoston avulla tänä käyttäjänä. Allaolevalla crontab-rivillä fetchmail ajetaan käyttäjänä "joku", joka viidestoista minuutti, kotihakemisto työhakemistona (tähdet kuvaavat tunteja, minuutteja ja päiviä, tässä vain hakuväli on olennainen):

* */15 * * * *  joku  cd /home/joku; fetchmail --fetchmailrc /home/joku/.fetchmailrc

Asetustiedosto[muokkaa]

Asetustiedosto .fetchmail sisältää joitakin yleisiä asetuksia, palvelinten kuvaukset ja käyttäjien kuvaukset. Se voi näyttää tältä:

# Yleissasetukset

# "Postmaster" ohjautuu rootille, joka ohjautuu käyttäjälle. Säädetään tiedostossa /etc/aliases
set postmaster postmaster@localhost

# Testauksen ajaksi:
# ei virheviestejä postin alkuperäiselle lähettäjälle,
# viestit jätetään palvelimelle
set no bouncemail
keep

# Oletusasetukset (pseudopalvelin "defaults")
defaults
# 8-bittiä toimii, poistetaan turha koodaus
pass8bits
mimedecode
# Paikallisen sähköpostipalvelimen roskapostille antamia virhekoodeja - hävitetään
antispam 571,550,554

# Sonera: annetaan nimi "sonera", ettei tarvitse muistaa palvelimen nimeä
poll sonera via mail.inet.fi

user "mikalie-3" there is "joku" here
password "Bfgsk7th"

Palvelimia voi olla useita, osalta voidaan hakea posti esimerkiksi vain kun salattu yhdiskäytävä tai halvempi yhteys on toiminnassa tai vain erikseen pyydettäessä. Haettavien postien kokoa voi rajoittaa, postien hakuun voi yhdistää komentoja merkillisten palvelinten käyttämiseksi jne.

Käyttö[muokkaa]

Ohjelma toimii normaalisti cronin, ifup-skriptien tms. kautta. Ohjelma voidaan ajaa myös käsin.

Tässä posti haetaan Soneran palvelimelta (niin kuin se on asetustiedostossa määritelty), niin että kaikki käytetyt käskyt (-vv) tulostuvat ruudulle:

fetchmail -vv sonera

Testauksen jälkeen "keep" poistetaan asetustiedostosta. Tämän jälkeen voi hakea ja hävittää kaikki postit palveluntarjoajan palvelimilta (haussa on mukana vanhat jo haetut postit, jos postia on paljon, jokin erikoisjärjestely voi olla tarpeen):

fetchmail --nokeep --fetchall

Aiheesta muualla[muokkaa]