Beispiel #1
0
        public void TestNormalUserAccessOtherAccount()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            account.AdminLevel = hMailServer.eAdminLevel.hAdminLevelNormal;
            account.Save();

            hMailServer.Account secondAccount = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            secondAccount.AdminLevel = hMailServer.eAdminLevel.hAdminLevelNormal;
            secondAccount.Save();

            hMailServer.Application newApplication = new hMailServer.Application();
            newApplication.Authenticate("*****@*****.**", "test");
            Assert.AreEqual(1, newApplication.Domains.Count);
            Assert.AreEqual(1, newApplication.Domains[0].Accounts.Count);

            hMailServer.Account myAccount = newApplication.Domains[0].Accounts.get_ItemByAddress("*****@*****.**");

            try
            {
                hMailServer.Account otherAccount = newApplication.Domains[0].Accounts.get_ItemByAddress("*****@*****.**");

                Assert.Fail();
            }
            catch (COMException ex)
            {
                Assert.IsTrue(ex.Message.Contains("Invalid index."));
            }

            hMailServer.Domains domains = SingletonProvider <Utilities> .Instance.GetApp().Domains;

            Assert.AreEqual(2, domains[0].Accounts.Count);
        }
Beispiel #2
0
        public void TestMultipleDomains()
        {
            hMailServer.Domains domains = SingletonProvider <Utilities> .Instance.GetApp().Domains;

            hMailServer.Account account1 = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            hMailServer.Account account2 = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            hMailServer.Domain domain2 = SingletonProvider <Utilities> .Instance.AddDomain(domains, "test2.com");

            hMailServer.Account account3 = SingletonProvider <Utilities> .Instance.AddAccount(domain2, "*****@*****.**", "test");

            hMailServer.Account account4 = SingletonProvider <Utilities> .Instance.AddAccount(domain2, "*****@*****.**", "test");

            SMTPClientSimulator smtpSimulator = new SMTPClientSimulator();

            smtpSimulator.Send("*****@*****.**", account1.Address, "Test", "*****@*****.**");
            smtpSimulator.Send("*****@*****.**", account2.Address, "Test", "*****@*****.**");
            smtpSimulator.Send("*****@*****.**", account3.Address, "Test", "*****@*****.**");
            smtpSimulator.Send("*****@*****.**", account4.Address, "Test", "*****@*****.**");

            Assert.IsTrue(POP3Simulator.AssertGetFirstMessageText(account1.Address, "test").Contains(account1.Address));
            Assert.IsTrue(POP3Simulator.AssertGetFirstMessageText(account2.Address, "test").Contains(account2.Address));
            Assert.IsTrue(POP3Simulator.AssertGetFirstMessageText(account3.Address, "test").Contains(account3.Address));
            Assert.IsTrue(POP3Simulator.AssertGetFirstMessageText(account4.Address, "test").Contains(account4.Address));
        }
Beispiel #3
0
        public void TestDomainAdminAccessOtherDomain()
        {
            hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            account.AdminLevel = hMailServer.eAdminLevel.hAdminLevelDomainAdmin;
            account.Save();

            SingletonProvider <Utilities> .Instance.AddDomain("example.com");

            hMailServer.Application newApplication = new hMailServer.Application();
            newApplication.Authenticate("*****@*****.**", "test");
            Assert.AreEqual(1, newApplication.Domains.Count);

            hMailServer.Domains domains = SingletonProvider <Utilities> .Instance.GetApp().Domains;

            Assert.AreEqual(2, domains.Count);

            try
            {
                hMailServer.Domain secondDomain = newApplication.Domains.get_ItemByName("example.com");
                Assert.Fail();
            }
            catch (COMException ex)
            {
                Assert.IsTrue(ex.Message.Contains("Invalid index."));
            }
        }
Beispiel #4
0
        public void LoadData()
        {
            comboLocalDomain.Items.Clear();

            hMailServer.Domains domains = APICreator.Application.Domains;
            string domainNames          = domains.Names;

            string[] rows = Microsoft.VisualBasic.Strings.Split(domainNames, "\r\n", -1, Microsoft.VisualBasic.CompareMethod.Binary);

            List <ListViewItem> items = new List <ListViewItem>();

            comboLocalDomain.AddItem("", null);

            foreach (string row in rows)
            {
                if (string.IsNullOrEmpty(row))
                {
                    continue;
                }

                string[] properties = Microsoft.VisualBasic.Strings.Split(row, "\t", -1, Microsoft.VisualBasic.CompareMethod.Text);

                int    id   = Convert.ToInt32(properties[0]);
                string name = properties[1];
                comboLocalDomain.AddItem(name, null);
            }

            Marshal.ReleaseComObject(domains);
        }
Beispiel #5
0
        public ucProgress()
        {
            InitializeComponent();

            _application = Globals.GetApp();
            _utilities   = _application.Utilities;
            _domains     = _application.Domains;
            _counter     = 0;
        }
Beispiel #6
0
        public ucProgress()
        {
            InitializeComponent();

             _application = Globals.GetApp();
             _utilities = _application.Utilities;
             _domains = _application.Domains;
             _counter = 0;
        }
Beispiel #7
0
        public hMailServer.Domain AddDomain(hMailServer.Domains oDomains, string sName)
        {
            hMailServer.Domain oDomain = oDomains.Add();
            oDomain.Name   = sName;
            oDomain.Active = true;
            oDomain.Save();

            return(oDomain);
        }
Beispiel #8
0
        public void ClearDomains()
        {
            hMailServer.Domains domains = application.Domains;

            while (domains.Count > 0)
            {
                hMailServer.Domain domain = domains[0];
                domain.Delete();
            }
        }
Beispiel #9
0
        public void TestDomain()
        {
            hMailServer.Domains domains = SingletonProvider <Utilities> .Instance.GetApp().Domains;

            _domain = SingletonProvider <Utilities> .Instance.AddDomain(domains, "t'est2.com");

            if (_domain.ID == 0)
            {
                throw new Exception("Domain not properly saved");
            }

            _domain.Delete();
        }
Beispiel #10
0
        protected override void DeleteItems(List <ListViewItem> items)
        {
            hMailServer.Domains domains = APICreator.Application.Domains;

            foreach (var item in items)
            {
                int domainID = Convert.ToInt32(item.Tag);
                hMailServer.Domain domain = domains.get_ItemByDBID(domainID);
                domain.Delete();
                Marshal.ReleaseComObject(domain);
            }

            Marshal.ReleaseComObject(domains);
        }
        public void TestDomainNameDuplicate()
        {
            hMailServer.Domains domains = SingletonProvider <Utilities> .Instance.GetApp().Domains;

            SingletonProvider <Utilities> .Instance.AddDomain(domains, "test2.com");

            try
            {
                SingletonProvider <Utilities> .Instance.AddDomain(domains, "test2.com");
            }
            catch (Exception)
            {
                return;
            }
            Assert.Fail("Duplicate domain name was permitted.");
        }
        public void TestDomainAliasWithSameNameAsDomain()
        {
            hMailServer.Domains domains = SingletonProvider <Utilities> .Instance.GetApp().Domains;

            hMailServer.DomainAlias da = _domain.DomainAliases.Add();
            da.AliasName = "test.com";

            try
            {
                da.Save();
            }
            catch (Exception)
            {
                return;
            }
            Assert.Fail("Domain alias with same name as domain was permitted.");
        }
Beispiel #13
0
        public void TestDomainRenaming()
        {
            hMailServer.Domains domains = SingletonProvider <Utilities> .Instance.GetApp().Domains;

            _domain = SingletonProvider <Utilities> .Instance.AddDomain(domains, "test2.com");

            // Add a few accounts
            SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "t1");

            SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "t1");

            SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "t1");

            SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "t1");

            SingletonProvider <Utilities> .Instance.AddAlias(_domain, "*****@*****.**", "t1");

            SingletonProvider <Utilities> .Instance.AddAlias(_domain, "*****@*****.**", "t1");

            SingletonProvider <Utilities> .Instance.AddAlias(_domain, "*****@*****.**", "t1");

            List <string> list = new List <string>();

            SingletonProvider <Utilities> .Instance.AddDistributionList(_domain, "*****@*****.**", list);

            SingletonProvider <Utilities> .Instance.AddDistributionList(_domain, "*****@*****.**", list);

            SingletonProvider <Utilities> .Instance.AddDistributionList(_domain, "*****@*****.**", list);

            _domain.Name = "test3.com";
            _domain.Save();

            Assert.IsNotNull(_domain.Accounts.get_ItemByAddress("*****@*****.**"));
            Assert.IsNotNull(_domain.Accounts.get_ItemByAddress("*****@*****.**"));
            Assert.IsNotNull(_domain.Accounts.get_ItemByAddress("*****@*****.**"));
            Assert.IsNotNull(_domain.Accounts.get_ItemByAddress("*****@*****.**"));

            Assert.IsNotNull(_domain.Aliases.get_ItemByName("*****@*****.**"));
            Assert.IsNotNull(_domain.Aliases.get_ItemByName("*****@*****.**"));
            Assert.IsNotNull(_domain.Aliases.get_ItemByName("*****@*****.**"));

            Assert.IsNotNull(_domain.DistributionLists.get_ItemByAddress("*****@*****.**"));
            Assert.IsNotNull(_domain.DistributionLists.get_ItemByAddress("*****@*****.**"));
            Assert.IsNotNull(_domain.DistributionLists.get_ItemByAddress("*****@*****.**"));
        }
Beispiel #14
0
        public ucSelectDomain()
        {
            InitializeComponent();

            hMailServer.Application application = Globals.GetApp();
            hMailServer.Domains     domains     = application.Domains;

            for (int i = 0; i < domains.Count; i++)
            {
                hMailServer.Domain domain = domains[i];

                listViewDomains.Items.Add(domain.Name);

                Marshal.ReleaseComObject(domain);
            }

            Marshal.ReleaseComObject(domains);
        }
Beispiel #15
0
        private void FillCombos()
        {
            comboType.AddItem(EnumStrings.GetPermissionTypeString(eACLPermissionType.ePermissionTypeUser), eACLPermissionType.ePermissionTypeUser);

            if (_onlyUsers == false)
            {
                comboType.AddItem(EnumStrings.GetPermissionTypeString(eACLPermissionType.ePermissionTypeGroup), eACLPermissionType.ePermissionTypeGroup);
                comboType.AddItem(EnumStrings.GetPermissionTypeString(eACLPermissionType.ePermissionTypeAnyone), eACLPermissionType.ePermissionTypeAnyone);
            }

            comboType.SelectedIndex = 0;


            hMailServer.Domains domains = APICreator.Application.Domains;
            string domainNames          = domains.Names;

            Marshal.ReleaseComObject(domains);

            string[] rows = Microsoft.VisualBasic.Strings.Split(domainNames, "\r\n", -1, Microsoft.VisualBasic.CompareMethod.Binary);

            foreach (string row in rows)
            {
                if (string.IsNullOrEmpty(row))
                {
                    continue;
                }

                string[] properties = Microsoft.VisualBasic.Strings.Split(row, "\t", -1, Microsoft.VisualBasic.CompareMethod.Text);

                int    id   = Convert.ToInt32(properties[0]);
                string name = properties[1];

                if (_specificDomainID == 0 || _specificDomainID == id)
                {
                    comboDomains.AddItem(name, id);
                }
            }


            if (comboDomains.Items.Count > 0)
            {
                comboDomains.SelectedIndex = 0;
            }
        }
Beispiel #16
0
        protected override void LoadList()
        {
            listDomains.Items.Clear();

            hMailServer.Application app     = APICreator.Application;
            hMailServer.Domains     domains = app.Domains;

            string domainNames = domains.Names;

            string[] rows = Microsoft.VisualBasic.Strings.Split(domainNames, "\r\n", -1, Microsoft.VisualBasic.CompareMethod.Binary);

            List <ListViewItem> items = new List <ListViewItem>();

            foreach (string row in rows)
            {
                if (string.IsNullOrEmpty(row))
                {
                    continue;
                }

                string[] properties = Microsoft.VisualBasic.Strings.Split(row, "\t", -1, Microsoft.VisualBasic.CompareMethod.Text);

                int    id      = Convert.ToInt32(properties[0]);
                string name    = properties[1];
                bool   enabled = properties[2] == "1";

                ListViewItem item = new ListViewItem();

                item.Text = name;
                item.SubItems.Add(EnumStrings.GetYesNoString(enabled));
                item.Tag = id;

                items.Add(item);
            }

            listDomains.Items.AddRange(items.ToArray());

            Marshal.ReleaseComObject(domains);
        }
Beispiel #17
0
        public hMailServer.Domain AddDomain(string name)
        {
            hMailServer.Domains domains = SingletonProvider <Utilities> .Instance.GetApp().Domains;

            return(AddDomain(domains, name));
        }
Beispiel #18
0
        public bool SaveData()
        {
            if (_domain == null)
            {
                hMailServer.Domains domains = _application.Domains;
                _domain = domains.Add();
                Marshal.ReleaseComObject(domains);
            }

            _domain.Name                     = textDomainName.Text;
            _domain.Postmaster               = textCatchAllAddress.Text;
            _domain.AddSignaturesToReplies   = checkAddSignaturesToReplies.Checked;
            _domain.AddSignaturesToLocalMail = checkAddSignaturesToLocalMail.Checked;
            _domain.SignatureEnabled         = checkSignatureEnabled.Checked;
            _domain.Active                   = checkEnabled.Checked;

            if (radioSMAppendToAccountSignature.Checked == true)
            {
                _domain.SignatureMethod = eDomainSignatureMethod.eSMAppendToAccountSignature;
            }
            else if (radioSMOverwriteAccountSignature.Checked == true)
            {
                _domain.SignatureMethod = eDomainSignatureMethod.eSMOverwriteAccountSignature;
            }
            else if (radioSMSetIfNotSpecifiedInAccount.Checked == true)
            {
                _domain.SignatureMethod = eDomainSignatureMethod.eSMSetIfNotSpecifiedInAccount;
            }

            _domain.MaxSize                      = textMaxSize.Number;
            _domain.MaxMessageSize               = textMaxMessageSize.Number;
            _domain.MaxAccountSize               = textMaxAccountSize.Number;
            _domain.MaxNumberOfAccounts          = textMaxNumberOfAccounts.Number;
            _domain.MaxNumberOfAliases           = textMaxNumberOfAliases.Number;
            _domain.MaxNumberOfDistributionLists = textMaxNumberOfDistributionLists.Number;

            _domain.MaxNumberOfAccountsEnabled          = checkMaxNumberOfAccountsEnabled.Checked;
            _domain.MaxNumberOfAliasesEnabled           = checkMaxNumberOfAliasesEnabled.Checked;
            _domain.MaxNumberOfDistributionListsEnabled = checkMaxNumberOfDistributionListsEnabled.Checked;

            _domain.SignaturePlainText = textPlainTextSignature.Text;
            _domain.SignatureHTML      = textHTMLSignature.Text;

            _domain.PlusAddressingEnabled     = checkUsePlusAddressing.Checked;
            _domain.PlusAddressingCharacter   = comboPlusAddressingCharacter.Text;
            _domain.AntiSpamEnableGreylisting = checkGreyListingEnabled.Checked;

            _domain.DKIMSignEnabled    = checkDKIMSignEnabled.Checked;
            _domain.DKIMPrivateKeyFile = textDKIMPrivateKeyFile.Text;
            _domain.DKIMSelector       = textDKIMSelector.Text;

            if (radioDKIMHeaderMethodSimple.Checked)
            {
                _domain.DKIMHeaderCanonicalizationMethod = eDKIMCanonicalizationMethod.eCanonicalizationSimple;
            }
            else if (radioDKIMHeaderMethodRelaxed.Checked)
            {
                _domain.DKIMHeaderCanonicalizationMethod = eDKIMCanonicalizationMethod.eCanonicalizationRelaxed;
            }

            if (radioDKIMBodyMethodSimple.Checked)
            {
                _domain.DKIMBodyCanonicalizationMethod = eDKIMCanonicalizationMethod.eCanonicalizationSimple;
            }
            else if (radioDKIMBodyMethodRelaxed.Checked)
            {
                _domain.DKIMBodyCanonicalizationMethod = eDKIMCanonicalizationMethod.eCanonicalizationRelaxed;
            }

            if (radioDKIMSigningAlgorithmSHA1.Checked)
            {
                _domain.DKIMSigningAlgorithm = eDKIMAlgorithm.eSHA1;
            }
            else if (radioDKIMSigningAlgorithmSHA256.Checked)
            {
                _domain.DKIMSigningAlgorithm = eDKIMAlgorithm.eSHA256;
            }



            try
            {
                _domain.Save();
            }
            catch (Exception ex)
            {
                MessageBox.Show(Strings.Localize(ex.Message), EnumStrings.hMailServerAdministrator, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            IMainForm mainForm = Instances.MainForm;

            // Refresh the node in the tree
            mainForm.RefreshCurrentNode(_domain.Name);

            // Set the object to clean.
            DirtyChecker.SetClean(this);

            SearchNodeText crit = new SearchNodeText(_domain.Name);

            mainForm.SelectNode(crit);

            EnableDisableTabs();

            return(true);
        }
Beispiel #19
0
 internal Domains(hMailServer.Domains o)
 {
     _object = o;
 }
 internal Domains(hMailServer.Domains o)
 {
     _object = o;
 }