Sun Java System Messaging Server 6.3 管理指南

20.8 关于消息存储配额

随着电子邮件和语音邮件的发展,IMAP 邮箱可以变得很大。消息存储配额限制(或配额)表示一个用户或域可以保留的磁盘空间大小或邮件数,它针对特定的文件夹或者特定的邮件类型。配额用于限制或减少消息存储的使用。本节包含有关以下内容的信息:

有关详细信息,请参见20.11.4 监视配额限制

20.8.1 配额概述

可以为特定的用户或域设置配额,也可以根据邮件数或字节数设置配额。还可以为特定文件夹和邮件类型设置配额。邮件类型配额允许您为邮件类型指定限制。例如,语音邮件和电子邮件。文件夹配额设置用户文件夹的大小限制,以字节或邮件数为单位。例如,可以对 Trash 文件夹设置配额。Messaging Server 允许您为域和用户设置默认配额或自定义配额。

设置配额后,即可配置超过或接近配额时系统响应用户或域的方式。一种响应方式是向用户发送一个超过配额通知。超过配额时的另一种响应方式是停止向消息存储传送邮件。这叫做强制配额,通常发生在指定的宽限期之后。宽限期是邮箱在强制发生前可以超出配额的时间。如果由于超过配额而停止传送邮件,则外来邮件将保留在 MTA 队列中,直到出现以下情况之一:

用户删除或擦除邮件,或者服务器根据已建立的过期策略删除邮件时,磁盘空间将变为可用(请参见20.9 设置自动删除邮件(过期和清除)功能)。

20.8.1.1 电话学应用程序服务器的异常

为支持统一的邮件服务要求,Messaging Server 提供了覆盖由消息存储强加的配额限制的能力。这可以保证已被特定代理(即电话学应用程序服务器 [TAS])接受的邮件的传送。TAS 接受的邮件可以通过特殊的 MTA 通道传送,该通道可以确保邮件被传送到存储而不受配额的限制。这种用法的适用范围很小,但可以用于电话学应用程序。有关配置 TAS 通道的详细信息,请联系 Sun 邮件服务代表。

按邮件类型配额对于使用统一邮件服务的电话学应用程序非常有用。例如,如果在用户的邮箱中存储了一个混合邮件(如文本和语音邮件),那么管理员可以对不同类型的邮件设置不同的配额。用户的电子邮件可以有一个配额,语音邮件可以有一个不同的配额。

20.8.2 配额操作原理

将配额属性添加到 LDAP 用户和域条目可以指定自定义的用户和域配额。配额默认值、通知策略、强制配额和宽限期是在 configutil 参数中或通过使用 imquotacheck 实用程序指定的。

要确定用户是否超出配额,Messaging Server 将首先检查以确定是否已为单个用户设置配额。如果未设置配额,Messaging Server 将检查为所有用户设置的默认配额。对于用户,配额是指所有用户文件夹中的所有累积字节或邮件数。对于域,配额是指特定域中所有用户的所有累积字节或邮件数。对于邮件类型,配额是指该邮件类型的所有累积字节或邮件数。对于文件夹,配额是指用户文件夹的所有累积字节或邮件数。

您可以为用户邮箱树指定以下配额值:

为一个用户分配多个配额值时适用以下原则:

对配额属性和 configutil 参数做出的更改将自动生效,但不是立即生效,因为信息存储在缓存中,更改完全生效前需要花一点时间。Messaging Server 提供一个立即更新更改的命令,即《Sun Java System Messaging Server 6.3 Administration Reference》中的“iminitquota”

imquotacheck 实用程序允许您根据分配的配额检查消息存储的使用情况。

20.8.3 消息存储配额属性和参数

本节列出主要的消息存储配额属性和 configutil 参数。目的在于提供功能接口的概述。有关这些属性和参数的详细信息,请参阅相应的参考文档。

下表列出了配额属性。请参阅《Sun Java Communications Suite 5 Schema Reference》

表 20–6 消息存储配额属性

属性 

说明 

mailQuota

允许的用户邮箱磁盘空间的字节数。 

mailMsgQuota

允许用户拥有的最大邮件数。这是存储中所有文件夹的累积计数。 

mailUserStatus

邮件用户的状态。可能的值有 activeinactivedeletedholdoverquota

mailDomainDiskQuota

域中所有邮箱可以使用的磁盘空间字节数。 

mailDomainMsgQuota

域中所允许的最大邮件数(即针对存储中所有邮箱的总计数)。 

mailDomainStatus

邮件域的状态。值和默认值与 mailUserStatus 相同。

下表列出了配额参数。有关最新和最详细的信息,请参阅《Sun Java System Messaging Server 6.3 Administration Reference》中的第 3  章 “Messaging Server Configuration”

表 20–7 消息存储 configutil 参数

参数 

说明 

store.quotaenforcement

在关闭状态下启用强制配额,系统将仍更新配额数据库,但始终传送邮件。 

默认值:On 

store.quotanotification

启用配额通知。默认值:OFF 

store.defaultmailboxquota

存储默认配额(按字节数)。默认值:-1(无限制) 

store.defaultmessagequota

存储默认配额(按邮件数)。数字值。默认值:-1(无限制) 

store.quotaexceededmsg

配额警告邮件。如果没有,则不发送通知。默认值:无。 

store.quotaexceededmsginterval

发送超过配额通知的时间间隔(以天为单位)。默认值:7 

store.quotagraceperiod

在将传送到邮箱的邮件退回给发件人之前,邮箱保持超过配额状态的时间(以小时为单位,小时数)。默认值:120 

store.quotawarn

配额警告阈值。在向客户端发送超过配额警告之前,超出配额的百分比。默认值:90 

local.store.quotaoverdraft

用于提供与从 Netscape Messaging Server 迁移的系统的兼容性。当设置为 ON 时,允许传送一个使磁盘使用量超过配额的邮件。用户超过配额后,邮件将被延迟或退回,并发送配额警告邮件,同时配额宽限期计时器将启动。(默认值为当消息存储达到阈值时发送配额警告邮件。)默认值:Off,但是如果设置了 store.overquotastatus,则将其视为 on,否则用户将始终不会超过配额,从而始终不会使用 overquotastatus

local.store.overquotastatus

邮件在 MTA 中被排队之前启用强制配额。这可以防止 MTA 队列填满。如果设置此参数,并且用户尚未超过配额,但外来邮件促使用户超过配额,那么邮件将被传送,但 mailuserstatusLDAP 属性被设置为 overquota,因此 MTA 将不再接受任何邮件。默认值:off 

消息存储配额还包括几个实用程序。《Sun Java System Messaging Server 6.3 Administration Reference》中的“iminitquota” 初始化配额设置。换句话说,配额属性和 configutil 参数在运行该命令后将自动生效。不运行该命令更改也可以生效,但不是立即生效,因为信息存储在缓存中,更改生效前需要花费一定的时间。

imquotacheck 实用程序允许您根据分配的配额检查消息存储的使用情况。

20.8.4 配置消息存储配额

本节介绍了以下任务:

20.8.4.1 指定默认用户配额

没有在 LDAP 条目中设置个人配额的用户将应用默认配额。该过程分为两个步骤:1) 指定用户默认配额 2) 指定哪些用户受默认配额限制。以下示例显示了如何设置默认用户配额。有关详细的参数信息,请参阅《Sun Java System Messaging Server 6.3 Administration Reference》中的第 3  章 “Messaging Server Configuration”

要以邮件大小(以字节为单位)的形式指定默认的用户磁盘配额,请运行以下命令:

configutil -o store.defaultmailboxquota -v [ -1 | number ]

其中 -1 表示无配额(无限制邮件使用量);number 表示字节数。

要以邮件总数的形式指定默认的用户配额,请运行以下命令:

configutil -o store.defaultmessagequota -v [ -1 | number ]

其中 -1 表示无配额(无限制邮件);number 表示邮件数。

要为特定用户指定默认配额:

在使用默认消息存储配额的用户条目中将 mailQuota 属性设置为 -2。请注意,如果没有指定 mailQuota,将使用系统默认的配额。

20.8.4.2 指定单个用户配额

每个用户均可以有单独的配额。要设置特定于用户的配额,请在用户 LDAP 条目中设置《Sun Java Communications Suite 5 Schema Reference》中的“mailQuota”或者《Sun Java Communications Suite 5 Schema Reference》中的“mailMsgQuota”属性(有关完整的详细信息,请参见《Sun Java System Messaging Server 6.3 Administration Reference》中的“configutil Parameters”)。下例显示了怎样设置用户配额。

要指定系统默认配额,不要向 LDAP 中添加 mailQuota 或将其设置为 –2

要将配额设置为 1,000 封邮件,请将 mailMsgQuota 设置为 1000

要将配额设置为 2 兆字节,请将 mailQuota 设置为 2M2000000

要将配额设置为 2 千兆字节,请将 mailQuota 设置为 2G20000000002000M

要指定 2 千兆字节的配额;20 兆字节的语音邮件配额;100 兆字节的 Archive 文件夹配额,请运行以下命令行:

mailQuota: 2G;#voice%20M;Archive%100M

2 千兆字节配额代表用户邮箱中所有没有明确分配配额的文件夹。在本例中,这不包括 Archive 文件夹中的邮件和语音类型的邮件。100 兆字节配额包括 Archive 文件夹所有子文件夹中的邮件。

20.8.4.3 指定域配额

您可以为域设置磁盘空间或邮件配额。这些配额是指特定域中所有用户的累积字节或邮件数。要设置域配额,请在所需的 LDAP 域条目中设置《Sun Java Communications Suite 5 Schema Reference》中的“mailDomainDiskQuota”或者《Sun Java Communications Suite 5 Schema Reference》中的“mailDomainMsgQuota” 属性。

要将配额设置为 1,000 封邮件,请将 mailDomainMsgQuota 设置为 1000

要将配额设置为 2 兆字节,请将 mailDomainDiskQuota 设置为 2M2000000

要将配额设置为 2 千兆字节,请将 mailDomainDiskQuota 设置为 2G20000000002000M

Procedure设置配额通知

配额通知是指当用户接近配额时向其发送警告邮件的过程。使用此功能需要执行以下三个步骤:

  1. 启用配额通知

    运行以下命令行:

    configutil -o store.quotanotification -v [ yes | no ]

    如果未设置邮件,则不会向用户发送任何配额警告邮件。

  2. 定义配额警告邮件

    警告邮件是指当用户快要超过磁盘配额时将向其发送的邮件。要通过命令行定义配额警告邮件,请运行以下命令:

    configutil -o store.quotaexceededmsg -v ’message

    邮件必须是 RFC 822 格式。必须包含一个标题(至少具有一个主题行),接着是 $$,然后是邮件正文。"$" 表示一个新的行。可能需要在 $ 前面添加一个 \,使 $ 不再具有特殊含义(取决于所使用的 shell)。($ 通常是 shell 的转义符。)示例:

    configutil -o store.quotaexceededmsg -v ”Subject: WARNING: User quota exceeded$$User quota threshold exceeded - reduce space used.’

    此外,支持以下变量:

    [ID]—用户 ID

    [DISKUSAGE]—磁盘使用量

    [NUMMSG]—邮件数

    [PERCENT]store.quotawarn 百分比

    [QUOTA]mailquota 属性

    [MSGQUOTA]mailmsgquota 属性

    以下为使用这些变量的一个示例:

    configutil -o store.quotaexceededmsg -v ”Subject: Overquota Warning$$[ID],$$Your mailbox size has exceeded [PERCENT] of its alloted quota.$Disk Usage: [DISKUSAGE]$Number of Messages: [NUMMSG]$Mailquota: [QUOTA]$Message Quota: [MSGQUOTA]$$-Postmaster’

  3. 指定发送警告邮件的频率。

    设置以下参数:

    configutil -o store.quotaexceededmsginterval -v number

    其中 number 表示天数。例如,3 表示每 3 天发送一次邮件。

  4. 指定配额阈值

    配额阈值是指向客户端发出警告前超出配额的百分比。用户的磁盘使用量超出指定的阈值时,服务器将向用户发送警告邮件。


    注 –

    local.store.quotaoverdraft=on 时,电子邮件通知不会被触发,直至用户的磁盘使用量超过配额的 100%,与使用 store.quotawarn 设置的阈值无关。


    对于其客户端支持 IMAP ALERT 机制的 IMAP 用户,邮件将在每次用户选择邮箱时显示在用户的屏幕上并且邮件还将被写入 IMAP 日志。

    要通过命令行指定配额阈值,请运行以下命令:

    configutil -o store.quotawarn -v number

    其中 number 表示允许的配额的百分比。

20.8.4.4 启用或禁用强制配额

默认情况下,用户或域可以超出其配额,除了收到超过配额通知(如果已设置)外没有任何影响。强制配额将锁定邮箱,使其不能再接收邮件,直到磁盘使用量降至低于配额级别。

启用或禁用强制配额:


configutil -o store.quotaenforcement -v [ on | off]

请注意,超过配额邮件保存到 MTA 队列中,并将向发件人发送通知,该通知说明未传送他们的邮件,但会在稍后尝试重新传送。传送重试将继续,直到宽限期过期并且所有邮件均被退回给发件人,或者磁盘使用量降至配额以下并且邮件可以从 MTA 中取消排队并传送到消息存储。如果要在邮件进入邮件队列之前将超过配额的邮件返回,请使用以下命令行:


configutil -o store.overquotastatus -v on

启用域级别的强制配额

要对特定域的配额进行强制,请使用以下命令:

imquotacheck -f -d domain

如果不使用 -d 选项,就可以为所有域启用强制配额。当域超出其配额时,maildomainstatus 属性将设置为 overquota它将停止所有到该域的传送。如果域不是 overquota,则值被设置为 active

禁用强制配额

如果出现用户配额正被强制执行的情况,那么即使您已禁用了它们,也请检查以下参数:

应该关闭或不设置这些 configutil 参数:

请注意,当 store.overquotastatuson 时,它始终将 store.quotaoverdraft 视为 on,否则用户将永远不会超过配额以触发拒绝。此外,当 store.quotaoverdrafton 时,仅允许用户接受一个比配额小的邮件。即它将永远不会接受比用户配额大的邮件。

对这些参数做出更改后,请确保重新启动邮件传送服务。

这些消息存储属性应处于活动状态:

请注意,如果邮件大于邮箱配额则它们将被退回,与强制配额配置无关。

20.8.4.5 设置宽限期

宽限期将指定邮件被退回发件人之前邮箱可以超出配额(磁盘空间或邮件数量)的时间。宽限期不是邮件将在邮件队列中保留的时间,而是退回所有外来邮件(包括邮件队列中的邮件)之前邮箱可以超出配额的时间。(有关更多详细信息,请参见20.1 概述。)宽限期从用户已达到配额阈值并被警告时开始。请参见设置配额通知

要通过命令行指定配额宽限期,请运行以下命令:

configutil -o store.quotagraceperiod -v number

其中 number 表示小时数。

20.8.4.6 Netscape Messaging Server 配额兼容性模式

在磁盘使用量超过 Netscape Messaging Server 中的配额后,服务器会延迟或退回邮件传送、发送超过配额通知并启动宽限期。Messaging Server 提供了一个参数 local.store.quotaoverdraft,可以保留此行为。

设置为 ON 时,将传送邮件直到磁盘使用量超过配额。那时,邮件将被延迟(邮件保留在 MTA 邮件队列中,不会被传送到消息存储),同时会向用户发送超过配额警告邮件,并且宽限期将启动。宽限期确定了邮箱超过配额多长时间后才会退回超过配额邮件。(默认值为当消息存储达到阈值时发送配额警告邮件。)此参数的默认值为 Off