getmail Howto


Von Lukas Beeler (lb auf trash.net)


Was ist getmail ?

Nun, getmail ist ein Programm, das Mails via POP3 von einem Server holt, und diese lokal zur Verfügung stellt. Sei dies nun für einen Console-MUA wie mutt, alpine o.ä., oder einfach nur dazu, das man nur ein einziges Konto mit seinem Client abfragen muss. getmail bietet die selbe Funktionalität wie fetchmail (wenn nicht mehr), ist dafür einiges zuverlässiger, und unterstützt die Auslieferung in Maildir's.

Installation

Hier werde ich eine Installation ab Source erklären. Sollte deine Distribution über ein Paketmanagment verfügen, so bitte ich dich, zuerst nach einem Paket für getmail zu suchen, und erst bei nicht-vorhandensein eines solchen Paketes diese Anleitung befolgen.

getmail benötigt einen Python Interpreter, Version 2.3.3 oder höher, ein solcher sollte vorher installiert werden. Ein Aufruf von python sollte die Versionsnummer ausgeben.

Als erstes benötigen wir den Source selbst. Diesen kriegt man auf http://pyropus.ca/software/getmail/. Nachdem wir den Tarball heruntergeladen haben, entpacken wir diesen in /usr/src. Jetzt wechseln wir ins das Verzeichnis, in dem der getmail Source liegt. Nun legen wir mit mkdir -p /usr/lib/getmail ein Verzeichnis zur Installation von getmail an. Danach kopieren wir mittels cp *py /usr/lib/getmail alle von getmail benötigten Dateien ins richtige Verzeichnis. Nun kopieren wir mittels cp getmail /usr/bin das Hauptscript in den $PATH, damit wir getmail mit einem einfachen getmail aufrufen können.

Konfiguration

Nach der Installation folgt nun der aufwendigste Teil: Die Konfiguration selbst. Wir legen mittels mkdir ~/.getmail/ ein Verzeichnis an, in dem getmail seine Konfiguration aufbewahren kann. Nun erstellen wir eine Datei ~/.getmail/getmailrc mit folgendem Inhalt:

[default]

verbose = 1 # ein bisschen infos schaden nie
readall = 0 # wir wollen nur neue Mails
delete = 0  # abgeholte Mails werden auf dem Server nicht gelöscht. Praktisch,
            # wenn ein wir bei der Konfiguration einen Fehler machen

[mein trash.net account]
server = mail.trash.net
port = 110
username = username   # Hier gibst du deinen trash.net Usernamen æn
password = "PASSWORT" # Hier gibst du dein trash.net Passwort an
use_apop = 0 	      # Aus technischen Gründen ist bei trash.net kein APOP 
		      # möglich
postmaster = /var/mail/$USER # Hier solltest du $USER durch deinen lokalen
			     # Benutzernamen ersetzen
message_log = ~$USER/.getmail/log # auch hier wieder $USER ersetzen

recipient_header = received		# Hier geben wir an, auf welche Header
					# getmail achten soll
recipient_header = x-envelope-to 
no_delivered_to = 1			# Wir geben an, das wir keine
					# zusätzliche Header wollen
no_received = 1

Nachdem wir diese Datei erstellt haben, sind wir auch schon fast fertig, und können mit dem Testlauf beginnen

Testlauf

Wir starten nun mit einem simplen Aufruf von getmail getmail, und schon sollten die ersten Mails nach /var/mail/$USER ausgeliefert werden. Ein erfolgreicher Aufruf von getmail sieht ungefähr so aus:

mail.trash.net:  POP3 session initiated on port 110 for "lb"
mail.trash.net:  POP3 greeting:  +OK POP3 mail.trash.net v2001.76 server ready
mail.trash.net:  POP3 user response:  +OK User name accepted, password please
mail.trash.net:  POP3 PASS response:  +OK Mailbox open, 1 messages
mail.trash.net:  POP3 stat response:  1 messages, 379 octets
mail.trash.net:  POP3 list response:  +OK Mailbox scan listing follows
  msg #1/1 : len 379 ... retrieved ... delivered to postmaster
mail.trash.net:  finished retrieving messages
mail.trash.net:  POP3 session completed for "lb"
mail.trash.net:  retrieved 1 messages for 1 local recipients

Nun wollen wir natürlich auch, das unsere Mails regelmässig abgeholt werden. Dazu erstellen wir einen Eintrag in der crontab. Mittels crontab -e rufen wir den zugehörigen Editor auf, und erstellen folgenden Eintrag:

*/5 * * * * /usr/bin/getmail > /dev/null 2>&1

Damit wird getmail alle 5 Minuten ausgeführt, und der Output des Programmes nach /dev/null umgeleitet. Jetzt kann man noch die Variable delete in der getmailrc auf 1 setzen, damit sollte die Konfiguration komplett sein.