public AddressData AddMailboxAlias(int mailbox_id, string alias_name) { if (string.IsNullOrEmpty(alias_name)) { throw new ArgumentException("Invalid alias name.", "alias_name"); } if (mailbox_id < 0) { throw new ArgumentException("Invalid mailbox id.", "mailbox_id"); } if (alias_name.Length > 64) { throw new ArgumentException("Local part of mailbox alias exceed limitation of 64 characters.", "alias_name"); } if (!Parser.IsEmailLocalPartValid(alias_name)) { throw new ArgumentException("Incorrect mailbox alias."); } var mailbox = MailServer.GetMailbox(mailbox_id, MailServerFactory); var mailbox_alias_name = alias_name.ToLowerInvariant(); var alias = mailbox.AddAlias(mailbox_alias_name, mailbox.Address.Domain, MailServerFactory); return(alias.ToAddressData()); }
public int RemoveMailboxAlias(int mailbox_id, int address_id) { if (!IsAdmin) { throw new SecurityException("Need admin privileges."); } if (address_id < 0) { throw new ArgumentException(@"Invalid address id.", "address_id"); } if (mailbox_id < 0) { throw new ArgumentException(@"Invalid mailbox id.", "mailbox_id"); } var mailbox = MailServer.GetMailbox(mailbox_id, MailServerFactory); if (mailbox == null) { throw new ArgumentException("Mailbox not exists"); } mailbox.RemoveAlias(address_id); MailBoxManager.CachedAccounts.Clear(mailbox.Account.TeamlabAccount.ID.ToString()); return(mailbox_id); }
public int RemoveMailbox(int id) { if (id < 0) { throw new ArgumentException("Invalid domain id.", "id"); } var mailbox = MailServer.GetMailbox(id, MailServerFactory); var groups = MailServer.GetMailGroups(MailServerFactory); var groups_contains_mailbox = groups.Where(g => g.InAddresses.Contains(mailbox.Address)) .Select(g => g); foreach (var mail_group in groups_contains_mailbox) { if (mail_group.InAddresses.Count == 1) { MailServer.DeleteMailGroup(mail_group.Id, MailServerFactory); } else { mail_group.RemoveMember(mailbox.Address.Id); } } MailServer.DeleteMailbox(mailbox); return(id); }
public MailboxData UpdateMailbox(int mailbox_id, string name) { if (!IsAdmin) { throw new SecurityException("Need admin privileges."); } if (mailbox_id < 0) { throw new ArgumentException(@"Invalid mailbox id.", "mailbox_id"); } if (name.Length > 255) { throw new ArgumentException(@"Sender name exceed limitation of 64 characters.", "name"); } var mailbox = MailServer.GetMailbox(mailbox_id, MailServerFactory); if (mailbox == null) { throw new ArgumentException("Mailbox not exists"); } MailServer.UpdateMailbox(mailbox, name, MailServerFactory); MailBoxManager.CachedAccounts.Clear(mailbox.Account.TeamlabAccount.ID.ToString()); return(mailbox.ToMailboxData()); }
public MailOperationStatus RemoveMailbox(int id) { if (id < 0) { throw new ArgumentException(@"Invalid domain id.", "id"); } var mailbox = MailServer.GetMailbox(id, MailServerFactory); if (mailbox == null) { throw new ItemNotFoundException("Account not found."); } var isSharedDomain = mailbox.Address.Domain.Tenant == Defines.SHARED_TENANT_ID; if (!IsAdmin && !isSharedDomain) { throw new SecurityException("Need admin privileges."); } if (isSharedDomain && !IsAdmin && mailbox.Account.TeamlabAccount.ID != SecurityContext.CurrentAccount.ID) { throw new SecurityException("Removing of a shared mailbox is allowed only for the current account if user is not admin."); } return(RemoveMailbox(mailbox)); }
public int RemoveMailboxAlias(int mailbox_id, int address_id) { if (!IsAdmin) { throw new SecurityException("Need admin privileges."); } if (address_id < 0) { throw new ArgumentException(@"Invalid address id.", "address_id"); } if (mailbox_id < 0) { throw new ArgumentException(@"Invalid mailbox id.", "mailbox_id"); } var mailbox = MailServer.GetMailbox(mailbox_id, MailServerFactory); if (mailbox == null) { throw new ArgumentException("Mailbox not exists"); } mailbox.RemoveAlias(address_id); return(mailbox_id); }
public int RemoveMailbox(int id) { if (id < 0) { throw new ArgumentException(@"Invalid domain id.", "id"); } var mailbox = MailServer.GetMailbox(id, MailServerFactory); if (mailbox == null) { throw new ItemNotFoundException("Account not found."); } var isSharedDomain = mailbox.Address.Domain.Tenant == Defines.SHARED_TENANT_ID; if (!IsAdmin && !isSharedDomain) { throw new SecurityException("Need admin privileges."); } if (isSharedDomain && !IsAdmin && mailbox.Account.TeamlabAccount.ID != SecurityContext.CurrentAccount.ID) { throw new SecurityException("Removing of a shared mailbox is allowed only for the current account if user is not admin."); } var groups = MailServer.GetMailGroups(MailServerFactory); var groupsContainsMailbox = groups.Where(g => g.InAddresses.Contains(mailbox.Address)) .Select(g => g); foreach (var mailGroup in groupsContainsMailbox) { if (mailGroup.InAddresses.Count == 1) { MailServer.DeleteMailGroup(mailGroup.Id, MailServerFactory); } else { mailGroup.RemoveMember(mailbox.Address.Id); } } MailServer.DeleteMailbox(mailbox); MailBoxManager.CachedAccounts.Clear(mailbox.Account.TeamlabAccount.ID.ToString()); return(id); }
public AddressData AddMailboxAlias(int mailbox_id, string alias_name) { if (!IsAdmin) { throw new SecurityException("Need admin privileges."); } if (string.IsNullOrEmpty(alias_name)) { throw new ArgumentException(@"Invalid alias name.", "alias_name"); } if (mailbox_id < 0) { throw new ArgumentException(@"Invalid mailbox id.", "mailbox_id"); } if (alias_name.Length > 64) { throw new ArgumentException(@"Local part of mailbox alias exceed limitation of 64 characters.", "alias_name"); } if (!Parser.IsEmailLocalPartValid(alias_name)) { throw new ArgumentException("Incorrect mailbox alias."); } var mailbox = MailServer.GetMailbox(mailbox_id, MailServerFactory); if (mailbox == null) { throw new ArgumentException("Mailbox not exists"); } if (mailbox.Address.Domain.Tenant == Defines.SHARED_TENANT_ID) { throw new InvalidOperationException("Adding mailbox alias is not allowed for shared domain."); } var mailboxAliasName = alias_name.ToLowerInvariant(); var alias = mailbox.AddAlias(mailboxAliasName, mailbox.Address.Domain, MailServerFactory); MailBoxManager.CachedAccounts.Clear(mailbox.Account.TeamlabAccount.ID.ToString()); return(alias.ToAddressData()); }
public int RemoveMailboxAlias(int mailbox_id, int address_id) { if (address_id < 0) { throw new ArgumentException("Invalid address id.", "address_id"); } if (mailbox_id < 0) { throw new ArgumentException("Invalid mailbox id.", "mailbox_id"); } var mailbox = MailServer.GetMailbox(mailbox_id, MailServerFactory); mailbox.RemoveAlias(address_id); return(mailbox_id); }