private void RemoveDomain(int tenant, string user, int domainId) { try { var serverDal = new ServerDal(tenant); var serverData = serverDal.GetTenantServer(); if ((ServerType)serverData.type != ServerType.Postfix) { return; } var mailserverfactory = new PostfixFactory(); var setup = new ServerSetup .Builder(serverData.id, tenant, user) .SetConnectionString(serverData.connection_string) .SetLogger(_log) .Build(); var mailServer = mailserverfactory.CreateServer(setup); var domain = mailServer.GetWebDomain(domainId, mailserverfactory); mailServer.DeleteWebDomain(domain, mailserverfactory); } catch (Exception ex) { _log.Error("RemoveDomain(tenant={0}, user=\"{1}\", domainId={2}) Exception: \r\n {3} \r\n", tenant, user, domainId, ex.ToString()); } }
private void RemoveDomain(int tenant, string user, int domainId) { var serverDal = new ServerDal(tenant); var serverData = serverDal.GetTenantServer(); if ((ServerType)serverData.type != ServerType.Postfix) { return; } var mailserverfactory = new PostfixFactory(); var setup = new ServerSetup .Builder(serverData.id, tenant, user) .SetConnectionString(serverData.connection_string) .SetLogger(_log) .Build(); var mailServer = mailserverfactory.CreateServer(setup); var domain = mailServer.GetWebDomain(domainId, mailserverfactory); mailServer.DeleteWebDomain(domain, mailserverfactory); }
private void RemoveTeamlabMailbox(MailBox mailbox) { if (mailbox == null) { throw new ArgumentNullException("mailbox"); } if (!mailbox.IsTeamlab) { return; } try { var serverDal = new ServerDal(mailbox.TenantId); var serverData = serverDal.GetTenantServer(); if ((ServerType)serverData.type != ServerType.Postfix) { throw new NotSupportedException(); } var mailserverfactory = new PostfixFactory(); var limits = new ServerLimits.Builder() .SetMailboxMaxCountPerUser(2) .Build(); var dnsPresets = new DnsPresets.Builder() .SetMx(serverData.mx_record, 0) .SetSpfValue("Spf") .SetDkimSelector("Dkim") .SetDomainCheckPrefix("DomainCheck") .Build(); var setup = new ServerSetup .Builder(serverData.id, mailbox.TenantId, mailbox.UserId) .SetConnectionString(serverData.connection_string) .SetLogger(_log) .SetServerLimits(limits) .SetDnsPresets(dnsPresets) .Build(); var mailServer = mailserverfactory.CreateServer(setup); var tlMailbox = mailServer.GetMailbox(mailbox.MailBoxId, mailserverfactory); if (tlMailbox == null) { return; } var groups = mailServer.GetMailGroups(mailserverfactory); var groupsContainsMailbox = groups.Where(g => g.InAddresses.Contains(tlMailbox.Address)) .Select(g => g); foreach (var mailGroup in groupsContainsMailbox) { if (mailGroup.InAddresses.Count == 1) { mailServer.DeleteMailGroup(mailGroup.Id, mailserverfactory); } else { mailGroup.RemoveMember(tlMailbox.Address.Id); } } mailServer.DeleteMailbox(tlMailbox); } catch (Exception ex) { _log.Error("RemoveTeamlabMailbox(mailboxId = {0}) Failure\r\nException: {1}", mailbox.MailBoxId, ex.ToString()); } }