Example #1
0
        public void TestMultipleHostsTemporaryFailure()
        {
            Assert.AreEqual(0, _status.UndeliveredMessages.Length);

            // No valid recipients...
            Dictionary <string, int> deliveryResults = new Dictionary <string, int>();

            deliveryResults["*****@*****.**"] = 250;
            deliveryResults["*****@*****.**"] = 250;
            deliveryResults["*****@*****.**"] = 499;

            SMTPServerSimulator server = new SMTPServerSimulator(2, 250);

            server.AddRecipientResult(deliveryResults);
            server.AddRecipientResult(deliveryResults);
            server.StartListen();

            // Add a route so we can connect to localhost.
            hMailServer.Route route = AddRoutePointingAtLocalhostMultipleHosts(2);

            // Send message to this route.
            SMTPClientSimulator smtp       = new SMTPClientSimulator();
            List <string>       recipients = new List <string>();

            recipients.Add("*****@*****.**");
            recipients.Add("*****@*****.**");
            recipients.Add("*****@*****.**");

            if (!smtp.Send("*****@*****.**", recipients, "Test", "Test message"))
            {
                Assert.Fail("Delivery failed");
            }

            // Wait for the client to disconnect.
            server.WaitForCompletion();

            Utilities.AssertRecipientsInDeliveryQueue(1);

            // Check so that only user 3 remains in the queue.
            Assert.AreEqual(-1, _status.UndeliveredMessages.IndexOf("*****@*****.**"));
            Assert.AreEqual(-1, _status.UndeliveredMessages.IndexOf("*****@*****.**"));
            Assert.AreNotEqual(-1, _status.UndeliveredMessages.IndexOf("*****@*****.**"));

            server = new SMTPServerSimulator(2, 250);
            server.AddRecipientResult(deliveryResults);
            server.AddRecipientResult(deliveryResults);
            server.StartListen();

            Utilities.AssertRecipientsInDeliveryQueue(0, true);

            server.WaitForCompletion();

            string bounceMessage = POP3Simulator.AssertGetFirstMessageText("*****@*****.**", "test");

            Assert.IsFalse(bounceMessage.Contains("*****@*****.**"));
            Assert.IsFalse(bounceMessage.Contains("*****@*****.**"));
            Assert.IsTrue(bounceMessage.Contains("*****@*****.**"));
            Assert.IsTrue(bounceMessage.Contains("499 [email protected]"));
            Assert.IsTrue(bounceMessage.Contains("Tried 2 time(s)"));
        }
Example #2
0
        public void TestSMTPClientTimeout()
        {
            Assert.AreEqual(0, _status.UndeliveredMessages.Length);

            // No valid recipients...
            Dictionary <string, int> deliveryResults = new Dictionary <string, int>();

            deliveryResults["*****@*****.**"] = 250;

            SMTPServerSimulator server = new SMTPServerSimulator(1, 250);

            server.AddRecipientResult(deliveryResults);
            server.SimulatedError = SimulatedErrorType.Sleep15MinutesAfterSessionStart;
            server.SecondsToWaitBeforeTerminate = 20 * 60;
            server.StartListen();

            // Add a route so we can connect to localhost.
            hMailServer.Route route = AddRoutePointingAtLocalhost(5, 250, false);
            route.RelayerRequiresAuth = true;
            route.RelayerAuthUsername = "******";
            route.SetRelayerAuthPassword("MySecretPassword");

            // Send message to this route.
            SMTPClientSimulator smtp       = new SMTPClientSimulator();
            List <string>       recipients = new List <string>();

            recipients.Add("*****@*****.**");
            Assert.IsTrue(smtp.Send("*****@*****.**", recipients, "Test", "Test message"));

            // Wait for the client to disconnect.
            server.WaitForCompletion();

            Utilities.AssertRecipientsInDeliveryQueue(0);
        }
        public void TestSMTPAuthExternalToRouteConfiguredAsLocal()
        {
            // First, make sure hMailServer requires auth.
            hMailServer.SecurityRange range = SingletonProvider <Utilities> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

            range.RequireSMTPAuthExternalToExternal = true;
            range.RequireSMTPAuthLocalToExternal    = true;
            range.Save();


            hMailServer.Route route = SMTPClientTests.AddRoutePointingAtLocalhost(1, 250, false);
            route.TreatRecipientAsLocalDomain = true;
            route.TreatSenderAsLocalDomain    = true;
            route.Save();

            // Set up the simulating server to listen.
            Dictionary <string, int> deliveryResults = new Dictionary <string, int>();

            deliveryResults["*****@*****.**"] = 250;

            SMTPServerSimulator server = new SMTPServerSimulator(1, 250);

            server.AddRecipientResult(deliveryResults);
            server.StartListen();

            // Make sure we can't send to this route without using smtp auth.
            SMTPClientSimulator oSMTP = new SMTPClientSimulator();

            Assert.IsTrue(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1"));

            server.WaitForCompletion();

            Assert.IsTrue(server.MessageData.Contains("Mail 1"), server.MessageData);
        }
Example #4
0
        private void ConfirmRoutes()
        {
            hMailServer.Routes routes = _application.Settings.Routes;

            Assert.AreEqual(2, routes.Count);

            hMailServer.Route route = routes[0];
            Assert.AreEqual("test1.com", route.DomainName);
            Assert.AreEqual("description", route.Description);
            Assert.AreEqual(true, route.UseSSL);
            Assert.AreEqual(true, route.TreatSenderAsLocalDomain);
            Assert.AreEqual(false, route.TreatRecipientAsLocalDomain);
            Assert.AreEqual(false, route.TreatSecurityAsLocalDomain);

            route = routes[1];
            Assert.AreEqual("test2.com", route.DomainName);
            Assert.AreEqual("description2", route.Description);
            Assert.AreEqual(false, route.UseSSL);
            Assert.AreEqual(false, route.TreatSenderAsLocalDomain);
            Assert.AreEqual(true, route.TreatRecipientAsLocalDomain);
            Assert.AreEqual(true, route.TreatSecurityAsLocalDomain);

            Assert.AreEqual(2, route.Addresses.Count);

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

            addresses.Add(route.Addresses[0].Address);
            addresses.Add(route.Addresses[1].Address);

            Assert.IsTrue(addresses.Contains("*****@*****.**"));
            Assert.IsTrue(addresses.Contains("*****@*****.**"));
        }
Example #5
0
        private void SetupRoutes()
        {
            hMailServer.Routes routes = _application.Settings.Routes;

            hMailServer.Route route = routes.Add();
            route.DomainName  = "test1.com";
            route.Description = "description";
            route.UseSSL      = true;
            route.TreatSenderAsLocalDomain    = true;
            route.TreatRecipientAsLocalDomain = false;
            route.Save();

            route             = routes.Add();
            route.DomainName  = "test2.com";
            route.Description = "description2";
            route.UseSSL      = false;
            route.TreatSenderAsLocalDomain    = false;
            route.TreatRecipientAsLocalDomain = true;
            route.Save();

            hMailServer.RouteAddresses addresses = route.Addresses;

            hMailServer.RouteAddress address1 = addresses.Add();
            address1.Address = "*****@*****.**";
            address1.Save();

            hMailServer.RouteAddress address2 = addresses.Add();
            address2.Address = "*****@*****.**";
            address2.Save();
        }
        public void TreatRecipientAsExternalDomainPermitted()
        {
            hMailServer.Route route = SMTPClientTests.AddRoutePointingAtLocalhost(1, 250, false);
            route.TreatRecipientAsLocalDomain = false;
            route.Save();

            hMailServer.SecurityRange range = SingletonProvider <Utilities> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

            range.AllowDeliveryFromRemoteToRemote   = true;
            range.RequireSMTPAuthExternalToExternal = false;
            range.Save();

            Dictionary <string, int> deliveryResults = new Dictionary <string, int>();

            deliveryResults["*****@*****.**"] = 250;

            SMTPServerSimulator server = new SMTPServerSimulator(1, 250);

            server.AddRecipientResult(deliveryResults);
            server.StartListen();

            SMTPClientSimulator oSMTP = new SMTPClientSimulator();
            string result;

            Assert.IsTrue(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1", out result));

            server.WaitForCompletion();

            server.MessageData.Contains("Mail 1");
        }
        public void TestUseCase3DeliveryFromExternalUserToPrimaryViaBackup()
        {
            hMailServer.Route route = SMTPClientTests.AddRoutePointingAtLocalhost(1, 250, false);
            route.TreatRecipientAsLocalDomain = true;
            route.TreatSenderAsLocalDomain    = false;
            route.Save();

            Dictionary <string, int> deliveryResults = new Dictionary <string, int>();

            deliveryResults["*****@*****.**"] = 250;

            SMTPServerSimulator server = new SMTPServerSimulator(1, 250);

            server.AddRecipientResult(deliveryResults);
            server.StartListen();

            SMTPClientSimulator oSMTP = new SMTPClientSimulator();
            string result;

            Assert.IsTrue(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1", out result));

            server.WaitForCompletion();

            server.MessageData.Contains("Mail 1");
        }
        public void TestDeliverToExternalMimeRecipientsEnabledRouteAsExternal()
        {
            List <string> messages = new List <string>();

            string message = "From: [email protected]\r\n" +
                             "To: \"Test\" <*****@*****.**>, \"ExternalGuy\" <*****@*****.**>\r\n" +
                             "Subject: Test\r\n" +
                             "\r\n" +
                             "Hello!";

            messages.Add(message);

            int        port       = 1110;
            POP3Server pop3Server = new POP3Server(1, port, messages);

            pop3Server.StartListen();

            // Add a route so we can connect to localhost.
            hMailServer.Route route = SMTPClientTests.AddRoutePointingAtLocalhost(5, 250, false);
            route.TreatSecurityAsLocalDomain = false;
            route.Save();

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

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

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

            _domain.Postmaster = catchallAccount.Address;
            _domain.Save();

            hMailServer.FetchAccount fa = userAccount.FetchAccounts.Add();

            fa.Enabled             = true;
            fa.MinutesBetweenFetch = 10;
            fa.Name                  = "Test";
            fa.Username              = "******";
            fa.Password              = "******";
            fa.UseSSL                = false;
            fa.ServerAddress         = "localhost";
            fa.Port                  = port;
            fa.ProcessMIMERecipients = true;
            fa.EnableRouteRecipients = true;
            fa.Save();

            fa.DownloadNow();

            pop3Server.WaitForCompletion();

            fa.Delete();

            string downloadedMessage1 = POP3Simulator.AssertGetFirstMessageText(recipientAccount1.Address, "test");

            Assert.IsTrue(downloadedMessage1.Contains(message), downloadedMessage1);

            Utilities.AssertRecipientsInDeliveryQueue(0, false);
        }
        public void TreatRecipientAsExternalDomain()
        {
            hMailServer.Route route = SMTPClientTests.AddRoutePointingAtLocalhost(1, 250, false);
            route.TreatRecipientAsLocalDomain = false;
            route.Save();

            SMTPClientSimulator oSMTP = new SMTPClientSimulator();
            string result;

            Assert.IsFalse(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1", out result));
            Assert.IsTrue(result.Contains("530 SMTP authentication is required."));
        }
Example #10
0
        public static hMailServer.Route AddRoutePointingAtLocalhostMultipleHosts(int numberOfTries)
        {
            // Add a route pointing at localhost
            hMailServer.Route route = AddRoutePointingAtLocalhost(numberOfTries, 250, false);
            route.DomainName        = "dummy-example.com";
            route.TargetSMTPHost    = "localhost|localhost";
            route.TargetSMTPPort    = 250;
            route.NumberOfTries     = numberOfTries;
            route.MinutesBetweenTry = 5;
            route.Save();

            return(route);
        }
        public void TestDuplicateRoutes()
        {
            hMailServer.Application app = SingletonProvider <Utilities> .Instance.GetApp();

            hMailServer.Routes routes = app.Settings.Routes;

            hMailServer.Route route = routes.Add();
            route.DomainName = "test.com";
            route.Save();

            hMailServer.Route route2 = routes.Add();
            route2.DomainName = "test.com";

            route2.Save();
        }
Example #12
0
        internal static hMailServer.Route AddRoutePointingAtLocalhost(int numberOfTries, int port)
        {
            // Add a route pointing at localhost
            hMailServer.Settings oSettings = SingletonProvider <Utilities> .Instance.GetApp().Settings;

            hMailServer.Route route = oSettings.Routes.Add();
            route.DomainName        = "example.com";
            route.TargetSMTPHost    = "localhost";
            route.TargetSMTPPort    = port;
            route.NumberOfTries     = numberOfTries;
            route.MinutesBetweenTry = 5;
            route.Save();

            return(route);
        }
Example #13
0
        public ucRoute(int routeID)
        {
            InitializeComponent();

            if (routeID > 0)
            {
                hMailServer.Routes routes = APICreator.Routes;
                _representedObject = routes.get_ItemByDBID(routeID);
                Marshal.ReleaseComObject(routes);
            }

            DirtyChecker.SubscribeToChange(this, OnContentChanged);

            new TabOrderManager(this).SetTabOrder(TabOrderManager.TabScheme.AcrossFirst);

            EnableDisable();
        }
        public void TestSenderAsLocalDomainSendToExternal()
        {
            hMailServer.Route route = SMTPClientTests.AddRoutePointingAtLocalhost(1, 250, false);
            route.TreatSenderAsLocalDomain = true;
            route.Save();

            hMailServer.SecurityRange range = SingletonProvider <Utilities> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

            range.RequireSMTPAuthLocalToExternal = true;
            range.Save();

            SMTPClientSimulator oSMTP = new SMTPClientSimulator();
            string result;

            Assert.IsFalse(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1", out result));
            Assert.IsTrue(result.Contains("530 SMTP authentication is required."));
        }
Example #15
0
        public ucRoute(int routeID)
        {
            InitializeComponent();

            if (routeID > 0)
            {
                hMailServer.Routes routes = APICreator.Routes;
                _representedObject = routes.get_ItemByDBID(routeID);
                Marshal.ReleaseComObject(routes);
            }

            DirtyChecker.SubscribeToChange(this, OnContentChanged);

            new TabOrderManager(this).SetTabOrder(TabOrderManager.TabScheme.AcrossFirst);

            EnableDisable();
        }
Example #16
0
        public bool SaveData()
        {
            if (_representedObject == null)
            {
                hMailServer.Settings settings = APICreator.Application.Settings;
                hMailServer.Routes   routes   = settings.Routes;
                _representedObject = routes.Add();

                Marshal.ReleaseComObject(settings);
                Marshal.ReleaseComObject(routes);
            }

            _representedObject.DomainName     = textDomainName.Text;
            _representedObject.Description    = textDescription.Text;
            _representedObject.TargetSMTPHost = textTargetSMTPHost.Text;
            _representedObject.TargetSMTPPort = textTargetSMTPPort.Number;

            _representedObject.ConnectionSecurity = (eConnectionSecurity)comboConnectionSecurity.SelectedValue;

            _representedObject.TreatSenderAsLocalDomain    = radioTreatSenderAsLocalDomain.Checked;
            _representedObject.TreatRecipientAsLocalDomain = radioTreatRecipientAsLocalDomain.Checked;

            _representedObject.NumberOfTries     = textNumberOfTries.Number;
            _representedObject.MinutesBetweenTry = textNumberOfMinutesBetween.Number;

            _representedObject.RelayerRequiresAuth = checkServerRequiresAuth.Checked;
            _representedObject.RelayerAuthUsername = textUsername.Text;


            if (textPassword.Dirty)
            {
                _representedObject.SetRelayerAuthPassword(textPassword.Password);
            }

            _representedObject.AllAddresses = radioRouteForAll.Checked;

            _representedObject.Save();

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

            Utility.RefreshNode(_representedObject.DomainName);

            return(true);
        }
        public void TestUseCaseDeliveryFromPrimaryMXToBackupMX()
        {
            hMailServer.Route route = SMTPClientTests.AddRoutePointingAtLocalhost(1, 250, false);
            route.TreatRecipientAsLocalDomain = true;
            route.TreatSenderAsLocalDomain    = false;
            route.Save();

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

            SMTPClientSimulator oSMTP = new SMTPClientSimulator();
            string result;

            Assert.IsTrue(oSMTP.Send("*****@*****.**", account1.Address, "Mail 1", "Mail 1", out result));

            string text = POP3Simulator.AssertGetFirstMessageText(account1.Address, "test");

            Assert.IsTrue(text.Contains("Mail 1"));
        }
        internal hMailServer.Route AddRoutePointingAtLocalhostWithAuth(int numberOfTries, int port)
        {
            // Add a route pointing at localhost
            hMailServer.Settings oSettings = SingletonProvider <Utilities> .Instance.GetApp().Settings;

            hMailServer.Route route = oSettings.Routes.Add();
            route.DomainName          = "dummy-example.com";
            route.TargetSMTPHost      = "localhost";
            route.TargetSMTPPort      = port;
            route.NumberOfTries       = numberOfTries;
            route.RelayerRequiresAuth = true;
            route.RelayerAuthUsername = GetUsername();
            route.SetRelayerAuthPassword(GetPassword());
            route.MinutesBetweenTry = 5;
            route.Save();

            return(route);
        }
        public void TestSenderAsExternalDomainSendToLocalAccountFail()
        {
            hMailServer.Route route = SMTPClientTests.AddRoutePointingAtLocalhost(1, 250, false);
            route.TreatSenderAsLocalDomain = false;
            route.Save();

            hMailServer.SecurityRange range = SingletonProvider <Utilities> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

            range.RequireSMTPAuthExternalToLocal = true;
            range.Save();

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

            SMTPClientSimulator oSMTP = new SMTPClientSimulator();
            string result;

            Assert.IsFalse(oSMTP.Send("*****@*****.**", account1.Address, "Mail 1", "Mail 1", out result));
        }
Example #20
0
        public void TestRoute()
        {
            hMailServer.Settings oSettings = SingletonProvider <Utilities> .Instance.GetApp().Settings;

            hMailServer.Route route = oSettings.Routes.Add();

            route.DomainName     = "myroute.com";
            route.TargetSMTPHost = "somehost.com";
            route.TargetSMTPPort = 25;

            route.Save();

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

            oSettings.Routes.DeleteByDBID(route.ID);
        }
Example #21
0
        protected override void LoadList()
        {
            listObjects.Items.Clear();

            hMailServer.Application app      = APICreator.Application;
            hMailServer.Settings    settings = app.Settings;
            hMailServer.Routes      routes   = settings.Routes;
            for (int i = 0; i < routes.Count; i++)
            {
                hMailServer.Route route = routes[i];

                ListViewItem item = listObjects.Items.Add(route.DomainName);
                item.Tag = route.ID;

                Marshal.ReleaseComObject(route);
            }

            Marshal.ReleaseComObject(routes);
            Marshal.ReleaseComObject(settings);
        }
Example #22
0
        private void FillCombo()
        {
            comboAction.AddItem(EnumStrings.GetRuleActionString(eRuleActionType.eRADeleteEmail), eRuleActionType.eRADeleteEmail);
            comboAction.AddItem(EnumStrings.GetRuleActionString(eRuleActionType.eRAForwardEmail), eRuleActionType.eRAForwardEmail);
            comboAction.AddItem(EnumStrings.GetRuleActionString(eRuleActionType.eRAMoveToImapFolder), eRuleActionType.eRAMoveToImapFolder);
            comboAction.AddItem(EnumStrings.GetRuleActionString(eRuleActionType.eRAReply), eRuleActionType.eRAReply);
            comboAction.AddItem(EnumStrings.GetRuleActionString(eRuleActionType.eRARunScriptFunction), eRuleActionType.eRARunScriptFunction);
            comboAction.AddItem(EnumStrings.GetRuleActionString(eRuleActionType.eRASetHeaderValue), eRuleActionType.eRASetHeaderValue);
            comboAction.AddItem(EnumStrings.GetRuleActionString(eRuleActionType.eRAStopRuleProcessing), eRuleActionType.eRAStopRuleProcessing);
            comboAction.AddItem(EnumStrings.GetRuleActionString(eRuleActionType.eRACreateCopy), eRuleActionType.eRACreateCopy);


            if (_isAccountLevelRule == false)
            {
                comboAction.AddItem(EnumStrings.GetRuleActionString(eRuleActionType.eRABindToAddress), eRuleActionType.eRABindToAddress);
                comboAction.AddItem(EnumStrings.GetRuleActionString(eRuleActionType.eRASendUsingRoute), eRuleActionType.eRASendUsingRoute);
            }


            comboAction.SelectedIndex = 0;

            // Fill routes
            comboRouteName.AddItem("None", 0);

            hMailServer.Settings settings = APICreator.Application.Settings;
            hMailServer.Routes   routes   = settings.Routes;

            for (int i = 0; i < routes.Count; i++)
            {
                hMailServer.Route route = routes[i];

                comboRouteName.AddItem(route.DomainName, route.ID);

                Marshal.ReleaseComObject(route);
            }
            comboRouteName.SelectedIndex = 0;
            Marshal.ReleaseComObject(routes);
        }
Example #23
0
        public void TestAuthFailurePasswordInBounce()
        {
            Assert.AreEqual(0, _status.UndeliveredMessages.Length);

            // No valid recipients...
            Dictionary <string, int> deliveryResults = new Dictionary <string, int>();

            deliveryResults["*****@*****.**"] = 250;

            SMTPServerSimulator server = new SMTPServerSimulator(1, 250);

            server.AddRecipientResult(deliveryResults);
            server.SimulatedError = SimulatedErrorType.ForceAuthenticationFailure;
            server.StartListen();

            // Add a route so we can connect to localhost.
            hMailServer.Route route = AddRoutePointingAtLocalhost(5, 250, false);
            route.RelayerRequiresAuth = true;
            route.RelayerAuthUsername = "******";
            route.SetRelayerAuthPassword("MySecretPassword");

            // Send message to this route.
            SMTPClientSimulator smtp       = new SMTPClientSimulator();
            List <string>       recipients = new List <string>();

            recipients.Add("*****@*****.**");
            Assert.IsTrue(smtp.Send("*****@*****.**", recipients, "Test", "Test message"));

            // Wait for the client to disconnect.
            server.WaitForCompletion();

            Utilities.AssertRecipientsInDeliveryQueue(0);

            string messageText = POP3Simulator.AssertGetFirstMessageText(_account.Address, "test");

            Assert.IsFalse(messageText.Contains("MySecretPassword"));
            Assert.IsTrue(messageText.Contains("<Password removed>"));
        }
Example #24
0
        public bool SaveData()
        {
            if (_representedObject == null)
            {
                hMailServer.Settings settings = APICreator.Application.Settings;
                hMailServer.Routes routes = settings.Routes;
                _representedObject = routes.Add();

                Marshal.ReleaseComObject(settings);
                Marshal.ReleaseComObject(routes);

            }

            _representedObject.DomainName = textDomainName.Text;
            _representedObject.Description = textDescription.Text;
            _representedObject.TargetSMTPHost = textTargetSMTPHost.Text;
            _representedObject.TargetSMTPPort = textTargetSMTPPort.Number;

            _representedObject.ConnectionSecurity = (eConnectionSecurity) comboConnectionSecurity.SelectedValue;

            _representedObject.TreatSenderAsLocalDomain = radioTreatSenderAsLocalDomain.Checked;
            _representedObject.TreatRecipientAsLocalDomain = radioTreatRecipientAsLocalDomain.Checked;

            _representedObject.NumberOfTries = textNumberOfTries.Number;
            _representedObject.MinutesBetweenTry = textNumberOfMinutesBetween.Number;

            _representedObject.RelayerRequiresAuth = checkServerRequiresAuth.Checked;
            _representedObject.RelayerAuthUsername = textUsername.Text;

            if (textPassword.Dirty)
                _representedObject.SetRelayerAuthPassword(textPassword.Password);

            _representedObject.AllAddresses = radioRouteForAll.Checked;

            _representedObject.Save();

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

            Utility.RefreshNode(_representedObject.DomainName);

            return true;
        }