So holen Sie E-Mails mit „pullmail“ von einem Pop3-Postfach ab und stellen sie lokal (z.B. Ihrem Exchangeserver) zu.
Vor- und Nachteile von pullmail
Das Schöne an Pullmail: es ist kostenlos nutzbar und verrichtet meistens tapfer seine Arbeit.
Das Unangenehme daran: es kann – und wird – gelegentlich dazu kommen, dass E-Mails nicht vom Provider-Postfach abgerufen werden können. Das kann bei Spammails passieren oder auch bei normalen E-Mails, wenn im Header z.B. unerwartete Zeichen stehen oder ein Zeilenumbruch im „From“ steckt. Normale E-Mail-Clients haben damit üblicherweise keine Probleme.
Pullmail holt im Fehlerfall keine Mails mehr aus diesem Postfach ab (bzw. bleibt immer bei derselben Mail hängen). Dann ist ein manueller Eingriff nötig, um die E-Mail aus dem Postfach heraus zu holen, z.B. über einen Webmail-Zugang auf das Postfach. Es gehen offenbar keine Mails verloren, lediglich die Abholung wird unterbrochen. Man sollte daher das Ereignisprotokoll im Auge behalten – oder man verwendet eine Benachrichtigung, wie im Skript auf dieser Seite.
Beispiel: Ein Zeilenumbruch im „From“ bereitet Pullmail Probleme
From: "Elektroteile Sonnenschein" <elektroteile@example.com>
Ohne diesen Zeilenumbruch kann Pullmail dieselbe Mail abholen:
From: "Elektroteile Sonnenschein" <elektroteile@example.com>
Dennoch ist Pullmail für den temporären Einsatz sehr praktisch. In kleineren Umgebungen ist es, mit den oben genannten Einschränkungen, auch durchaus für den Dauergebrauch verwendbar.
Weniger Stress bereiten kommerzielle POP3 Abholer, die weniger fehleranfällig sind und sich nicht durch einen einfachen Zeilenumbruch aus der Bahn werfen lassen.
Die ideale Lösung für die Anbindung Ihres Mailservers an Internet-E-Mail ist jedoch, ganz auf POP3 Abholung zu verzichten. Verwenden Sie stattdessen lieber die direkte E-Mail-Zustellung zur festen IP Ihres Internetzugangs – die Einrichtung dazu ist normalerweise nicht aufwändig.
Abholen der E-Mails
Das folgende Skript lädt E-Mails aus einem POP3-Postfach herunter und sendet diese an einen SMTP Server.
Da manchmal E-Mails hängen bleiben können, wurde eine E-Mail-Benachrichtigung eingebaut, die im Fehlerfall eine Benachrichtigung an den Administrator sendet und noch eine, wenn wieder erfolgreich abgeholt werden kann.
- Laden Sie sich Pullmail herunter und lesen Sie die beigefügte Readme-Datei.
Pullmail.zip - Laden Sie sich „BLAT“ herunter und führen Sie blat -install aus wie in der beigefügten Readme-Datei bzw. in der Programmhilfe beschrieben. Legen Sie „blat.exe“ ins Pullmail-Verzeichnis.
Blat - Laden Sie sich die UnxUtils herunter und kopieren Sie daraus „date.exe“ und „grep.exe“ ins Pullmail-Verzeichnis. Benennen Sie die „date.exe“ aus dem UnxUtils-Paket in „unixdate.exe“ um.
unixdate.exe aus dem UnxUtils Paket
grep.exe aus dem UnxUtils Paket
Sourceforge: GNU utilities for Win32 (UnxUtils) - Laden Sie das Skript „pull.bat“ herunter (oder verwenden Sie das Skript auf dieser Seite mit Kopieren/ Einfügen) und passen Sie die Pfade, das POP3-Login etc. an.
pull.bat - Testen Sie das Skript ausgiebig :-)
- Richten Sie dann einen geplanten Task ein, der das Skript pull.bat z.B. alle 10 Minuten aufruft.
Das Abhol Skript pull.bat
@echo off @title POP3 E-Mail-Abholung (pullmail) @color 1F rem ################################################## rem # POP3-Abhol-Skript mit Pullmail (v 2005091302) # rem # www.netzprisma.de # rem ################################################## rem ------------ Einstellungen ------------ rem Logfile-Verzeichnis set LOGDIR=c:\admin\pullmail\log rem Verzeichnis mit "pullmail.exe" set BINDIR=c:\admin\pullmail rem Verzeichnis mit Tools (blat,grep,unixdate) set TOOLBINDIR=c:\admin\pullmail rem E-Mail für Benachrichtgungen set ADMINEMAIL=meinadmin@meinedomain.de rem POP3-Login (bei mehr Postfächern Daten direkt beim Aufruf angeben) set POP3_SERV=mail01.meinprovider.de set POP3_USER=meinuser@meinedomain.de set POP3_PASS=PsstGeheim rem --------------------------------------- rem Logname generieren, z.B. "pullmail-2005-09.log" -> eine Logdatei monatlich rem Zeitstempel-String (z.B. "2005-09") erzeugen for /f "Tokens=1" %%i in ('%TOOLBINDIR%\unixdate +%%Y-%%m') do set dt=%%i rem Monatslogdatei und aktuelle Logdatei set LOGFILE=%LOGDIR%\pullmail-%dt%.log set LOGFILE_CURRENT=%LOGDIR%\pullmail_current.log if not exist %LOGDIR% mkdir %LOGDIR% rem pullmail_curent.log enthält aktuellen Abholzyklus echo. > %LOGFILE_CURRENT% echo ------------------------------------ >> %LOGFILE_CURRENT% echo. >> %LOGFILE_CURRENT% %TOOLBINDIR%\unixdate +"%%d.%%m.%%Y %%H:%%M Uhr" >> %LOGFILE_CURRENT% echo. >> %LOGFILE_CURRENT% rem -------- Abholen aller Postfächer -------- rem rem Variante 1: Einzelzuordnung POP3-Postfach <-> Mailserver-Postfach rem pullmail providersrv user pass ^ rem /le /lw /li /t:60 /to:local@domain.de >> %LOGFILE_CURRENT% 2>&1 rem rem Variante 2: Catchall/ Multidrop-Postfach rem Der Provider muss dazu passende Headereinträge bereitstellen!!! rem Die Mails haben einen X-Envelope-To Header, aus dem der Empfänger gezogen wird rem %BINDIR%\pullmail %POP3_SERV% %POP3_USER% %POP3_PASS% ^ /le /lw /li /t:90 /r:X-Envelope-To >> %LOGFILE_CURRENT% 2>&1 rem rem ------------------------------------------ rem Gab es Fehlermeldungen? rem (keiner dieser Texte soll im Log vorkommen) type %LOGFILE_CURRENT% | %TOOLBINDIR%\grep ^ --regexp "Unable\ to\ connect" ^ --regexp "command\ failed" IF ERRORLEVEL 1 GOTO ALLESOK :FEHLER rem Ja, es gab Fehlermeldungen rem Benachrichtigung ist bereits erfolgt? IF EXIST %LOGDIR%\pullmail_error_state.txt GOTO EMAILWEITER rem Benachrichtigung versenden echo Der E-Mail-Abholer (pullmail) hat Fehler ausgegeben. >> %LOGDIR%\pullmail_error_state.txt echo Ihre E-Mails werden daher NICHT abgeholt. >> %LOGDIR%\pullmail_error_state.txt %TOOLBINDIR%\blat %LOGDIR%\pullmail_error_state.txt ^ -subject "POP3-E-Mail-Abholung: Fehlermeldungen" ^ -to %ADMINEMAIL% ^ -attach %LOGFILE_CURRENT% :EMAILWEITER GOTO ENDE :ALLESOK rem keine Fehlermeldungen; ggf. Benachrichtigungsstatus löschen, rem damit Benachrichtigung nächstes Mal wieder scharf geschaltet ist. IF NOT EXIST %LOGDIR%\pullmail_error_state.txt GOTO ENDE rem Benachrichtigungsstatus noch vorhanden; Admin informieren, dass jetzt wieder alles ok ist DEL %LOGDIR%\pullmail_error_state.txt %TOOLBINDIR%\blat - -body "E-Mail-Abholer (pullmail) laeuft wieder..." ^ -subject "POP3-E-Mail-Abholung: ok" ^ -to %ADMINEMAIL% ^ -attach %LOGFILE_CURRENT% :ENDE rem aktuelles Log an Monatslog anhängen type %LOGFILE_CURRENT% >> %LOGFILE%
Weitere Informationen
NPFAQ: Abholen von E-Mails – POP3-Abholer mit hausinternem Mailserver