Re: vbscript smtp server (chaos)



Offerieren Sie Ihre Arbeit nicht als Freundschaft.

Vor allem nicht bei den "Gebrueder Grimm" Lesern Hier.

-------------

Es wurden 400 Millionen Windows Kopien verkauft, auf das Ihr Zeugs passt.







"Markus Olderdissen" <msnews@xxxxxxxxx> wrote in message
news:egng77$vFHA.1252@xxxxxxxxxxxxxxxxxxxxxxx
> ich mache nun schon seit geraumer zeit in vbscript rum. ich bin bei
> windows 98 kleben geblieben, nutze den pws und asp, vbs und wsc
> klamotten sind daher meine wahl.
>
> nun habe ich hier so meine "probleme". keine wirklichen probleme, eher
> eingebildete probleme oder probleme die ich erahne.
>
> vor knapp einem jahr habe ich damit begonnen in vb einen clone eines
> bereits existierenden e-mail servers zu erzeugen. bei der ursprünglichen
> version handelt es sich um MDaemon 2.1.
>
> irgendwann fand ich heraus dass die mswinsock.ocx auch durch vbscript
> angesprochen werden kann. leider nur mit einem "hack" (lizenzschlüssel
> müssen in der registry vorhanden sein) aber es läuft. vor einigen wochen
> nahm ich mir socketwrench von catalyst zur brust. hier bin ich in der
> lage winsock ohne trickserei zu nutzen. ich bleibe erst mal bei
> mswinsock.ocx.
>
> mir ist klar dass vbscript langsamer ist als vb, und dass vb langsamer
> ist als c und co.
>
> ich habe in vbscript eine funktion erzeugt.
>
> Function ParseSMTP(sLine, sReply, sLocalHost, sLocalHostIP, sRemoteHost,
> sRemoteHostIP, sReversePath, sForwardPath, sMail)
>
> nun stellt sich mir die frage wie stabil dieser server ist. er reagiert
> ziemlich träge. hier nun ein teil meiner funktion:
>
> If UCase(sCommand) = "MAIL" Then
> If Len(sForwardPath) > 0 Then
> sReply = "503 Bad sequence of commands"
> Exit Function
> End If
> If Len(sParameter) = 0 Then
> sReply = "501 Syntax error in parameters or arguments"
> Exit Function
> End If
> If UCase(Left(sParameter, 5)) <> "FROM:" Then
> sReply = "504 Command parameter not implemented"
> Exit Function
> End If
> sArgument = Mid(sParameter, 6)
> sArgument = Trim(sArgument) 'fix OE bug
> If Len(sArgument) = 0 Then
> sReply = "501 Syntax error in parameters or arguments"
> Exit Function
> End If
> If Left(sArgument, 1) = "<" Then
> If Right(sArgument, 1) = ">" Then
> sArgument = Mid(sArgument, 2, Len(sArgument) - 2)
> Else
> sReply = "501 Syntax error in parameters or arguments"
> Exit Function
> End If
> Else
> If Right(sArgument, 1) = ">" Then
> sReply = "501 Syntax error in parameters or arguments"
> Exit Function
> End If
> End If
> sReversePath = "<" & sArgument & ">"
> sReply = "250 Requested mail action okay, completed"
> Exit Function
> End If
>
> ich bin mir nicht sicher ob ich die mail adresse auf vorhandensein des @
> zeichens prüfen will, muss oder sollte. ich will dass der server sowohl
> smtp, esmtp, und lmtp unterstützt.
>
> ich prüfe nacheinander
> If UCase(sCommand) = "HELO" Then
> If UCase(sCommand) = "MAIL" Then
> If UCase(sCommand) = "RCPT" Then
> If UCase(sCommand) = "DATA" Then
> und trete mich bei jedem möglichen fehler aus der funktion raus. mein
> gedanke ist der, dass ich mir so etwas wie eine "strasse" baue, und wenn
> ich falsch bin soll exit function mich hinausbefördern und zuvor einen
> rückgabewert verändern.
>
> bevor ich sCommand, sParameter und co erzeuge bzw. nutze, teste ich
> welche werte ich schon habe. damit stelle ich fest ob sMail bereits
> daten enthält und somit kein sReply erfolgen soll...
>
> ich bin mir nicht sicher ob die von mir beschriebene logik die beste
> ist. ich will hier nur ungern die gesamte smtp funktion reinsetzen. hier
> gibt es sicher leute die verstehen was ich "getan habe" (klingt
> schuldig)
>
> und zum filesystemobject noch eine frage. im prinzip will ich in der
> lage sein meine smtp funktion überall zu nutzen. ich benutze gerne die
> zeilen
> With CreateObject("...
> With .OpenTextFile("...
> ist es in ordnung wenn ich in der funktion das fso starte wenn es
> gebraucht wird, oder sollte ich es global setzen? bei mir enthält nahezu
> jede funktion ein With CreateObject("Scripting.FileSystemObject") ...
> aus einer funktion welche eine datei ausliesst trete ich allerdings nie
> mit Exit function aus sondern mit Exit Do ... ich bin mir hier ziemlich
> sicher dass der .Close() aufruf noch wirkung haben muss. letzte woche
> habe ich in vbscript den "schalter " Option Explicit eingebaut und alle
> veriablem "ordentlich dimensioniert", falls das in vbscript mit
> varianten überhaupt als ordentlich bezeichnet werden kann.
>
> soll ich mein vbscript weiter basteln oder sollte ich den kram lieber in
> vb stecken? ich habe den vbscript server noch nicht mit fetten mails
> gefüttert, aber ich vermuute das das in ordnung geht. der server startet
> bei einem connectionRequest eine weitere neue instanz und ist somit
> immer verfügbar, timeout, alles ist drin (hoffe ich doch .... VRFY,
> EXPN, MAIL, RCPT, DATA, NOOP, QUIT, HELP, EHLO, HELO ist alles
> eingebaut) das script hat zur zeit knapp 26 kb. einige teile des scripts
> habe ich in wsc-dateien ausgelagert. darin sind funktionen enthalten
> welche die datenbank des original-servers nutzen können. ich nutze
> beispielsweise diese daten auch für login-bereiche auf meine homepage.
> und alles ist reiner text.
>
> ich habe mich in wsc-dateien "verliebt" weil ich diese während der
> benutzung verändern kann, also der smtp-server kann laufen und ich kann
> die wsc-datei verändern. würde ich den ganzen kram in exe und dll oder
> ocx machen ... ginge nicht ... (und asp würde alles blockieren)
>
> ist folgende Funktion eigentlich "schädlich"? ich meine, weil ich mich
> mit Exit Function hinausbefördere und End If "mehr oder weniger "
> übersprungen wird. ich weisss, es gehört zu If ... aber .... ich weiss
> nicht ... meine ParseSMTP sieht "schön und sauber" aus. aber nur mit
> diesem Exit Function. (ich mag keine tausend tabs und immer weiter
> einrücken)
>
> Function MyName(sPara)
> If Expression Then
> MyName = "a"
> Exit Function
> End If
> MyName = "b"
> End Function
>
> sorry falls der text "blöd daher kommt" aber ich habe niemanden mit dem
> ich mich austauschen kann, ich will ordentlich programmieren und habe
> zuviel dreck gesehen. ich brauche irgendwie nen kommentar zu meiner
> arbeit. (ps: ich bin ohne arbeit und hab den lieben langen tag nix
> besseres zu tun als in vbscript zu basteln)
>
> ... und ab damit ... und ich ins bett ... nun wünsche ich kommentare und
> empfehlungen ... falls nötig rücke ich noch nen bischen quellcode raus.
>

.