To implement the automatic message removal policy defined in the previous section, you must set the imexpire rules. Rules are set by putting them into a store.expirerule file. An example of two global store.expirerule rules is shown below:
Rule1.regexp: 1 Rule1.folderpattern: user/.*/trash Rule1.messagedays: 2 Rule2:regexp: 1 Rule2.folderpattern: user/.* Rule2.messagedays: 14 |
In this example, Rule 1 specifies that all messages in the trash folder will be remove after two days. Rule 2 specifies that all messages in the message store will be removed after 14 days.
This section consists of the following subsections:
This section sets the guidelines for the store.expirerule file rules.
In earlier Messaging Server releases, expiration rules could be set with configutil parameters store.expirerule.attribute (see configutil Parameters in Sun Java System Messaging Server 6 2005Q4 Administration Reference.) This is still true, but expire rules using header constraints (example: expiring a message with a specific subject line) are not supported. In any case, it is best to use store.expirerule to specify all expiration rules.
Rules are specified in a file called store.expirerule.
Multiple expiration criteria can be specified with the same rule. (Example above.)
Rules can apply to the entire message store (global rules), a partition, a user, or a folder.
The global rules are stored in msg_svr_base/config/store.expirerule
Each global rule will be checked against every mailbox, which can cause some processing overhead depending on the number of global rules you specify. For this reason, you should not specify partition, mailbox or user rules in the global rules file. In general, you should try not to put any more expiration rules than necessary in this file.
Partition rules are stored in store_root/partition/partition_name/store.expirerule.
User rules are specified in store_root/partition/partition_name/userid/store.expirerule or by specifying the folderpattern rule to be user/userid/.*
Folder rules are specified in store_root/partition/partition_name/userid/folder/store.expirerule or by specifying the folderpattern rule to be user/userid/folder
Note that multiple non-global rules (user, folder, partition) using rule_name was only implemented in the Messaging Server 6.2p4 release and later.
Multiple expire rules can be applied to a mailbox at the same time. An expire policy for a mailbox consists of global rules and local rules. Local rules apply to the mailbox under the same directory and all of its sub-folders.
imexpire unifies all of the expiration rules applying to a mailbox, unless there is an exclusive rule specified for this mailbox (see Table 18–8). The resulting rule set represents the most restrictive expiration policy based on all applicable rules. For example, if rule X expires messages such that the maximum message life is 10 days, and rule Y specifies 5 days, the union will be 5 days.
Attribute |
Description (Attribute Value) |
---|---|
Specifies whether or not this is an exclusive rule. If specified as exclusive, only this rule applies to the specified mailbox(s) and all other rules are ignored. If more than one exclusive rule exists, the last exclusive rule loaded will be used. For example, if a global and a local exclusive rule are specified, the local rule will be used. If there is more than one global exclusive rule, the last global rule listed by configutil is used. (1/0) |
|
Specifies the folders affected by this rule. The format must start with a user/, which represents the directory store_root/partition/*/ See Figure 18–4 and Table 18–9. (POSIX regular expression) |
|
Maximum number of messages in a folder. Oldest messages are expunged as additional messages are delivered. (integer) |
|
Maximum size of folder before the oldest messages are expunged when additional messages are delivered. (integer in bytes) |
|
Age of message in days before being expunged. (integer) |
|
Maximum size of message in bytes before it is marked to be expunged. (integer) |
|
Grace period. Days an over-sized message should remain in a folder. (integer) |
|
message header field |
Specifies a header field and string that marks a message for removal. Values are not case-sensitive and regular expressions are not recognized.Example: Rule1.Subject: Get Rich Now! For the header Expires and Expiry-Date, imexpire will remove the message if the date value specified with these header fields is older than the messagedays attribute. If multiple expiration header fields are specified, the earliest expiration date will be used. (string). |
regexp |
Enable UNIX regular expressions in rules creation. (1 or 0). If not specified, IMAP expressions will be used. |
seen is a message status flag set by the system when the user opens a message. If the attribute seen is set to and, then the message must be seen and other criteria must be met before the rule is fulfilled. If the attribute seen is set to or, then the message only needs to be seen or another criteria be met before the rule is fulfilled. (and/or). |
|
deleted is a message status flag set by the system when the user deletes a message. If the attribute deleted is set to and, then the message must be deleted and another criteria must be met before the rule is fulfilled. If the attribute deleted is set to or, then the message only needs to be seen or another criteria be met before the rule is fulfilled. (and/or) |
Automatic message removal rules are set by specifying rules in a store.expirerule file. The store.expirerule file contains one expire criteria per line. An expire criteria of the global rule configuration file (msg_svr_base/data/store/store.expirerule) has the following format:
rule_name.attribute: value
An expiration rule for a user or mailbox rule configuration file has this format:
attribute: value
Example 18–1 shows a set of global expiration rules in msg_svr_base/config/store.expirerule.
Rule 1 sets the global expiration policy (that is, policy that applies to all messages), as follows:
Enable UNIX regular expressions in rules creation.
Removes messages larger than 100,000 bytes after 3 days.
Removes messages deleted by the user.
Removes any message with the strings “Vigara Now!” or “XXX Porn!” in the Subject: header.
Limits all folders to 1,000 messages. After 1,000 messages, the system removes the oldest messages on a folder to keep the total to 1,000.
Removes all messages older than 365 days.
Rule 2 sets the automatic message removal policy for users at the hosted domain siroe.com. It limits mailbox sizes to 1 megabyte, removes messages that have been deleted, and removes messages older than 14 days.
Rule 3 sets the automatic message removal policy for messages in the inbox folder of user f.dostoevski. It removes messages with a subject line having the expression “On-line Casino.”
Rule1.regexp: 1 Rule1.folderpattern: user/.* Rule1.messagesize: 100000 Rule1.messagesizedays: 3 Rule1.deleted: or Rule1.Subject: Vigara Now! Rule1.Subject: XXX Porn! Rule1.messagecount: 1000 Rule1.messagedays: 365 Rule2.regexp: 1 Rule2.folderpattern: user/.*@siroe.com/.*Rule2.exclusive: 1 Rule2.deleted: or Rule2.messagedays: 14 Rule2.messagecount: 1000 Rule3.folderpattern: user/f.dostoevski/inboxRule3.Subject: *On-line Casino* |
Folder patterns can be specified using POSIX regular expressions by setting the imexpire attribute regex to 1. If not specified, IMAP expressions will be used. The format must start with a user/ followed by a pattern. Table 18–9 shows the folder pattern for various folders.)
Table 18–9 imexpire Folder Patterns Using Regular Expressions
Folder Pattern |
Scope |
---|---|
user/userid/.* |
Apply rule to all messages in all folders of userid. |
user/userid/Sent |
Apply rule to messages of userid in folder Sent: |
user/.* |
Apply rule to entire message store. |
user/.*/trash |
Apply rule to the trash folder of all users. |
user/.*@siroe.com/.* |
Apply rule to folders in hosted domain siroe.com: |
user/[^@]*/.* |
Apply rule to folders in default domain. |
Note that while it is possible to set global expiration rules using the Console, using the using store.expirerule is the preferred method. If too many rules are created using the Console or configutil, performance problems can result.
Bring up the automatic message removal GUI as follows:
Main Console > Server Group > Messaging Server (Open) >Messaging Server Console > Configuration Tab > Message Store > Expire/Purge >Add
A very rough drawing of the GUI is shown on Figure 18–4.
Enter a name for the new rule.
Enter the folders from which messages will be automatically removed.
See Setting imexpire Folder Patterns above.
If this rule is the exclusive rule for folders matching the specified criteria, then check the Exclusive box.
If this box is checked, then this rule takes precedence over all other rules matching the specified pattern. See Table 18–8 for details on the exclusive checkbox.
To create a rule based on folder size, do the following:
Check the Folder Size constraint checkbox. In the Message count field, specify the maximum number of messages that will be retained in a folder before the oldest messages are removed. In the Folder size field, specify the maximum folder size, in bytes, before the oldest messages are removed.
To create a rule based on message age, check the Message age constraint checkbox:
In the Number of days field, specify the age, in days, of how long messages should remain in the folder.
To create a rule based on message size:
Check the Message size limit constraint checkbox. In the Message size limit field, enter the maximum size of a message allowed in the folder. In the “Grace period” field, enter the how long over-sized messages will remain in the folder before being removed.
To create a rule based on whether the Seen or Deleted message flags are set:
Check the Message flags constraint checkbox.
For the Seen: field, select “and” to specify that the message must be seen and another criteria must be met before the rule is fulfilled. Select “or” to specify that the message need only be seen or another criteria be met before the rule is fulfilled.
For the Deleted: field, select “and” to specify that the message must be deleted and another criteria must be met before the rule is fulfilled. Select “or” to specify that the message need only be deleted or another criteria be met before the rule is fulfilled.
To create a rule based on a header fields and their values:
Check the Header constraint checkbox.
Enter a comma separated list of headers and values in the following format:
header1: value1, header2: value2
Example: Subject: Work at Home!,From: virus@sesta.com
For the header Expires and Expiry-Date, the system will remove the message if their date value is older than the Message age constraint. If multiple expiration header fields are specified, the earliest expiration date will be used. (string).
Click OK to add the new rule to the Automatic Message Removal list.