public void TreatRecipientAsExternalDomainPermitted()
        {
            int   smtpServerPort = TestSetup.GetNextFreePort();
            Route route          = SMTPClientTests.AddRoutePointingAtLocalhost(1, smtpServerPort, false);

            route.TreatRecipientAsLocalDomain = false;
            route.Save();

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

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

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

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

            using (var server = new SMTPServerSimulator(1, smtpServerPort))
            {
                server.AddRecipientResult(deliveryResults);
                server.StartListen();

                var    oSMTP = new SMTPClientSimulator();
                string result;
                CustomAssert.IsTrue(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1", out result));

                server.WaitForCompletion();

                server.MessageData.Contains("Mail 1");
            }
        }
        public void TestBlockingDeliveries()
        {
            SecurityRange range =
                SingletonProvider <TestSetup> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

            range.RequireSMTPAuthLocalToLocal       = false;
            range.RequireSMTPAuthLocalToExternal    = false;
            range.RequireSMTPAuthExternalToLocal    = false;
            range.RequireSMTPAuthExternalToExternal = false;

            range.AllowDeliveryFromLocalToLocal   = false;
            range.AllowDeliveryFromLocalToRemote  = false;
            range.AllowDeliveryFromRemoteToLocal  = false;
            range.AllowDeliveryFromRemoteToRemote = false;

            range.Save();

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

            var oSMTP = new SMTPClientSimulator();

            string result1, result2, result3, result4;

            CustomAssert.IsFalse(oSMTP.Send(account1.Address, account1.Address, "Mail 1", "Mail 1", out result1));
            CustomAssert.IsFalse(oSMTP.Send(account1.Address, "*****@*****.**", "Mail 1", "Mail 1", out result2));
            CustomAssert.IsFalse(oSMTP.Send("*****@*****.**", account1.Address, "Mail 1", "Mail 1", out result3));
            CustomAssert.IsFalse(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1",
                                            out result4));

            CustomAssert.IsTrue(result1.Contains("550 Delivery is not allowed to this address."));
            CustomAssert.IsTrue(result2.Contains("550 Delivery is not allowed to this address."));
            CustomAssert.IsTrue(result3.Contains("550 Delivery is not allowed to this address."));
            CustomAssert.IsTrue(result4.Contains("550 Delivery is not allowed to this address."));
        }
        public void TestSenderAsLocalDomainSendToLocalAccountPass()
        {
            int   smtpServerPort = TestSetup.GetNextFreePort();
            Route route          = SMTPClientTests.AddRoutePointingAtLocalhost(1, smtpServerPort, false);

            route.TreatSenderAsLocalDomain = true;
            route.Save();

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

            range.RequireSMTPAuthLocalToLocal = false;
            range.Save();

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

            var    oSMTP = new SMTPClientSimulator();
            string result;

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

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

            CustomAssert.IsTrue(text.Contains("Mail 1"));
        }
Beispiel #4
0
        public void TestSendExternalToExternalPermitted()
        {
            SecurityRange range =
                SingletonProvider <TestSetup> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

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


            // Set up a server listening on port 250 which accepts email for [email protected]
            var deliveryResults = new Dictionary <string, int>();

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

            int smtpServerPort = TestSetup.GetNextFreePort();

            using (var server = new SmtpServerSimulator(1, smtpServerPort))
            {
                server.AddRecipientResult(deliveryResults);
                server.StartListen();

                Route route = TestSetup.AddRoutePointingAtLocalhost(1, smtpServerPort, false, eConnectionSecurity.eCSNone);

                var smtpClientSimulator = new SmtpClientSimulator();
                smtpClientSimulator.Send("*****@*****.**",
                                         "*****@*****.**", "Mail 1", "Test message");


                // This should now be processed via the rule -> route -> external server we've set up.
                server.WaitForCompletion();

                Assert.IsTrue(server.MessageData.Contains("Test message"));
            }
        }
Beispiel #5
0
        public void TestSaveValidIPRange()
        {
            Application app = SingletonProvider <TestSetup> .Instance.GetApp();

            SecurityRange range = app.Settings.SecurityRanges.Add();

            range.Name    = "Test";
            range.LowerIP = "0.0.0.0";
            range.UpperIP = "0.0.0.1";
            range.Save();
        }
Beispiel #6
0
        public void TestSaveInvalidIPRange()
        {
            Application app = SingletonProvider <TestSetup> .Instance.GetApp();

            SecurityRange range = app.Settings.SecurityRanges.Add();

            range.Name    = "Test";
            range.LowerIP = "1.1.1.1";
            range.UpperIP = "0.0.0.0";
            var ex = Assert.Throws <COMException>(() => range.Save());

            StringAssert.Contains("The lower IP address must be lower or the same as the upper IP address.", ex.Message);
        }
Beispiel #7
0
        public void TestSendExternalToExternalNotPermitted_ErrorMessage()
        {
            SecurityRange range =
                SingletonProvider <TestSetup> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

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

            var smtpClientSimulator = new SmtpClientSimulator();
            var ex = Assert.Throws <DeliveryFailedException>(() => smtpClientSimulator.Send("*****@*****.**",
                                                                                            "*****@*****.**", "Mail 1", "Test message"));

            StringAssert.Contains("550 Delivery is not allowed to this address.", ex.Message, ex.Message);
        }
        public void TestSMTPAuthLocalToExternal()
        {
            SecurityRange range =
                SingletonProvider <TestSetup> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

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

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

            var    oSMTP = new SMTPClientSimulator();
            string result;

            CustomAssert.IsFalse(oSMTP.Send(account1.Address, "*****@*****.**", "Mail 1", "Mail 1",
                                            out result));
            CustomAssert.IsTrue(result.Contains("SMTP authentication is required"));
        }
Beispiel #9
0
        public void TestAntiVirusEnabled()
        {
            SecurityRange range =
                SingletonProvider <TestSetup> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

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

            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SmtpClientSimulator.StaticSend("*****@*****.**", "*****@*****.**", "Test", "Test");
            Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            Message message = account.IMAPFolders.get_ItemByName("INBOX").Messages[0];

            Assert.IsTrue(message.get_Flag(eMessageFlag.eMFVirusScan));
        }
Beispiel #10
0
        private void AddIPRange()
        {
            SecurityRange oRange = _ipRanges.Add();

            oRange.LowerIP = "127.0.0.1";
            oRange.UpperIP = "127.0.0.1";
            oRange.Name    = "My computer";
            oRange.AllowDeliveryFromLocalToLocal  = true;
            oRange.AllowDeliveryFromLocalToRemote = true;
            oRange.AllowDeliveryFromRemoteToLocal = true;
            oRange.AllowIMAPConnections           = true;
            oRange.AllowPOP3Connections           = true;
            oRange.AllowSMTPConnections           = true;


            oRange.EnableSpamProtection = true;

            oRange.Save();
        }
        public void TestSMTPAuthExternalToLocal()
        {
            SecurityRange range =
                SingletonProvider <TestSetup> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

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

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

            var oSMTP = new SMTPClientSimulator();

            CustomAssert.IsFalse(oSMTP.Send("*****@*****.**", account1.Address, "Mail 1", "Mail 1"));

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

            CustomAssert.IsTrue(oSMTP.Send("*****@*****.**", account1.Address, "Mail 1", "Mail 1"));
            TestSetup.AssertRecipientsInDeliveryQueue(0);
        }
        public void TestSenderAsLocalDomainSendToExternal()
        {
            int   smtpServerPort = TestSetup.GetNextFreePort();
            Route route          = SMTPClientTests.AddRoutePointingAtLocalhost(1, smtpServerPort, false);

            route.TreatSenderAsLocalDomain = true;
            route.Save();

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

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

            var    oSMTP = new SMTPClientSimulator();
            string result;

            CustomAssert.IsFalse(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1", out result));
            CustomAssert.IsTrue(result.Contains("530 SMTP authentication is required."));
        }
        public void TestSenderAsExternalDomainSendToLocalAccountFail()
        {
            int   smtpServerPort = TestSetup.GetNextFreePort();
            Route route          = TestSetup.AddRoutePointingAtLocalhost(1, smtpServerPort, false);

            route.TreatSenderAsLocalDomain = false;
            route.Save();

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

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

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

            var    smtpClientSimulator = new SmtpClientSimulator();
            string result;

            CustomAsserts.Throws <DeliveryFailedException>(() => smtpClientSimulator.Send("*****@*****.**", account1.Address, "Mail 1", "Mail 1", out result));
        }
        public void TestSMTPAuthLocalToLocal()
        {
            SecurityRange range =
                SingletonProvider <TestSetup> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

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

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

            var    smtpClientSimulator = new SmtpClientSimulator();
            string result = "";

            CustomAsserts.Throws <DeliveryFailedException>(() => smtpClientSimulator.Send(account1.Address, account1.Address, "Mail 1", "Mail 1", out result));
            Assert.IsTrue(result.Contains("SMTP authentication is required."));

            range.RequireSMTPAuthLocalToLocal = false;
            range.Save();

            smtpClientSimulator.Send(account1.Address, account1.Address, "Mail 1", "Mail 1", out result);
            CustomAsserts.AssertRecipientsInDeliveryQueue(0);
        }
        public void TestSMTPAuthExternalToExternal()
        {
            SecurityRange range =
                SingletonProvider <TestSetup> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

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

            var    oSMTP = new SMTPClientSimulator();
            string result;

            CustomAssert.IsFalse(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1",
                                            "Mail 1", out result));
            CustomAssert.IsTrue(result.Contains("SMTP authentication is required."));

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

            CustomAssert.IsFalse(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1",
                                            "Mail 1", out result));
            CustomAssert.IsTrue(result.Contains("550 Delivery is not allowed to this address."));
        }
        public void TestSMTPAuthExternalToRouteConfiguredAsLocal()
        {
            // First, make sure hMailServer requires auth.
            SecurityRange range =
                SingletonProvider <TestSetup> .Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");

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

            int   smtpServerPort = TestSetup.GetNextFreePort();
            Route route          = SMTPClientTests.AddRoutePointingAtLocalhost(1, smtpServerPort, false);

            route.TreatRecipientAsLocalDomain = true;
            route.TreatSenderAsLocalDomain    = true;
            route.Save();

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

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


            using (var server = new SMTPServerSimulator(1, smtpServerPort))
            {
                server.AddRecipientResult(deliveryResults);
                server.StartListen();

                // Make sure we can't send to this route without using smtp auth.
                var oSMTP = new SMTPClientSimulator();
                CustomAssert.IsTrue(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1"));

                server.WaitForCompletion();

                CustomAssert.IsTrue(server.MessageData.Contains("Mail 1"), server.MessageData);
            }
        }