SpamAssassin installed

jjohn on 2002-09-15T23:15:30

Finally got around to installing SpamAssassin. The installation went smoothly, but I did have a vehement argument with sendmail about the honor of procmail. For those that only touch sendmail at install, here are some tips:

  • chmod 600 .forward. Sendmail doesn't like to execute world/group writable .forward files.
  • Simplify the .forward file. The following incantation for the .forward file is suggested in the SpamAssassin INSTALL file:

    "|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #user"

    To reduce the number of cargo-cults out there, this line attempts to set an environment variable (the Input Field Separator) to a space and then exec procmail. The argument -f tells procmail to regenerate the leading 'From' mail header. The following '-' means that procmail only updates the timestamp on the 'From' line. If procmail bombs out, a mysterious exit code 75 is returned. Perhaps sendmail will do something with processes that return 75. In any case, this line ends in a comment that isn't used by procmail nor sendmail. It's for you! You don't need this rather obtuse line. Instead the following will suffice:

    |/usr/bin/procmail

    Now that's a line even I can understand.
  • Vouch for procmail. When you encounter the following error message sent in an email from postmaster:
    "|/usr/bin/procmail"
        (reason: service unavailable)
        (expanded from: jjohn)
    

    Make sure that the sendmail restricted shell (smrsh) knows that procmail is a trusted program. This is done by putting a symlink to procmail in a directory smrsh knows about. On my RedHat system, that directory is /etc/smrsh. Local conditions may vary.

After my little wrasselin' match with sendmail, I'm reaping the rewards. SpamAssassin appears to have been worth the effort to install.

What are you waiting for?


That ending comment

pjm on 2002-09-16T02:31:16

From memory, that ending comment in the original .forward invocation was intended to guard against an overzealous sendmail optimization. The funky idea being that if two recipients of a given message had identical .forward files then why not just save the trouble of running through both of them and instead use the first encountered. Ugg.

I'd guess it's ancient history being fossilised into an idiom, but I'm pretty sure that's the origin. (ie, the #username causes diffs of everyone's .forward files to be non-zero).

IFS

jdavidb on 2002-09-16T12:47:30

Raise your hand if procmail has ever failed to work for you because you modified your IFS variable!