Fetchmail Exchange-Connector

 

Exchange Server Administratoren haben oft das Problem das der Exchangeserver an einer Wahlleitung betrieben wird.
Somit ist die Zustellung über das SMTP Protokoll praktisch nicht möglich.

Für solche Szenarien gibt es kommerzielle Software wie z.B. POPCon welche diese Lücke schliesst. Die Funktionsweise ist einfach. Statt die E-Mail über SMTP direkt an den Exchange zuzustellen, holen diese Softwarelösungen die Mail per POP ab und übergeben sie dann per SMTP an den Exchange Connector.

Genau nach diesem Prinzip arbeitet auch der Fetchmail Exchange-Connector, mit dem einzigen Unterschied das er kostenfrei verfügbar ist. Fetchmail ist ein Programm aus der Unix Welt und wird in der hier beschriebenen Konfiguration unter cygwin unter Windows zum Einsatz gebracht. Die dazugehörigen Steuerscripte können hier geladen werden.

 

Download

 

VMware Image

Fetchmail Exchange-Connector
Compressed Archive

VMware Image

How2Use
Documentation

 

Pull Script installieren

 

Wenn Cygwin standardmässig installiert wurde befindet es sich unter C:\cygwin

 

Aus dem Archiv pull.zip

 

- fetchmail.sh nach C:\cygwin kopieren

- pull.cmd nach C:\cygwin kopieren

- fetchmailrc nach C:\cygwin kopieren

 

Editieren der fetchmailrc in C:\Cygwin.

 

Beispiel:

set postmaster " Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. "

set no softbounce

poll "mail.it-userdesk.de" proto pop3 user " Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. " pass "12345" smtphost "localhost" smtpname " Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. " options ssl sslfingerprint "74:C8:DF:9A:32:32:B4:82:80:81:4B:05:54:9E:07:A0"

poll "mail.it-userdesk.de" proto pop3 user " Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. " pass "23456" smtphost "localhost" smtpname " Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. " options ssl sslfingerprint "74:C8:DF:9A:32:32:B4:82:80:81:4B:05:54:9E:07:A0"

 

Weitere gute Beispiele finden sich z.B. hier: http://wiki.notestc.de/index.php/Fetchmail

 

Das Script pull.cmd zunächst "von Hand" aufrufen und die entstehen Log-Files analysieren. Klappt alles diesen Vorgang automatisieren über gepante Tasks / Aufgabenplanung.

 

Erstellen eines Windows geplanten Tasks - alle XXX Minuten ab 0 Uhr, Dauer 23:59, nicht beenden

 

 

Exchange Server für Fetchmail vorbereiten

 

Fetchmail sammelt Mails und übergibt diese dann per SMTP an den Exchange.

Es können bei diesem Vorgang Fehler auftreten. z.B. kann die Nachricht größer sein als dies im Exchange Connector definiert ist. In diesem Fall passiert folgendes:

 

Fri Aug  5 09:22:38     2011

fetchmail: SMTP> MAIL FROM:< Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. > SIZE=14524927

fetchmail: SMTP< 552 5.3.4 Message size exceeds fixed maximum message size

fetchmail: SMTP error: 552 5.3.4 Message size exceeds fixed maximum message size

 

Wenn nun Fetchmail mit dem Parameter set bouncemail eingestellt ist (Standard), so versucht es dem Absender eine Nichtzustellbarkeitsnachricht zu senden. Mit Exchange Standarkonfiguration passiert dann folgendes:

 

fetchmail: SMTP> MAIL FROM:<>

fetchmail: SMTP< 250 2.1.0 Sender OK

fetchmail: SMTP> RCPT TO:< Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. >>

fetchmail: SMTP< 550 5.7.1 Unable to relay

fetchmail: SMTP> QUIT

fetchmail: SMTP< 221 2.0.0 Service closing transmission channel

fetchmail: SMTP> RSET

 

Exchange weigert sich eine Mail für Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. >  anzunehmen und auszuliefern. Die Mail bleibt in der POP Box und der Vorgang wiederholt sich endlos.

 

Eine mögliche Lösung hierfür ist es dem Exchange Server einen Openrelay Connector zu spendieren, der nur Mails aus dem lokalen Netzwerk annimmt.

 

Links zu diesem Thema hier:

 

http://blogs.technet.com/b/exchange/archive/2006/12/28/3397620.aspx

http://technet.microsoft.com/de-de/library/bb232021.aspx

 

Openrelay Connector in Exchange 2007 anlegen

 

 

Alle Einstellungen übernehmen, eine HELO Zeile eintragen

 

 

Standardeinstellungen entfernen, eigenes Netz einfügen

 

 

Adapter erstellen lassen und danach mit rechter Mastaste / Eigenschaften bearbeiten

 

 

 

 



Zum Schluss muss noch folgendes Kommando in der Exchangeserver Verwaltungs-Shell abgesetzt werden:

 

Get-ReceiveConnector "openrelay" | Add-ADPermission -User "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"

 

Eine Anmerkung noch (Exchange 2007 SP3): Wird bei Authentifizierung "Extern gesichert" angeklickt setzt dieser Haken andere Funktionen wie beispielsweise MessageSizeLimit  ausser Kraft.

 

Mit dem so angelegten Connector passiert dann mit der "fehlerhaften" Mail folgendes:

 

fetchmail: SMTP> HELO WIN-74L23CHR0RS.it-userdesk.local

fetchmail: SMTP< 250 openrelay.it-userdesk.de Hello [127.0.0.1]

fetchmail: SMTP> MAIL FROM:<>

fetchmail: SMTP< 250 2.1.0 Sender OK

fetchmail: SMTP> RCPT TO:< Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. >

fetchmail: SMTP< 250 2.1.5 Recipient OK

fetchmail: SMTP> DATA

fetchmail: SMTP< 354 Start mail input; end with <CRLF>.<CRLF>

fetchmail: SMTP: (bounce-message body)

fetchmail: SMTP>. (EOM)

fetchmail: SMTP< 250 2.6.0 <9593c83a-156c-4022-abcb-aa4b88937093@WIN-74L23CHR0RS

Ich empfehle in die fetchmailrc folgenden Parameter einzutragen:

set no softbounce

In diesem Fall wird die nicht angenommene Mail vom POP Server gelöscht. ACHTUNG, die Funktionalität von Fetchmail sollte natürlich gründlich getestet sein, bevor dieser Parameter zur Anwendung kommt !!!

 

TIP: wenn auf dem Exchange Server IP6 aktiviert ist gibt es Probleme mit dem Einsatz von "localhost" in der fetchmailrc. In diesem Fall besser direkt die IP4 Adresse des Exchangeservers in die Datei eintragen. Man erkennt dies daran das der Openrelay Connector sich nicht meldet, sondern der Exchange Standardconnector (HELO)