Пример #1
0
        public void ConfirmSingleReturnPathAfterAccountForward()
        {
            // Create a test account
             // Fetch the default domain
             Account oAccount1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");
             Account oAccount2 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             oAccount1.ForwardAddress = oAccount2.Address;
             oAccount1.ForwardEnabled = true;
             oAccount1.Save();

             // Send a message...
             var oSMTP = new SMTPClientSimulator();
             oSMTP.Send("*****@*****.**", oAccount1.Address, "Test message", "This is the body");

             TestSetup.AssertRecipientsInDeliveryQueue(0);
             _application.SubmitEMail();

             // Wait for the auto-reply.
             string text = POP3Simulator.AssertGetFirstMessageText(oAccount2.Address, "test");

             Assert.IsFalse(text.Contains("Return-Path: [email protected]"));
             Assert.IsFalse(text.Contains("Return-Path: [email protected]"));
             Assert.IsTrue(text.Contains("Return-Path: [email protected]"));
        }
Пример #2
0
        public void TestNestedOrSearch()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             // Send a message to this account.
             var oSMTP = new SMTPClientSimulator();
             oSMTP.Send("*****@*****.**", "*****@*****.**", "Search test", "This is a test of IMAP Search");

             IMAPClientSimulator.AssertMessageCount(oAccount.Address, "test", "Inbox", 1);

             var oSimulator = new IMAPClientSimulator();
             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             oSimulator.SelectFolder("INBOX");

             string result =
            oSimulator.SendSingleCommand("A4 SEARCH ALL OR OR SINCE 28-May-2008 SINCE 28-May-2008 SINCE 28-May-2008");
             CustomAssert.IsTrue(result.StartsWith("* SEARCH 1"), result);

             result = oSimulator.SendSingleCommand("A4 SEARCH ALL OR SMALLER 1 LARGER 10000");
             CustomAssert.IsTrue(result.StartsWith("* SEARCH\r\n"), result);

             result = oSimulator.SendSingleCommand("A4 SEARCH ALL OR OR SMALLER 1 LARGER 10000 SMALLER 10000");
             CustomAssert.IsTrue(result.StartsWith("* SEARCH 1\r\n"), result);
        }
Пример #3
0
        public void TestDomainAliases()
        {
            // Create a test account
             // Fetch the default domain
             DomainAlias oDomainAlias = _domain.DomainAliases.Add();
             oDomainAlias.AliasName = "alias.com";
             oDomainAlias.Save();

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

             // Send 5 messages to this account.
             var oSMTP = new SMTPClientSimulator();
             for (int i = 0; i < 5; i++)
            oSMTP.Send("*****@*****.**", "*****@*****.**", "INBOX", "Alias test message");

             POP3Simulator.AssertMessageCount("*****@*****.**", "test", 5);

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

            // Set up an alias pointing at the domain alias.
            SingletonProvider<TestSetup>.Instance.AddAlias(_domain, "*****@*****.**",
                                                           "*****@*****.**");

            // Send to the alias
            for (int i = 0; i < 5; i++)
               oSMTP.Send(oAccount.Address, "*****@*****.**", "INBOX", "Plus addressing message");
            // Wait for completion

            POP3Simulator.AssertMessageCount(oAccount.Address, "test", 5);
             }
        }
        public void DoNotUseStartTlsIfNotEnabledAndNotAvailable()
        {
            // No valid recipients...
             var deliveryResults = new Dictionary<string, int>();
             deliveryResults["*****@*****.**"] = 250;

             int smtpServerPort = TestSetup.GetNextFreePort();
             using (var server = new SMTPServerSimulator(1, smtpServerPort, eConnectionSecurity.eCSNone))
             {
            server.AddRecipientResult(deliveryResults);
            server.StartListen();

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

            // Send message to this route.
            var smtp = new SMTPClientSimulator();
            if (!smtp.Send("*****@*****.**", "*****@*****.**", "Test", "Test message"))
               CustomAssert.Fail("Delivery failed");

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

            TestSetup.AssertRecipientsInDeliveryQueue(0, false);

            Assert.IsNotNullOrEmpty(server.MessageData);

            CustomAssert.IsFalse(TestSetup.DefaultLogContains("220 Ready to start TLS"));
             }
        }
        public void SmtpServerNOTSupportingStartTls_StartTlsRequired()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             // 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, eConnectionSecurity.eCSNone))
             {
            server.SetCertificate(SslSetup.GetCertificate());
            server.AddRecipientResult(deliveryResults);
            server.StartListen();

            Route route = SMTPClientTests.AddRoutePointingAtLocalhost(1, smtpServerPort, true, eConnectionSecurity.eCSSTARTTLSRequired);

            var smtpClient = new SMTPClientSimulator();
            CustomAssert.IsTrue(smtpClient.Send(account.Address, "*****@*****.**", "Test", "Test message"));

            TestSetup.AssertRecipientsInDeliveryQueue(0);

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

            var msg = POP3ClientSimulator.AssertGetFirstMessageText("*****@*****.**", "test");

            CustomAssert.IsTrue(msg.Contains("Server does not support STARTTLS"));
             }
        }
Пример #6
0
        public void TestDistributionListAnnouncementFromDomainAlias()
        {
            var oIMAP = new IMAPSimulator();
             var oSMTP = new SMTPClientSimulator();

             Application application = SingletonProvider<TestSetup>.Instance.GetApp();

             //
             // TEST LIST SECURITY IN COMBINATION WITH DOMAIN NAME ALIASES
             //

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

             var oRecipients = new List<string>();
             oRecipients.Add("*****@*****.**");

             DistributionList oList3 = SingletonProvider<TestSetup>.Instance.AddDistributionList(_domain, "*****@*****.**",
                                                                                             oRecipients);
             oList3.Mode = eDistributionListMode.eLMAnnouncement;
             oList3.RequireSenderAddress = "*****@*****.**";
             oList3.Save();

             // THIS MESSAGE SHOULD FAIL
             Assert.IsFalse(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1"));

             DomainAlias oDA = _domain.DomainAliases.Add();
             oDA.AliasName = "dummy-example.com";
             oDA.Save();

             // THIS MESSAGE SHOULD SUCCEED
             Assert.IsTrue(oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1"));
             IMAPSimulator.AssertMessageCount("*****@*****.**", "test", "Inbox", 1);
        }
Пример #7
0
        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;

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

             Assert.IsTrue(result1.Contains("550 Delivery is not allowed to this address."));
             Assert.IsTrue(result2.Contains("550 Delivery is not allowed to this address."));
             Assert.IsTrue(result3.Contains("550 Delivery is not allowed to this address."));
             Assert.IsTrue(result4.Contains("550 Delivery is not allowed to this address."));
        }
Пример #8
0
        public static bool StaticSend(string sFrom, string recipient, string sSubject, string sBody)
        {
            var messageRecipients = new List<string>();
             messageRecipients.Add(recipient);

             var oSimulator = new SMTPClientSimulator();
             return oSimulator.Send(sFrom, messageRecipients, sSubject, sBody);
        }
Пример #9
0
        public void TestCaseInsensitivtyAccount()
        {
            Account testAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSMTP = new SMTPClientSimulator();
             string upperCase = testAccount.Address.ToUpper();
             Assert.IsTrue(oSMTP.Send("*****@*****.**", upperCase, "test mail", "test body"));

             POP3Simulator.AssertMessageCount("*****@*****.**", "test", 1);
        }
Пример #10
0
        public void TestESMTPSInHeader()
        {
            var smtpClientSimulator = new SMTPClientSimulator(false, 25002);

             string errorMessage;
             smtpClientSimulator.Send(true, string.Empty, string.Empty, _account.Address, _account.Address, "Test", "test", out errorMessage);

             var message = POP3ClientSimulator.AssertGetFirstMessageText(_account.Address, "test");
             CustomAssert.IsTrue(message.Contains("ESMTPS\r\n"));
        }
Пример #11
0
        public static bool StaticSend(string sFrom, string recipient, string sSubject, string sBody)
        {
            var messageRecipients = new List <string>();

            messageRecipients.Add(recipient);

            var oSimulator = new SMTPClientSimulator();

            return(oSimulator.Send(sFrom, messageRecipients, sSubject, sBody));
        }
Пример #12
0
        public void TestESMTPAInHeader()
        {
            string errorMessage;

             var client = new SMTPClientSimulator();
             client.Send(false, _account.Address, "test", _account.Address, _account.Address, "Test", "Test", out errorMessage);

             var message = POP3ClientSimulator.AssertGetFirstMessageText(_account.Address, "test");

             CustomAssert.IsTrue(message.Contains("ESMTPA\r\n"));
        }
Пример #13
0
        public void TestLongLineInData()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");
             var sb = new StringBuilder();
             for (int i = 0; i < 11000; i++)
             {
            sb.Append("1234567890");
             }

             var sim = new SMTPClientSimulator();
             Assert.IsFalse(sim.SendRaw("*****@*****.**", "*****@*****.**", sb.ToString()));
        }
Пример #14
0
        public void MessageHeaderShouldBeValidAfterSAHasRun()
        {
            // Send a messages to this account.
             var smtpClient = new SMTPClientSimulator();
            smtpClient.Send(account.Address, account.Address, "SA test",
                    "This is a test message with spam.\r\n XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X.");

             string fullMessage = POP3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

             string messageHeader = fullMessage.Substring(0, fullMessage.IndexOf("\r\n\r\n"));
             CustomAssert.IsTrue(messageHeader.Contains("Received:"));
             CustomAssert.IsTrue(messageHeader.Contains("Return-Path:"));
             CustomAssert.IsTrue(messageHeader.Contains("From:"));
             CustomAssert.IsTrue(messageHeader.Contains("Subject: ThisIsSpam"));
        }
Пример #15
0
        public void TestEmptyPassword()
        {
            Account account1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "");

             string message;
             var sim = new POP3Simulator();
             Assert.IsFalse(sim.ConnectAndLogon(account1.Address, "", out message));

             var simIMAP = new IMAPSimulator();
             Assert.IsFalse(simIMAP.ConnectAndLogon(account1.Address, "", out message));
             Assert.AreEqual("A01 NO Invalid user name or password.\r\n", message);

             var simSMTP = new SMTPClientSimulator();
             Assert.IsFalse(simSMTP.ConnectAndLogon(25, "dGVzdEB0ZXN0LmNvbQ==", "", out message));
             Assert.AreEqual("535 Authentication failed. Restarting authentication process.\r\n", message);
        }
Пример #16
0
        public void ActionAccountRuleMoveToExistingPublicFolder()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

             // Add an account
             Account account1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");
             IMAPFolders publicFolders = _settings.PublicFolders;
             IMAPFolder folder = publicFolders.Add("Share1");
             folder.Save();

             IMAPFolderPermission permission = folder.Permissions.Add();
             permission.PermissionAccountID = account1.ID;
             permission.PermissionType = eACLPermissionType.ePermissionTypeUser;
             permission.set_Permission(eACLPermission.ePermissionInsert, true);
             permission.set_Permission(eACLPermission.ePermissionRead, true);
             permission.set_Permission(eACLPermission.ePermissionExpunge, true);
             permission.Save();

             Rule oRule = account1.Rules.Add();
             oRule.Name = "Criteria test";
             oRule.Active = true;

             RuleCriteria oRuleCriteria = oRule.Criterias.Add();
             oRuleCriteria.UsePredefined = true;
             oRuleCriteria.PredefinedField = eRulePredefinedField.eFTMessageSize;
             oRuleCriteria.MatchType = eRuleMatchType.eMTGreaterThan;
             oRuleCriteria.MatchValue = "0";
             oRuleCriteria.Save();

             // Add action
             RuleAction oRuleAction = oRule.Actions.Add();
             oRuleAction.Type = eRuleActionType.eRAMoveToImapFolder;
             oRuleAction.IMAPFolder = "#public.Share1";
             oRuleAction.Save();

             // Save the rule in the database
             oRule.Save();

             var oSMTP = new SMTPClientSimulator();

             // Spam folder
             CustomAssert.IsTrue(oSMTP.Send("*****@*****.**", "*****@*****.**", "SomeString",
                                  "Detta ska hamna i public folder."));

             IMAPClientSimulator.AssertMessageCount("*****@*****.**", "test", "#public.Share1", 1);
        }
Пример #17
0
        public void RoutesShouldConsolidateRecipients()
        {
            // Set up a server listening on port 250 which accepts email for [email protected]
             var deliveryResults = new Dictionary<string, int>();
             deliveryResults["*****@*****.**"] = 250;
             deliveryResults["*****@*****.**"] = 250;
             deliveryResults["*****@*****.**"] = 250;
             deliveryResults["*****@*****.**"] = 250;

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

            // Add a route pointing at localhost
            Route route = _settings.Routes.Add();
            route.DomainName = "test.com";
            route.TargetSMTPHost = "localhost";
            route.TargetSMTPPort = smtpServerPort;
            route.NumberOfTries = 1;
            route.MinutesBetweenTry = 5;
            route.TreatRecipientAsLocalDomain = true;
            route.TreatSenderAsLocalDomain = true;
            route.AllAddresses = true;
            route.Save();

            var smtpClient = new SMTPClientSimulator();

            var recipients = new List<string>()
               {
                  "*****@*****.**",
                  "*****@*****.**",
                  "*****@*****.**",
                  "*****@*****.**"
               };

            CustomAssert.IsTrue(smtpClient.Send("*****@*****.**", recipients, "Test", "Test message"));
            TestSetup.AssertRecipientsInDeliveryQueue(0);

            server.WaitForCompletion();

            CustomAssert.IsTrue(server.MessageData.Contains("Test message"));
            CustomAssert.AreEqual(deliveryResults.Count, server.RcptTosReceived);
             }
        }
Пример #18
0
        public void TestESMTPSAInHeader()
        {
            try
             {
            var smtpClientSimulator = new SMTPClientSimulator(false, 25002);

            string errorMessage;
            smtpClientSimulator.Send(true, _account.Address, "test", _account.Address, _account.Address, "Test", "test",
               out errorMessage);

            var message = POP3ClientSimulator.AssertGetFirstMessageText(_account.Address, "test");
            CustomAssert.IsTrue(message.Contains("ESMTPSA\r\n"));
             }
             catch (Exception e)
             {
            CustomAssert.Fail(e.ToString());
             }
        }
Пример #19
0
        public void TestSenderAsExternalDomainSendToLocalAccountFail()
        {
            int smtpServerPort = TestSetup.GetNextFreePort();
             Route route = SMTPClientTests.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 oSMTP = new SMTPClientSimulator();
             string result;
             Assert.IsFalse(oSMTP.Send("*****@*****.**", account1.Address, "Mail 1", "Mail 1", out result));
        }
Пример #20
0
        public void TestAliases()
        {
            // Fetch default domain

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

             // Add aliases
             SingletonProvider<TestSetup>.Instance.AddAlias(_domain, "*****@*****.**", "*****@*****.**");
             SingletonProvider<TestSetup>.Instance.AddAlias(_domain, "*****@*****.**", "*****@*****.**");
             var oSMTP = new SMTPClientSimulator();

             // Spam folder
             oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1");
             oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 2", "Mail 2");
             oSMTP.Send("*****@*****.**", "*****@*****.**", "Mail 3", "Mail 3");

             IMAPSimulator.AssertMessageCount("*****@*****.**", "test", "Inbox", 3);
        }
Пример #21
0
        public void RecipientNotInListShouldReturnError()
        {
            // Add a route pointing at localhost
             Route route = _settings.Routes.Add();
             route.DomainName = "test.com";
             route.TargetSMTPHost = "localhost";
             route.TargetSMTPPort = 255;
             route.NumberOfTries = 1;
             route.MinutesBetweenTry = 5;
             route.TreatRecipientAsLocalDomain = true;
             route.TreatSenderAsLocalDomain = true;
             route.AllAddresses = false; // only to recipients in list.
             route.Save();

             var smtpClient = new SMTPClientSimulator();

             string resultMessage;
             CustomAssert.IsFalse(smtpClient.Send("*****@*****.**", "*****@*****.**", "Test", "Test message", out resultMessage));
             CustomAssert.AreEqual("550 Recipient not in route list.", resultMessage);
        }
Пример #22
0
        public void SurblTestRealWorldBody1()
        {
            TestSetup.DeleteCurrentDefaultLog();

             // Create a test account
             // Fetch the default domain
             Account oAccount1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             // Disallow incorrect line endings.
             _antiSpam.SpamMarkThreshold = 1;
             _antiSpam.SpamDeleteThreshold = 100;
             _antiSpam.AddHeaderReason = true;
             _antiSpam.AddHeaderSpam = true;
             _antiSpam.PrependSubject = true;
             _antiSpam.PrependSubjectText = "ThisIsSpam";

             // Enable SURBL.
             SURBLServer oSURBLServer = _antiSpam.SURBLServers[0];
             oSURBLServer.Active = true;
             oSURBLServer.Score = 5;
             oSURBLServer.Save();

             // Send a messages to this account.
             var oSMTP = new SMTPClientSimulator();

             oSMTP.Send("*****@*****.**", "*****@*****.**", "SURBL-Match", TestResources.SecuniaBody1);

             string sMessageContents = POP3Simulator.AssertGetFirstMessageText(oAccount1.Address, "test");
             Assert.IsFalse(sMessageContents.Contains("X-hMailServer-Spam"), "Spam message not detected as spam");

             oSURBLServer.Active = false;
             oSURBLServer.Save();

             Assert.IsTrue(TestSetup.DefaultLogContains("SURBL: 2 unique addresses found."));
             Assert.IsTrue(TestSetup.DefaultLogContains("SURBL: Found URL: secunia.com"));
             Assert.IsFalse(TestSetup.DefaultLogContains("SURBL: Found URL: ecunia.com"));
             Assert.IsTrue(TestSetup.DefaultLogContains("SURBL: Lookup: secunia.com.multi.surbl.org"));
             Assert.IsTrue(TestSetup.DefaultLogContains("SURBL: Lookup: ubuntu.com.multi.surbl.org"));
        }
Пример #23
0
        public void TestMirror()
        {
            // Create a test account
             // Fetch the default domain
             Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");
             Account oAccount2 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             _settings.MirrorEMailAddress = "*****@*****.**";
             _settings.AddDeliveredToHeader = true;

             // Send 5 messages to this account.
             var oSMTP = new SMTPClientSimulator();
             for (int i = 0; i < 5; i++)
            oSMTP.Send("*****@*****.**", "*****@*****.**", "INBOX", "Mirror test message");

             // Check using POP3 that 5 messages exists.
             POP3Simulator.AssertMessageCount("*****@*****.**", "test", 5);

             string message = POP3Simulator.AssertGetFirstMessageText(oAccount2.Address, "test");

             Assert.IsTrue(message.Contains("Delivered-To: [email protected]"));
        }
Пример #24
0
        public void TestAuthFailurePasswordInBounce()
        {
            CustomAssert.AreEqual(0, _status.UndeliveredMessages.Length);

             // No valid recipients...
             var deliveryResults = new Dictionary<string, int>();
             deliveryResults["*****@*****.**"] = 250;

             int smtpServerPort = TestSetup.GetNextFreePort();
             using (var server = new SMTPServerSimulator(1, smtpServerPort))
             {
            server.AddRecipientResult(deliveryResults);
            server.SimulatedError = SimulatedErrorType.ForceAuthenticationFailure;
            server.StartListen();

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

            // Send message to this route.
            var smtp = new SMTPClientSimulator();
            var recipients = new List<string>();
            recipients.Add("*****@*****.**");
            CustomAssert.IsTrue(smtp.Send("*****@*****.**", recipients, "Test", "Test message"));

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

            TestSetup.AssertRecipientsInDeliveryQueue(0);

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

            CustomAssert.IsFalse(messageText.Contains("MySecretPassword"));
            CustomAssert.IsTrue(messageText.Contains("<Password removed>"));
             }
        }
Пример #25
0
        public void TestMultipleDomains()
        {
            Domains domains = SingletonProvider<TestSetup>.Instance.GetApp().Domains;

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

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

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

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

             CustomAssert.IsTrue(POP3Simulator.AssertGetFirstMessageText(account1.Address, "test").Contains(account1.Address));
             CustomAssert.IsTrue(POP3Simulator.AssertGetFirstMessageText(account2.Address, "test").Contains(account2.Address));
             CustomAssert.IsTrue(POP3Simulator.AssertGetFirstMessageText(account3.Address, "test").Contains(account3.Address));
             CustomAssert.IsTrue(POP3Simulator.AssertGetFirstMessageText(account4.Address, "test").Contains(account4.Address));
        }
Пример #26
0
        public void TestDeleteThresholdLowerThanMarkThreshold()
        {
            Account oAccount1 = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             hMailServer.AntiSpam antiSpam = _settings.AntiSpam;

             antiSpam.SpamMarkThreshold = 15;
             antiSpam.SpamDeleteThreshold = 0;

             antiSpam.AddHeaderReason = true;
             antiSpam.AddHeaderSpam = true;
             antiSpam.PrependSubject = true;
             antiSpam.PrependSubjectText = "ThisIsSpam";

             antiSpam.CheckHostInHelo = true;
             antiSpam.CheckHostInHeloScore = 10;

             // Enable SURBL.
             SURBLServer oSURBLServer = antiSpam.SURBLServers[0];
             oSURBLServer.Active = true;
             oSURBLServer.Score = 10;
             oSURBLServer.Save();

             // Send a messages to this account, containing both incorrect MX records an SURBL-hits.
             // We should only detect one of these two:
             var oSMTP = new SMTPClientSimulator();

             // Should not be possible to send this email since it's results in a spam
             // score over the delete threshold.
             CustomAssert.IsTrue(oSMTP.Send("*****@*****.**", oAccount1.Address, "INBOX",
                                  "Test http://surbl-org-permanent-test-point.com/ Test 2"));

             string message = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");

             CustomAssert.IsTrue(message.Contains("X-hMailServer-Reason-1:"));
             CustomAssert.IsTrue(message.Contains("X-hMailServer-Reason-2:"));
        }
Пример #27
0
        public void TestGreyListing()
        {
            _antiSpam.GreyListingEnabled = false;

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

             var smtp = new SMTPClientSimulator();
             var recipients = new List<string>();
             recipients.Add(oAccount1.Address);
             bool result = smtp.Send("*****@*****.**", recipients, "Test", "Body");
             CustomAssert.IsTrue(result);
             POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");

             _antiSpam.GreyListingEnabled = true;

             result = smtp.Send("*****@*****.**", recipients, "Test", "Body");
             CustomAssert.IsFalse(result);

             _antiSpam.GreyListingEnabled = false;

             result = smtp.Send("*****@*****.**", recipients, "Test", "Body");
             CustomAssert.IsTrue(result);
             POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");
        }
Пример #28
0
        public void TestSignatureExternalDomain()
        {
            domain.SignatureEnabled = true;
             domain.SignaturePlainText = "MyDomainSignature";
             domain.AddSignaturesToLocalMail = true;
             domain.Save();

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

             var oSMTP = new SMTPClientSimulator();
             oSMTP.Send("*****@*****.**", account.Address, "SignatureTest", "SignaturerTestBody");

             string messageData = POP3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

             CustomAssert.IsFalse(messageData.Contains(domain.SignaturePlainText));
        }
Пример #29
0
        public void TestSignature()
        {
            domain.SignatureEnabled = true;
             domain.AddSignaturesToLocalMail = true;

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

             oAccount1.SignatureEnabled = true;
             var oSMTP = new SMTPClientSimulator();
             oSMTP.Send(oAccount1.Address, oAccount1.Address, "Test of signature, 1", "Test of signature - Body");

             string sMessageData = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");

             if (sMessageData.IndexOf("PlainTextSignature") > 0)
            throw new Exception("Found exception which should not be there");

             oAccount1.SignaturePlainText = "PlainTextSignature";
             oAccount1.Save();
             oSMTP.Send(oAccount1.Address, oAccount1.Address, "Test of signature, 2", "Test of signature - Body");

             sMessageData = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");

             if (sMessageData.IndexOf("PlainTextSignature") < 0)
            throw new Exception("Did not find expected signature");

             // Turn off signature again
             oAccount1.SignatureEnabled = false;
             oAccount1.Save();

             oSMTP.Send(oAccount1.Address, oAccount1.Address, "Test of signature, 2", "Test of signature - Body");
             sMessageData = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");

             if (sMessageData.IndexOf("PlainTextSignature") > 0)
            throw new Exception("Found signature even though there shouldn't be any");
        }
Пример #30
0
        public void TestSignatureMacroLocalDomainNonExistantAccount()
        {
            domain.SignatureEnabled = true;
             domain.SignaturePlainText = "MyDomainSignature %User.FirstName%";
             domain.AddSignaturesToLocalMail = true;
             domain.Save();

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

             var oSMTP = new SMTPClientSimulator();
             oSMTP.Send("nonexistant@" + domain.Name, account.Address, "SignatureTest", "SignaturerTestBody");

             string messageData = POP3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

             CustomAssert.IsTrue(messageData.Contains("%User.FirstName%"));
        }
Пример #31
0
        public static bool StaticSendRaw(string sFrom, string recipient, string sBody)
        {
            var oSimulator = new SMTPClientSimulator();

            return(oSimulator.SendRaw(sFrom, recipient, sBody));
        }
Пример #32
0
        public void TestDomainSignature()
        {
            var oPOP3 = new POP3ClientSimulator();

             domain.SignatureEnabled = true;
             domain.AddSignaturesToLocalMail = true;

             Account oAccount1 = SingletonProvider<TestSetup>.Instance.AddAccount(domain, "*****@*****.**",
                                                                              "test");
             oAccount1.SignatureEnabled = true;
             oAccount1.SignaturePlainText = "PlainTextSignature";
             oAccount1.Save();

             var oSMTP = new SMTPClientSimulator();
             oSMTP.Send(oAccount1.Address, oAccount1.Address, "Test of signature, 1", "Test of signature - Body");

             string sMessageContents = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");
             if (sMessageContents.IndexOf("PlainTextSignature") <= 0)
            throw new Exception("Did not find signature");

             domain.SignatureEnabled = true;
             domain.SignaturePlainText = "DomainSignature";
             domain.SignatureMethod = eDomainSignatureMethod.eSMAppendToAccountSignature;
             domain.Save();
             oSMTP.Send(oAccount1.Address, oAccount1.Address, "Test of signature, 1", "Test of signature - Body");

             sMessageContents = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");
             if (sMessageContents.IndexOf("PlainTextSignature") <= 0 ||
             sMessageContents.IndexOf("DomainSignature") <= 0)
            throw new Exception("Did not find signature");

             domain.SignatureEnabled = true;
             domain.SignaturePlainText = "DomainSignature";
             domain.SignatureMethod = eDomainSignatureMethod.eSMOverwriteAccountSignature;
             domain.Save();
             oSMTP.Send(oAccount1.Address, oAccount1.Address, "Test of signature, 1", "Test of signature - Body");

             sMessageContents = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");
             if (sMessageContents.IndexOf("PlainTextSignature") >= 0 ||
             sMessageContents.IndexOf("DomainSignature") <= 0)
            throw new Exception("Did not find signature");

             domain.SignatureEnabled = true;
             domain.SignaturePlainText = "DomainSignature";
             domain.SignatureMethod = eDomainSignatureMethod.eSMSetIfNotSpecifiedInAccount;
             domain.Save();
             oSMTP.Send(oAccount1.Address, oAccount1.Address, "Test of signature, 1", "Test of signature - Body");

             sMessageContents = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");
             if (sMessageContents.IndexOf("DomainSignature") >= 0)
            throw new Exception("Found incorrect signature.");

             domain.SignatureEnabled = true;
             domain.SignaturePlainText = "DomainSignature";
             domain.SignatureMethod = eDomainSignatureMethod.eSMSetIfNotSpecifiedInAccount;
             domain.Save();
             oAccount1.SignaturePlainText = "";
             oAccount1.Save();

             oSMTP.Send(oAccount1.Address, oAccount1.Address, "Test of signature, 1", "Test of signature - Body");

             sMessageContents = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");
             if (sMessageContents.IndexOf("DomainSignature") <= 0)
            throw new Exception("Found incorrect signature.");

             domain.AddSignaturesToLocalMail = false;
             domain.Save();
             oAccount1.SignaturePlainText = "PlainTextSignature";
             oAccount1.Save();
             oSMTP.Send(oAccount1.Address, oAccount1.Address, "Test of signature, 1", "Test of signature - Body");

             sMessageContents = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");
             if (sMessageContents.IndexOf("PlainTextSignature") > 0)
            throw new Exception("Found incorrect signature.");

             domain.AddSignaturesToLocalMail = true;
             domain.Save();

             oSMTP.Send(oAccount1.Address, oAccount1.Address, "Test of signature, 1", "Test of signature - Body");

             sMessageContents = POP3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");
             if (sMessageContents.IndexOf("PlainTextSignature") <= 0)
            throw new Exception("Found incorrect signature.");
        }
Пример #33
0
        public static bool StaticSend(string sFrom, List <string> lstRecipients, string sSubject, string sBody)
        {
            var oSimulator = new SMTPClientSimulator();

            return(oSimulator.Send(sFrom, lstRecipients, sSubject, sBody));
        }