Hallo Gemeinde,
seit einiger Zeit (3 Wochen) habe ich kSpam 1.4b, basierend auf der Schablone kSPAM quarantine, auf zwei Linuxdistibutionen (Suse 9.3 und Gentoo) mit Domino ND7.0 bzw. ND7.01 FP1 erfolgreich am laufen. Jetzt habe ich das Päckchen auf einem WIN 2003-Server mit Domino ND7.01 FP1 installiert und konfiguriert.
Knackpunt ist, der Agent : kSpam Spam Processing | agntkSpamProcessing steigt mit der Fehlermeldung "Object variable not set" aus. Die Ausstiegsposition konnte ich lokalisieren, nur komme ich nicht auf die Lösung des Problems. Wahrscheinlich sehe ich den Wald vor Bäumen nicht.
Den Ausstiegspunkt habe ich mit >>>>> <<<<< gekennzeichnet.
Interessant ist auch, das der Agent fehlerfrei durchläuft, wenn ich ihn auf der Konsole mit dem Komando : Tell Amgr Run "mailspam.nsf" 'agntkSpamProcessing' anlaufen lasse, startet das Teil allerdings periodisch, produziert es den beschriebenen Fehler.
======================
Sub Initialize
Print "kSpam Processing Agent Started!"
Dim sReaders(3) As String
sReaders(0)="[AllReader]"
sReaders(1)="LocalDomainAdmins"
sReaders(2)="LocalDomainServers"
sReaders(3)="OtherDomainServers"
Dim sess As New NotesSession
Dim dbCurrent As NotesDatabase
Set dbCurrent=sess.CurrentDatabase
Dim docDummy As NotesDocument
Dim sServer As String
Dim Profile As NotesDocument
Set Profile = dbCurrent.GetProfileDocument("Configuration")
sServer = Profile.KS_Server(0)
Dim dbDirectory As New NotesDatabase(sServer,"names.nsf")
Dim viewRecipientLookup As NotesView
Set viewRecipientLookup=dbDirectory.GetView("viewkSpamRecipientLookup")
Dim col As NotesDocumentCollection
Set col=dbCurrent.UnprocessedDocuments
Dim vwecLookup As NotesViewEntryCollection
Dim vweLookup As NotesViewEntry
Dim iRecipient As Integer
Dim docDelete As NotesDocument
Dim vReadersAppend As Variant
Dim item As NotesItem
Dim doc As NotesDocument
Set doc=col.GetFirstDocument
While Not doc Is Nothing
Set docDummy=dbCurrent.CreateDocument
docDummy.ReadersDefault=sReaders
If doc.HasItem("flagStatus") Then
Select Case doc.flagStatus(0)
Case 1
' Document already processed, do nothing
Set docDummy=Nothing
Set doc=col.GetNextDocument(doc)
Case 2
' Document approved as Spam by User, do nothing
Set docDummy=Nothing
Set doc=col.GetNextDocument(doc)
Case 3
' Document is marked as False-Positive by User, delete it
Set docDelete=doc
Set docDummy=Nothing
Set doc=col.GetNextDocument(doc)
Call docDelete.Remove(True)
Case 4
' Document has no intended Recipient in our Domain, delete it
Set docDelete=doc
Set docDummy=Nothing
Set doc=col.GetNextDocument(doc)
' *** For testing purposes ! ***
' Call docDelete.Remove(True)
Case 5
' Document was copied back from MailGood, insert $Readers and set Status=2
Goto ProcessAgain
End Select
Else
' Document was newly added to MailSpam, process it
ProcessAgain:
If doc.HasItem("Recipients") Then
' Mail arrived via SMTP and was captured by kSpam
iRecipient=0
Forall vKey In doc.Recipients
vKey=Lcase(vKey)
If vKey<>"" Then
Set vwecLookup=viewRecipientLookup.GetAllEntriesByKey(vKey,False)
Set vweLookup=vwecLookup.GetFirstEntry
While Not vweLookup Is Nothing
iRecipient=1
docDummy.tmpReaders=vweLookup.ColumnValues(1)
docDummy.ReadersAppend=Evaluate(|@Trim(@Unique(ReadersAppend:tmpReaders))|,docDummy)
Set vweLookup=vwecLookup.GetNextEntry(vweLookup)
Wend
End If
End Forall
If iRecipient=0 Then
doc.flagStatus=4
Call doc.Save(True,False,True)
Set docDummy=Nothing
Set doc=col.GetNextDocument(doc)
Else
docDummy.Readers=Evaluate(|@Trim(@Unique(ReadersAppend:ReadersDefault))|,docDummy)
Set item=doc.ReplaceItemValue("$Readers",docDummy.Readers)
item.IsReaders=True
doc.flagStatus=1
Call doc.Save(True,False,True)
Set docDummy=Nothing
Set doc=col.GetNextDocument(doc)
End If
Else
' Mail was sent by User to MailSpam Database, therefore automatically approved and Default Readers set
Set item=doc.ReplaceItemValue("$Readers",docDummy.ReadersDefault)
>>>>> item.IsReaders=True <<<<<
doc.flagStatus=2
Call doc.Save(True,False,True)
Set docDummy=Nothing
Set doc=col.GetNextDocument(doc)
End If
End If
Wend
Print "kSpam Processing Agent Terminated!"
End Sub
======================
Für Tipps und Anregungen vorab herzlichen Dank.