welcome: please sign in

Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment
First name of the author of the GNU Manifesto

Revision 11 as of 2008-07-07 04:28:18

Edit

SpamAssassinAdmin

Here's how we set up our site-wide SpamAssassin bayes database, including the ability for users to train it.

  1. Create a new user spamd with home /var/local/lib/spamd.

  2. Add "spamd" to /etc/cron.allow.

  3. Perform the following as spamd:

    1. cd ~spamd

    2. maildirmake -S Maildir, to create the shared SpamAssassin mailbox.

    3. maildirmake -f SiteSpam -s write Maildir, to create a writable folder for misclassified spam (or if extracting from a tarball, make sure it has the sticky bit set by doing the following).

      • find ~spamd/Maildir/.SiteSpam -type d -exec chmod o+t {} \;
    4. maildirmake -f SiteHam -s write Maildir, to create a writable folder for misclassified ham (or if extracting from a tarball, make sure it has the sticky bit set by doing the following).

      • find ~spamd/Maildir/.SiteHam -type d -exec chmod o+t {} \;
  4. Add the following to ~spamd/.crontab to learn from and delete messages in those shared folders every five minutes (changing MACHINENAME to be the name of the local machine):

    • MAILTO=logs@MACHINENAME.hcoop.net
      
      # Learn from submitted spam
      0,10,20,30,40,50 * * * * ~spamd/scripts/learn-spam --spam
      # Learn from submitted ham
      0,10,20,30,40,50 * * * * ~spamd/scripts/learn-spam --ham
      # Remove any tmp cruft
      3 3 * * * find ~spamd/Maildir/.SiteHam/tmp -type f -delete ; find ~spamd/Maildir/.SiteSpam/tmp -type f -delete

      Be sure there's a newline after the last line, or it won't be processed.

  5. Copy the learn-spam script from the spam directory of the hcoop "misc" repository into the directory ~spamd/scripts.

  6. Modify /etc/spamassassin/local.cf with the directive:

    • # Location of bayes data
      bayes_path /var/local/lib/spamd/bayes/.spamassassin/bayes
      
      # Fix bayes permissions
      bayes_file_mode 0770
      
      # Directives from old setup
      # [any custom stuff from the old /etc/spamassassin/local.cf that you want to keep]
  7. Modify /etc/default/spamassassin by setting OPTIONS and ENABLEDas follows. The -x prevents spamd from trying to look for per-user configuration, which would be silly because it always runs as the same user here. Without this flag, the cron job triggered every 5 minutes would log an error message, which would lead to an e-mail being sent to the spamd user.

    • # Change to one to enable spamd
      ENABLED=1
      
      OPTIONS="--create-prefs --max-children 5 --helper-home-dir=/var/local/lib/spamd -u spamd -x -s /var/log/spamd.log"
      
      PIDFILE="/var/local/lib/spamd/pid"
  8. Make a file called /etc/logrotate.d/spamd with the following contents.

    • /var/log/spamd.log {
              weekly
                      missingok
                      create 0640 root adm
                      rotate 4
                      compress
                      delaycompress
                      sharedscripts
                      postrotate
                      [ -f '/var/local/lib/spamd/pid' ] && (kill -HUP `cat /var/local/lib/spamd/pid`) || exit 0
                      endscript
      }
  9. Start the daemon by doing /etc/init.d/spamassassin start. Check /var/log/spamd.log to be sure that it started OK.

  10. Install the .crontab entries that you wrote earlier by doing crontab -u spamd ~spamd/.crontab as root. Do this every time that you make changes to ~spamd/.crontab.

  11. Edit /etc/courier/shared/index as follows, being sure to separate each column with a single TAB character. The second column is UID, and third column is GID -- consult /etc/passwd and /etc/group to make these match the spamd user and group.

    • spamd   116     119     /var/local/lib/spamd
  12. Restart courier's IMAP process: runsv restart courier-imap

  13. Test by checking to see if you can access shared.SpamAssassin.SiteHam and shared.SpamAssassin.SiteSpam from IMAP. If not, do maildirmake --add SpamAssassin=~spamd/Maildir ~/Maildir as your normal user from the machine that does courier (and presumably spamassassin as well). You might need to replace ~ with ~USERNAME if you are using sudo to do this, where USERNAME is your normal username.

  14. Now copy some spammy mail into the SiteSpam directory, wait 5 minutes, and check to see if the mail got learned and deleted.

  15. If so, edit ~spamd/.crontab to pipe the output of sa-learn to /dev/null, and run crontab as specified earlier to propogate this change.


CategorySystemAdministration