Search in sources :

Example 6 with Policy

use of com.zimbra.soap.mail.type.Policy in project zm-mailbox by Zimbra.

the class PurgeTest method tagPurgePolicy.

@Test
public void tagPurgePolicy() throws Exception {
    Mailbox mbox = MailboxManager.getInstance().getMailboxByAccountId(MockProvisioning.DEFAULT_ACCOUNT_ID);
    // Create folder and test messages.
    Tag tag = mbox.createTag(null, "tag", (byte) 0);
    Folder inbox = mbox.getFolderById(null, Mailbox.ID_FOLDER_INBOX);
    Message older = TestUtil.addMessage(mbox, inbox.getId(), "test1", System.currentTimeMillis() - (60 * Constants.MILLIS_PER_MINUTE));
    Message newer = TestUtil.addMessage(mbox, inbox.getId(), "test2", System.currentTimeMillis() - (30 * Constants.MILLIS_PER_MINUTE));
    Message notTagged = TestUtil.addMessage(mbox, inbox.getId(), "test3", System.currentTimeMillis() - (90 * Constants.MILLIS_PER_MINUTE));
    mbox.setTags(null, older.getId(), older.getType(), 0, new String[] { tag.getName() });
    mbox.setTags(null, newer.getId(), newer.getType(), 0, new String[] { tag.getName() });
    // Run purge with default settings and make sure nothing was deleted.
    mbox.purgeMessages(null);
    assertEquals(3, inbox.getSize());
    // Add retention policy.
    Policy p = Policy.newUserPolicy("45m");
    RetentionPolicy purgePolicy = new RetentionPolicy(null, Arrays.asList(p));
    mbox.setRetentionPolicy(null, tag.getId(), MailItem.Type.TAG, purgePolicy);
    // Purge the tag cache and make sure that purge policy is reloaded from metadata.
    mbox.purge(MailItem.Type.TAG);
    tag = mbox.getTagById(null, tag.getId());
    List<Policy> purgeList = tag.getRetentionPolicy().getPurgePolicy();
    assertEquals(1, purgeList.size());
    assertEquals("45m", purgeList.get(0).getLifetime());
    // Run purge and make sure one of the messages was deleted.
    mbox.purgeMessages(null);
    inbox = mbox.getFolderById(null, inbox.getId());
    assertEquals(2, inbox.getSize());
    mbox.getMessageById(null, newer.getId());
    mbox.getMessageById(null, notTagged.getId());
    try {
        mbox.getMessageById(null, older.getId());
        fail("Older message was not purged.");
    } catch (NoSuchItemException e) {
    }
    // Remove purge policy and verify that the folder state was properly updated.
    mbox.setRetentionPolicy(null, tag.getId(), MailItem.Type.TAG, null);
    mbox.purge(MailItem.Type.TAG);
    tag = mbox.getTagById(null, tag.getId());
    assertEquals(0, tag.getRetentionPolicy().getKeepPolicy().size());
    assertEquals(0, tag.getRetentionPolicy().getPurgePolicy().size());
}
Also used : Policy(com.zimbra.soap.mail.type.Policy) RetentionPolicy(com.zimbra.soap.mail.type.RetentionPolicy) RetentionPolicy(com.zimbra.soap.mail.type.RetentionPolicy) NoSuchItemException(com.zimbra.cs.mailbox.MailServiceException.NoSuchItemException) Test(org.junit.Test)

Example 7 with Policy

use of com.zimbra.soap.mail.type.Policy in project zm-mailbox by Zimbra.

the class PurgeTest method completeRetentionPolicy.

/**
     * Tests {@link RetentionPolicyManager#getCompleteRetentionPolicy(Account, RetentionPolicy).  Confirms
     * that system policy elements are updated with the latest values in LDAP.
     */
@Test
public void completeRetentionPolicy() throws Exception {
    RetentionPolicyManager mgr = RetentionPolicyManager.getInstance();
    Config config = Provisioning.getInstance().getConfig();
    Policy keep1 = mgr.createSystemKeepPolicy(config, "keep1", "300d");
    // Create mailbox policy that references the system policy, and confirm that
    // lookup returns the latest values.
    RetentionPolicy mboxRP = new RetentionPolicy(Arrays.asList(Policy.newSystemPolicy(keep1.getId())), null);
    RetentionPolicy completeRP = mgr.getCompleteRetentionPolicy(getAccount(), mboxRP);
    Policy latest = completeRP.getKeepPolicy().get(0);
    assertEquals(keep1, latest);
    // Modify system policy and confirm that the accessor returns the latest values.
    mgr.modifySystemPolicy(config, keep1.getId(), "new keep1", "301d");
    completeRP = mgr.getCompleteRetentionPolicy(getAccount(), mboxRP);
    latest = completeRP.getKeepPolicy().get(0);
    assertFalse(keep1.equals(latest));
    assertEquals(keep1.getId(), latest.getId());
    assertEquals("new keep1", latest.getName());
    assertEquals("301d", latest.getLifetime());
}
Also used : Policy(com.zimbra.soap.mail.type.Policy) RetentionPolicy(com.zimbra.soap.mail.type.RetentionPolicy) Config(com.zimbra.cs.account.Config) RetentionPolicy(com.zimbra.soap.mail.type.RetentionPolicy) Test(org.junit.Test)

Example 8 with Policy

use of com.zimbra.soap.mail.type.Policy in project zm-mailbox by Zimbra.

the class Mailbox method purgeMessages.

/**
     * Purges messages in system folders based on user- and admin-level purge settings on the account.
     * Returns {@code true} if all messages that meet the purge criteria were purged, {@code false} if the number of
     * messages to purge in any folder exceeded {@code maxItemsPerFolder}.
     */
public boolean purgeMessages(OperationContext octxt) throws ServiceException {
    Account acct = getAccount();
    int maxItemsPerFolder = Provisioning.getInstance().getLocalServer().getMailPurgeBatchSize();
    if (ZimbraLog.purge.isDebugEnabled()) {
        ZimbraLog.purge.debug("System retention policy: Trash=%s, Junk=%s, All messages=%s, Dumpster=%s", acct.getMailTrashLifetimeAsString(), acct.getMailSpamLifetimeAsString(), acct.getMailMessageLifetimeAsString(), acct.getMailDumpsterLifetimeAsString());
        ZimbraLog.purge.debug("User-specified retention policy: Inbox read=%s, Inbox unread=%s, Sent=%s, Junk=%s, Trash=%s, Versions=%s, VersionsEnabled=%s", acct.getPrefInboxReadLifetimeAsString(), acct.getPrefInboxUnreadLifetimeAsString(), acct.getPrefSentLifetimeAsString(), acct.getPrefJunkLifetimeAsString(), acct.getPrefTrashLifetimeAsString(), acct.getFileVersionLifetimeAsString(), acct.isFileVersioningEnabled());
    }
    long globalTimeout = acct.getMailMessageLifetime();
    long systemTrashTimeout = acct.getMailTrashLifetime();
    long systemJunkTimeout = acct.getMailSpamLifetime();
    boolean dumpsterPurgeEnabled = acct.isDumpsterPurgeEnabled();
    long systemDumpsterTimeoutMillis = dumpsterPurgeEnabled ? acct.getMailDumpsterLifetime() : 0;
    long userInboxReadTimeout = acct.getPrefInboxReadLifetime();
    long userInboxUnreadTimeout = acct.getPrefInboxUnreadLifetime();
    long userTrashTimeout = acct.getPrefTrashLifetime();
    long userJunkTimeout = acct.getPrefJunkLifetime();
    long userSentTimeout = acct.getPrefSentLifetime();
    long trashTimeout = pickTimeout(systemTrashTimeout, userTrashTimeout);
    long spamTimeout = pickTimeout(systemJunkTimeout, userJunkTimeout);
    boolean userFileVersioningEnabled = acct.isFileVersioningEnabled();
    long userFileVersionLifeTime = acct.getFileVersionLifetime();
    if (globalTimeout <= 0 && trashTimeout <= 0 && spamTimeout <= 0 && userInboxReadTimeout <= 0 && userInboxReadTimeout <= 0 && userInboxUnreadTimeout <= 0 && userSentTimeout <= 0 && systemDumpsterTimeoutMillis <= 0 && (!userFileVersioningEnabled || userFileVersionLifeTime <= 0)) {
        ZimbraLog.purge.debug("Retention policy does not require purge.");
        return true;
    }
    ZimbraLog.purge.info("Purging messages.");
    // sanity-check the really dangerous value...
    if (globalTimeout > 0 && globalTimeout < Constants.MILLIS_PER_MONTH) {
        // this min is also used by POP3 EXPIRE command. update Pop3Handler.MIN_EPXIRE_DAYS if it changes.
        ZimbraLog.purge.warn("global message timeout < 1 month; defaulting to 31 days");
        globalTimeout = Constants.MILLIS_PER_MONTH;
    }
    // call to purge expired messages with IMAP \Deleted flag
    // for expiration check, used zimbraMailTrashLifetime
    purgeExpiredIMAPDeletedMessages(trashTimeout);
    PurgeOldMessages redoRecorder = new PurgeOldMessages(mId);
    boolean success = false;
    try {
        beginTransaction("purgeMessages", octxt, redoRecorder);
        // get the folders we're going to be purging
        Folder trash = getFolderById(ID_FOLDER_TRASH);
        Folder spam = getFolderById(ID_FOLDER_SPAM);
        Folder sent = getFolderById(ID_FOLDER_SENT);
        Folder inbox = getFolderById(ID_FOLDER_INBOX);
        boolean purgedAll = true;
        if (globalTimeout > 0) {
            int numPurged = Folder.purgeMessages(this, null, getOperationTimestampMillis() - globalTimeout, null, false, false, maxItemsPerFolder);
            ZimbraLog.purge.debug("Purged %d messages from All Folders", numPurged);
            purgedAll = updatePurgedAll(purgedAll, numPurged, maxItemsPerFolder);
        }
        if (trashTimeout > 0) {
            boolean useChangeDate = acct.getBooleanAttr(Provisioning.A_zimbraMailPurgeUseChangeDateForTrash, true);
            int numPurged = Folder.purgeMessages(this, trash, getOperationTimestampMillis() - trashTimeout, null, useChangeDate, true, maxItemsPerFolder);
            ZimbraLog.purge.debug("Purged %d messages from Trash", numPurged);
            purgedAll = updatePurgedAll(purgedAll, numPurged, maxItemsPerFolder);
        }
        if (spamTimeout > 0) {
            boolean useChangeDate = acct.isMailPurgeUseChangeDateForSpam();
            int numPurged = Folder.purgeMessages(this, spam, getOperationTimestampMillis() - spamTimeout, null, useChangeDate, false, maxItemsPerFolder);
            purgedAll = updatePurgedAll(purgedAll, numPurged, maxItemsPerFolder);
            ZimbraLog.purge.debug("Purged %d messages from Spam", numPurged);
        }
        if (userInboxReadTimeout > 0) {
            int numPurged = Folder.purgeMessages(this, inbox, getOperationTimestampMillis() - userInboxReadTimeout, false, false, false, maxItemsPerFolder);
            purgedAll = updatePurgedAll(purgedAll, numPurged, maxItemsPerFolder);
            ZimbraLog.purge.debug("Purged %d read messages from Inbox", numPurged);
        }
        if (userInboxUnreadTimeout > 0) {
            int numPurged = Folder.purgeMessages(this, inbox, getOperationTimestampMillis() - userInboxUnreadTimeout, true, false, false, maxItemsPerFolder);
            purgedAll = updatePurgedAll(purgedAll, numPurged, maxItemsPerFolder);
            ZimbraLog.purge.debug("Purged %d unread messages from Inbox", numPurged);
        }
        if (userSentTimeout > 0) {
            int numPurged = Folder.purgeMessages(this, sent, getOperationTimestampMillis() - userSentTimeout, null, false, false, maxItemsPerFolder);
            purgedAll = updatePurgedAll(purgedAll, numPurged, maxItemsPerFolder);
            ZimbraLog.purge.debug("Purged %d messages from Sent", numPurged);
        }
        if (systemDumpsterTimeoutMillis > 0) {
            int numPurged = purgeDumpster(getOperationTimestampMillis() - systemDumpsterTimeoutMillis, maxItemsPerFolder);
            ZimbraLog.purge.debug("Purged %d messages from Dumpster", numPurged);
            purgedAll = updatePurgedAll(purgedAll, numPurged, maxItemsPerFolder);
        }
        if (userFileVersioningEnabled && userFileVersionLifeTime > 0) {
            int numPurged = MailItem.purgeRevisions(this, getOperationTimestampMillis() - userFileVersionLifeTime);
            ZimbraLog.purge.debug("Purged %d revisions", numPurged);
        }
        // Process any folders that have retention policy set.
        for (Folder folder : getFolderList(octxt, SortBy.NONE)) {
            RetentionPolicy rp = RetentionPolicyManager.getInstance().getCompleteRetentionPolicy(acct, folder.getRetentionPolicy());
            for (Policy policy : rp.getPurgePolicy()) {
                long folderLifetime;
                try {
                    folderLifetime = DateUtil.getTimeInterval(policy.getLifetime());
                } catch (ServiceException e) {
                    ZimbraLog.purge.error("Invalid purge lifetime set for folder %s.", folder.getPath(), e);
                    continue;
                }
                long folderTimeout = getOperationTimestampMillis() - folderLifetime;
                int numPurged = Folder.purgeMessages(this, folder, folderTimeout, null, false, false, maxItemsPerFolder);
                purgedAll = updatePurgedAll(purgedAll, numPurged, maxItemsPerFolder);
            }
        }
        // Process any tags that have retention policy set.
        for (Tag tag : getTagList(octxt)) {
            RetentionPolicy rp = RetentionPolicyManager.getInstance().getCompleteRetentionPolicy(acct, tag.getRetentionPolicy());
            for (Policy policy : rp.getPurgePolicy()) {
                long tagLifetime;
                try {
                    tagLifetime = DateUtil.getTimeInterval(policy.getLifetime());
                } catch (ServiceException e) {
                    ZimbraLog.purge.error("Invalid purge lifetime set for tag %s.", tag.getName(), e);
                    continue;
                }
                long tagTimeout = getOperationTimestampMillis() - tagLifetime;
                PendingDelete info = DbTag.getLeafNodes(this, tag, (int) (tagTimeout / 1000), maxItemsPerFolder);
                MailItem.delete(this, info, null, false, false);
                List<Integer> ids = info.itemIds.getIds(MailItem.Type.MESSAGE);
                int numPurged = (ids == null ? 0 : ids.size());
                purgedAll = updatePurgedAll(purgedAll, numPurged, maxItemsPerFolder);
            }
        }
        // deletes have already been collected, so fetch the tombstones and write once
        TypedIdList tombstones = collectPendingTombstones();
        if (tombstones != null && !tombstones.isEmpty()) {
            DbMailItem.writeTombstones(this, tombstones);
        }
        if (Threader.isHashPurgeAllowed(acct)) {
            int convTimeoutSecs = (int) (LC.conversation_max_age_ms.longValue() / Constants.MILLIS_PER_SECOND);
            DbMailItem.closeOldConversations(this, getOperationTimestamp() - convTimeoutSecs);
        }
        if (isTrackingSync()) {
            int tombstoneTimeoutSecs = (int) (LC.tombstone_max_age_ms.longValue() / Constants.MILLIS_PER_SECOND);
            int largestTrimmed = DbMailItem.purgeTombstones(this, getOperationTimestamp() - tombstoneTimeoutSecs);
            if (largestTrimmed > getSyncCutoff()) {
                currentChange().sync = largestTrimmed;
                DbMailbox.setSyncCutoff(this, currentChange().sync);
            }
        }
        // record the purge time.
        if (purgedAll) {
            DbMailbox.updateLastPurgeAt(this, System.currentTimeMillis());
        }
        success = true;
        ZimbraLog.purge.debug("purgedAll=%b", purgedAll);
        return purgedAll;
    } finally {
        endTransaction(success);
    }
}
Also used : PurgeOldMessages(com.zimbra.cs.redolog.op.PurgeOldMessages) RetentionPolicy(com.zimbra.soap.mail.type.RetentionPolicy) SetRetentionPolicy(com.zimbra.cs.redolog.op.SetRetentionPolicy) Policy(com.zimbra.soap.mail.type.Policy) Account(com.zimbra.cs.account.Account) CreateFolder(com.zimbra.cs.redolog.op.CreateFolder) ZFolder(com.zimbra.client.ZFolder) RetentionPolicy(com.zimbra.soap.mail.type.RetentionPolicy) SetRetentionPolicy(com.zimbra.cs.redolog.op.SetRetentionPolicy) TypedIdList(com.zimbra.cs.mailbox.util.TypedIdList) RefreshMountpoint(com.zimbra.cs.redolog.op.RefreshMountpoint) TargetConstraint(com.zimbra.cs.mailbox.MailItem.TargetConstraint) CreateMountpoint(com.zimbra.cs.redolog.op.CreateMountpoint) AccountServiceException(com.zimbra.cs.account.AccountServiceException) ServiceException(com.zimbra.common.service.ServiceException) AlterItemTag(com.zimbra.cs.redolog.op.AlterItemTag) CreateTag(com.zimbra.cs.redolog.op.CreateTag) DbTag(com.zimbra.cs.db.DbTag) PendingDelete(com.zimbra.cs.mailbox.MailItem.PendingDelete)

Example 9 with Policy

use of com.zimbra.soap.mail.type.Policy in project zm-mailbox by Zimbra.

the class TestPurge method testTagRetentionPolicy.

@Test
public void testTagRetentionPolicy() throws Exception {
    ZMailbox mbox = TestUtil.getZMailbox(USER_NAME);
    ZTag tag = mbox.createTag(NAME_PREFIX + "-testTagRetentionPolicy", null);
    // Set user keep policy for folder.
    TagActionSelector action = new TagActionSelector(tag.getId(), "retentionpolicy");
    RetentionPolicy rp = new RetentionPolicy(Arrays.asList(Policy.newUserPolicy("30d")), null);
    action.setRetentionPolicy(rp);
    TagActionRequest req = new TagActionRequest(action);
    TagActionResponse res = mbox.invokeJaxb(req);
    Assert.assertEquals("retentionpolicy", res.getAction().getOperation());
    Assert.assertEquals(tag.getId(), res.getAction().getSuccesses());
    // Make sure that the retention policy is now set.
    tag = mbox.getTagById(tag.getId());
    rp = tag.getRetentionPolicy();
    Assert.assertEquals(1, rp.getKeepPolicy().size());
    Assert.assertEquals(0, rp.getPurgePolicy().size());
    Policy p = rp.getKeepPolicy().get(0);
    Assert.assertEquals(Policy.Type.USER, p.getType());
    Assert.assertEquals("30d", p.getLifetime());
    // Turn off keep policy and set purge policy.
    action = new TagActionSelector(tag.getId(), "retentionpolicy");
    rp = new RetentionPolicy(null, Arrays.asList(Policy.newUserPolicy("45d")));
    action.setRetentionPolicy(rp);
    req = new TagActionRequest(action);
    res = mbox.invokeJaxb(req);
    Assert.assertEquals("retentionpolicy", res.getAction().getOperation());
    Assert.assertEquals(tag.getId(), res.getAction().getSuccesses());
    // Make sure that the retention policy is now set.
    tag = mbox.getTagById(tag.getId());
    rp = tag.getRetentionPolicy();
    Assert.assertEquals(0, rp.getKeepPolicy().size());
    Assert.assertEquals(1, rp.getPurgePolicy().size());
    p = rp.getPurgePolicy().get(0);
    Assert.assertEquals(Policy.Type.USER, p.getType());
    Assert.assertEquals("45d", p.getLifetime());
    // Start a new session and make sure that the retention policy is still returned.
    mbox = TestUtil.getZMailbox(USER_NAME);
    tag = mbox.getTagById(tag.getId());
    Assert.assertTrue(tag.getRetentionPolicy().isSet());
}
Also used : Policy(com.zimbra.soap.mail.type.Policy) RetentionPolicy(com.zimbra.soap.mail.type.RetentionPolicy) ZMailbox(com.zimbra.client.ZMailbox) TagActionResponse(com.zimbra.soap.mail.message.TagActionResponse) TagActionRequest(com.zimbra.soap.mail.message.TagActionRequest) ZTag(com.zimbra.client.ZTag) RetentionPolicy(com.zimbra.soap.mail.type.RetentionPolicy) TagActionSelector(com.zimbra.soap.mail.type.TagActionSelector) Test(org.junit.Test)

Example 10 with Policy

use of com.zimbra.soap.mail.type.Policy in project zm-mailbox by Zimbra.

the class TestPurge method testFolderRetentionPolicy.

/**
     * Tests the SOAP API for setting retention policy on a folder.
     */
@Test
public void testFolderRetentionPolicy() throws Exception {
    ZMailbox mbox = TestUtil.getZMailbox(USER_NAME);
    ZFolder folder = TestUtil.createFolder(mbox, "/" + NAME_PREFIX + "-testFolderRetentionPolicy");
    // Set user keep policy for folder.
    FolderActionSelector action = new FolderActionSelector(folder.getId(), "retentionpolicy");
    RetentionPolicy rp = new RetentionPolicy(Arrays.asList(Policy.newUserPolicy("30d")), null);
    action.setRetentionPolicy(rp);
    FolderActionRequest req = new FolderActionRequest(action);
    FolderActionResponse res = mbox.invokeJaxb(req);
    Assert.assertEquals("retentionpolicy", res.getAction().getOperation());
    Assert.assertEquals(folder.getId(), res.getAction().getId());
    // Make sure that the retention policy is now set.
    folder = mbox.getFolderById(folder.getId());
    rp = folder.getRetentionPolicy();
    Assert.assertEquals(1, rp.getKeepPolicy().size());
    Assert.assertEquals(0, rp.getPurgePolicy().size());
    Policy p = rp.getKeepPolicy().get(0);
    Assert.assertEquals(Policy.Type.USER, p.getType());
    Assert.assertEquals("30d", p.getLifetime());
    // Turn off keep policy and set purge policy.
    action = new FolderActionSelector(folder.getId(), "retentionpolicy");
    rp = new RetentionPolicy(null, Arrays.asList(Policy.newUserPolicy("45d")));
    action.setRetentionPolicy(rp);
    req = new FolderActionRequest(action);
    res = mbox.invokeJaxb(req);
    Assert.assertEquals("retentionpolicy", res.getAction().getOperation());
    Assert.assertEquals(folder.getId(), res.getAction().getId());
    // Make sure that the retention policy is now set.
    folder = mbox.getFolderById(folder.getId());
    rp = folder.getRetentionPolicy();
    Assert.assertEquals(0, rp.getKeepPolicy().size());
    Assert.assertEquals(1, rp.getPurgePolicy().size());
    p = rp.getPurgePolicy().get(0);
    Assert.assertEquals(Policy.Type.USER, p.getType());
    Assert.assertEquals("45d", p.getLifetime());
    // Start a new session and make sure that the retention policy is still returned.
    mbox = TestUtil.getZMailbox(USER_NAME);
    folder = mbox.getFolderById(folder.getId());
    Assert.assertTrue(folder.getRetentionPolicy().isSet());
}
Also used : Policy(com.zimbra.soap.mail.type.Policy) RetentionPolicy(com.zimbra.soap.mail.type.RetentionPolicy) FolderActionSelector(com.zimbra.soap.mail.type.FolderActionSelector) ZMailbox(com.zimbra.client.ZMailbox) FolderActionRequest(com.zimbra.soap.mail.message.FolderActionRequest) FolderActionResponse(com.zimbra.soap.mail.message.FolderActionResponse) ZFolder(com.zimbra.client.ZFolder) RetentionPolicy(com.zimbra.soap.mail.type.RetentionPolicy) Test(org.junit.Test)

Aggregations

Policy (com.zimbra.soap.mail.type.Policy)28 RetentionPolicy (com.zimbra.soap.mail.type.RetentionPolicy)25 Test (org.junit.Test)12 Config (com.zimbra.cs.account.Config)6 Provisioning (com.zimbra.cs.account.Provisioning)4 ZMailbox (com.zimbra.client.ZMailbox)3 ServiceException (com.zimbra.common.service.ServiceException)3 Cos (com.zimbra.cs.account.Cos)3 Entry (com.zimbra.cs.account.Entry)3 NoSuchItemException (com.zimbra.cs.mailbox.MailServiceException.NoSuchItemException)3 ZimbraSoapContext (com.zimbra.soap.ZimbraSoapContext)3 CosSelector (com.zimbra.soap.admin.type.CosSelector)3 ZFolder (com.zimbra.client.ZFolder)2 Element (com.zimbra.common.soap.Element)2 CreateSystemRetentionPolicyRequest (com.zimbra.soap.admin.message.CreateSystemRetentionPolicyRequest)2 CreateSystemRetentionPolicyResponse (com.zimbra.soap.admin.message.CreateSystemRetentionPolicyResponse)2 DeleteSystemRetentionPolicyRequest (com.zimbra.soap.admin.message.DeleteSystemRetentionPolicyRequest)2 DeleteSystemRetentionPolicyResponse (com.zimbra.soap.admin.message.DeleteSystemRetentionPolicyResponse)2 ModifySystemRetentionPolicyRequest (com.zimbra.soap.admin.message.ModifySystemRetentionPolicyRequest)2 ModifySystemRetentionPolicyResponse (com.zimbra.soap.admin.message.ModifySystemRetentionPolicyResponse)2