Sun Java System Messaging Server 6 2005Q4 管理指南

第 18 章 管理邮件存储

本章介绍了邮件存储和邮件存储管理界面。本章包含以下各节:

概述

邮件存储包含特定 Messaging Server 实例的用户邮箱。邮件存储的大小随邮箱、文件夹和日志文件的数量的增加而增加。可以通过指定对邮箱大小(磁盘配额)的限制、指定对允许的邮件总数的限制以及为存储中的邮件设置生存期策略来控制存储的大小。

向系统添加更多用户时,磁盘存储要求会相应增加。根据服务器支持的用户的数量,邮件存储可能需要一个物理磁盘或多个物理磁盘。将此附加磁盘空间集成到系统中的方法有两种。最简单的方法是添加附加邮件存储分区(请参见配置邮件存储分区)。

同样,如果要支持多个托管域,您可能需要将一个服务器实例专用于一个大型域。通过此配置,您可以为特定域指定存储管理员。还可以通过添加更多分区扩展邮件存储。

为管理邮件存储,除了 Sun Java System Console 界面,Messaging Server 还提供了一系列命令行实用程序。表 18–1 介绍了这些命令行实用程序。有关使用这些实用程序的信息,请参见执行邮件存储维护过程《Sun Java System Messaging Server 6 2005Q4 Administration Reference》

表 18–1 邮件存储命令行实用程序

实用程序 

说明 

configutil

设置和修改存储的配置参数。 

deliver

将邮件直接传送至 IMAP 或 POP 邮件客户机可以访问的邮件存储。 

hashdir

标识包含用于特定用户的邮件存储的目录。 

imsconnutil

监视邮件存储的用户访问。 

imexpire

根据管理员指定的条件(如生存期)自动从邮件存储中删除邮件。 

iminitquota

从 LDAP 目录重新初始化配额限制并重新计算要使用的磁盘空间。 

imsasm

处理用户邮箱的保存和恢复。 

imsbackup

备份已存储邮件。 

imsexport

将 Messaging Server 邮箱导出到 UNIX /var/mail 格式文件夹中。

imsrestore

恢复已备份的邮件。 

imscripter

IMAP 服务器协议脚本撰写工具。执行一个命令或一序列命令。 

mboxutil

列出、创建、删除、重命名或移动邮箱;报告配额使用情况。 

mkbackupdir

创建备份目录并使其与邮件存储中的信息同步。 

MoveUser

将用户的帐户从一个邮件服务器移动到另一个邮件服务器。 

imquotacheck

计算邮件存储中每个用户的邮箱总大小,并与其指定的配额进行比较。imquotacheck 通知的本地化版本未正确转换 % 和 $ 符号。要更正编码,请将邮件文件中的每个 $ 替换为 \24,将每个 % 替换为 \25。

readership

收集共享 IMAP 文件夹中的读者身份信息。 

reconstruct

重建已被损坏或破坏的邮箱。 

stored

执行后台任务和每日任务,擦除和删除磁盘上存储的邮件。 

邮件存储目录布局

图 18–1 显示了服务器实例的邮件存储目录布局。邮件存储用于提供对邮箱内容的快速访问。表 18–2 中介绍了存储目录。

图 18–1 邮件存储目录布局

图形中显示了邮件存储目录布局。

邮件存储由许多邮箱数据库和用户邮箱组成。邮箱数据库由有关用户、邮箱、分区、配额的信息和其他与邮件存储相关的数据组成。用户邮箱包含用户的邮件和文件夹。邮箱存储在邮件存储分区,即专门用于存储邮件存储的磁盘分区上的一个区域。有关详细信息,请参见配置邮件存储分区。虽然为了易于维护,我们建议每个邮件存储分区使用一个磁盘分区,但是邮件存储分区与磁盘分区并不相同。

邮箱(例如 INBOX)位于 store_root 中。例如,样例目录路径可能如下所示:

store_root/partition/primary/=user/53/53/=mack1

下表介绍了邮件存储目录。

表 18–2 邮件存储目录说明

位置 

内容/说明 

msg_svr_base

默认值/opt/SUNWmsgsr

Messaging Server 计算机上用于保存服务器程序文件、配置文件、维护文件和信息文件的目录。 

store_root

msg_svr_base/data/store

邮件存储的顶层目录。包含 mboxlistuserpartition 子目录。

./store.expirerule

包含自动删除邮件规则(过期规则)。此可选文件可位于不同位置。请参见设置自动删除邮件(过期和清除)功能

store_root/dbdata/snapshots

邮件存储数据库备份快照。 

store_root/mboxlist/

包含邮箱数据库,即存储有关邮箱的信息和配额信息的数据库 (Berkeley DB)。 

folder.db 包含有关邮箱的信息,包括存储邮箱的分区的名称、ACL 和 store.idx 中某些信息的副本。在 folder.db 中每个邮箱具有一个条目。

quota.db 包含有关配额和配额使用情况的信息。在 quota.db 中每个用户具有一个条目。

lright.db—按 ACL 查找权限排列的文件夹的索引。

peruser.db 包含有关每个用户标志的信息。这些标志表示特定用户是否已阅读或已删除邮件。

subscr.db 包含有关用户订阅的信息。

store_root/session/

包含活动邮件存储进程的信息。 

store_root/user/

不使用。 

store_root/partition/

包含邮件存储分区。已创建默认 primary 分区。将您定义的所有其他分区放在此目录中。

store_root/partition/primary/=user/

包含分区的子目录中的所有用户邮箱。邮箱以散列结构存储,以便进行快速搜索。要查找包含特定用户邮箱的目录,请使用 hashdir 实用程序。

.../=user/hashdir/hashdir/userid/

ID 为 userid 的用户的顶层邮件文件夹。这是用户的 INBOX。对于默认域,useriduid。对于托管域,useriduid@domain。外来邮件被传送到此邮件文件夹。

.../userid/folder

邮件服务器上用户定义的邮箱。 

.../userid/store.idx

一个索引,提供有关 /userid/ 目录中存储的邮件的以下信息:邮件数量、此邮箱所用的磁盘配额、上次附加邮箱的时间、邮件标志、每封邮件的变量长度信息(包括标题和 MIME 结构)以及每封邮件的大小。该索引还包括每个用户的 mboxlist 信息的备份副本和每个用户的配额信息的备份副本。

.../userid/store.usr

包含已访问文件夹的用户的列表。对于每个列出的用户,此目录都包含有关用户上次访问文件夹的时间、用户已读邮件列表和用户已删除邮件列表的信息。 

.../userid/store.sub

包含有关用户订阅的信息。 

.../userid/store.exp

包含已擦除但未从磁盘删除的邮件文件的列表。仅在有被擦除的邮件时才显示此文件。 


.../userid/nn/.../userid/folder/nn/

nn 是一个包含格式为 message_id.msg 的邮件的散列目录;nn 可以是从 00 至 99 之间的数字。message_id 也是一个数字。示例:邮件 1 至 99 存储在 .../00 目录中。第一封邮件是 1.msg,第二封邮件是 2.msg,第三封邮件是 3.msg,依此类推。邮件 100 至 199 存储在 01 目录中;邮件 9990 至 9999 存储在 99 目录中;邮件 10000 至 10099 存储在 00 目录中,依此类推。

邮件存储如何删除邮件

从邮件存储中删除邮件分三个阶段:

  1. 删除。客户机可以将邮件标志设置为删除。此时邮件被标记为删除,但是通过去掉删除标志,客户机仍然可以恢复邮件。如果有第二个客户机,则已删除标志可能不会立即被该客户机识别。可以设置 configutil 参数 local.imap.immediateflagupdate 以使标志立即更新。

  2. 擦除。邮件将从邮箱中删除。从技术上讲,邮件将从邮件存储索引文件 store.idx 中删除。邮件本身仍然在磁盘上,但是一旦邮件被擦除,客户机将不能再恢复邮件。

    过期是擦除的一个特例。符合管理员定义的一组删除条件(例如邮件大小、生存期等)的邮件将被擦除。请参见设置自动删除邮件(过期和清除)功能

  3. 清除。默认情况下,imexpire 实用程序将在每天晚上 11 点从磁盘上清除所有已被擦除的邮件。可以使用 local.schedule.expirestore.cleanupage 配置此实用程序,其中 local.schedule.expire 用于控制邮件过期时间安排,而 store.cleanupage 用于控制清除操作的宽限期(在此宽限期之前不会清除邮件)。请注意,这与用于清除旧版本 MTA 日志文件的 imsimta purge 命令不同。

指定管理员对存储的访问权限

邮件存储管理员可以查看和监视用户邮箱,并指定邮件存储的访问控制。存储管理员具有对任何服务(POP、IMAP、HTTP 或 SMTP)的代理验证权限,这意味着他们可以使用任何用户的权限对任何服务进行验证。这些权限允许存储管理员运行特定的实用程序以管理存储。例如,存储管理员使用 MoveUser 可以将用户帐户和邮箱从一个系统移动到另一个系统。

本节介绍如何将存储权限授予邮件存储以进行 Messaging Server 安装。


注 –

其他用户可能也具有对存储的管理员权限。例如,某些管理员可能具有这些权限。


您可以执行以下小节中所述的管理员任务:

Procedure添加管理员条目

可以通过 Console 或命令行来添加管理员。

步骤
  1. 从 Console 中打开要配置的 Messaging Server。

  2. 单击“配置”选项卡,并在左窗格中选择“邮件存储”。

  3. 单击“管理员”选项卡。

    该选项卡包含现有管理员 ID 的列表。

  4. 单击“管理员 UID”窗口旁边的“添加”按钮。

  5. 在“管理员 UID”字段中,键入要添加的管理员的用户 ID。

    键入的用户 ID 必须是 Sun Java System Directory Server 所知晓的。

  6. 单击“确定”以将管理员 ID 添加到“管理员”选项卡中显示的列表。

  7. 单击“管理员”选项卡中的“保存”以保存新修改的“管理员”列表。

    命令行:要通过命令行添加管理员条目,请使用以下命令:

    configutil -o store.admins -v "adminlist"

    其中 adminlist 是以空格分隔的管理员 ID 的列表。如果指定多个管理员,必须将列表包含在引号中。此外,管理员必须是服务管理员组的成员(位于 LDAP 用户条目:memberOf: cn=Service Administrators,ou=Groups,o=usergroup)。

Procedure修改管理员条目

本节介绍如何在 Console 上修改邮件存储管理员 UID 列表中的已有条目。

步骤
  1. 单击“管理员”选项卡。

  2. 单击“管理员 UID”窗口旁边的“编辑”按钮。

  3. 将更改输入“管理员 UID”字段。

  4. 单击“确定”以提交更改并关闭“编辑管理员”窗口。

  5. 单击“管理员”选项卡中的“保存”以提交并保存已修改的“管理员”列表。

    命令行

    要通过命令行修改“邮件存储管理员 UID”列表中的现有条目,请运行以下命令:


    configutil -o store.admins -v "adminlist"

Procedure删除管理员条目

可以通过 Console 或命令行来删除管理员。

步骤
  1. 单击“管理员”选项卡。

  2. 在“管理员 UID”列表中选择一项。

  3. 单击“删除”以删除该项。

  4. 单击“保存”以提交并保存对“管理员”列表的更改。

    命令行。要通过命令行删除存储管理员,可以如下所示编辑管理员列表:


    configutil -o store.admins -v "adminlist"

防止邮箱由管理员之外的其他人员删除或重命名

您可能希望某些邮箱受到保护以免管理员之外的其他人员删除或修改。下面的过程介绍了如何实现此操作。如果除管理员之外的其他人员试图删除、修改或重命名受保护的邮箱,系统将显示邮箱已固定错误消息。

设置 local.store.pin configutil 变量。使用以下格式:


configutil -o local.store.pin -v "mailbox1"%"mailbox2"%"mailbox 3"

其中,mailbox1mailbox2mailbox 3 是要保护的邮箱(注意,邮箱名中可以使用空格),% 是邮箱间的分隔符。

关于共享文件夹

共享文件夹与任意其他邮件文件夹类似,不同之处在于,其他用户和组可以根据所具有的权限读取、删除组或共享文件夹中的邮件或向其中添加邮件。将邮件添加到共享文件夹时,可以通过普通的拖放操作、使用 Sieve 过滤器或直接使用以下形式发送邮件来实现:uid+folder@domain。例如:

carol.fanning+crafts_club@siroe.com

共享文件夹对于启动、共享和归档正在进行的有关特定主题的电子邮件对话非常有用。例如,一组软件开发者可以创建名为 mosaic_voices 的共享文件夹,用于讨论特定项目的开发。将邮件发送或拖至 mosaic_voices 文件夹时,任何有权访问该共享文件夹的用户(可以通过单个地址或组地址添加权限)都可以打开此邮箱并阅读邮件。

用户的共享文件夹存储在其名为 Shared Folders/Users 的邮件文件夹中。用户在该邮件文件夹中创建和访问共享文件夹。关于共享文件夹中介绍了一个示例。

图 18–2 Ed 的邮件客户机共享邮件文件夹列表的示例

图形中显示了客户机共享邮件文件夹列表的示例。

有两种共享文件夹:

通常,只有特定邮件存储中的用户才可以使用共享文件夹。但是,Messaging Server 允许您创建可以从多个邮件存储中访问的特殊共享文件夹。这些文件夹称为分布式共享文件夹。有关详细信息,请参见设置分布式共享文件夹

共享文件夹任务

本节介绍了共享文件夹的管理员任务:

Procedure创建公用文件夹

由于公用文件夹的创建需要访问 LDAP 数据库和使用 readership 命令,因此必须由系统管理员创建公用文件夹。

步骤
  1. 创建一个名为 public 的 LDAP 用户条目,用作所有公用文件夹的容器(请参见关于共享文件夹)。

    示例:


    dn: cn=public,ou=people,o=sesta.com,o=ISP
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: inetUser
    objectClass: ipUser
    objectClass: inetMailUser
    objectClass: inetLocalMailRecipient
    objectClass: nsManagedPerson
    objectClass: userPresenceProfile
    cn: public
    mail: public@sesta.com
    mailDeliveryOption: mailbox
    mailHost: manatee.siroe.com
    uid: public
    inetUserStatus: active
    mailUserStatus: active
    mailQuota: -1
    mailMsgQuota: 100
                      
  2. 使用 mboxutil 命令行实用程序在 public 帐户内创建文件夹。

    例如,创建一个名为 gardening 的公用文件夹:


    mboxutil -c user/public/gardening
  3. 指定用户及其对该共享文件夹的访问权限。

    使用 readership 命令指定用户及其访问权限。例如,以下命令将授予 sesta.com 上的每个用户对 gardening 公用文件夹的查找、读取和邮寄访问权限:

    readership -s user/public/gardening anyone@sesta.com lrp

    有关如何使用 readership 的详细说明,请参见设置或更改共享文件夹的访问控制权限

使用电子邮件组添加共享文件夹

共享文件夹通常可以通过使用 Communications Express 向共享文件夹列表中添加用户,或通过之前介绍的创建公用共享文件夹来创建。但是,有时用户可能希望向共享文件夹列表中添加电子邮件组(邮件分发列表),以使组中的每个用户均具有访问该共享文件夹的权限。例如,名为 tennis@sesta.com 的组具有 25 名成员,他们决定创建一个共享文件夹以存储所有发送到该组地址的电子邮件。

Procedure向共享文件夹中添加电子邮件组

需要具有系统管理员权限才可以向共享文件夹中添加电子邮件组。

步骤
  1. 创建一个文件夹。(如果已创建,则跳过该步骤。)

    通常由组中的某位成员完成此操作。如果该文件夹尚未创建,则可以使用以下命令为他们创建该文件夹:

    mboxutil -c user/gregk/gardening

    gregk 是共享文件夹拥有者的 uidgardening 是共享文件夹的名称。

  2. 向每个将拥有组共享文件夹访问权限的成员的用户条目中添加 aclGroupAddr group_name@domain 属性-值对。

    对于上述示例,向每个有权访问共享文件夹的用户条目中添加以下属性-值对:

    aclGroupAddr: tennis@sesta.com

    注意,如果使用组条目中的 memberURL 属性动态创建组,则组成员将已具有该属性。该属性的 URL 值与以下所示类似:


    memberURL: ldap:///o=sesta.com??sub?(&(aclGroupAddr=tennis@sesta.com)
    (objectclass=inetmailuser))

    (由于印刷原因,样例条目行已自动换行。实际条目应显示在一行中。)

  3. 指定组和对共享文件夹的访问权限。

    使用 readership 命令执行此操作。对于上述示例,以下命令将授予 tennis@sesta.com 的成员对公用文件夹 gardening 的查找、读取和邮寄访问权限:

    readership -s user/gregk/tennis tennis@sesta.com lrp

    有关如何使用 readership 的详细说明,请参见设置或更改共享文件夹的访问控制权限

设置或更改共享文件夹的访问控制权限

用户可以使用 Communications Express 界面设置或更改对共享文件夹的访问控制。管理员可以使用 readership 命令行实用程序设置或更改对共享文件夹的访问控制。命令的格式如下:

readership -s foldername identifier rights_chars

其中,foldername 是要为其设置权限的公用文件夹的名称,identifier 是要为其指定权限的个人或组,rights_chars 是要指定的权限。有关每个字符的含义,请参见表 18–3


注 –

anyone 是一个特殊的标识符。anyone 的访问权限适用于所有用户。类似地,anyone@domain 的访问权限适用于同一域中的所有用户。


表 18–3 ACL 权限字符

字符 

说明 

l

查找—用户可以查看和订阅共享文件夹。(允许的 IMAP 命令:LISTLSUB

r

读取—用户可以读取共享文件夹。(允许的 IMAP 命令:来自文件夹的 SELECTCHECKFETCHPARTIALSEARCHCOPY

s

已读—指示系统保存多个会话的已读信息。(设置 IMAP STORE SEEN 标志)

w

写入—用户在读取和删除邮件时可以进行标记。(设置 IMAP STORE 标志,而不是 SEENDELETED

i

插入–用户可以将电子邮件从一个文件夹复制和移动到另一个文件夹。(允许的 IMAP 命令:APPENDCOPY 到文件夹中)

p

邮寄—用户可以将邮件发送到共享文件夹电子邮件地址。(无需任何 IMAP 命令) 

c

创建—用户可以创建新的子文件夹。(允许的 IMAP 命令:CREATE

d

删除—用户可以从共享文件夹中删除条目。(允许的 IMAP 命令:EXPUNGE、设置 STORE DELETED 标志)

a

管理员—用户具有管理权限。(允许的 IMAP 命令:SETACL

示例

例如,如果您希望 sesta 域中的每个用户对公用文件夹 golftournament 都具有查找、读取和标记电子邮件(但不能邮寄)的访问权限,请发出以下命令:

readership -s User/public/golftournament anyone@sesta lwr

要为邮件存储上的每个用户指定相同的访问权限,请发出以下命令:

readership -s User/public/golftournament anyone lwr

要指定对某个组的查找、读取、标记电子邮件和邮寄电子邮件的权限,请发出以下命令:

readership -s User/public/golftournament group=golf@sesta.com lwrp

如果要将此文件夹的管理员权限和邮寄权限指定给单个用户 jdoe,请发出以下命令:

readership -s User/public/golftournament jdoe@sesta.com lwrpa

要拒绝单个用户或组对公用文件夹的访问,请为 userid 加上前缀短划线。例如,要拒绝对 jsmith 的查找、读取和写入权限,请发出以下命令:

readership -s User/public/golftournament -jsmith@sesta.com lwr

要拒绝个人或组的访问权限,请为 ACL 权限字符加上前缀短划线。例如,要拒绝对 jsmith 的邮寄权限,请发出以下命令:

readership -s User/public/golftournament jsmith@sesta.com -p


注 –

使用 uid+folder@domain 地址向共享文件夹邮寄邮件需要在具备 p(邮寄)访问权限的前提下使用 readership 命令。请参见设置或更改共享文件夹的访问控制权限


启用或禁用共享文件夹列表

响应 LIST 命令时,根据配置选项 local.store.sharedfolders 中的设置,服务器将返回或不返回共享文件夹。将选项设置为 off 将禁用该选项。默认情况下,该设置处于启用状态(设置为 on)。

SELECTLSUB 命令不受此选项的影响。LSUB 命令将返回每个已订阅的文件夹,包括共享文件夹。用户可以选择 (SELECT) 其拥有或订阅的共享文件夹。

设置分布式共享文件夹

通常,只有特定邮件存储中的用户才可以使用共享文件夹。但是,Messaging Server 允许您创建可以从多个邮件存储中访问的分布式共享文件夹。即,可以将对分布式共享文件夹的访问权限授予邮件存储组内的所有用户。但是,请注意 Web 邮件客户机(HTTP 访问客户机,如 Messenger Express)不支持远程共享文件夹访问。用户可以列出和订阅文件夹,但不能查看或更改内容。

设置分布式共享文件夹要满足以下要求:

必须通过设置表 18–4 中列出的配置变量,将远程邮件存储(即不保留共享文件夹的邮件存储)配置为代理服务器。

表 18–4 用于配置分布式共享文件夹的变量

名称 

值 

数据格式 

local.service.proxy.serverlist

邮件存储服务器列表 

以空格分隔的字符串 

local.service.proxy.admin

默认存储管理登录名 

字符串 

local.service.proxy.adminpass

默认存储管理密码 

字符串 

local.service.proxy.admin.hostname

特定主机的存储管理登录名 

字符串 

local.service.proxy.adminpass.hostname

特定主机的存储管理密码 

字符串 

设置分布式共享文件夹—示例

图 18–3 显示了三个名为 StoreServer1、StoreServer2 和 StoreServer3 的邮件存储服务器的分布式文件夹示例。

图 18–3 分布式共享文件夹—示例

图形中显示了分布式共享文件夹的示例。

通过设置表 18–4 中所示的变量,这些服务器被相互连接成对等的代理邮件存储。每个服务器均有一个专用共享文件夹—golf(Han 拥有)、tennis(Kat 拥有)和 hurling(Luke 拥有)。此外,还有两个分别名为 press_releasesAnnouncements 的公用共享文件夹。三个服务器中任何一个上的用户均可以访问这三个共享文件夹中的任何一个。图 18–2 显示了 Ed 的共享文件夹列表。下面是此配置中每个服务器的 ACL 的示例。


$ StoreServer1 :> readership -l
Ed: user/Han/golf 
Ian: user/Han/golf 
anyone: user/public/press_releases

            

$ StoreServer2 :> readership -l
Jan: user/Kat/tennis
Ann: user/Kat/tennis
anyone: user/public+Announcements user/public+press_releases

            

$ StoreServer3 :> readership -l
Tuck: user/Ian/hurling
Ed: user/Ian/hurling 
Jac: user/Ian/hurling 
anyone: user/public/Announcements

            

监视和维护共享文件夹数据

readership 命令行实用程序允许您监视和维护保留在 folder.dbperuser.dblright.db 文件中的共享文件夹数据。folder.db 包含每个保留 ACL 副本的文件夹的记录。peruser.db 包含每个用户和邮箱的条目,其中列出了各种标志设置和用户上一次访问文件夹的日期。lright.db 包含所有用户及其具有查找权限的共享文件夹的列表。

readership 命令行实用程序使用以下选项:

表 18–5 readership 选项

选项 

说明 

-d days

对于每个共享文件夹,返回在指定天数内选择了该文件夹的用户的数量报告。 

-p months

peruser.db 删除未在指定月份内选择其共享文件夹的用户的数据。

-l

列出 lright.db 中的数据。

-s folder_identifier_rights

为指定文件夹设置访问权限。这将更新 lright.dbfolder.db

通过使用各种选项,您可以执行以下功能:

监视共享文件夹的使用情况

要查出有多少用户正在访问共享文件夹,请发出以下命令:

readership -d days

其中 days 是要检查的天数。请注意,此选项将返回活动用户的数量,而不是活动用户的列表。

示例:要查出在上一个 30 天内选择了共享文件夹的用户的数量,请发出以下命令:

readership -d 30

列出用户及其共享文件夹

要列出用户和他们对其具有访问权限的共享文件夹,请发出以下命令:

readership -l

输出示例:

$ readership -l
group=lee-staff@siroe.com: user/user2/lee-staff
richb: user/golf user/user10/Drafts user/user2/lee-staff user/user10/Trash
han1: user/public+hurling@siroe.com user/golf
gregk: user/public+hurling@siroe.com user/heaving user/tennis

删除不活动的用户

如果要删除不活动的用户(在指定的时间段内没有访问共享文件夹的用户),请发出以下命令:

readership -p months

其中 months 是要检查的月数。

示例:删除在过去六个月中没有访问共享文件夹的用户:

readership -p 6

设置访问权限

您可以将访问权限指定给新的公用文件夹,或者更改当前公用文件夹的访问权限。

有关如何使用此命令设置访问权限的示例,请参见设置或更改共享文件夹的访问控制权限

关于邮件存储配额

邮件存储配额是一种用于设置用户或域可以使用多少磁盘空间或邮件的限制或配额的方式。本节包含有关以下内容的信息:

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

用户配额

可以通过磁盘空间或邮件数量来指定用户配额。磁盘空间配额用于指定每个用户的磁盘空间容量(以字节为单位)。磁盘配额应用于所有用户邮件的总大小(不管用户拥有多少邮件文件夹)或者用户邮件的总数量。邮件配额使您可以限制用户邮箱中存储的邮件的数量。

配额信息存储在用户 LDAP 属性(表 18–6)和 configutil 变量(表 18–7)中。(有关最新的完整信息,请参见 《Sun Java System Communications Services 6 2005Q4 Schema Reference》。)除了设置配额本身,Messaging Server 还允许您控制以下功能:

域配额

与用户类似,也可以按字节数或邮件数为域设置配额。此配额是指特定域中所有用户的所有累积字节或邮件数。

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

为支持统一的邮件服务要求,Messaging Server 提供了覆盖由邮件存储强加的配额限制的能力。这可以保证已被特定代理(即电话学应用程序服务器 [TAS])接受的邮件的传送。TAS 接受的邮件可以通过特殊的 MTA 通道传送,该通道可以确保邮件被传送到存储而不受配额的限制。有关配置 TAS 通道的更多信息,请参见第 12 章,配置通道定义

邮件存储配额属性和参数

本节包含邮件存储配额属性和参数。有关这些属性和参数的详细信息,请参阅 《Sun Java System Communications Services 6 2005Q4 Schema Reference》

表 18–6 邮件存储配额属性

属性 

说明 

mailQuota

允许的用户邮箱磁盘空间的字节数。特殊值: 

0—不允许为用户邮箱分配空间。 

–1—在空间使用上没有限制。 

-2 - 使用系统默认配额。(configutil 参数 store.defaultmailboxquota

mailMsgQuota

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

0—不允许用户邮箱存有邮件。 

-1—在允许的邮件数上没有限制。 

-2 - 使用系统默认配额。(configutil 参数 store.defaultmessage.quota。)

mailUserStatus

邮件用户的状态。可以是下列值之一: 

active—正常处理邮件。默认值是 active。

inactive—用户的邮件帐户已无效。返回瞬态错误。

deleted—帐户被标记为删除并准备清除。返回永久性错误。阻塞对邮箱的访问。

hold—邮件被发送到保留队列,并且不允许访问邮箱

overquota—在此状态下,MTA 不会将邮件传送到邮箱。这是在 configutil 参数 store.overquotastatus 打开时所设置的状态。

mailDomainDiskQuota

域中所有邮箱可以使用的磁盘空间字节数。值 -1 表示在空间使用上没有限制(默认值)。要对域磁盘进行强制配额,请运行以下命令:imquotacheck -f -d domain

mailDomainMsgQuota

域中所允许的最大邮件数(即针对存储中所有邮箱的总计数)。值 -1 表示没有限制(默认值)。要对域邮件进行强制配额,请运行以下命令:imquotacheck -f -d domain

mailDomainStatus

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

表 18–7 邮件存储 configutil 参数

参数 

说明 

store.quotaenforcement

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

store.quotanotification

启用配额通知。默认值:打开 

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 

配置邮件存储配额

本节介绍了以下任务:

Procedure指定默认用户配额

可以使用 Console 或命令行为没有设置个人配额的用户设置默认配额。

步骤
  1. 单击“配置”选项卡,并在左窗格中选择“邮件存储”。

  2. 单击“配额”选项卡。

  3. 要为“默认的用户磁盘空间配额”字段指定默认用户磁盘配额,请选择以下选项之一:

    无限制。如果不需要设置默认磁盘配额,请选择此选项。

    指定大小。如果要将默认用户磁盘配额限制为特定大小,请选择此选项。在按钮旁边的字段中键入数字,并从下拉式列表中选择 "KB" 或 "MB"。

  4. 要指定邮件数量配额,请在“默认的用户邮件存储空间配额”框中键入数字。

  5. 单击“保存”。

  6. 在使用默认邮件存储配额的用户条目中将 MB 属性设置为 -1

    命令行

    要通过命令行指定默认用户配额,请执行以下操作:

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

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

    其中 -1 表示无配额;number 表示字节数。

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

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

    其中 -1 表示无配额;number 表示邮件数。

    在使用默认邮件存储配额的用户条目中将 mailQuota 属性设置为 -2。请参见表 18–6

指定单个用户配额

每个用户均可以有单独的配额。要设置特定于用户的配额,请在用户的 LDAP 条目中设置 mailQuotamailmsgquota 属性。(请参见表 18–6。)要进行强制配额,请将 configutil store.quotaenforcement 设置为 on

指定域配额

您可以为特定域设置磁盘空间配额或邮件配额。这些配额是指特定域中所有用户的累积字节或邮件数。要设置域配额,请在用户的 LDAP 条目中设置 mailDomainDiskQuotamailDomainMsgQuota 属性(请参见表 18–6)并运行 imquotacheck -f

部署配额通知

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

Procedure启用配额通知

可以通过 Console 或命令行启用配额通知。

步骤
  1. 单击“配额”选项卡。

  2. 选取“启用存储空间配额通知功能”框。要禁用配额通知,则取消选取此框。

  3. 定义配额警告邮件。请参见定义配额警告邮件

  4. 单击“保存”。

    命令行

    要通过命令行启用或禁用配额通知,请运行以下命令:

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

    如果未设置邮件,则不会向用户发送任何配额警告邮件。有关配额警告邮件格式的示例,请参见下一节。

Procedure定义配额警告邮件

定义将发送给要超出其磁盘配额的用户的邮件,如下所示。邮件被发送到用户的邮箱。

步骤
  1. 单击“配额”选项卡。

  2. 从下拉式列表中选择要使用的语言。

  3. 在下拉式列表下面的邮件文本字段中键入要发送的邮件。

  4. 单击“保存”。

    命令行

    要通过命令行定义配额警告邮件,请运行以下命令:

    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’

    要定义发送警告邮件的频率,请运行以下命令:

    configutil -o store.quotaexceededmsginterval -v number

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

Procedure指定配额阈值

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


注 –

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


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

步骤
  1. 单击“配额”选项卡。

  2. 在“空间配额警告阈值”字段中输入警告阈值的数值。

    此数值表示允许的配额的百分比。例如,如果指定 90%,则将在使用了 90% 的允许的磁盘配额后警告用户。默认为 90%,要关闭此功能,请输入 100%。

  3. 单击“保存”。

    命令行

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

    configutil -o store.quotawarn -v number

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

启用或禁用强制配额

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

Procedure启用强制配额

可以通过 Console 或命令行启用强制配额。

步骤
  1. 单击“配额”选项卡。

  2. 选取“启用存储空间配额实施功能”框。要禁用强制配额,则取消选取此框。

  3. 单击“保存”。

    命令行

    启用或禁用强制配额:


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

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


    configutil -o store.overquotastatus -v on

启用域级别的强制配额

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

imquotacheck -f -ddomain

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

禁用强制配额

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

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

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

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

这些邮件存储属性应处于活动状态:

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

设置宽限期

宽限期将指定邮件被退回发件人之前邮箱可以超出配额(磁盘空间或邮件数量)的时间。邮件被 MTA 接受,但保留在 MTA 队列中而不被传送到邮件存储,直到发生以下情况之一:

例如,如果您的宽限期设置为两天,而您超出了配额一天,则将继续接收新邮件并将其保留在邮件队列中,并继续进行传送尝试。第二天后,邮件将被退回给发件人。


注 –

宽限期不是邮件将在邮件队列中保留的时间,而是退回所有外来邮件(包括邮件队列中的邮件)之前邮箱可以超出配额的时间。如果用户已达到配额阈值(请参见指定配额阈值)并被警告,则开始进入宽限期。


Procedure设置邮件保留在队列中的宽限期

步骤
  1. 单击“配额”选项卡。

  2. 在“超过空间配额宽限期”字段中输入一个数字。

  3. 从下拉式列表中,指定“”或“小时”。

  4. 单击“保存”。

    命令行

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

    configutil -o store.quotagraceperiod -v number

    其中 number 表示小时数。

Netscape Messaging Server 配额兼容性模式

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

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

设置自动删除邮件(过期和清除)功能

自动删除邮件功能(也称为过期和清除)根据管理员定义的一组条件自动从邮件存储中删除邮件。此功能可用于自动删除旧的和过大的邮件、已读/已删除邮件、带有特定主题行的邮件等等。此功能允许使用以下删除条件:

此功能由 imexpire 实用程序执行,它将擦除和清除邮件。有关邮件删除过程的详细信息,请参见邮件存储如何删除邮件


注 –

服务器将不发出警告便删除邮件,因此通知用户有关自动删除邮件的策略很重要。意外的邮件删除会给用户和管理员带来恐慌。


imexpire 操作原理

可以从命令行调用 imexpire,或通过 imsched 守护进程安排其自动运行的时间。管理员在名为 store.expirerule 的文件中指定一组过期规则。该文件用来指定删除邮件的标准。可以有多个文件,其中属于同一规则范畴的文件将存储在同一目录中。即,普遍适用于整个邮件存储的规则、适用于某个分区的规则、适用于用户的规则等等将分别存放在不同的目录中。


注 –

虽然可以使用 Console 或 configutil 命令指定全局过期规则,但是使用 store.expirerule 是首选方法。如果使用 Console 或 configutil 创建的规则太多,可能会产生性能问题。


imexpire 在启动时装入所有过期规则。默认情况下,imexpire 为每个分区创建一个线程。每个线程都将在其指定的分区下查看用户文件夹列表,同时装入本地过期规则文件。过期功能将按照适用于该文件夹的过期规则检查每个文件夹,并根据需要擦除邮件。如果在邮箱目录下存在 store.exp 文件,并且邮件由于超出了 store.cleanupage 配置参数指定的时间而被擦除/过期,清除功能将在邮件散列目录下永久删除邮件文件,并从 store.exp 文件中永久删除 UID 记录。

也可以通过在 msg_svr_base/config/ 中名为 expire_exclude_list 的文件中添加指定用户的用户 ID(每行一个),从过期规则中排除这些用户。

部署自动删除邮件功能

自动删除邮件需要三个步骤:

  1. 定义自动删除邮件策略:哪些邮件将被自动删除?哪些用户、文件夹、域和分区将使邮件自动被删除?哪些大小、邮件生存期、标题将定义删除条件。定义要删除邮件的范围。请参见定义自动删除邮件策略

  2. 指定 imexpire 规则以实现此策略。请参见设置实现自动删除邮件策略的规则

  3. 指定 imexpire 时间安排。请参见安排自动删除邮件和日志记录级别

定义自动删除邮件策略

通过指定删除条件定义自动删除邮件策略。imexpire 允许使用以下条件进行删除:

邮件的生存期。自动删除存在的时间超过 X 天的邮件。属性:messagedays

邮件计数。自动删除文件夹中超出 X 封邮件的邮件。属性:messagecount

超大邮件的生存期。自动删除在 Y 天宽限期后超过 X 字节的邮件。属性:messagesizemessagesizedays

已读已删除邮件标志。自动删除带有已读已删除标志设置的邮件。可以将这些条件设置为 "and""or"。如果设置为 or,则邮件的已读/删除标志将导致自动删除而不管其他条件。如果设置为 and,则邮件的已读/删除标志必须设置为与指定的所有其他条件一起使用。属性:seendeleted

邮件的标题字段。允许您将标题和字符串指定为删除邮件的条件。例如,删除所有标题为 "Subject: Work from Home!" 的邮件

邮件的文件夹。允许您指定要从其中删除邮件的文件夹。属性:folderpattern


注 –

imexpire 不允许根据邮件被读取后已存在的时间删除或保留邮件。例如,不能指定删除已经有 200 天未被读取的邮件。


自动删除邮件策略的示例

示例 1:删除超过 1,000 封邮件的文件夹中所有存在时间达到 365 天的邮件。

示例 2:删除域 siroe.com 中 180 天以上的邮件。

示例 3:删除所有已标记为已删除的邮件。

示例 4:删除 sesta.com 中已标记为已读、30 天以上、大于 100 千字节、位于超过 1,000 封邮件的文件夹中、带有标题 X-spam 的邮件。

设置实现自动删除邮件策略的规则

要实现上一节中定义的自动删除邮件策略,必须设置 imexpire 规则。可以通过将规则放入 store.expirerule 文件来设置规则。以下所示为两个全局 store.expirerule 规则的示例:


Rule1.regexp: 1
Rule1.folderpattern: user/.*/trash
Rule1.messagedays: 2
Rule2:regexp: 1
Rule2.folderpattern: user/.*
Rule2.messagedays: 14

            

在此示例中,规则 1 指定垃圾文件夹中的所有邮件将在两天后被删除。规则 2 指定邮件存储中的所有邮件将在 14 天后被删除。

本节包含以下几个部分:

过期规则原则

本节介绍设置 store.expirerule 文件规则的原则。


注 –

在早期的 Messaging Server 发行版中,可以使用 configutil 参数 store.expirerule.attribute 来设置过期规则(请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“configutil Parameters”)。现在仍然可以使用,但不支持使用标题约束的过期规则(例如:使用特定主题行作为邮件过期规则)。无论如何,使用 store.expirerule 指定所有过期规则是最佳选择。


表 18–8 imexpire 属性

属性 

说明(属性值) 

exclusive

指定规则是否为专用规则。如果指定为 exclusive,则只有此规则应用于指定的邮箱,而所有其他规则都将被忽略。如果存在多个专用规则,则将使用最后装入的专用规则。例如,如果指定了全局专用规则和本地专用规则,则将使用本地规则。如果有多个全局专用规则,则使用 configutil 列出的最后一个全局规则。(1/0)

folderpattern

指定此规则影响的文件夹。格式必须以 user/ 开始,表示目录 store_root/partition/*/。请参见图 18–4表 18–9。(POSIX 正则表达式)

messagecount

文件夹中邮件的最大数量。传送附加的邮件时,最早的邮件将被擦除。(整数) 

foldersize

传送附加的邮件时,擦除最早的邮件之前文件夹的最大大小。(以字节为单位的整数) 

messagedays

邮件被擦除前的生存期(以天为单位)。(整数) 

messagesize

在标记为将被擦除前,邮件的最大大小(以字节为单位)。(整数) 

messagesizedays

宽限期。超大邮件可以保留在文件夹中的天数。(整数) 

邮件标题字段

指定标题字段和标记要删除的邮件的字符串。值不区分大小写,正则表达式不会被识别。示例:Rule1.Subject: Get Rich Now!

对于标题过期过期日期,如果在这些标题字段中指定的日期值早于 messagedays 属性,则 imexpire 将删除邮件。如果指定了多个过期标题字段,将采用最早的过期日期。(字符串)。

regexp

在创建规则时启用 UNIX 正则表达式。(1 或 0)。如果未指定,则将使用 IMAP 表达式。 

seen

seen 是用户打开邮件时,系统设置的邮件状态标志。如果属性 seen 设置为 and,则邮件必须已被阅读并且在规则实施前必须满足其他条件。 如果属性 seen 设置为 or,则邮件仅需已被阅读或在规则实施前满足另一个条件。(and/or)。

deleted

deleted 是用户删除邮件时,系统设置的邮件状态标志。如果属性 deleted 设置为 and,则邮件必须被删除并且在规则实施前必须满足另一个条件。如果属性 deleted 设置为 or,则邮件仅需已被阅读在规则实施前满足另一个条件。(and/or)

通过文本方式设置 imexpire 规则

通过在 store.expirerule 文件中指定规则来设置自动删除邮件规则。store.expirerule 文件中每行包含一个过期条件。全局规则配置文件 (msg_svr_base/data/store/store.expirerule) 的过期条件的格式如下:

rule_name.attribute : value

用户或邮箱规则配置文件的过期规则的格式如下:

attribute: value

示例 18–1 显示了 msg_svr_base/config/store.expirerule 中的一组全局过期规则。

规则 1 设置全局过期策略(即应用于所有邮件的策略),如下所示:

规则 2 为托管域 siroe.com 中的用户设置自动删除邮件策略。它将邮箱大小限制为 1 兆字节,删除已删除的邮件,并删除 14 天前的邮件。

规则 3 为用户 f.dostoevskiinbox 文件夹中的邮件设置自动删除邮件策略。它将删除主题行带有表达式 "On-line Casino" 的邮件。


示例 18–1 imexpire 规则示例


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*
                  

设置 imexpire 文件夹模式

通过将 imexpire 属性 regex 设置为 1,可以使用 POSIX 正则表达式指定文件夹模式。如果未指定,则将使用 IMAP 表达式。格式必须以 user/ 开头,后跟一种模式。表 18–9 显示了各种文件夹的文件夹模式。)

表 18–9 使用正则表达式的 imexpire 文件夹模式

文件夹模式 

范围 

user/userid/.*

将规则应用于 userid 的所有文件夹中的所有邮件。

user/userid/Sent

将规则应用于 userid 在文件夹 Sent 中的邮件:

user/.*

将规则应用到整个邮件存储。 

user/.*/trash

将规则应用于所有用户的 trash 文件夹。

user/.*@siroe.com/.*

将规则应用到托管域 siroe.com 中的文件夹: 

user/[^@]*/.*

将规则应用到默认域中的文件夹。 

Procedure使用 Console 设置全局自动删除邮件规则

请注意,虽然可以使用 Console 设置全局过期规则,但是使用 store.expirerule 是首选方法。如果使用 Console 或 configutil 创建的规则太多,可能会产生性能问题。

步骤
  1. 如下所示调出自动删除邮件 GUI:

    “主控制台”>“服务器组”> "Messaging Server"(打开)>“Messaging Server 控制台”>“配置”选项卡 >“邮件存储”>“过期/清除”>“添加”

    图 18–4 显示了 GUI 的草图。

    图 18–4 自动删除邮件(过期/清除)GUI—草图

    图形中显示了自动删除邮件 GUI 所对应的图。

  2. 输入新规则的名称。

  3. 输入将从其中自动删除邮件的文件夹。

    请参见上述设置 imexpire 文件夹模式

  4. 如果此规则是与指定条件相匹配的文件夹的专用规则,则请选取“专用”框。

    如果已选取此框,则此规则将优先于与指定模式相匹配的所有其他规则。有关专用复选框的详细信息,请参见表 18–8

  5. 要创建基于文件夹大小的规则,请执行以下操作:

    • 选取“文件夹大小约束”复选框。在“邮件计数”字段中,指定在最早的邮件被删除之前文件夹中将保留的邮件的最大数目。在“文件夹大小”字段中,指定最早的邮件被删除之前最大的文件夹大小(以字节为单位)。

  6. 要创建基于邮件生存期的规则,请选取“邮件生存期约束”复选框:

    在“天数”字段中,指定邮件可以在文件夹中保存的时间(以天为单位)。

  7. 要创建基于邮件大小的规则,请执行以下操作:

    • 选取“邮件大小限制约束”复选框。在“邮件大小限制”字段中,输入文件夹中允许的邮件的最大大小。在“宽限期”字段中,输入超大邮件被删除前在文件夹中保存的时间。

  8. 要创建基于是否已设置“已读”或“已删除”标志的规则,请执行以下操作:

    • 选取“邮件标志约束”复选框。

    • 对于“已读:” 字段,选择“和”将指定邮件必须已被阅读并且在规则实施前必须满足另一个条件。选择“或”将指定邮件仅需已被阅读在规则实施前满足另一个条件。

    • 对于“已删除:” 字段,选择“和”将指定邮件必须被删除并且在规则实施前必须满足另一个条件。选择“或”将指定邮件仅需被删除在规则实施前满足另一个条件。

  9. 要创建基于标题字段及其值的规则,请执行以下操作:

    • 选取“标题约束”复选框。

    • 用以下格式输入以逗号分隔的标题和值的列表:

      header1: value1, header2 : value2

      示例:Subject: Work at Home!,From: virus@sesta.com

      对于标题过期过期日期,如果其日期值早于“邮件生存期约束”,则系统将删除该邮件。如果指定了多个过期标题字段,将采用最早的过期日期。(字符串)。

  10. 单击“确定”以将新规则添加到“自动删除邮件”列表中。

安排自动删除邮件和日志记录级别

通过 imsched 时间安排守护进程来激活自动删除邮件。默认情况下,imsched 将在每天 23:00 点调用 imexpire,邮件将被擦除并被清除。可以通过设置表 18–10 中介绍的 configutil 参数 local.schedule.expirelocal.schedule.purgestore.cleanupage 自定义此时间安排。

对于大型邮件存储,可能会花费很长时间才能完成过期和清除,因此您可能需要通过试验决定运行这些进程的频率。例如,如果过期/清除周期花费 10 小时,您可能不希望默认时间安排为每天运行过期和清除一次。使用 local.schedule.purge 安排过期和清除,可以为清除指定单独的时间安排。如果未设置 local.schedule.purge,则 imexpire 将在过期后执行清除。

表 18–10 过期和清除 configutil 日志和时间安排参数

参数 

说明 

local.schedule.expire

运行 imexpire 的时间间隔。使用 UNIX crontab 格式:minute hour day-of-month month-of-year day-of-week

这些值以空格或 Tab 分隔符分隔,可以分别为 0-59、0-23、1-31、1-12 或 0-6(其中 0 = 星期天)。每个时间字段都可以为以下内容之一:一个星号(表示所有合法值)、一个以逗号分隔的值的列表或一个以连字符分隔的两个值表示的范围。请注意,可以同时用几号和星期几指定时间,但是通常不同时使用这两者,因为这种情况很少发生。如果同时指定了这两者,则需要同时满足两者。例如,设置月份的第 17 日和星期二将要求同时满足两个值。 

时间间隔示例:

1) 在 12:30am、8:30am 和 4:30pm 运行 imexpire30 0,8,16 * * * /opt/SUNWmsgsr/lib/imexpire

2) 在工作日早晨 3:15am 运行 imexpire15 3 * * 1-5 /opt/SUNWmsgsr/lib/imexpire

3) 仅在星期一运行 imexpire0 0 * * 1 /opt/SUNWmsgsr/lib/imexpire

默认值:0 23 * * * /opt/SUNWmsgsr/lib/imexpire

local.schedule.purge

运行 purge 的时间间隔。使用 UNIX crontab 格式:minute hour day-of-month month-of-year day-of-week.

默认值:0 0,4,8,12,16,20 * * * /opt/SUNWmsgsr/lib/purge -num=5(每四小时。) 

store.cleanupage

purge 将永久删除邮件前已过期或已擦除的邮件的生存期(以小时为单位)。

默认值:无 

local.store.expire.loglevel

指定日志级别: 

1 = 记录整个过期会话的摘要。 

2 = 为每个过期的邮箱记录一条消息。 

3 = 为每个过期的邮件记录一条消息。 

默认值:1 

使用 Console 进行 imexpire 时间安排

如下所示调出自动删除邮件 GUI:

“主控制台”>“服务器组”> "Messaging Server"(打开)>“Messaging Server 控制台”>“配置”选项卡 >“邮件存储”>“过期/清除”

此 Console 页面在顶部列出过期规则,在底部列出过期和清除时间安排。要安排过期和清除的日程,请使用“过期/清理时间安排”中的下拉式菜单为过期和清除设置月份、月份日期、星期日期(其中 0 = 星期天)、小时和分钟。


注 –

可以按几号和星期几设置日期值。如果同时设置了两者,则需同时满足两者的条件。如果设置星期的第 3 天(星期三)和月份的第 17 天,则将仅在每月的第 17 天恰好为星期三时进行清除/过期。


设置 imexpire 日志记录级别

imexpire 将在完成时记录默认日志文件的摘要。如果从命令行调用过期命令,则 -v(详细)和 -d(调试)选项可以用于指示 imexpire 日志记录 stderr 的详细状态/调试消息。如果通过 imsched 调用 imexpire,则 configutil 参数 local.store.expire.loglevel 可以设置为 1、2 或 3 以进行不同级别的日志记录。Loglevel 1 是默认值,将记录整个过期会话的摘要。Loglevel 2 将对每个过期邮箱记录一条消息。Loglevel 3 将对每个过期邮件记录一条消息。

从自动删除邮件中排除指定的用户

通过在 msg_svr_base/config/ 中名为 expire_exclude_list 的文件中添加指定用户的用户 ID(每行一个),以从过期规则中排除这些用户。

配置邮件存储分区

邮箱存储在邮件存储分区,即专门用于存储邮件存储的磁盘分区的区域。虽然为了易于维护,我们建议每个邮件存储分区使用一个磁盘分区和一个文件系统,但是邮件存储分区与磁盘分区并不相同。邮件存储分区是专门指定为邮件存储的目录。

默认情况下,用户邮箱存储在 store_root/partition/ 目录中(请参见邮件存储目录布局)。partition 目录是可能包含一个或多个分区的逻辑目录。在启动时,partition 目录包含一个名为 primary 分区的子分区。

您可以根据需要向 partition 目录添加分区。例如,您可能希望对单个磁盘进行分区以组织您的用户,如下所示:


store_root/partition/mkting/store_root/partition/eng/store_root/partition/sales/

随着磁盘存储需求的增加,您可能需要将这些分区映射到不同的物理磁盘驱动器。

您应该限制任意一个磁盘上的邮箱数量。在多个磁盘之间分发邮箱将会改善邮件传送时间(尽管不必更改 SMTP 接收速率)。在每个磁盘分配的邮箱数量取决于磁盘容量和分配给每个用户的磁盘空间容量。例如,如果为每个用户分配较少的磁盘空间,则可以为每个磁盘分配更多的邮箱。

如果邮件存储需要多个磁盘,则可以使用 RAID(Redundant Array of Inexpensive Disks,廉价磁盘冗余阵列)技术简化对多个磁盘的管理。使用 RAID 技术,您可以在一系列磁盘之间传播数据,而磁盘表现为一个逻辑卷从而简化了磁盘管理。您可能还希望将 RAID 技术用于冗余,即复制用于故障恢复的存储。


注 –

要改善磁盘访问,邮件存储和邮件队列应位于单独的磁盘上。


添加分区

添加分区时,您将指定分区在磁盘中存储的绝对物理路径和逻辑名称,该名称是分区的昵称。

分区昵称允许您将用户映射到逻辑分区名称,而不管物理路径。设置用户帐户和指定用户的邮件存储时,可以使用分区昵称。输入的名称必须是字母数字名称并且必须使用小写字母。

要创建和管理分区,用于运行服务器的用户 ID 必须具有对物理路径中指定的位置的写入权限。


注 –

添加分区后,必须停止然后重新启动服务器以刷新配置信息。


Console

要通过使用 Console 向存储中添加分区,请执行以下操作:

Procedure添加邮件存储分区

步骤
  1. 从 Console 中打开要配置的 Messaging Server。

  2. 单击“配置”选项卡,并在左窗格中选择“邮件存储”。

  3. 在右窗格中单击“分区”选项卡。

  4. 单击“添加”按钮。

  5. 输入分区昵称。

    这是指定分区的逻辑名称。

  6. 输入分区路径。

    这是指定分区的绝对路径名称。

  7. 要将此分区指定为默认邮件存储分区,请单击标有“使之成为默认分区”的选择框。


    注 –

    默认分区是在已创建用户并且未在用户条目中指定 mailMessageStore LDAP 属性时所使用的分区。应在所有用户条目中指定 mailMessageStore LDAP 属性,从而不需要默认分区。


  8. 单击“确定”以提交此分区配置条目并关闭窗口。

  9. 单击“保存”以提交并保存当前“分区”列表。

    命令行

    要通过命令行向存储添加分区,请运行以下命令:

    configutil -o store.partition.nickname.path -v path

    其中 nickname 是分区的逻辑名称,而 path 表示分区存储位置的绝对路径名称。

    要指定默认主分区的路径,请运行以下命令:


    configutil -o store.partition.primary.path -v path
    

将邮箱移动到其它磁盘分区

默认情况下,将在 primary 分区中创建邮箱。如果分区已满,则不能存储附加的邮件。有几种方法可以解决此问题:

如果有可能,我们建议使用卷管理软件向系统添加附加磁盘空间,因为此过程对于用户是最透明的。也可以将邮箱移到其他分区。

Procedure将邮箱移动到其它磁盘分区

步骤
  1. 确保在迁移进程期间用户与其各自的邮箱断开了连接。可以通过通知用户在邮箱移动期间注销或脱机来完成此操作,或者通过设置 mailAllowedServiceAccess 属性以便在注销后不允许使用 POP、IMAP 和 HTTP 服务。(请参见《Sun Java System Communications Services 6 2005Q4 Schema Reference》中的“mailAllowedServiceAccess”。)


    注 –

    mailAllowedServiceAccess 设置为不允许 POP、IMAP、HTTP 访问不会断开与邮箱的任何开放连接。移动邮箱前必须确保关闭所有连接。


  2. 使用以下命令移动用户邮箱:

    mboxutil -r user/<userid>/INBOX user/< userid>/INBOX < partition_name>

    示例:

    mboxutil -r user/ofanning/INBOX user/ofanning/INBOX secondary

  3. 在已移动用户的 LDAP 条目中将 mailMessageStore 属性设置为新分区的名称。

    示例:mailMessageStore: secondary

  4. 通知用户现在允许邮件存储连接。如果可用,则更改 mailAllowedServiceAccess 属性以允许 POP、IMAP 和 HTTP 服务。

更改默认邮件存储分区定义

默认分区是在已创建用户并且未在用户条目中指定 mailMessageStore LDAP 属性时所使用的分区。应在所有用户条目中指定 mailMessageStore LDAP 属性(该属性指定用户的邮件存储分区),从而不需要默认分区。此外,应由于负载平衡或任何其他原因而更改默认分区。在仍存在依赖于默认分区定义的用户时更改默认分区是无效且危险的。

如果确实需要更改默认分区,请确保在使用 configutil 参数 store.defaultpartition 更改默认分区的定义之前,旧默认分区(左后方的)上的所有用户已将他们的 mailMessageStore 属性设置为他们当前的分区(不再是默认分区)。

执行邮件存储维护过程

本节提供有关用于执行邮件存储的维护和恢复任务的实用程序的信息。您应该始终阅读服务器可能发送的用于警告和警报的邮寄主管邮件。您还应监视日志文件以获取有关服务器如何执行操作的信息。有关日志文件的更多信息,请参见第 21 章,管理日志记录

本节包含以下内容:

给邮件存储添加更多的物理磁盘

Messaging Server 邮件存储包含特定 Messaging Server 实例的用户邮箱。邮件存储的大小随邮箱、文件夹和日志文件的数量的增加而增加。

向系统添加更多用户时,磁盘存储要求会相应增加。根据服务器支持的用户的数量,邮件存储可能需要一个物理磁盘或多个物理磁盘。Messaging Server 使您可以根据需要添加更多存储。添加更多存储的一种方法是使用存储设备。有关如何在 Messaging Server 中配置 Network Appliance 存储设备的信息,请参见《》

管理邮箱

本节介绍了以下用于管理和监视邮箱的实用程序:mboxutilhashdirreadership

mboxutil 实用程序

使用 mboxutil 命令执行典型的邮箱维护任务。mboxutil 任务包括以下内容:


注 –

注意,不应在执行中中止 mboxutil 进程。如果使用 SIGKILL (kill -9) 中止了该进程,则可能潜在地需要每个服务器重新启动并完成恢复。


表 18–11 列出了 mboxutil 命令。有关详细的语法和使用要求,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》

表 18–11 mboxutil 选项

选项 

说明 

-a

已作废。用于列出所有用户的配额信息。使用。imquotacheck

-c mailbox

创建指定邮箱。可以与 -f 一起使用。 

在创建第二个邮箱前必须已存在一个邮箱。 

-d mailbox

删除指定邮箱。 

要从邮件存储中删除用户,请使用 -d mailbox 的以下值:

user/userid/INBOX

例如,要从邮件存储中删除用户 john,则使用 -d user/john/INBOX。要删除用户 john 的邮箱中的 mm 文件夹,使用 -d user/john/mm

建议的删除用户的方法是在 LDAP 目录中将用户状态标记为已删除(通过使用 Delegated Administrator 实用程序的 commadmin user delete 命令或 Delegated Administrator 控制台)。下一步,使用 commadmin user purge 命令将被标记为已删除超过指定天数的用户清除。

如果使用的是上一段中介绍的 Delegated Administrator 实用程序,则无需使用 mboxutil -d 命令来删除邮箱。

-e

用于清除邮件存储中所有已删除的邮件。此选项还可与 -p pattern 选项一起使用,以擦除名称与 pattern 匹配的所有已删除的邮箱。

-f file

用于指定存储邮箱名称的文件。-f 选项可以与 -c、-d-r 选项一起使用。

文件包含一个在其上执行了 mboxutil 命令的邮箱的列表。以下是数据文件中条目的示例:

user/daphne/INBOXuser/daphne/projxuser/daphne/mm

-k mailbox cmd

已作废。在文件夹级别中锁定指定邮箱;运行指定命令;命令完成后,取消锁定邮箱。 

-l

在服务器上列出所有邮箱。 

如果要为不同的语言环境创建多字节文件夹,您应编辑:msg_svr_base/sbin/bundles/encbylang.properties,以便将相应的字符集与 LANG 环境变量相关联。

-o

检查孤立帐户。此选项将在当前邮件服务器主机中搜索在 LDAP 中没有相应条目的收件箱。例如,-o 选项将查找已从 LDAP 删除或已移动到另一个服务器主机的拥有者的收件箱。对于找到的每个孤立帐户,mboxutil 将把以下命令写入标准输出:

mboxutil-d user/userid/INBOX

除非已指定 -w

-p MUTF7_IMAP_pattern

与 -l 选项一起使用时,仅列出名称与 MUTF7_IMAP_pattern 匹配的那些邮箱。

还可以与 -d-e 选项一起使用,以删除或擦除名称与 MUTF7_IMAP_pattern 匹配的邮箱。

您可以使用 IMAP 通配符。此选项需要的是格式为 IMAP M-UTF-7 的模式。不建议您使用此方法来搜索非 ascii 邮箱。要搜索非 ascii 邮箱,请使用 -P 选项。 

-P regexp

仅列出那些名称与指定的 POSIX 正则表达式匹配的邮箱。此选项需要本地语言的 regexp

-q domain

已作废。使用 imquotacheck -d domain

-r oldname newname[partition]

将邮箱从 oldname 重命名为 newname。要将文件夹从一个分区移动到另一个分区,请使用 partition 选项指定新分区。可以与 -f 标志一起使用以使用文件。

此选项可用于重命名用户。例如,mboxutil -r user/user1/INBOX user/user2/INBOX 可以将所有邮件和邮箱从 user1 移到 user2,并在新的 INBOX 中显示新邮件。(如果 user2 已经存在,则此操作将会失败。)

-R mailbox

用于恢复已删除但尚未被清除的邮件。 

在邮箱被擦除或过期时,已删除邮件的 uid 将存储在 store.exp 文件中。cleanup 页面已通过之后,imexpire 将物理删除这些邮件。错误地发布了擦除或过期消息时,此选项可用于将已删除但尚未被 imexpire 清除的邮件恢复至原始邮箱。

-s

在与 -l 选项一起使用时,仅显示邮箱名称。将不显示其他任何数据。

-t num

列出在指定天数未被访问的邮箱 (num)。-t 选项必须与 -o 选项(它用于标识孤立邮箱)一起使用。

从而使 -t 选项可以同时标识非活动邮箱(基于最近一次访问的日期)和孤立邮箱(在 LDAP 目录中没有相应用户条目的邮箱)。

要标识(列出)孤立邮箱和非活动邮箱,使用 mboxutil -o -w file -t num

要将这些孤立邮箱和非活动邮箱标记为已删除,使用 mboxutil -d -f file,其中 file 与前面的 -w file 所使用的是同一个文件。

要使用此功能,config 变量 local.enablelastaccess 已被启用的天数必须至少为 -t 选项所指定的天数。

-u user

已作废。用于列出用户信息。使用 imquotacheck -u user

-w file

-o 选项一起使用。将由 -o 选项(标识孤立帐户)生成的邮箱名称写入文件。

-x

-l 选项一起使用时,将显示邮箱的路径和访问控制。


注 –

POSIX 正则表达式可用于 mboxutil 命令中。


邮箱命名约定

必须用以下格式指定邮箱名称:user/userid/mailbox,其中 userid 是拥有邮箱的用户,mailbox 是邮箱的名称。对于托管域,useriduid@domain

例如,以下命令将为用户 ID 为 crowe 的用户创建名为 INBOX 的邮箱。INBOX 是用于将邮件传送给用户 crowe 的默认邮箱。

mboxutil -c user/crowe/INBOX

重要提示:名称 INBOX 是为每个用户保留的默认邮箱。INBOX 是唯一不区分大小写的文件夹名称。所有其他文件夹名称都区分大小写。

示例

要列出所有用户的所有邮箱,请运行以下命令:

mboxutil -l

要列出所有邮箱并且包含路径和 ACL 信息,请运行以下命令:

mboxutil -l -x

要为用户 daphne 创建名为 INBOX 的默认邮箱,运行以下命令:

mboxutil -c user/daphne/INBOX

要为用户 delilah 删除名为 projx 的邮件文件夹,运行以下命令:

mboxutil -d user/delilah/projx

要为用户 druscilla 删除名为 INBOX 的默认邮箱及所有邮件文件夹,运行以下命令:

mboxutil -d user/druscilla/INBOX

要将用户 desdemona 的邮件文件夹 memos 重命名为 memos-april,运行以下命令:

mboxutil -r user/desdemona/memos user/desdemona/memos-april

要将用户 dimitria 的邮件帐户移动到新分区,运行以下命令:

mboxutil -r user/dimitria/INBOX user/dimitria/INBOX partition

其中 partition 用于指定新分区的名称。

要将用户 dimitria 的名为 personal 的邮件文件夹移动到新分区,运行以下命令:

mboxutil -r user/dimitria/personal user/dimitria/personal partition

删除孤立帐户

要搜索孤立帐户(孤立帐户是在 LDAP 中没有相应条目的邮箱),使用以下命令:


mboxutil -o

命令输出如下所示:

  mboxutil: Start checking for orphaned mailboxes
  user/annie/INBOX
  user/oliver/INBOX
  mboxutil: Found 2 orphaned mailbox(es)
  mboxutil: Done checking for orphaned mailboxes

使用以下命令创建列出可转换为脚本文件的孤立邮箱的文件,用于删除孤立邮箱(示例文件名为 orphans.cmd):


mboxutil -o -w orphans.cmd

命令输出如下所示:

  mboxutil: Start checking for orphaned mailboxes
  mboxutil: Found 2 orphaned mailbox(es)
  mboxutil: Done checking for orphaned mailboxes

使用以下命令删除孤立文件:


mboxutil -d -f orphans.cmd

hashdir 实用程序

邮件存储中的邮箱以散列结构存储以便进行快速搜索。因此,要查找包含特定用户的邮箱的目录,请使用 hashdir 实用程序。

此实用程序可以识别包含特定帐户的邮件存储的目录。此实用程序将报告邮件存储的相对路径,例如 d1/a7/。该路径相对于基于用户 ID 的级别之前的目录级别。实用程序会将路径信息发送到标准输出。

例如,要查找用户 crowe 的邮箱的相对路径,请运行以下命令:

hashdir crowe

readership 实用程序

readership 实用程序将报告有多少用户(而不是邮箱拥有者)已经阅读了共享 IMAP 文件夹中的邮件。

IMAP 文件夹的拥有者可以授予其他用户阅读文件夹中的邮件的权限。允许其他用户访问的文件夹称为共享文件夹。管理员可以使用 readership 实用程序查看有多少用户(而不是拥有者)正在访问共享文件夹。

此实用程序将扫描所有邮箱并为每个共享文件夹生成一行输出,报告阅读者的数量,接着是一个空格和邮箱的名称。

每个阅读者都是在过去的指定天数内选择了共享文件夹的独特验证身份。用户阅读自己的个人邮箱时系统不进行计数。系统不报告个人邮箱,除非至少有一个文件夹拥有者以外的阅读者。

例如,以下命令行将在过去 15 天内选择了共享 IMAP 文件夹的任何身份都作为阅读者进行计数:

readership -d 15

监视配额限制

通过使用 imqutoacheck 监视配额使用情况和限制,此实用程序生成列出已定义的配额和限制的报告,并提供有关配额使用情况的信息。以千字节为单位报告配额和使用情况数字。此实用程序也可以将邮箱大小与用户分配的配额进行比较。此外,您可以选择通过电子邮件向已超出的配额量达到所设置的百分比的用户发送通知。


注 –

imquotacheck 中某些功能已更改。(在 Messaging Server 6.x 中,imquotacheck 实用程序已取代了 quotacheck 实用程序。)在 Messaging Server 5.x 中,当您使用 quotacheck 实用程序检索用户列表时,quotacheck 搜索本地 mboxlist 数据库。此功能重复 mboxutil 实用程序中的搜索功能。

在 Messaging Server 6.x 中,此重复功能已从 imquotacheck 实用程序中删除。如果您使用 imquotacheck 执行用户搜索,将针对 LDAP 目录执行搜索,而不是针对本地 mboxlist 数据库。要从本地 mboxlist 数据库检索用户列表,使用 mboxutil 实用程序。


要列出配额超出规则文件中的最小阈值的所有用户的使用情况,请运行以下命令:

imquotacheck

列出域 siroe.com 的配额信息:

imquotacheck -d siroe.com

要依据默认规则文件向所有用户发送通知,请运行以下命令:

imquotacheck -n

要根据指定的 rulefilemyrulefile 和邮件模板文件 mytemplate.file 向所有用户发送通知,请运行以下命令(有关更多信息,请参阅 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“imquotacheck”):

imquotacheck -n -r myrulefile -t mytemplate.file

要列出所有用户的使用情况(将忽略规则文件),请运行以下命令:

imquotacheck -i

要列出用户 user1 的每个文件夹的使用情况(将忽略规则文件),请运行以下命令:

imquotacheck -u user1 -e

监视磁盘空间

您可以指定系统监视磁盘空间和分区使用情况的频率,以及系统应在什么情况下发送警告。有关详细信息,请参见监视磁盘空间

使用 stored 实用程序

stored 实用程序将为服务器执行以下监视和维护任务:

stored 实用程序将在每天的 11 PM 自动执行一次清除和过期操作。您可以选择运行其他清除和过期操作。

表 18–12 列出了一些 stored 选项。表后还提供了一些通用使用示例。有关详细的语法和使用要求,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》

表 18–12 stored 选项

选项 

说明 

-d

已作废。使用 start-msg store 启动将作为守护进程运行的 stored,执行系统检查并激活警报、死锁检测和数据库修复。

-t

检查 stored 的状态。此命令的返回代码将表明状态。

-v

详细输出。 

-v -v

更多详细输出。 

要打印状态,请输入:

stored -t -v

如果要更改自动清除和过期操作的时间,请使用 configutil 实用程序,如下所示:

configutil -o store.expirestart -v 21

有时,您可能需要重新启动 stored 实用程序;例如邮箱列表数据库被破坏时。要在 UNIX 中重新启动 stored,请在命令行中使用以下命令:

msg_svr_base/sbin/stop-msg store
msg_svr_base/sbin/start-msg store

如果任一服务器守护进程崩溃,则必须停止所有守护进程并重新启动所有守护进程,包括 stored

由于重复存储相同的邮件而减少邮件存储大小

将某邮件发送给多个收件人时,该邮件将被置于每个收件人的邮箱中。某些邮件服务系统将同一邮件的副本分别存储在每个收件人的邮箱中。相反地,Sun Java System Messaging Server 力求保留一个邮件副本,而不考虑该邮件所在的邮箱数。通过在包含该邮件的邮箱中创建指向该邮件的硬链接即可实现此目的。

在将其他邮件服务系统迁移到 Sun Java Messaging Server 时,可能会在迁移过程中将这些多个邮件副本复制到 Sun Java Messaging Server 中。邮件存储会很大,这意味着不必要地重复了很多邮件。此外,在正常的服务器操作中也可能会积累同一邮件的多个副本,例如,从 IMAP append操作或其他来源中。

Messaging Server 提供了一个名为 relinker 的新命令,该命令用于删除过量的邮件副本并用指向单个副本的硬链接替换这些邮件副本。

relinker 操作原理

重链接功能可在命令模式或实时模式下运行。当 relinker 命令运行时,它将扫描整个邮件存储分区,创建或更新 MD5 邮件摘要系统信息库(以硬链接形式),删除过量的邮件文件,并创建必要的硬链接。

摘要系统信息库由指向邮件存储中的邮件的硬链接组成。它存储在目录分层结构 partition_path/=md5 中。此目录与用户邮箱分层结构 partition_path/=user 并行(请参见图 18–1)。摘要系统信息库中的邮件可由其 MD5 摘要唯一标识。例如,如果 fredb/00/1.msg 的摘要为 4F92E5673E091B43415FFFA05D2E47,则 partition/=user/hashdir/hashdir/=fredb/00/1.msg 将被链接到 partition/=md5/hashdir/hashdir/4F92E5673E091B43415FFFA05D2E47EA.msg。如果另一个邮箱中也有这封相同邮件(例如 partition_path/=user/hashdir/hashdir/gregk/00/17.msg),则该邮件也将被硬链接到 partition_path/=md5/4F/92/4F92E5673E091B43415FFFA05D2E47EA.msg。如图 18–5 中所示。

图 18–5 邮件存储摘要系统信息库

该图描述了邮件存储系统信息库。

对于这封邮件,链接计数为三。如果从 fredb 和 gregk 邮箱中删除了这两封相同邮件,则链接计数为一并且可以清除此邮件。

还可以在实时模式下运行 relinker 进程以实现类似的功能。有关详细信息,请参见在实时模式下使用 relinker

在命令行模式中使用 relinker

relinker 将扫描整个邮件存储分区,创建或更新 MD5 邮件系统信息库(以硬链接形式)并删除过量的邮件文件。relinker 扫描完存储分区后,它将输出唯一邮件数和重链接前后分区大小的统计信息。为了在已散列的存储上更快速地运行,relinker 将只计算尚未存在于 =md5 中的邮件摘要。它还具有可以删除整个摘要系统信息库(此操作不会影响用户邮箱)的选项。

命令的语法如下所示:

relinker [-p partitionname] [-d]

其中 partitionname 指定要处理的分区(默认值:所有分区),-d 指定将删除摘要系统信息库。以下显示了输出样例:


# relinker

Processing partition: primary
Scanning digest repository...
Processing user directories..............................
---------------------------------------------------------
Partition statistics           Before            After 
---------------------------------------------------------
Total messages                 4531898         4531898
Unique messages                4327531         3847029
Message digests in repository        0         3847029
Space used                       99210Mb         90481Mb
Space savings from single-copy    3911Mb         12640Mb
---------------------------------------------------------


# relinker -d 
Processing partition: primary
Purging digest repository...
---------------------------------------------------------
Partition statistics                 Before         After
---------------------------------------------------------
Message digests in repository       3847029             0
---------------------------------------------------------

运行 relinker 可能需要花费很长时间,尤其是在系统信息库中没有邮件的情况下首次运行。这是因为如果将 relinker 条件配置为包含所有邮件,则 relinker 必须计算每封邮件的摘要—有关配置 relinker 条件的信息,请参见配置 relinker。例如,处理 100 千兆字节的邮件存储可能需要花费六个小时。但是,如果启用了运行时重链接(请参见在实时模式下使用 relinker),则无需运行 relinker 命令。

如果单独使用 relinker 命令行模式,而不使用运行时选项,则必须清除摘要系统信息库 (=md5),否则存储 (=user) 中清除的邮件所占用的空间将不能成为可用磁盘空间,因为在摘要系统信息库中仍有这些邮件的链接(它们将成为孤立邮件)。如果只执行存储的一次性优化(例如,在迁移后),您可以运行一次 relinker,然后使用 relinker -d 删除整个系统信息库。对于迁移过程中进行的重复清除,只要重复运行 relinker 命令就可以了,因为每次运行该命令时,还会从系统信息库中清除过期的或孤立的邮件。

并行运行 relinker 的多个实例来使每个实例分别处理不同分区(使用 -p 选项),这样做是最安全的。仅在同一分区内重链接邮件。

在实时模式下使用 relinker

通过将 configutil 参数 local.store.relinker.enabled 设置为 yes 可以在实时模式下启用 relinker 函数。在实时模式下使用 relinker 将计算符合配置的 relinker 条件(配置 relinker)的每封已传送(或已恢复、IMAP 已附加等)邮件的摘要,然后查找系统信息库以查看该摘要是否已存在。如果摘要存在,relinker 将在目标邮箱中创建一个指向该摘要的链接而不创建该邮件的新副本。如果摘要不存在,relinker 将创建该邮件,然后在系统信息库中添加指向该邮件的链接。

stored 将扫描每个分区的摘要系统信息库,并清除链接计数为 1 或不符合 relinker 条件的邮件。在可配置的时间段内,扫描一次将扫描完一个目录。这样可以平均分布 I/O 负载而不会对其他服务器操作造成明显影响。默认情况下,清除周期为 24 小时,这意味着从存储中删除了邮件或者邮件超过了配置的最大生存期后,这些邮件最多还可在磁盘上保存 24 小时。如果启用了 relinker 实时模式,将启用此任务。

配置 relinker

表 18–13 显示了用于设置 relinker 条件的参数。

表 18–13 relinker configutil 参数

参数 

说明 

local.store.relinker.enabled

在附加代码中启用实时重链接邮件并启用 stored 清除。即使此选项处于禁用状态,也可以运行 relinker 命令行工具,但由于 stored 将不清除系统信息库,因此必须将 relinker -d 用于此任务。启用此选项将影响邮件传送性能但可以节省磁盘空间。

默认值:no

local.store.relinker.maxage

保存在系统信息库中或由 relinker 命令行考虑的邮件最大生存期(以小时为单位)。-1 表示无生存期限制,即仅从系统信息库中清除孤立邮件。对于 relinker,它表示处理现有邮件而不考虑生存期。值越小保留的系统信息库也就越小,从而允许 relinkerstored 清除可以更快地运行并更快地收回磁盘空间;而值越大允许重复邮件重链接的时间就越长,例如,用户分几天将同一邮件复制到存储中,或在几天或几星期内运行迁移等情况。

默认值:24 

local.store.relinker.minsize

邮件的最小大小(以千字节为单位)由运行时或命令行 relinker 考虑。设置为非零值将失去 relinker 用于较小邮件的优点,但可以获得较小的系统信息库。

默认值:0 

local.store.relinker.purgecycle

整个 stored 清除周期的近似持续时间(以小时为单位)。实际持续时间取决于扫描系统信息库中的每个目录所花费的时间。值越小使用的 I/O 就越多;值越大收回磁盘空间的速度就越慢。0 表示连续运行清除而不在目录之间有任何暂停。-1 表示不使用 stored 而必须使用 relinker -d 命令执行清除。

默认值:24 

备份并恢复邮件存储

邮件存储备份和恢复是最常见和最重要的管理任务之一。它由备份邮件存储中的所有邮件和文件夹组成。必须实现邮件存储的备份和恢复策略,以确保发生以下问题时不会丢失数据:

您可以使用命令行实用程序 imsbackupimsrestore,或集成解决方案(使用 Legato NetworkerTM)执行邮件存储备份和恢复。

Messaging Server 提供了单副本备份过程。不管多少用户文件夹包含特定邮件,备份期间仅使用找到的第一封邮件文件备份一次邮件文件。第二封邮件副本将作为第一封邮件文件名称的链接备份,依此类推。imsbackup 将邮件文件的设备和 inode 用作索引来维护所有邮件的散列表。但是,恢复数据时,此方法确实会产生一些影响。有关更多信息,请参见部分恢复的注意事项


注 –

还可以通过备份所有邮件文件和目录来执行邮件存储备份和恢复。请参阅邮件存储灾难备份和恢复


本节包含以下小节:

创建邮箱备份策略

备份策略取决于若干因素,例如:

高峰业务负载

安排系统备份时,需要考虑到高峰业务负载,因为这可以减少高峰时段的系统负载。例如,清晨时段(例如 2:00 AM)可能是安排备份的最佳时段。

完全备份和增量备份

增量备份(请参见增量备份)将扫描存储查找更改的数据,并仅备份已经更改的内容。完全备份将备份整个邮件存储。需要确定与增量备份相比系统执行完全备份的频率。您可能需要将增量备份作为每日维护过程执行,而每星期执行一次完全备份。

并行备份和串行备份

用户数据存储在多个磁盘中时,如果需要,可以并行备份用户组。根据系统资源,并行备份可以加速整体备份过程。但是,如果要减少备份对服务器性能的影响,可能需要使用串行备份。使用并行备份还是串行备份可能取决于许多因素,包括系统负载、硬件配置、有多少可用的磁带驱动器等等。

创建备份组

备份组是由正则表达式定义的任意用户邮箱集。通过将用户邮箱组织成备份组,您可以定义更灵活的备份管理。

例如,您可以创建三个备份组,第一个组包含以字母 A 至 L 开始的用户 ID,第二个组包含用户 ID 以 M 至 Z 开始的用户,而第三个组包含用户 ID 以数字开始的用户。管理员可以使用这些备份组以并行方式备份邮箱,也可能一天只备份特定组,另一天备份其他组。

关于备份组有几点事项要记住:

  1. 备份组是邮件用户的任意虚拟的组。它们不会准确地映射到邮件存储目录(图 18–1),尽管看上去似乎会这样。

  2. 它们由管理员使用 UNIX 正则表达式定义。

  3. 正则表达式是在 msg_svr_base/config/backup-groups.conf 配置文件中定义的。

  4. imsbackupimsrestore 中引用备份组时,备份组使用以下路径格式:/partition_name/backup_group

backup-groups.conf 的格式如下:


group_name=definition
group_name=definition
.
.
.

使用上述段落中介绍的示例,以下定义将用于创建三个备份组:


groupA=[a-l].*
groupB=[m,-z].*
groupC=[0-9].*

现在您可以在几个级别中规定 imsbackupimsrestore 的范围。您可以使用以下备份命令备份/恢复整个邮件存储:

imsbackup -f device /

要备份 groupA 中的所有用户的所有邮箱,请使用以下命令:

imsbackup -f device /partition/groupA

默认分区称为 primary

预定义备份组

Messaging Server 包括一个不必创建 backup-groups 配置文件即可用的预定义备份组。此组称为 user;其中包括所有用户。例如,以下命令将备份 primary 分区上的所有用户:

imsbackup -f backupfile /primary/user

Messaging Server 备份和恢复实用程序

为备份和恢复数据,Messaging Server 提供了 imsbackupimsrestore 实用程序。注意,imsbackupimsrestore 实用程序不具有在通用工具(如 Legato Networker)中可以找到的高级功能。例如,实用程序对磁带自动转换器只提供非常有限的支持,并且不能将单个存储写入多个并行设备。综合备份将通过通用工具(如 Legato Networker)的插件来实现。有关使用 Legato Networker 的更多信息,请参见使用 Legato Networker

imsbackup 实用程序

使用 imsbackup,可以将邮件存储的选定内容写入任何串行设备,包括磁带、UNIX 管道或纯文本文件。可以在以后使用 imsrestore 实用程序恢复备份或备份的选定部分。可以将 imsbackup 的输出传输到 imsrestore

以下示例将整个邮件存储备份到 /dev/rmt/0


imsbackup -f /dev/rmt/0 /

此示例将用户 ID joe 的邮箱备份到 /dev/rmt/0


imsbackup -f /dev/rmt/0 /primary/user/joe
            

此示例将备份组 groupA 中定义的所有用户的所有邮箱备份到 backupfile(请参见创建备份组):


imsbackup -f- /primary/groupA > backupfile
            

增量备份

以下示例将备份从 2004 年 5 月 1 日下午 1 点 10 分至今所存储的邮件。默认情况下将备份所有邮件而不考虑它们的日期:


imsbackup -d 20040501:13100
               

此命令使用默认块因子 20。有关 imsbackup 命令的完整语法描述,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》

imsrestore 实用程序

要从备份设备恢复邮件,使用 imsrestore 命令。例如,以下命令将从文件 backupfile 中恢复 user1 的邮件。

imsrestore -f backupfile /primary/user1

有关 imsbackup 命令的完整语法描述,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》

执行备份时排除批量邮件

执行一个备份操作时,您可以指定将从备份中被排除的邮箱。通过排除可以产生大量琐碎邮件的批量邮箱或垃圾邮箱,您可以简化备份会话,减少完成操作的时间,并最小化存储备份数据所需的磁盘空间。

要排除邮箱,请为 configutil 参数 local.store.backup.exclude 指定一个值。

您可以指定单个邮箱或由 '%' 字符分隔开的邮箱列表。(在邮箱名称中 '%' 是非法字符。)例如,您可以指定以下值:

Trash

Trash%Bulk Mail%Third Class Mail

在第一个示例中,排除了文件夹 Trash。在第二个示例中,排除了文件夹 TrashBulk MailThird Class Mail

备份实用程序将备份用户邮箱中所有的文件夹,那些以 local.store.backup.exclude 参数指定的文件夹除外。

此功能与 Messaging Server 备份实用程序、Legato Networker 和第三方备份软件一起工作。

您可以覆盖 local.store.backup.exclude 设置,并通过在操作期间指定被排除邮箱的完整逻辑名称以备份此邮箱。假设已排除“垃圾箱”文件夹。您还可以通过指定以下内容来备份“垃圾箱”,例如:

/primary/user/user1/trash

但是,如果指定

/primary/user/user1

“垃圾箱”文件夹被排除。

部分恢复的注意事项

部分恢复是指仅恢复部分邮件存储。完全恢复是指恢复整个邮件存储。邮件存储使用单副本邮件系统。即,仅将任何邮件的单个副本作为单个文件保存在存储中。该邮件的任何其他实例(如邮件发送到多个邮箱时)都存储为该副本的链接。由于此原因,恢复邮件时会有一些影响。例如:

以下示例说明了执行部分恢复时,由多个用户使用的邮件发生的变化。假设有三封邮件,同时属于三个用户 A、B 和 C,如下所示:


A/INBOX/1
B/INBOX/1
C/INBOX/1

示例 1。在第一个示例中,系统执行部分备份和完全恢复过程,如下所示:

  1. 备份用户 B 和 C 的邮箱。

  2. 删除用户 B 和 C 的邮箱。

  3. 恢复步骤 1 中的备份数据。

在此示例中,B/INBOX/1C/INBOX/1 被指定了新的 inode 编号,并且邮件数据被写入磁盘上的新位置。仅恢复了一封邮件;第二封邮件是第一封邮件的硬链接。

示例 2。在此示例中,系统执行完全备份和部分恢复,如下所示:

  1. 执行完全备份。

  2. 删除用户 A 的邮箱。

  3. 恢复用户 A 的邮箱。

A/INBOX/1 被指定了新的索引节点编号。

示例 3。在此示例中,部分恢复可能需要多次尝试:

  1. 执行完全备份。

    B/INBOX/1C/INBOX/1 备份为 A/INBOX/1 的链接。

  2. 删除用户 A 和 B 的邮箱。

  3. 恢复用户 B 的邮箱。

    恢复实用程序要求管理员首先恢复 A/INBOX

  4. 恢复用户 A 和 B 的邮箱。

  5. 删除用户 A 的邮箱(可选)。


    注 –

    如果要确保对所有邮件进行部分恢复,可以运行 imsbackup 命令并使用 -i 选项。如果有必要,-i 选项将多次备份每封邮件。

    如果备份设备(如:驱动器或磁带)可查找,imsrestore 将查找包含 A/INBOX/1 的位置,并将其恢复为 B/INBOX/1。如果备份设备(如:UNIX 管道)不可查找,imsrestore 将日志记录对象 ID 和文件的相关(链接)对象的 ID,并且管理员必须使用 -r 选项再次调用 imsrestore 以恢复缺少的邮件引用。


从已被增量备份的邮箱中恢复邮件

如果您正从已被增量备份的邮箱中恢复邮件,并且该邮箱存在于您要用于恢复邮件的服务器上,那么恢复邮件需要简单而直观的运行 imesrestore。但是如果您要从已被增量备份的邮箱中恢复邮件,并且该邮箱不再存在,则必须遵循不同的恢复过程。

使用以下过程之一将邮件恢复至不存在于邮件存储服务器上的邮箱中:

恢复增量备份必须遵循这些说明的原因如下:在邮箱已被删除或正被迁移时,imsrestore 实用程序将使用存储在备份归档文件中的邮箱唯一标识有效性标志和邮件唯一标识 (UID) 来重新创建邮箱。

以前,当 imsrestore 重新创建已删除或迁移的邮箱时,它将为邮箱分配新的 UID 有效性标志并为邮件分配新的 UID。在这种情况下,带有高速缓存邮件的客户机将必须重新同步邮箱 UID 有效性标志和邮件 UID。客户机将必须再次下载新的数据,增加服务器上的工作负荷。

在新的 imsrestore 行为下,客户机高速缓存将保持同步,并且恢复进程将透明地运行,而不会对性能有负面影响。

如果邮箱存在,imsrestore 将为已恢复的邮件分配新的 UID,从而使新的 UID 与已分配给现有邮件的 UID 保持一致。要确保 UID 的一致性,imsrestore 在恢复操作期间会锁定邮箱。但是,由于 imsrestore 现在使用的是备份归档文件中的邮箱 UID 有效性标志和邮件 UID,而不是分配新的 UID 值,因此如果执行增量备份和恢复,UID 可能会变得不一致。

如果使用 imsbackup 实用程序的 -d 日期选项执行增量备份,则可能需要多次调用 imsrestore 以完成恢复操作。如果执行了增量备份,则必须恢复最新的完全备份和所有后续的增量备份。

新邮件可以在恢复操作期间被传送至邮箱,但在这种情况下,邮件 UID 可能变得不一致。要防止 UID 的不一致,您需要采取以上介绍的操作之一。

使用 Legato Networker

Messaging Server 包括提供了带有第三方备份工具(例如 Legato Networker)的界面的备份 API。物理邮件存储结构和数据格式封装在备份 API 中。备份 API 将直接与邮件存储进行交互式操作。它显示了备份服务的邮件存储的逻辑视图。备份服务使用邮件存储的概念表示法来存储和检索备份对象。

Messaging Server 为备份和恢复邮件存储数据提供了可以由 Legato Networker 的 saverecover 命令调用的应用程序特定模块 (Application Specific Module, ASM)。然后,ASM 将调用 Messaging Server 的 imsbackupimsrestore 实用程序。


注 –

本节提供有关如何将 Legato Networker 与 Messaging Server 邮件存储一起使用的信息。要了解 Legato Networker 界面,请参见 Legato 文档。


Procedure使用 Legato Networker 备份数据

步骤
  1. 创建从 /usr/lib/nsr/imsasmmsg_srv_base/lib/msg/imsasm 的符号链接。

  2. 从 Sun 或 Legato 获取 nsrfile 二进制文件的副本并将其复制到以下目录:

    /usr/bin/nsr

    请注意,仅当使用以前版本的 Networker (5.x) 时才需要进行此操作。使用 Networker 6.0 和更高版本时,nsrfile 将被自动安装在 /usr/bin/nsr 下。

  3. 如果要按组备份用户,请执行以下步骤:

    1. 创建创建备份组中所述的备份组文件。

    2. 要验证配置,运行 mkbackupdir.sh。

      查看由 mkbackupdir.sh 创建的目录结构。该结构应该与表 18–4 中所示的目录结构相似。

      注意,如果未指定 backup-groups.conf 文件,备份进程将对所有用户使用默认备份组 ALL

  4. 在目录 /nsr/res/ 中,为您的保存组创建 res 文件,以在备份前调用 mkbackupdir.sh 脚本。有关示例,请参见表 18–4


    注 –

    Legato Networker 的早期版本限制保存组的名称为 64 个字符。如果此目录的名称加上邮箱的逻辑名称(例如 /primary/groupA/fred)超过了 64 个字符,则必须运行 mkbackupdir.sh -p。因此,应该为 mkbackupdir.sh-p 选项使用短路径名。例如,以下命令将在目录 /backup 下创建备份映像:

    mkbackupdir.sh -p /backup

    重要提示:备份目录必须可以由邮件存储所有者(如:inetuser)。


    表 18–6 显示了样例备份组目录结构。


    /backup/primary/groupA/amy
                          /bob
                          /carly
                   /groupB/mary
                          /nancy
                          /zelda
                   /groupC/123go
                          /1bill
                          /354hut

    以下示例显示了 /nsr/res 目录中名为 IMS.res 的样例 res 文件:


    type: savepnpc;
    precmd: "echo mkbackupdir started",
       "/usr/siroe/server5/msg-siroe/bin/mkbackupdir.sh -p /backup";
    pstcmd: "echo imsbackup Completed";
    timeout: "12:00 pm";
    
                         

    现在您可以准备运行 Legato Networker 界面,如下所示:

  5. 如果有必要,则创建 Messaging Server 保存组。

    1. 运行 nwadmin

    2. 选择“自定义”|“组”|“创建”。

  6. 使用 savepnpc 作为备份命令创建备份客户机:

    1. 将保存组设置为由 mkbackupdir 创建的目录。

      对于单个会话备份,使用 /backup

      对于并行备份,使用 /backup/server/group

      确保已经创建如创建备份组中所定义的 group

      还必须设置备份会话数量的并行性。

      请参见使用 Legato Networker 备份数据

  7. 选择“组控制”|“启动”以测试备份配置。

    示例:在 Networker 中创建备份客户机:

    要在 Networker 中创建备份客户机,从 nwadmin 选择“客户机”|“客户机设置”|“创建”


    Name: siroe
    Group: IMS
    Savesets:/backup/primary/groupA
       /backup/secondary/groupB
       /backup/tertiary/groupC
             .
             .
    Backup Command:savepnpc
    Parallelism: 4
    
                         

使用 Legato Networker 恢复数据

要恢复数据,可以使用 Legato Networker nwrecover 界面或 recover 命令行实用程序。以下示例将恢复用户 a1 的 INBOX:

recover -a -f -s siroe /backup/siroe/groupA/a1/INBOX

下一示例将恢复整个邮件存储:

recover -a -f -s siroe /backup/siroe

使用除 Legato 以外其他的第三方备份软件

Messaging Server 提供了两种邮件存储备份解决方案,命令行 imsbackup 和 Solstice Backup (Legato Networker)。运行单个 imbackup 备份整个邮件存储的大型邮件存储将花费相当长的时间。Legato 解决方案支持多个备份设备上的并行备份会话。并行备份可以显著缩短备份时间(可达到每小时可备份 25GB 数据)。

如果使用的是其他第三方并行备份软件(例如,Netbackup),可以使用以下方法将备份软件与 Messaging Server 集成。

Procedure使用除 Legato 以外其他的第三方备份软件

步骤
  1. 将用户分成组(请参见创建备份组)并在 msg_svr_base/config/ 目录下创建 backup-groups.conf 文件。


    注 –

    此备份解决方案需要附加的磁盘空间。要并行备份所有组,磁盘空间要求将是邮件存储大小的两倍。如果没有足够的磁盘空间,请将用户分成较小的组,然后一次备份一个组集。例如 group1 至 group5,group6 至 group10。备份后删除组数据文件。


  2. 运行 imsbackup 将每个组备份到中转区下的文件中。

    命令是 imsbackup -f <device> /<instance>/<group>

    可以同时运行多个 imsbackup 进程。例如:


    # imsbackup -f- /primary/groupA > /bkdata/groupA &
    # imsbackup -f- /primary/groupB > /bkdata/groupB & 
    . . .

    imsbackup 不支持大型文件,如果备份数据大于 2 GB,则需要使用 -f- 选项将数据写入 stdout 然后将输出传输到一个文件中。

  3. 使用第三方备份软件以备份中转区(在我们的示例中是 /bkdata)中的组数据文件。

  4. 要恢复用户,请标识用户的组文件名,从磁带恢复该文件,然后使用 imsrestore 从数据文件恢复用户。

    注意,imsrestore 不支持大型文件。如果数据文件大于 2GB,请使用以下命令:

    # cat /bkdata/groupA | imsrestore -f- /primary/groupA/andy

备份和恢复问题的故障排除

本节介绍常见的备份和恢复问题及其解决方法。

邮件存储灾难备份和恢复

灾难是指整个邮件存储的灾难性故障。即邮件存储服务器上的所有数据全部丢失的情况。完整的邮件存储灾难恢复将包含恢复以下丢失的数据:

监视用户访问

Messaging Server 提供了命令 imsconnutil,允许您通过 IMAP、POP 和 http 监视用户的邮件存储访问。您还可以确定用户的上次登录和注销时间。此命令在每个邮件存储的基础上运行,不能在多个邮件存储之间运行。


注 –

使用此功能或其他 Messaging Server 功能对用户的电子邮件进行监视、阅读或其他访问时,如果这些行为与相关法律或法规相违背,或与用户自己的策略或协议相违背,则可能构成潜在的责任源。


此命令需要系统用户(默认值:inetuser),并且必须将配置变量 local.imap.enableuserlistlocal.http.enableuserlist、local.enablelastaccess 设置为 1。

要列出当前通过 IMAP 或任何 Web 邮件客户机登录的用户,请使用以下命令:

# imsconnutil -c

要列出邮件存储上每个用户的上一次 IMAP、POP 或 Messenger Express 访问(登录和注销),请使用:

# imsconnutil -a

以下命令可以完成两项任务:1) 确定指定用户当前是否已通过 IMAP 或 Messenger Express 或者任何通过 mshttp 连接的客户机登录(请注意,此项不适用于 POP,因为 POP 用户通常不保持连接),2) 列出用户上次登录和注销的时间:

# imsconnutil -c -a -u user_ID

请注意,使用以下命令可以从文件输入用户列表,每行一个用户:

# imsconnutil -c -a -f filename

您还可以使用 -s 标志指定特定服务(imaphttp)。例如,要列出特定用户 ID 是否已登录 IMAP,使用以下命令:

# imsconnutil -c -s imap -u user_ID

有关 imsconnutil 语法的完整说明,请参阅《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“imsconnutil”

下面是某个示例的输出:


$ ./imsconnutil -a -u soroork

UID     IMAP last access    HTTP last access    POP last access
=========================================================================
ed   08/Jul/2003:10:49:05   10/Jul/2003:14:55:52  ---NOT-RECORDED---

$ ./imsconnutil -c

IMAP
UID    TIME                AUTH            TO                 FROM
===========================================================================
ed   17/Jun/2003:11:24:03  plain     172.58.73.45:193   129.157.12.73:2631
bil  17/Jun/2003:04:28:43  plain     172.58.73.45:193   129.158.16.34:2340
mia  17/Jun/2003:09:36:54  plain     172.58.73.45:193   192.18.184.103:3744
jay  17/Jun/2003:05:38:46  plain     172.58.73.45:193   129.159.18.123:3687
pau  17/Jun/2003:12:23:28  plaintext 172.58.73.45:193   192.18.194.83:2943
ton  17/Jun/2003:05:38:46  plain     172.58.73.45:193   129.152.18.123:3688
ani  17/Jun/2003:12:26:40  plaintext 172.58.73.45:193   192.18.164.17:1767
ani  17/Jun/2003:12:25:17  plaintext 172.58.73.45:193   129.150.17.34:3117
jac  17/Jun/2003:12:26:32  plaintext 172.58.73.45:193   129.150.17.34:3119
ton  17/Jun/2003:12:25:32  plaintext 172.58.73.45:193   192.18.148.17:1764
===========================================================================
10 users were logged in to imap.
Feature is not enabled for http.
---------------------------------------------------------------------------

邮件存储故障排除

本节提供主动维护邮件存储的原则。此外,本节还介绍了当邮件存储被破坏或者意外关闭时,可以使用的其他邮件存储恢复过程。注意,有关这些附加邮件存储恢复过程的部分是修复邮箱和邮箱数据库的延伸内容。

阅读本节前,强烈建议您查阅本章以及 Sun Java System Messaging Server Administration Reference 中有关命令行实用程序和 configutil 的章节。本节涉及的主题包括:

标准邮件存储监视过程

本节概述了邮件存储的标准监视过程。这些过程有助于常规邮件存储检查、测试和标准维护。

有关其他信息,请参见监视邮件存储

检查硬件空间

邮件存储应具有足够的附加磁盘空间和硬件资源。邮件存储接近磁盘空间和硬件空间的最大限度时,邮件存储内部可能会出现问题。

磁盘空间不足是导致邮件服务器问题和故障的最常见的原因之一。如果没有用于写入到邮件存储的空间,邮件服务器将会失败。此外,可用磁盘空间低于特定阈值时,会产生与邮件传送、日志记录等相关的问题。当 stored 进程的清除功能失败并且不从邮件存储中擦除已删除的邮件时,磁盘空间会迅速耗尽。

有关监视磁盘空间的信息,请参见监视磁盘空间监视邮件存储

检查日志文件

检查日志文件以确保邮件存储进程按配置运行。Messaging Server 为其支持的以下每个主要协议(或服务)都创建了一组单独的日志文件:SMTP、IMAP、POP 和 HTTP。您可以从 Console 或目录 msg_svr_base/log/ 中查看日志文件。应按例行程序监视日志文件。

请注意日志记录可能会影响服务器性能。在给定的时间内指定的日志记录越详尽日志文件所占用的磁盘空间越多。您应当为服务器定义有效且实际的日志旋转、失效和备份策略。有关为服务器定义日志记录策略的信息,请参见第 21 章,管理日志记录

使用自动测量功能检查用户 IMAP/POP 会话

Messaging Server 提供了一种称为自动测量的功能,可以将用户的整个 IMAP、POP 或 Webmail 会话捕获到文件中。此功能对调试客户机问题很有用。例如,如果用户抱怨他们的邮件访问客户机未按预期那样工作,则此功能可用于跟踪访问客户机和 Messaging Server 之间的交互作用。

要捕获会话,只需创建以下目录:

msg_svr_base/data/telemetry/pop_or_imap/userid

Messaging Server 将在此目录中为每个会话创建一个文件。下面显示了输出示例:


LOGIN redb 2003/11/26 13:03:21
>0.017>1 OK User logged in
<0.047<2 XSERVERINFO MANAGEACCOUNTURL MANAGELISTSURL MANAGEFILTERSURL
>0.003>* XSERVERINFO MANAGEACCOUNTURL {67}
http://redb@cuisine.blue.planet.com:800/bin/user/admin/bin/enduser 
MANAGELISTSURL NIL MANAGEFILTERSURL NIL
2 OK Completed
<0.046<3 select "INBOX"
>0.236>* FLAGS (\Answered flagged draft deleted \Seen $MDNSent Junk)
* OK [PERMANENTFLAGS (\Answered flag draft deleted \Seen $MDNSent Junk \*)]
* 1538 EXISTS
* 0 RECENT
* OK [UNSEEN 23]
* OK [UIDVALIDITY 1046219200]
* OK [UIDNEXT 1968]
3 OK [READ-WRITE] Completed
<0.045<4 UID fetch 1:* (FLAGS)
>0.117>* 1 FETCH (FLAGS (\Seen) UID 330)
* 2 FETCH (FLAGS (\Seen) UID 331)
* 3 FETCH (FLAGS (\Seen) UID 332)
* 4 FETCH (FLAGS (\Seen) UID 333)
* 5 FETCH (FLAGS (\Seen) UID 334)
<etc>

检查 stored 进程

stored 功能可执行各种重要任务,例如邮件数据库的死锁和事务操作、强制执行生存期策略以及擦除和删除磁盘上存储的邮件。如果 stored 停止运行,Messaging Server 最终会出现问题。如果 start-msg 运行时 stored 未启动,则其他进程也不会启动。

表 18–14 stored 操作

stored 操作 

功能 

stored.ckp

初始化数据库检查点时触及到该文件。大约每 1 分钟标记一次。 

stored.lcu

每次清除数据库日志时触及该文件。大约每 5 分钟标记一次时间戳。 

stored.per

每次产生精读用户数据库写出时触及该文件。每小时标记一次时间戳。 

有关 stored 进程的更多信息,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》 中的 使用 stored 实用程序 一章。

有关监视 stored 功能的其他信息,请参见监视邮件存储

检查数据库日志文件

数据库日志文件是指 sleepycat 事务检查点操作日志文件(位于目录 store_root/mboxlist 中)。如果日志文件堆积,则不会出现数据库检查点操作。通常,单个时间段内存在两个或三个数据库日志文件。如果有更多文件,则可能是问题的征兆。

检查用户文件夹

如果要检查用户文件夹,可以运行命令 reconstruct -r -n(递归无修复),此命令将查看所有用户文件夹并报告错误。有关 reconstruct 命令的更多信息,请参见修复邮箱和邮箱数据库

检查主存文件

仅当进程已经意外终止时才会存在核心转储文件。查阅这些文件很重要,特别是在邮件存储中发现问题时。在 Solaris 中,使用 coreadm 配置 core 文件位置。

邮件存储启动和恢复

邮件存储数据由邮件、索引数据和邮件存储数据库组成。虽然此数据相当可靠,在极少时候系统中也可能出现邮件存储数据问题。这些问题将在默认日志文件中指出,并且几乎始终透明地被修复。在极少情况下,日志文件中的错误消息可能会指出您需要运行 reconstruct 实用程序。 此外,作为最后的手段,邮件将由备份并恢复邮件存储中所述的备份和恢复进程保护。本节将着重说明 stored 的自动启动和恢复进程。

邮件存储自动执行许多恢复操作,这以前是管理员的职责。启动期间,邮件存储守护进程 stored 将执行这些操作,包括数据库快照和必要时的自动快速恢复。stored 将彻底检查邮件存储的数据库并在检测到问题时自动启动修复。

stored 还通过默认日志的状态消息提供数据库状态的综合分析,报告对邮件存储完成的修复和使其运行的自动尝试。

自动启动和恢复—操作原理

stored 守护进程在其他邮件存储进程之前启动。如果有必要,它将初始化并恢复邮件存储数据库。邮件存储数据库可保存文件夹、配额、订阅和邮件标志信息。数据库可以进行日志记录和处理事务,因此已经内置了恢复。此外,某些数据库信息将在每个文件夹的邮件索引区域中大量地被复制。

尽管数据库相当可靠,但在极少情况下也会中断。在大多数情况下,stored 可以透明地恢复和修复数据库。但是,无论何时重新启动 stored,都应检查默认日志文件以确保不需要其他管理介入。如果数据库需要进一步重建,日志文件中的状态消息将提醒您运行 reconstruct

打开邮件存储数据库前,stored 将分析其完整性,并将状态消息发送到警告类别下的默认日志。某些邮件将对管理员很有用,某些邮件将由用于内部分析的编码数据组成。如果 stored 检测到任何问题,则将尝试修复数据库并尝试再次启动数据库。

打开数据库时,stored 将以信号表明其余服务可以启动。如果自动修复失败,默认日志中的消息将指定要采取的措施。请参见表示需要 reconstruct -m 的错误消息

在以前的版本中,stored 可能会花费很长时间启动恢复进程,致使管理员怀疑 stored 是否被“阻塞”了。这种长时间的恢复现在已不存在,stored 将在一分钟内确定最终状态。但是,如果 stored 需要使用恢复技术(例如从快照恢复),则进程可能会花费几分钟时间。

大多数恢复之后,数据库通常会更新,并且不需要进行任何其他操作。但是,某些恢复需要 reconstruct -m 以便与邮件存储中的冗余数据同步。同样,这会在默认日志中说明,因此启动后监视默认日志非常重要。即使邮件存储看起来启动和运行正常,运行任何要求的操作(例如 reconstruct)都是很重要的。

阅读日志文件的另一个原因是可以首先确定导致数据库损坏的原因。尽管 stored 用于调出邮件存储,而不管系统中的任何问题,但是您仍要尝试确定导致数据库损坏的原因,因为这可能是更大的隐藏问题的征兆。

表示需要 reconstruct -m 的错误消息

本节介绍需要运行 reconstruct -m 的错误消息类型。

错误消息指示邮箱错误时,运行 reconstruct <mailbox>。示例:

“邮箱 user/joe/INBOX 中的邮件 102 的高速缓存数据无效。需要重建”

“邮箱已破坏,缺少固定标题: user/joe/INBOX”

“邮箱已破坏,start_offset 在 EOF: user/joe/INBOX 之外”

当错误消息指示数据库错误时,请运行 reconstruct -m。示例:

“正在删除附加数据库日志。请在启动后立即运行 reconstruct -m 以再同步冗余数据”

“正在从快照恢复数据库。请在启动后立即运行 reconstruct -m 以再同步冗余数据”

数据库快照

快照是数据库的热备份,由 stored 使用以在几分钟内透明地恢复已损坏的数据库。这比使用 reconstruct 要快得多,后者依赖于其他区域中存储的冗余信息。

邮件存储数据库快照—操作原理

默认情况下,每 24 小时自动获取一次数据库(位于 mboxlist 目录中)的快照。默认情况下,快照被复制到 store 目录的子目录中。默认情况下,在任意给定时间有五个快照:一个实时数据库、三个快照和一个数据库/已删除副本。数据库/已删除副本比较新,并且是抛入 mboxlist 数据库目录的子目录 removed 中的数据库的紧急副本。

如果恢复进程由于确定数据库已损坏而决定删除当前数据库,stored 会将其移入 removed 目录(如果可以)。此操作允许在需要时对数据库进行分析。

数据移动一周仅发生一次。如果已存在数据库的副本,stored 将不会在每次进行存储时替换副本。仅当 removed 目录中的数据是一星期以前的数据时,才会替换副本。这是为了防止有问题的原始数据库由于连续启动被替换太快。

指定邮件存储数据库快照的时间间隔和位置

应有五倍的空间用于组合的数据库和快照。强烈建议管理员重新配置快照以在单独的磁盘上运行,并调节快照以满足系统需求。

如果 stored 在启动时检测到数据库的问题,最好的快照将自动被恢复。有三个快照变量,可以设置以下参数:快照文件的位置、获取快照的时间间隔、保存的快照数量。表 18–15 显示了这些 configutil 参数。

获取快照时间间隔太小将会导致给系统带来频繁的负担,并更有可能会将数据库中的问题复制为快照。获取快照时间间隔太大意味着获取快照时数据库要保持过去的状态。

建议采用一天的快照时间间隔,如果问题将在系统中保存若干天并且您希望返回问题存在的时间点以前的时段,则一周或更长的快照时间间隔会很有用。

stored 可以监视数据库并且非常智能,如果检测到数据库不够完好,则拒绝最新快照。而将检索最新、最可靠的快照。尽管快照可能是从一天以前检索的,系统将使用更新的冗余数据并覆盖较早的快照数据(如果可用)。

因此,快照所起的最终作用是使系统接近最新,并尝试在运行中重建数据来减轻系统剩余部分的负担。

表 18–15 邮件存储数据库快照参数

参数 

说明 

local.store.snapshotpath

邮件存储数据库快照文件的位置。或者是现有绝对路径,或者是 store 目录的相对路径。

默认值:dbdata/snapshots

local.store.snapshotinterval

快照之间的分钟数。有效值:1 - 46080 

默认值:1440(1440 分钟 = 1 天) 

local.store.snapshotdirs

保存的不同快照的数量。有效值:2 -367 

默认值:3 

修复邮箱和邮箱数据库

如果一个或多个邮箱已破坏,您可以使用 reconstruct 实用程序重建邮箱或邮箱数据库,并修复所有不一致性。

reconstruct 实用程序将重建一个或多个邮箱或主邮箱文件,并修复所有不一致性。您可以使用此实用程序恢复邮件存储中几乎所有形式的数据破坏。请参见表示需要 reconstruct -m 的错误消息

表 18–16 列出了 reconstruct 选项。有关详细的语法和使用要求,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“reconstruct”

表 18–16 reconstruct 选项

选项 

说明 

-e

在重建之前删除 store.exp 文件。这将消除已删除但未被存储进程清除的邮件的所有内部存储记录。在使用 -i-e 时使用 -f 选项也很有用,因为这些选项仅在文件夹被实际重建的情况下才工作。同样,如果使用 -n 选项(它执行检查而不是重建),则 -i-e 选项将不工作。

如果 reconstruct 无法检测到损坏,运行 reconstruct -e 将不能恢复已删除的邮件。-f 将强制执行重建。

-i

用于在重建之前将 store.idx 文件长度设置为零。在使用 -i-e 时使用 -f 选项也很有用,因为这些选项仅在文件夹被实际重建的情况下才工作。同样,如果使用 -n 选项(它执行检查而不是重建),则 -i-e 选项将不工作。

-f

强制 reconstruct 执行对邮箱的修复。

-l

用于重建 lright.db

-m

用于执行一致性检查以及修复邮箱数据库(如果需要)。此选项将检查在假脱机区域中找到的每个邮箱,酌情添加条目或从邮箱数据库删除条目。无论何时添加条目或从数据库删除条目,实用程序都将消息显示到标准输出文件。特别是它修复 folder.dbquota.dblright.db

-n

仅检查邮件存储,而不对邮箱执行修复。-n 选项不能单独使用,除非提供了邮箱名称。未提供邮箱名称时,-n 选项必须与 -r 选项一起使用。-r 选项可以与 -p 选项组合使用。例如,以下任一命令都是有效的:

reconstruct -n user/dulcinea/INBOX

reconstruct -n -r

reconstruct -n -r -p primary

reconstruct -n -r user/dulcinea/

-o

作废,请参见 mboxutil -o

-o -d filename

作废,请参见 mboxutil -o

-p partition

-p 选项和 -m 选项一起使用,用于限制指定分区的重建范围。如果未指定 -p 选项,reconstruct 将默认为对所有分区执行操作。特别是它修复 folder.dbquota.db,而不是 lright.db。这是因为修复 lright.db 需要对邮件存储中的每个用户进行 acl 扫描。为每个分区执行此操作效率不高。要修复 lright.db,运行 reconstruct -l

指定分区名称;不使用全路径名。 

-q

修复配额子系统中的所有不一致性,例如带有错误配额根(其中报告了错误的配额使用情况)的邮箱。其他服务器进程正在运行时,可以运行 -q 选项。

-r [mailbox]

修复并对指定邮箱的分区区域执行一致性检查。-r 选项还修复指定邮箱内的所有子邮箱。如果不使用任何邮箱参数指定 -r,实用程序将修复用户分区目录内的所有邮箱的假脱机区域。

-u user

-u 选项与 -m 选项一起使用,用于限制到指定用户的重建范围。-u 选项必须与 -p 选项一起使用。如果未指定 -u 选项,reconstruct 默认为对所有分区或由 -p 选项指定的分区进行操作。

指定用户名称;不使用全路径名。 

重建邮箱

要重建邮箱,请使用 -r 选项。您应在以下情况使用此选项:

reconstruct -r 首先将运行一致性检查。仅在检测到任何问题时报告所有一致性并重建。因此,reconstruct 实用程序的性能在此版本内得到了改进。

您可以使用以下示例中所述的 reconstruct

要重建属于用户 daphne 的邮箱的假脱机区域,请使用以下命令:

reconstruct -r user/daphne

要重建邮箱数据库中列出的所有邮箱的假脱机区域,请使用以下命令:

reconstruct -r

但是,您必须谨慎使用此选项,因为对于大型邮件存储,重建邮箱数据库中列出的所有邮箱的假脱机区域将花费很长时间。(请参见reconstruct 性能。)故障恢复的更好的方法可能是将多个磁盘用于存储。如果一个磁盘出现故障,整个存储不会出现故障。如果一个磁盘破坏,只需使用 -p 选项重建一个存储的分区,如下所示:

reconstruct -r -p subpartition

要重建命令行参数中列出的邮箱,只要它们位于 primary 分区中,使用以下命令:

reconstruct -p primary mbox1 mbox2 mbox3

如果确实需要重建 primary 分区中的所有邮箱,使用以下命令:

reconstruct -r -p primary

如果要强制 reconstruct 程序重建文件夹,而不执行一致性检查,使用 -f 选项。例如,以下命令将强制执行用户文件夹 daphne 的重建:

reconstruct -f -r user/daphne

要检查所有邮箱而不对其进行修复,使用 -n 选项,如下所示:

reconstruct -r -n

检查并修复邮箱

要执行高级别一致性检查和邮箱数据库的修复,请使用以下命令:

reconstruct -m

要执行主分区的一致性检查和修复,请使用以下命令:

reconstruct -p primary -m

注 –

同时运行 reconstruct 与 -p 和 -m 标志将不能修复 lright.db。这是因为修复 lright.db 需要对邮件存储中的每个用户进行 ACL 扫描。为每个分区执行此操作效率不高。要修复 lright.db,请运行 reconstruct -l


要执行名为 john 的单个用户的邮箱的一致性检查和修复,请执行以下命令:

reconstruct -p primary -u john -m

您应在以下情况下使用 -m 选项:

reconstruct 性能

reconstruct 执行操作所花费的时间取决于以下因素:

reconstruct -r 选项将执行初始一致性检查;此检查将根据必须重建多少文件夹来改善 reconstruct 的性能。

一个具有大约 2400 个用户、85GB 的邮件存储和在服务器上并行的 POP、IMAP 或 SMTP 活动的系统具有如下性能:


注 –

如果服务器不执行正在进行的 POP、IMAP、HTTP 或 SMTP 活动,reconstruct 操作可能会明显花费较少的时间。


常见问题和解决方案

本节列出了常见的邮件存储问题和解决方案:

Messenger Express 或 Communications Express 未装入邮件页面

如果用户无法装入任何 Messenger Express 页面或 Communications Express 邮件页面,则问题可能是数据压缩后被破坏。如果系统部署了过时的代理服务器,则有时可能会出现这种情况。要解决此问题,请尝试将 local.service.http.gzip.staticlocal.service.http.gzip.dynamic 设置为 0 以禁用数据压缩。如果这样能够解决问题,您可能需要更新代理服务器。

使用通配符模式的命令不起作用

某些 UNIX shell 可能需要用引号引起通配符参数,某些则不需要。例如,C shell 尝试将包含通配符(*、?)的参数扩展为文件,如果未找到任何匹配项,则将失败。这些模式匹配参数可能需要包含在引号中,以传递给命令(如 mboxutil)。

例如:

mboxutil -l -p user/usr44*

将在 Bourne shell 中运行,但在 tsch 和 C shell 中将失败。这些 shell 可能需要以下命令:

mboxutil -l -p "user/usr44*"

如果使用通配符模式的命令不起作用请验证是否需要为该 shell 的通配符使用引号。

未知/无效分区

如果用户邮箱被移动到刚创建的新分区并且尚未刷新或重新启动 Messaging Server,则用户将会从 Messenger Express 获得消息“未知/无效分区”。此问题仅在新分区中发生。如果现在向此新分区添加其他用户邮箱,则不必刷新/重新启动 Messaging Server。

用户邮箱目录问题

当邮件存储的损坏仅限于少数用户且没有对系统造成全局损坏时,将出现用户邮箱问题。以下指导建议了识别、分析和解决用户邮箱目录问题的进程:

  1. 查看日志文件、错误消息或用户观察到的任何异常性能。

  2. 要保存调试信息和历史记录,请将整个 store_root/mboxlist/ 用户目录复制到邮件存储以外的其他位置。

  3. 要查找可能导致问题的用户文件夹,请运行命令 reconstruct -r -n。如果使用 reconstruct 找不到该文件夹,则该文件夹可能不在 folder.db 中。

    如果使用 reconstruct -r -n 命令找不到该文件夹,使用 hashdir 命令以确定位置。有关 hashdir 的更多信息,请参见hashdir 实用程序,以及 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》 的 "Messaging Server Command-line Utilities" 一章中的 hashdir 实用程序部分。

  4. 找到文件夹后,请检查文件、检查权限并验证正确的文件大小。

  5. 使用 reconstruct -r(不使用 -n 选项)重建邮箱。

  6. 如果 reconstruct 未检测到您观察到的问题,您可以使用 reconstruct -r -f 命令强制执行对邮件文件夹的重建。

  7. 如果文件夹不在 mboxlist 目录 (store_root/mboxlist) 中,而是在 partition 目录 (store_root/partition) 中,则可能存在全局不一致性。在此情况下,应运行 reconstruct -m 命令。

  8. 如果前面的步骤不起作用,可以删除 store.idx 文件并再次运行 reconstruct 命令。


    注意 – 注意 –

    如果确定是在 reconstruct 命令无法找到的文件中有问题,则应仅删除 store.idx 文件。


  9. 如果问题限制为有问题的邮件,则应将邮件文件复制到邮件存储以外的其他位置,并对 mailbox/ 目录运行命令 reconstruct -r

  10. 如果确定文件夹存在于磁盘(store_root/partition/ 目录)上,但是显然不在数据库(store_root/mboxlist/ 目录)中,则运行命令 reconstruct -m 以确保邮件存储的一致性。

有关 reconstruct 命令的更多信息,请参见修复邮箱和邮箱数据库

store 守护程序不启动

如果 stored 不启动,并显示以下错误消息:


# msg_svr_base/sbin/start-msg

msg_svr_base: 正在启动 STORE 守护进程...致命错误: 无法找到名称服务中的组

这表示找不到 local.servergid 中配置的 UNIX 组。Stored 和其他命令需要将其 gid 设置到该组。有时 local.servergid 定义的组可能会被无意删除。在此情况下,请创建已删除的组,将 inetuser 添加到该组,将 instance_root 及其文件的拥有权更改为 inetuser 和该组。

将邮箱迁移或移动到新系统

有时必须将现有邮箱从一个邮件服务器系统移动到另一个邮件服务器系统中。这通常发生于以下情况:

Messaging Server 提供了若干种将邮箱从一个系统移动到另一个系统的方法。每种方法各有其优缺点。迁移用户邮箱中对这些方法进行了介绍。