Autor Thema: kSpam : Agent bereitet Sorgen  (Gelesen 1420 mal)

Offline rscho

  • Junior Mitglied
  • **
  • Beiträge: 67
  • Geschlecht: Männlich
kSpam : Agent bereitet Sorgen
« am: 29.08.06 - 09:55:42 »
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.
Gruß

Reinhold Schönemann

Fachkundiger Datenschutzbeauftragter
Spezialist für Planung, Realisierung , Betrieb
von Lotus Notes/Domino Netzwerken
IBM Certified System Administrator - Lotus Notes and Domino 6

Offline rscho

  • Junior Mitglied
  • **
  • Beiträge: 67
  • Geschlecht: Männlich
Re: kSpam : Agent bereitet Sorgen
« Antwort #1 am: 29.08.06 - 16:59:41 »
Hallo Gemeinde,

was ich vorhin andeutete, ...Wald vor Bäumen...

Der Agent braucht das Zertifikat des Servers um sauber laufen zu können.
Da aber ein Admin den Agenten aktiviert hat und dann nicht den AdminClient zur Signierung aufgerufen hat, wars das dann.

Trotzdem Danke, daß wenigsten einige die Problembeschreibung gelesen haben.
Gruß

Reinhold Schönemann

Fachkundiger Datenschutzbeauftragter
Spezialist für Planung, Realisierung , Betrieb
von Lotus Notes/Domino Netzwerken
IBM Certified System Administrator - Lotus Notes and Domino 6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz