essandess

Q: Spamassassin Junkmail and Notjunkmail Learning in Mountain Lion

Like many others <https://discussions.apple.com/thread/4181320?start=0&tstart=0>, I wondered what happened to spamassassin and its Bayesian learning mailboxes "junkmail" and "notjunkmail" in OS X Server. Perhaps Apple had automated this process? There certainly isn't any documentation. I didn't think much of it until spam began falling into my server's INBOX, whereupon looking for a fix I discovered that spamassassin learning capabilities still work in Mountain Lion OS X Server, but they aren't automated in any way.

 

Here's how to train your server to detect the junk mail you receive, beyond the appropriate spam filter and greylist settings Server.app>Mail.

 

First, confirm that your serveradmin settings know about the spamassassin Bayesian learning mailboxes "junkmail" and "notjunkmail":

 

sudo serveradmin settings mail:imap | grep junk

 

mail:imap:junk_mail_userid = "junkmail"

mail:imap:not_junk_mail_userid = "notjunkmail"

 

Then use Server.app to add the network accounts "junkmail" and "notjunkmail" and edit access so that these accounts only have access to the Mail service. Add these accounts to Mail so that you (and other trusted users) have access to them.

 

Then dump all your junkmail from your server accounts and other cloud email accounts into the "junkmail" mailbox. Move any messages that aren't junk but marked as such into the mailbox "notjunkmail".

 

Finally,

 

sudo /Applications/Server.app/Contents/ServerRoot/usr/libexec/spamassassin/learn_jun k_mail.sh

 

This will train spamassassin based on the content of these mailboxes, and hopefully you will begin to see amavisd properly mark junkmail as "** JUNK MAIL **" in the subject line.

Mac mini Server (Mid 2010), OS X Mountain Lion (10.8.2), Lion Server, EyeTV HD, Turbo.264 HD

Posted on Nov 4, 2012 2:40 AM

Close

Q: Spamassassin Junkmail and Notjunkmail Learning in Mountain Lion

  • All replies
  • Helpful answers

first Previous Page 3 of 3
  • by pterobyte,

    pterobyte pterobyte Dec 10, 2012 2:45 AM in response to bdemore
    Level 6 (11,101 points)
    Servers Enterprise
    Dec 10, 2012 2:45 AM in response to bdemore

    That would be the userid not the name. In any case you don't need to worry about this. Just make sure you have the accounts named junkmail and notjunkmail and feed them with spam and ham. Both learn_junk_mail and spamtrainer will find the mailbox and the id and train from those mailboxes.

  • by Robb Allan,

    Robb Allan Robb Allan May 16, 2013 7:55 AM in response to bdemore
    Level 2 (354 points)
    Servers Enterprise
    May 16, 2013 7:55 AM in response to bdemore

    I believe the original settings parameter name is incorrect. Try:

     

         sudo serveradmin settings mail | grep junk

     

    and you will see the following:

     

         mail:postfix:junk_mail_userid = "junkmail"

         mail:postfix:not_junk_mail_userid = "notjunkmail"

         mail:imap:junk_mail_userid = ""

         mail:imap:not_junk_mail_userid = ""

     

    If the "mail:postfix:..." settings are blank, set them to junkmail and notjunkmail.

  • by Armand Welsh,

    Armand Welsh Armand Welsh Oct 21, 2013 10:51 PM in response to pterobyte
    Level 1 (14 points)
    Oct 21, 2013 10:51 PM in response to pterobyte

    I am still completely stumped.  I create two public folder in dovcot, junkmail and notjunkmail.  I cannot figure out how to get spamtrainer to find the junkmail and notjunkmail imap folders when scanning/learining.  it always looks for (and fails to find) GUID of the junkmail and notjunkmail users.

     

    from what I am reading, the point of this is to not have to create these accounts, but to just create a couple public folders, or to create standard folders on all user accounts.. but this spamtrainer doesn't find them  what the heck are the command line arguments to use the public folders junkmail and notjunkmail.

  • by UptimeJeff,

    UptimeJeff UptimeJeff Oct 22, 2013 1:26 PM in response to Robb Allan
    Level 4 (3,477 points)
    Oct 22, 2013 1:26 PM in response to Robb Allan

    Did you try the options for top-level (-t) ?

     

    I'm not 100% sure if the top level function works with a public folder namespace.

    You can always read directly with something like

     

    You'll want to do something like - this is untested in this specific form.. hopefully gets you on track.

     

    SharedSpam="/Library/Server/Mail/Data/mail/SpamTrainer/.JunkMail"
    SharedHam="/Library/Server/Mail/Data/mail/SpamTrainer/.NotJunkMail"
    
    SpamDB="/Library/Server/Mail/Data/scanner/amavis/.spamassassin"
    sa_PATH="/Applications/Server.app/Contents/ServerRoot/usr/bin/sa-learn"
    
    $sa_PATH -u _amavisd --dbpath "$SpamDB" --no-sync --spam $SharedSpam/{cur,new}
    $sa_PATH -u _amavisd --dbpath "$SpamDB" --no-sync --ham $SharedHam/{cur,new}
    

     

    This simply tells sa-learn to read directly from your spam/ham directories.

     

    You can add automatic purging and all sorts of other goodies....

     

     

    To learn more:

    man sa-learn

  • by scottl31,

    scottl31 scottl31 Nov 14, 2013 10:56 AM in response to Robb Allan
    Level 1 (13 points)
    Servers Enterprise
    Nov 14, 2013 10:56 AM in response to Robb Allan

    Hi,

     

    I have been trying to figure this out. If I'm not mistaken, this thread is all about using the "junkmail" and "notjunkmail" accounts to learn spam. But it seems it's only if the users are using IMAP. Correct?

     

    Our users are using POP3, so we can spam train by having them forward each spam message to the "junkmail" account, right? If so, can anybody tell me by the following if it is set up correctly, or do I need to do anything else?

     

    I ran:

    sudo serveradmin settings mail | grep junk

     

    I got:

    mail:postfix:spam_quarantine = "junk-quarantine@example.com"

    mail:postfix:spam_notify_admin_email = "junk-admin@example.com"

    mail:postfix:junk_mail_userid = "junkmail"

    mail:postfix:not_junk_mail_userid = "notjunkmail"

    mail:imap:junk_mail_userid = ""

    mail:imap:not_junk_mail_userid = ""

     

    Also, how do the quarantine and notify admin accounts work? Depending on your answer, if I want to set up accounts for them, how do I change those example.com defaults to the real accounts I set up?

     

    This has been exhausting trying to find this out, thanks to Apple's lack of documentation.

     

    Thanks very much!

    Scott

first Previous Page 3 of 3