Von Mathias Behrle (leicht geändert)
Ab dem Hamster 1.3.13.140 (Beta-Version im Vorfeld von Version 2.0.0.0) wurde die SSL-Funktionalität direkt in den Hamster integriert. Hierdurch wurde eine Änderung der HamFetchMail- bzw. HamSendMail-Skriptbefehle nötig, die sehr viele Hamsternutzer betreffen wird.
Was ist zu tun?
Alle Skripte, die HamFetchMail- bzw. HamSendMail-Befehle nutzen, sollten daraufhin überprüft werden, ob bei den FetchMail-Parametern hinter dem <LeaveOnServer>-Parameter bzw. den HamSendMail-Parametern hinter dem <from-select>-Parameter Einträge existieren, die angepasst werden müssen.
Die neue Syntax der Befehle lautet:
HamFetchMail ( <server>, <port>, <user>, <pass>, <destuser>, <filter>,<LeaveOnServer>, <SSLMode>, <SSLVerify>, <SSLCaFile> )
bzw.
HamSendMail ( <server>, <port>, <from-select>, <to-select>, <SSLMode>,<SSLVerify>, <SSLCaFile> )
HamSendMailAuth ( <server>, <port>, <user>, <pass>, <from-select>,<to-select>, <SSLMode>, <SSLVerify>, <SSLCaFile> )
Wichtig ist nicht nur die neue Anzahl der Parameter, sondern auch das neue Parameterformat!
SSLMode: Integer [0 3]
SSLVerify: Integer [0 3]
SSLCaFile: String
D. h. ein Befehl mit vollständig ausgefüllten Parametern sieht ohne Nutzung von SSL z. B. folgendermaßen aus:
HamFetchMail ( "pop3-server", "110", "user", "pass", "admin", "", 0, 0, 0, "" )
bzw.
HamSendMail ( "smtp-server", "25", ".*", ".*", 0, 0, "" )
oder:
HamSendMailAuth( "smtp-server", "25", "", "", ".*", ".*", 0, 0, "" )
Hier sei wärmstens die Lektüre der SSL-FAQ empfohlen: Hamster und SSL.
Soviel an dieser Stelle: Um SSL überhaupt nutzen zu können, werden zwei zusätzliche DLL-Dateien benötigt: libssl32.dll und libeay32.dll in aktueller Ausführung, d. h. minimal erforderlich ist Version OpenSSL 0.9.6b, mehr dazu siehe in der SSL-FAQ. Die beiden DLLs müssen in das Hamster-Hauptverzeichnis oder ein Verzeichnis, das in der Umgebungsvariable %PATH% enthalten ist, kopiert werden. Der Hamster findet sie beim Start automatisch.
Unter Konfiguration → Grundeinstellungen → SSL stehen die Grundeinstellungen für SSL:
Es gibt zwei Möglichkeiten von Zertifkatsspeichern: Unter Path to certificates for verification kann ein Verzeichnis angegeben werden, in dem alle Zertifikate in Einzeldateien vorliegen. Die Namen der Dateien müssen dann dem Format <Hash_des_Zertifikates>.0 entsprechen (s. SSL-FAQ). Eine alternative Möglichkeit besteht in der Angabe einer PEM-Datei unter File with certificates for verification, die alle Zertifikate gesammelt enthält.
Beide Möglichkeiten können additiv verwendet werden, nötig ist nur die Angabe einer von beiden.
Hier ist zu beachten, dass die eingetragenen Zertifikatsspeicher zur Überprüfung aller SSL-Zertifikate verwendet werden unabhängig davon, wie die SSL-Funktionen aufgerufen wurden (Menü oder Skript).
Individuell abweichende Einstellungen für einzelne Server können jeweils in deren Einzelkonfiguration vorgenommen bzw. über die SSL-Parameter der Skriptbefehle übergeben werden. Auch müssen alle SSL-Einstellungen für die Einzelserver erneut aktiviert werden, da die alten Einstellungen nicht übernommen werden.
Choose Usage: Wie soll SSL verwendet werden?
0 SSL abgeschaltet (default) 1 SSL auf separatem Port (z. B. 465,995,563) 2 TLS, wenn möglich (Fallback auf unverschlüsselte Verbindung, wenn TLS nicht möglich ist) 3 TLS wird erzwungen (auf Standardport z. B. 25, 110, 119)
Choose Verification: Steuert die Zertifikatsüberprüfung (entspricht der -v-Option von STunnel).
0 Zertifikatsüberprüfung abgeschaltet 1 Zertifikatsüberprüfung falls Zertifikat vorgelegt 2 Zertifikatsüberprüfung immer 3 Zertifikatsüberprüfung immer und Vergleich des Serverzertifikats mit lokaler Kopie
Verify with File:
<SSLCaFile> Der Pfad zum Zertifikat für die Überprüfung. Wenn leer, wird der in den Grundeinstellungen eingetragene Standard genommen.
Um SSL mit den lokalen Servern von Hamster verwenden zu können, wird ein Zertifikat mit geheimem Schlüssel benötigt. Beim Versuch, die lokalen Server ohne ein solches Schlüsselpaar in Betrieb zu nehmen, beschwert sich der Hamster mit einer Fehlermeldung und nimmt die lokalen Server ohne SSL-Unterstützung in Betrieb (!).
Näheres zur Erzeugung und Installation steht in der SSL-FAQ.
Wenn sicher ist, dass die alte Methode über STunnel nicht mehr benötigt wird, können folgende Einträge entfernt werden:
aus allen server.inis:
UseSSL SSL-Port sTunnelOption aus der hamster.ini: SSLWrapperNotClose SSLProg SSLStartTimeout SSLlocalStartTimeout SSLKeyFile TunnelOption
und natürlich die stunnelw.exe und zugehörige Dateien.