[vbs] smtp sink

Pagina: 1
Acties:

  • Blizard
  • Registratie: September 2001
  • Niet online
Ik wou graan een reeds geschreven programma laten runnen wanneer er mail in de drop-directory komt via de smtp-service .. maar wanneer ik volgend script run bij het ontvangen komt er enkel een melding in de log, maar m'n bat-file wordt niet gestart ?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<SCRIPT LANGUAGE="VBScript">
Sub ISMTPOnArrival_OnArrival(ByVal oMsg, intEventStatus )
        Dim oFS
        Set oFS = CreateObject("Scripting.FileSystemObject")
        Dim oLog
        Set oLog = oFS.OpenTextFile("c:\Inetpub\mailroot\mail.log", 8, True )
        oLog.Write "-----------------" & vbCrLf
        oLog.Write "From: " & oMsg.From & vbCrLf
        oLog.Write "To: " & oMsg.To & vbCrLf
        oLog.Write "Subject: " & oMsg.Subject & vbCrLf & "Date: " & now() 
        oLog.Write oMsg.TextBody & vbCrLf & vbCrLf

    Set execObject = Shell.Exec("C:\tem\temp.bat")
        oLog.Close
End Sub
</script>


Ik heb al proberen spelen met permissies, maar dit kon me ook niet helpen.
Iemand nog meer tips ?

[ Voor 13% gewijzigd door Blizard op 18-02-2005 22:42 ]


  • FireWood
  • Registratie: Augustus 2003
  • Laatst online: 10:06
Je wilt vanuit je browser bestanden schrijven/openen? Dit is niet zo rechtstreeks mogelijk. Aangezien deze is geweerd in IE. Andere browsers gebnruiken vbs niet en werken dus niet.

Waarvoor heb je het nodig? Als je iets via een intranet wil doen moet je richting activex gaan denken.

Noobs don't use "F1", Pro's do, but they can't find the information they needed


  • Blizard
  • Registratie: September 2001
  • Niet online
Het schrijven in de logfile werkt hoor ? Dus bestanden openen/bewerken is geen probleem, maar de bat-file wordt blijkbaar niet gestart ?

Ik ken de interne werking niet, maar er komt geen IE aan te pas ? Wanneer er een nieuwe mail in de drop-directory valt wordt dit script aangeroepen. (gebruiken ze vaak voor spam/header/footer toe te voegen/te verwijderen uit mail) en voor eventuele logging.

  • Blizard
  • Registratie: September 2001
  • Niet online
Zou het iets met security te maken kunnen hebben ?
Zoja : welk moet ik eventueel aanpassen ?

De bedoeling is dus gewoon om een php-file te laten uitvoeren bij ontvangst van een e-mail.

  • Equator
  • Registratie: April 2001
  • Laatst online: 08:22

Equator

Crew Council

#whisky #barista

Ik start batjes altijd op deze manier:
Visual Basic:
1
2
3
Dim oShell
Set oShell = CreateObject("Wscript.Shell")
oShell.Run "C:\test.bat",, True


ALs dit overigens gewoon een .vbs bestand is, dan kan je de regel:
<SCRIPT Language="VBScript"> Verwijderen. Dat is alleen van toepassing bij asp files.

  • Blizard
  • Registratie: September 2001
  • Niet online
Ik heb het even op jou manier gedaan, maar het bat-bestand wil gewoon niet starten ?!
Het script wordt natuurlijk wel aangeroepen door de smtp-service, mss dat het daar wat mee te maken heeft ? Maar ik zie geen fouten in de event-viewer ?

Kan ik nog iets meer doen om te testen ?

  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 00:01
Let erop, services (en de programma's die daar vandaan gestart worden) hebben geen toegang tot de desktop. Dit houdt in dat alles wat er vanuit de smtp-service - sinker - batch-file - php-file gestart wordt niet naar de desktop kan communiceren.

controleer even met een "echo. >c:\test.txt" of het batch-filetje wel/niet gestart wordt.

  • Blizard
  • Registratie: September 2001
  • Niet online
jvdmeer schreef op maandag 07 maart 2005 @ 10:00:
Let erop, services (en de programma's die daar vandaan gestart worden) hebben geen toegang tot de desktop. Dit houdt in dat alles wat er vanuit de smtp-service - sinker - batch-file - php-file gestart wordt niet naar de desktop kan communiceren.
controleer even met een "echo. >c:\test.txt" of het batch-filetje wel/niet gestart wordt.
Wat bedoel je met "communiceren met desktop" ?
En zoals verwacht, het batch-filetje wordt niet gestart :( ...
Kan ik op één of andere manier "debuggen" en zien waar de fout zit ? Of wat de foutmelding zou zijn ? (zodat ik eventueel de permissies goed kan zetten)

  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 00:01
Blizard schreef op maandag 07 maart 2005 @ 10:24:
[...]

Wat bedoel je met "communiceren met desktop" ?
Start de volgende twee statements: (als tijd de eerstvolgende gehele minuut invullen natuurlijk:)
code:
1
at 19:29 notepad.exe


code:
1
at 19:29 /interactive notepad.exe


Dan zie je dat de eerste notepad wel wordt gestart, maar dat je dat niet ziet. In taakbeheer zie je wel dat hij onder system-account draait.

De tweede zie je wel verschijnen op jouw desktop, ondanks dat hij draait als system-account. Er moet dus worden aangegeven of een programma/service de desktop mag aanspreken.

Aangezien je zegt dat je vbs wel wordt gestart, zou ik eens kijken of je iets anders als een .bat wel kan starten. Bijv. notepad.exe.

Indien die draait kan je in taakbeheer kijken onder welk account die draait. En dat moet je misschien rechten aanpassen voor je .bat. Maar dat hangt af van je .bat-file.

  • Blizard
  • Registratie: September 2001
  • Niet online
Zoals ik eigenlijk al had verwacht start hij notepad.exe niet ? Wanneer ik de bat-file in een at stop runt deze wel (deed ik overigens al .. misschien had ik dit al moeten melden).

Het heeft dus iets met de smtp-sink te maken denk ik .. Maar geen flauw idee waar ik moet beginnen zoeken :(

  • MisterData
  • Registratie: September 2001
  • Laatst online: 10-05 19:07
Je kunt toch via services.msc gewoon aangeven dat je service toegang heeft tot de desktop oid?

  • Blizard
  • Registratie: September 2001
  • Niet online
Ook wanneer dit aangevinkt is krijg ik het niet voor elkaar om bv notepad te starten.

  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 10:32
Ik draai hier ook een smtp sink.

Ik gebruik:

Visual Basic:
1
2
    Set oShell = CreateObject("WScript.Shell")
    oShell.Run "e:\spamfiltervbs\mailscan.bat", 0, True

Om een batch file op te starten en dat werkt als een zonnetje.

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • Blizard
  • Registratie: September 2001
  • Niet online
Ik draai het op een win2003.
Heb je iets aangezet/afgezet van speciale permissions ? Hij geeft hier ook geen foutmelding, maar doet gewoon niks ?

  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 10:32
Blizard schreef op dinsdag 08 maart 2005 @ 13:35:
Ik draai het op een win2003.
Heb je iets aangezet/afgezet van speciale permissions ? Hij geeft hier ook geen foutmelding, maar doet gewoon niks ?
Heb je 't tegen mij ?

Ik draai op win2k, heb geen permissies gezet.

Als ik 't goed heb draait op win2k het ding onder Local System en dan is het ook niet zo vreemd dat 'ie genoeg rechten heeft, het kan best zijn dat dit op win2k3 anders is.

Overigens kun je in je sink-script gewoon je err object uitlezen, je zou dus na de run-regel iets van
Visual Basic:
1
if err.number <> 0 then file.write err.description & vbnewline

Kunnen doen, mits je ergens ervoor met
Visual Basic:
1
2
Set fs = CreateObject("Scripting.FileSystemObject")
set file = fs.opentextfile("c:\error.log", 8 , true)

die file opent en daarna met
Visual Basic:
1
file.close

Die file afsluit.

Op die manier kun je uitlezen of het ding nu wel of niet een error creëert.

[ Voor 4% gewijzigd door StevenK op 08-03-2005 14:47 ]

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • Blizard
  • Registratie: September 2001
  • Niet online
Ik weet niet wat ik fout doe, maar hij maakt ook geen error.log aan :/

  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 10:32
Weet je wel zeker dat die sink überhaupt wel draait.

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • Blizard
  • Registratie: September 2001
  • Niet online
Het eerste deel van het scriptje draait (hij print met andere woorden mooi in een logfiletje wanneer er een mailtje kwam en wat er in stond .. dus ik vermoed dat de sink goed draait ?)

  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 10:32
Blizard schreef op woensdag 09 maart 2005 @ 16:58:
Het eerste deel van het scriptje draait (hij print met andere woorden mooi in een logfiletje wanneer er een mailtje kwam en wat er in stond .. dus ik vermoed dat de sink goed draait ?)
Maar dan kun je toch ook met
Visual Basic:
1
oLog.write err.description & vbnewline

Je eventuele error uitdraaien ?

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.

Pagina: 1