Mailabholung mit fetchmail , postfix, procmail

0

Einleitung
Exchange 2003 bringt von Hause aus keinen eigenen POP3-Connector mit, es sei denn man verwendet den SBS Server. Doch mit diesem Connector gibt’s es oft Probleme. Daher werden zur Abholung von Mails oft Programme von Drittherstellern verwendet, die dann wiederum kostenpflichtig sind.
Doch es gibt auch eine kostenlose Lösung. Und zwar die Mails mittels fetchmail vom Provider abzuholen und dann durch postfix an den Exchange verteilen zu lassen. Das setzt wiederum ein Linux-System voraus. Jetzt denken einige bestimmt – wofür einen extra PC mit Linux aufstellen, wenn ich doch im Prinzip nur Mails abholen möchte.
Es gibt zwei Möglichkeiten die Mailabholung mittels fetchmail zu realisieren.

  1. Installation von cygwin inklusive fetchmail auf einem bestehenden Windows Betriebssystem
  2. Installation eines Linux-Systems (Debian) auf einem separaten PC

Auf beide Varianten möchte ich im weiteren Verlauf eingehen. Doch es sprechen viele Dinge für die Verwendung eines Linux-Systems:

  1. Installation eine Virenscanners der die Mails schon bei der Abholung scannt
  2. Installation eines Spam-Filters
  3. Spätere Installation eines Proxys zur Beschleunigung des Seitenaufbaus und zur Reduzierung des Traffics
  4. Installation eines SSH-Servers für Remoteverbindungen

Auf die Erweiterungen gehe ich in späteren Dokumentationen ein.

fetchmail unter cygwin
Diese Konfiguration unterscheidet sich von der weiter unten beschrieben unter debian verwendeten Konfiguration, weil hier die Mails abgeholt und direkt an den Exchange Server weitergeleitet werden. Es findet hierbei keine Zuordnung mittels postfix statt.

Als erstes muss cygwin (www.cygwin.com) installiert werden. Die Grundinstallation habe ich schon im Dokument „cygwin als ssh-server“ beschrieben. Während der Installation muss als zusätzliches Paket noch fetchmail & cron ausgewählt werden. Anschließend legen wir einen Domänen-Benutzer an, der später die Mails abholen wird. Der Einfachheitshalber nenne ich diesen „root“.

fetchmail
Nach Abschluss der Installation legen wir als erstes die Datei fetchmailrc an und öffnen diese zum editieren

touch /etc/.fetchmailrc
vi /etc/.fetchmailrc

Die .fetchmailrc enthält die Konfiguration wie die Mails abzuholen sind und wohin sie weitergeleitet werden soll.

set postmaster
set logfile /var/log/fetchmail/fetchmail.log
defaults
envelope "Delivered-To:"
smtphost 192.168.xx.xx
fetchallpoll pop3.provider.de with protocol POP3
localdomains 2nibbles4u.de
user 'usere' password 'pwd' no rewrite to *;

Da die Datei /etc/.fetchmailrc den Usernamen und das Password für die Abholung im Klartext enthält setzten wir die Berechtigungen noch so, dass nur der admin diese Datei lesen & verändern darf.

chmod 600 /etc/.fetchmailrc
chown root /etc/.fetchmailrc

Nun können schon Mails abgeholten werden

fetchmail --verbose –d0 –f /etc/.fetchmailrc

Ich habe an dieser Stelle den Parameter –verbose hinzugefügt, damit bei evtl. Fehlern diese hier sofort auffallen.
Die Mails jetzt aber manuell abzuholen ist etwas unpraktisch. Daher erstellen wir jetzt ein skript, das dann per cron automatisch gestartet wird. Cron ist unter Linux das, was bei Microsoft die „Geplanten Tasks“ sind.

Aber zuerst das Skript

touch /etc/get.mail
vi /etc/get.mail
$ less /etc/get.mail
#!/bin/bash
cd /etc
date >> /var/log/fetchmail/fetchmail.log
/usr/bin/fetchmail -d0 -f /etc/.fetchmailrc -L /var/log/fetchmail/fetchmail.log 2>&1

 
Nun ändern wir bei dieser Datei ebenfalls die Rechten.

chmod 600 /etc/get.mail
chmod +x /etc/get.mail
chown root /etc/get.mail

Die Mailabholung kann jetzt durch den Befehl “/etc/get.mail“ initiiert werden.

cron
Als letzten Schritt wäre noch cron zu konfigurieren.
Die Assistenten gestützte Konfiguration starten wir durch den Befehl „cron-config“. Bestätigen Sie die Fragen nach Ihren wünschen.
Nach Abschluss der Konfiguration muss cron noch eine Datei mitgegeben werden, die die auszuführenden Tasks enthält. Dazu erstellen wir die Datei /etc/crontab. Eine mögliche Konfiguration wäre

*/25 0-3 * * * /etc/get.mail >> /var/log/fetchmail/fetchmail.log 2>&1
*/2 4-18 * * * /etc/get.mail >> /var/log/fetchmail/fetchmail.log 2>&1
*/5 19-23 * * * /etc/get.mail >> /var/log/fetchmail/fetchmail.log 2>&1

Die Erklärung der Parameter finden Sie unter
http://www.littletechshoppe.com/servers/extensions/cron/crontab_5.html

Zum Schluss lassen wir cron die Datei einlesen

crontab /etc/crontab

Überwachung
Um nun zu überprüfen ob die Mails auch korrekt abgeholt werden, ist es am Anfang ratsam die Log-Datei von fetchmail in realtime zu überwachen. Verwenden Sie dazu den Befehl

tail –f /var/log/fetchmail/fetchmail.log

[download des gesamten Artikels]

Teilen.

Über den Autor

Seit der Ausbildung zum Fachinformatiker Systemintegration (2002-2005) bei der DaimlerChrysler AG, beruflich im Bereich der E-Mail Kommunikation (Exchange, Linux) sowie des ActiveDirectory, mit entsprechenden Zertifizierungen (MCSE 2003, MCITP Ent.-Admin 2008, MCSE 2012, LPIC 1-3) tätig. Abgeschlossenes Studium zum Master of Science der IT-Management an der FOM sowie zertifizierter Datenschutzbeauftragter. Aktuell im Projektmanagement tätig.

Antworten