Fetchmail
fetchmail on ohjelma, joka hakee sähköpostit (palveluntarjoajan) palvelimelta ja toimittaa ne paikallisille vastaanottajille.
Ongelmankuvaus
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
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
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ö
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