Eigentlich wollte ich ja Mercury/32 auf meinem Heimserver einsetzen, jedoch hat das Programm mich maßlos enttäuscht. Als Ersatz habe ich für den hMailServer entschieden, der stabil läuft und obendrein auch noch wesentlich einfacher zu konfigurieren ist.
Die Sache funktioniert sogar so gut, dass ich überlege, ob ich nicht weitere Domains auf meinen Heimserver umziehen soll. Bei diesen anderen Domains würden allerdings auch externe Benutzer mit dabei sein: Und genau die würden Probleme machen! 🙁
Nein, nicht was ihr denkt 😀 ! Wer sich die E-Mail-Protokolle (IMAP, POP3, SMTP) schonmal angegeguckt hat, der wird eins feststellen können: Ein Benutzer kann nicht einfach sein Passwort ändern!
Bei den großen Webmail-Anbietern kann man das über deren Webseite machen - das ist ein Zusatzfeature und von Betreiber zu Betreiber unterschiedlich. Doch wie wird das bei mir möglich sein? Eine Lösung musste her! Und die sieht derzeit so aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | ' Wscript.Arguments(0) => domain name ' Wscript.Arguments(1) => username ' Wscript.Arguments(2) => old password ' Wscript.Arguments(3) => new password On Error Resume Next Err.Clear If Wscript.Arguments.Count = 4 Then Dim obApp Set obApp = CreateObject("hMailServer.Application") If Err.Number = 0 Then Call obApp.Authenticate(Wscript.Arguments(1) & "@" & Wscript.Arguments(0), Wscript.Arguments(2)) If Err.Number = 0 Then Dim obDomain Set obDomain = obApp.Domains.ItemByName(Wscript.Arguments(0)) If Err.Number = 0 Then Dim obAccount Set obAccount = obDomain.Accounts.ItemByAddress(Wscript.Arguments(1) & "@" & Wscript.Arguments(0)) If Err.Number = 0 Then If obAccount.ValidatePassword(Wscript.Arguments(2)) Then obAccount.Password = Wscript.Arguments(3) obAccount.Save WScript.StdOut.WriteLine "0" ' password set Else WScript.StdOut.WriteLine "1" ' old password is not correct End If Else WScript.StdOut.WriteLine "2" ' account does not exist End If Else WScript.StdOut.WriteLine "3" ' domain does not exist End If Else WScript.StdOut.WriteLine "4" ' old password is not correct End If Else WScript.StdOut.WriteLine "5" ' hMailServer.Application not available End If Else WScript.StdOut.WriteLine "6" ' wrong number of arguments End If |
Hierbei handelt es sich um ein VBScript, das die COM-API benutzt, die der hMailServer bereitstellt. Dieses Script wird die Basis eines kleinen Servers werden, an dem man sich mit seiner E-Mail-Adresse und seinem Passwort anmelden und sein Passwort ändern können wird. Wie man das ganze mit SSL absichern kann, habe ich euch ja schon gezeigt. 😉
Ja, für unerfahrene Benutzer könnte das Passwort ändern wirklich eine kleine Herausforderung werden - die geplante grafische Clientanwendung sollte die Hemmschwelle allerdings auf lange Sicht gesehen senken können. 🙂
Update:
Mir ist gerade aufgefallen, dass ich eine wichtige Information vergessen habe! Und zwar muss das Script mit dem Windows Script Host cscript.exe aufgerufen werden. Ansonsten funktioniert die Ausgabe des Ergebniscodes nicht korrekt!
E-Mail-Grüße, Kenny