Joseph Young
involved.com
SystemAdmin

Quick notes on running spamassassin from daemontools and patching
qmailmrtg7 for mrtg


Once you have spamassassin working
add /var/qmail/supervise/spamassassin/run
-----
#!/bin/sh
        exec /usr/bin/spamd -x -q -u qmailq -s\
        stderr 2>&1 | multilog t s10000000000 n20 /var/log/spamassassin/
------
ln -s /var/qmail/supervise/spamassassin/ spamassassin

MRTG
---
Title[spam]: Spam Email
MaxBytes[spam]: 5000
AbsMax[spam]: 10000
Options[spam]: gauge,nopercent,dorelpercent
Target[spam]: `/usr/local/bin/qmailmrtg7 f /var/log/spamassassin`
PageTop[spam]: <H1>Spam Email</H1> <P>We assume that a Spam level > 5 is
real spam
YLegend[spam]: Spam Emails
ShortLegend[spam]: mails
Legend1[spam]: Spam
Legend2[spam]: processed mails
LegendI[spam]: &nbsp;Spam:&nbsp;
LegendO[spam]: &nbsp;processed:&nbsp;
---


QMAILMRTG7.PATCH
-------
# adds spamassassin filtering w/ multilog
diff -crN ./qmailmrtg7.c ../qmailmrtg7-3.4-joe/qmailmrtg7.c
*** ./qmailmrtg7.c Sat Jan 19 23:11:53 2002
--- ../qmailmrtg7-3.4-joe/qmailmrtg7.c Thu Mar 27 14:21:43 2003
***************
*** 40,45 ****
--- 40,46 ----
  int local;
  int remote;
  int max_files;
+ int spam;

  time_t end_time;
  time_t start_time;
***************
*** 62,68 ****
      if ( argc != 3 ) {
          usage();
          printf("usage: type dir\n");
!         printf("where type is one of t, a, m, c, s, b, q \n");
          printf("and dir is a directory containing multilog files\n");
          printf("for q option dir is the qmail queue dir\n");
          exit(-1);
--- 63,69 ----
      if ( argc != 3 ) {
          usage();
          printf("usage: type dir\n");
!         printf("where type is one of t, a, m, c, s, b, q, f\n");
          printf("and dir is a directory containing multilog files\n");
          printf("for q option dir is the qmail queue dir\n");
          exit(-1);
***************
*** 77,82 ****
--- 78,84 ----
        case 'c':
        case 's':
        case 'b':
+       case 'f':
        case 'q':
          break;
        default:
***************
*** 97,102 ****
--- 99,105 ----
      local = 0;
      remote = 0;
      max_files = 0;
+     spam = 0;


      if ( TheType == 'q' ) {
***************
*** 168,173 ****
--- 171,183 ----
                  printf("\n");
                  printf("\n");
          break;
+         /* spam/totalemail */
+         case 'f':
+                 printf("%i\n",spam);
+                 printf("%i\n",ttotal);
+                 printf("\n");
+                 printf("\n");
+         break;

          /* bytes */
          case 'b':
***************
*** 250,255 ****
--- 260,269 ----
              if(strstr(TmpBuf,"success:")) success++;
              if(strstr(TmpBuf,"failure:")) failure++;
              break;
+         case 'f':
+             if(strstr(TmpBuf,"checking message")) ttotal++;
+             if(strstr(TmpBuf,"identified spam")) spam++;
+             break;

          case 'b':
              if((tmpstr1=strstr(TmpBuf,": bytes "))!=NULL) {

Reply via email to