Fetchmail Exchange-Connector
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
Fetchmail Exchange-Connector |
How2Use |
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)