The first two parts of this series covered the basics of how to get Mac OS X Server up and running as a full featured email server, complete with advanced mailing list support and WebMail. This final installment goes beyond the basics and discusses issues such as securing the server, configuring automatic scanning of all messages for spam and viruses, and setting other advanced mail service options. Some of these topics apply to any organization, whereas others might be of interest only in specific environments.
Junk Mail and Virus Filtering
Spam and viruses that spread by email are universal problems for all Internet users and all mail server administrators. Governmental attempts to criminalize sending spam and creating viruses have done little to stem the tide of junk mail that gets sent every day. Mac OS X Server’s mail services include tools that enable you to attempt to filter out spam and email containing viruses before they reach your users.
Using these tools can be important because many spam messages contain HTML code that loads data from a remote server, thus enabling the sender of the spam to know which email addresses are valid after sending blindly. This in turn makes users with email accounts on the mail server more likely to receive spam, which results in more workload on the server and more spam reaching users.
Likewise, stopping a virus from ever reaching users can keep it from propagating in a network or being sent on to others inside or outside of a network. Even though there are very few true Mac viruses out there at the moment, Macs can be affected by Microsoft Office macro viruses, and Mac users can inadvertently send emails with viruses to users of other platforms. Also, chances are that even in the most Mac-centric environment, you’ll have a least one Windows PC on your network.
In Mac OS X Server 10.4 (Tiger), Apple took the toolset that was previously available only at the command line and built it right into the Mail Service Settings pane in Server Admin. The Filters tab, as shown in Figure 1, enables you to configure automatic scanning of all incoming messages for both spam and viruses. Virus scanning is performed with the Open Source Unix antivirus tool ClamAV. Spam (or—as Apple refers to it—junk mail) filtering is performed using the Open Source SpamAssassin.
Figure 1 Filter tab in the Mail Service settings pane
Configuring virus scanning is very easy to do. Simply select the Scan Email For Viruses checkbox and then use the pop-up menu to choose what action the server should take if a virus is detected. The message can be bounced (returned to the sender), deleted immediately, or quarantined to a special email account for further analysis. If you select Bounced or Deleted, you can also choose to have an email notification sent to an administrator account and/or the intended recipient. If you choose Quarantine, only the quarantine mailbox that you specify will receive notification and the infected email.
You can also choose to have ClamAV check for updates to its database on a regular basis using the appropriate checkbox. It should go without saying that you should enable this feature and have checks run more often than the once a day default (particularly if you have an active server). Apple suggests checking for updates at least twice per day, but some administrators will configure checks as many as 8 to 10 times each day for very active servers.
Junk mail filtering is a little more complex to configure because SpamAssassin uses a technique called Bayesian Filtering to learn what should be considered spam. Bayesian Filtering checks an email for the amount of times specific phrases are repeated within it and is assigned a junk mail score. The more phrases found that are identified as being commonly used in spam, the higher the score. This filtering technique becomes more effective over time because you can train the filters by identifying emails that are spam and those that are not.
To enable junk mail filtering from Server Admin, select the Scan Email For Junk Mail checkbox. After junk mail filtering is enabled, SpamAssassin will begin analyzing incoming emails and inserting an item into the email headers of each message that identifies the junk mail score of that message. Several email clients can make use of this header alone to place messages in a junk mail folder on receipt (most client-side junk mail filtering uses a similar technique to Span Assassin as well).
You can also specify the minimum junk mail score using a slider. This is the threshold at which your server will take additional action beyond identifying a score for each messages. Messages with the score you select or higher will have the actions you specify below applied to them. You can elect to have messages identified as junk mail to be bounced back to the sender (not the best approach because it identifies that the email address is valid), deleted, delivered to the intended recipient, or redirected to an administrator-defined email account. If you choose to bounce or delete messages, you can also specify and administrator email to be notified of each bounced or deleted message. Keep in mind that finding the appropriate mail score for your server and users might take time and adjustment.
If you choose to allow messages to be delivered, you can have text automatically added to the subject line, which identifies the message as potential junk mail and/or you can have the message be placed as an attachment instead of being delivered as-is. Both approaches have value. Inserting text into the subject immediately tells users to use caution when opening the message and can be combined with client-side rules to place the message in a junk folder or process it in some other way. Placing the original message inside an attachment prevents it from being opened when recipients check their email. If they feel that the message is likely to be valid, based on the sender and subject, they can then open the attached message. If not, they are prevented from loading information from a suspicious website if the message contains HTML code.
Training junk mail filters can be a tricky and time-consuming business. Although there are multiple techniques, I’ll cover the simplest, which is also one that enables you to include your users in the process (which can ensure better results). Create two email accounts (mail-enabled user accounts that do not allow logins) with the short names junkmail and notjunkmail. Enable junk mail filtering with junk mail messages being delivered to recipients. Have your users forward all spam messages that are not classified as junk mail correctly to the email@example.com address and any legitimate messages that were incorrectly identified as spam to the firstname.lastname@example.org address. Each day, SpamAssassin’s filters analyze these mailboxes at 1:00 am, and the results will be incorporated into future filtering. Also remember to empty the mail stored in these accounts on a daily basis.
Often, messages containing alternate languages or character sets are mistakenly assigned as junk mail. However, you can filter junk mail based on language and character set. To specify the allowed languages, click the edit (pen) button next to Accepted Languages and choose the languages to allow. To filter by character set, click the Edit button next to Locales and choose the appropriate character sets.