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()); } }
public async Task <bool> DeleteFromServer(object o, DataType d) { clientHandler.UseCookies = true; var postfixCreator = PostfixFactory.Generate(d); var postfix = postfixCreator.Generate(o); var rep = await client.DeleteAsync($"{UrlFactory.Generate(d)}/{postfix}"); Debug.WriteLine(rep.StatusCode, "Status, delete"); Debug.WriteLine(rep); return(rep.IsSuccessStatusCode); }
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()); } }