Exemplo n.º 1
0
        public void TestDeliverToMyselfOnLocalPortAfterChangedLocalPort()
        {
            TCPIPPorts oPorts = _application.Settings.TCPIPPorts;

            for (int i = 0; i < oPorts.Count; i++)
            {
                TCPIPPort oTestPort = oPorts[i];
                if (oTestPort.Protocol == eSessionType.eSTIMAP)
                {
                    oTestPort.PortNumber = 14300;
                }
                else if (oTestPort.Protocol == eSessionType.eSTSMTP)
                {
                    oTestPort.PortNumber = 11000;
                }
                else if (oTestPort.Protocol == eSessionType.eSTPOP3)
                {
                    oTestPort.PortNumber = 2500;
                }

                oTestPort.Save();
            }

            _application.Stop();
            _application.Start();

            // Set up a server and start listening.
            var deliveryResults = new Dictionary <string, int>();

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

            int smtpServerPort = TestSetup.GetNextFreePort();

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

                // Add a route so we can connect to localhost.
                TestSetup.AddRoutePointingAtLocalhost(5, smtpServerPort, false);

                // Send message to this route.
                var sim = new SmtpClientSimulator(false, 11000);
                sim.Send("*****@*****.**", "*****@*****.**", "Test", "Test message");


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

                CustomAsserts.AssertRecipientsInDeliveryQueue(0, false);

                Assert.IsTrue(server.MessageData.Contains("Test message"));
            }

            oPorts.SetDefault();
            _application.Stop();
            _application.Start();
        }
Exemplo n.º 2
0
        public void TestSURBLCombinedWithSignature()
        {
            Application application = SingletonProvider <TestSetup> .Instance.GetApp();

            // Create a test account
            // Fetch the default domain

            _domain.SignatureEnabled         = true;
            _domain.SignaturePlainText       = "MyDomainSignature";
            _domain.AddSignaturesToLocalMail = true;
            _domain.Save();

            Account account1 = 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 surblServer = _antiSpam.SURBLServers[0];

            surblServer.Active = true;
            surblServer.Score  = 5;
            surblServer.Save();

            // Send a messages to this account.
            var smtpClientSimulator = new SmtpClientSimulator();

            smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "SURBL-No-Match",
                                     "This is a test message without a SURBL url.");

            string sMessageContents = Pop3ClientSimulator.AssertGetFirstMessageText(account1.Address, "test");

            if (sMessageContents.Length == 0 ||
                sMessageContents.Contains("X-hMailServer-Spam") ||
                sMessageContents.Contains("ThisIsSpam"))
            {
                throw new Exception("Non-Spam message detected as spam");
            }

            Assert.IsTrue(sMessageContents.Contains(_domain.SignaturePlainText));

            smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "SURBL-No-Match",
                                     "This is a test message with a SURBL url: -> http://surbl-org-permanent-test-point.com/ <-");

            sMessageContents = Pop3ClientSimulator.AssertGetFirstMessageText(account1.Address, "test");
            if (!sMessageContents.Contains("X-hMailServer-Spam") ||
                !sMessageContents.Contains("ThisIsSpam"))
            {
                throw new Exception("Spam message not detected as spam");
            }

            Assert.IsTrue(sMessageContents.Contains(_domain.SignaturePlainText));
        }
Exemplo n.º 3
0
        public void TestSMTPServerAuthLogin()
        {
            var    sim = new SmtpClientSimulator();
            string errorMsg;

            CustomAsserts.Throws <AuthenticationException>(() => sim.ConnectAndLogon(GetUsername(), GetPassword(), out errorMsg));

            EnsureNoPassword();
        }
Exemplo n.º 4
0
        public void TestAutoReply()
        {
            // Create a test account
            // Fetch the default domain
            Account oAccount1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain,
                                                                                   TestSetup.UniqueString() + "@test.com",
                                                                                   "test");

            Account oAccount2 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain,
                                                                                   TestSetup.UniqueString() + "@test.com",
                                                                                   "test");

            oAccount2.VacationMessageIsOn = true;
            oAccount2.VacationMessage     = "I'm on vacation";
            oAccount2.VacationSubject     = "Out of office!";
            oAccount2.Save();

            // Send 2 messages to this account.
            var smtpClientSimulator = new SmtpClientSimulator();

            smtpClientSimulator.Send(oAccount1.Address, oAccount2.Address, "Test message", "This is the body");

            var pop3ClientSimulator = new Pop3ClientSimulator();

            Pop3ClientSimulator.AssertMessageCount(oAccount1.Address, "test", 1);
            Pop3ClientSimulator.AssertMessageCount(oAccount2.Address, "test", 1);
            string s = pop3ClientSimulator.GetFirstMessageText(oAccount1.Address, "test");

            if (s.IndexOf("Out of office!") < 0)
            {
                throw new Exception("ERROR - Auto reply subject not set properly.");
            }

            oAccount2.VacationMessageIsOn = false;
            oAccount2.Save();

            oAccount2.VacationSubject     = "";
            oAccount2.VacationMessageIsOn = true;
            oAccount2.Save();

            // Send another
            smtpClientSimulator.Send(oAccount1.Address, oAccount2.Address, "Test message", "This is the body");

            Pop3ClientSimulator.AssertMessageCount(oAccount2.Address, "test", 2);
            Pop3ClientSimulator.AssertMessageCount(oAccount1.Address, "test", 1);

            s = pop3ClientSimulator.GetFirstMessageText(oAccount1.Address, "test");
            if (s.ToLower().IndexOf("re: test message") < 0)
            {
                throw new Exception("ERROR - Auto reply subject not set properly.");
            }

            Assert.IsTrue(s.Contains("Auto-Submitted: auto-replied"));

            oAccount2.VacationMessageIsOn = false;
            oAccount2.Save();
        }
Exemplo n.º 5
0
        public void TestPostmasterAddressIsAliasButAliasMissing()
        {
            _domain.Postmaster = "*****@*****.**";
            _domain.Save();

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

            CustomAsserts.Throws <DeliveryFailedException>(() => SmtpClientSimulator.StaticSend("*****@*****.**", "*****@*****.**", "Test", "Test"));
        }
Exemplo n.º 6
0
        public void TestNoVirus()
        {
            _antiVirus.ClamAVEnabled = true;

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

            SmtpClientSimulator.StaticSend(account1.Address, account1.Address, "Mail 1", "Mail 1");
            Pop3ClientSimulator.AssertMessageCount(account1.Address, "test", 1);
        }
Exemplo n.º 7
0
        public void TestFatalDeliveryFailure()
        {
            _application.Settings.Logging.Enabled  = true;
            _application.Settings.Logging.LogSMTP  = true;
            _application.Settings.Logging.LogTCPIP = true;
            _application.Settings.Logging.LogDebug = true;

            Assert.AreEqual(0, _status.UndeliveredMessages.Length);

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

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

            int smtpServerPort = TestSetup.GetNextFreePort();

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

                // Add a route so we can conenct to localhost.
                TestSetup.AddRoutePointingAtLocalhost(0, smtpServerPort, false);

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

                string undeliveredMessages = _status.UndeliveredMessages;

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

                // wait for the message to be delivered.
                for (int i = 1; i <= 40; i++)
                {
                    Assert.IsFalse(i == 40);

                    if (_status.UndeliveredMessages.Contains("\[email protected]") || _status.UndeliveredMessages.Length == 0)
                    {
                        break;
                    }

                    Thread.Sleep(250);
                }

                CustomAsserts.AssertRecipientsInDeliveryQueue(0, true);

                string bounceMessage = Pop3ClientSimulator.AssertGetFirstMessageText(_account.Address, "test");

                Assert.IsTrue(bounceMessage.Contains("Remote server (127.0.0.1) issued an error."));
                Assert.IsTrue(bounceMessage.Contains("550 [email protected]"));
            }
        }
Exemplo n.º 8
0
        public void TestDistributionListsMembershipDomainAliases()
        {
            var imap = new ImapClientSimulator();
            var smtpClientSimulator = new SmtpClientSimulator();

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


            DomainAlias domainAlias = _domain.DomainAliases.Add();

            domainAlias.AliasName = "dummy-example.com";
            domainAlias.Save();

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

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


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


            var recipients = new List <string>();

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

            DistributionList list3 = SingletonProvider <TestSetup> .Instance.AddDistributionList(_domain, "*****@*****.**",
                                                                                                 recipients);

            list3.Mode = eDistributionListMode.eLMMembership;
            list3.Save();

            // THIS MESSAGE SHOULD FAIL - Membership required, unknown sender domain
            CustomAsserts.Throws <DeliveryFailedException>(() => smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1"));

            list3.Delete();

            // THIS MESSAGE SHOULD SUCCED - Membership required, sender domain is now an alias for test.com.

            recipients = new List <string>();
            recipients.Clear();
            recipients.Add("*****@*****.**");
            recipients.Add("*****@*****.**");

            list3 = SingletonProvider <TestSetup> .Instance.AddDistributionList(_domain, "*****@*****.**", recipients);

            list3.Mode = eDistributionListMode.eLMMembership;
            list3.Save();

            smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1");

            ImapClientSimulator.AssertMessageCount("*****@*****.**", "test", "Inbox", 1);
            ImapClientSimulator.AssertMessageCount("*****@*****.**", "test", "Inbox", 1);
        }
Exemplo n.º 9
0
        public void TestSendToPostmasterAddress()
        {
            _domain.Postmaster = "*****@*****.**";
            _domain.Save();

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

            SmtpClientSimulator.StaticSend("*****@*****.**", "*****@*****.**", "Test", "Test");
            Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1);
        }
Exemplo n.º 10
0
        public void TestPlusAddressing()
        {
            // Create a test account
            // Fetch the default domain
            // Enable plus adressing
            _domain.PlusAddressingEnabled   = true;
            _domain.PlusAddressingCharacter = "+";

            // Save the change
            _domain.Save();

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

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

            // Send 5 messages to this account, without using plus addressing.
            var smtpClientSimulator = new SmtpClientSimulator();

            for (int i = 0; i < 5; i++)
            {
                smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "INBOX", "Plus addressing message");
            }
            // Wait for completion

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

            // Send using plus addressing
            for (int i = 0; i < 5; i++)
            {
                smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "INBOX", "Plus addressing message");
            }
            // Wait for completion

            Pop3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 10);

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

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

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

                Pop3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 5);
            }

            _domain.PlusAddressingEnabled = false;
        }
Exemplo n.º 11
0
        public void TestNotEnabled()
        {
            LogHandler.DeleteCurrentDefaultLog();
            Account account1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SmtpClientSimulator.StaticSend(account1.Address, account1.Address, "Mail 1", "Mail 1");
            Pop3ClientSimulator.AssertMessageCount(account1.Address, "test", 1);
            string defaultLog = LogHandler.ReadCurrentDefaultLog();

            Assert.IsFalse(defaultLog.Contains("Connecting to ClamAV"));
        }
Exemplo n.º 12
0
        public void TestIncorrectPort()
        {
            _antiVirus.ClamAVEnabled = true;
            _antiVirus.ClamAVPort    = 110;

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

            SmtpClientSimulator.StaticSend(account1.Address, account1.Address, "Mail 1", "DummyBody");
            Pop3ClientSimulator.AssertMessageCount(account1.Address, "test", 1);
            CustomAsserts.AssertReportedError("Protocol error. Unexpected response: +OK");
        }
Exemplo n.º 13
0
        public void TestPostmasterRecipientExternal()
        {
            _domain.Postmaster = "*****@*****.**";
            _domain.Save();

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

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

            CustomAsserts.Throws <DeliveryFailedException>(() => SmtpClientSimulator.StaticSend("*****@*****.**", "*****@*****.**", "Test", "Test"));
        }
Exemplo n.º 14
0
        public void TestCaseInsensitivtyAccount()
        {
            Account testAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var    smtpClientSimulator = new SmtpClientSimulator();
            string upperCase           = testAccount.Address.ToUpper();

            smtpClientSimulator.Send("*****@*****.**", upperCase, "test mail", "test body");

            Pop3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 1);
        }
Exemplo n.º 15
0
        public void TestUnusedPort()
        {
            _antiVirus.ClamAVEnabled = true;
            _antiVirus.ClamAVPort    = 54391;

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

            SmtpClientSimulator.StaticSend(account1.Address, account1.Address, "Mail 1", "DummyBody");
            Pop3ClientSimulator.AssertMessageCount(account1.Address, "test", 1);
            CustomAsserts.AssertReportedError("Unable to connect to ClamAV server at localhost:54391.");
        }
Exemplo n.º 16
0
        public void TestAttachmentRemoval()
        {
            // Send a message to the account.
            string messageText = @"Date: Thu, 03 Jul 2008 22:01:53 +0200\r\n" +
                                 "From: Test <*****@*****.**>\r\n" +
                                 "MIME-Version: 1.0\r\n" +
                                 "To: [email protected]\r\n" +
                                 "Subject: test\r\n" +
                                 "Content-Type: multipart/mixed;\r\n" +
                                 "  boundary=\"------------050908050500020808050006\"\r\n" +
                                 "\r\n" +
                                 "This is a multi-part message in MIME format.\r\n" +
                                 "--------------050908050500020808050006\r\n" +
                                 "Content-Type: text/plain; charset=ISO-8859-1; format=flowed\r\n" +
                                 "Content-Transfer-Encoding: 7bit\r\n" +
                                 "\r\n" +
                                 "Test\r\n" +
                                 "\r\n" +
                                 "--------------050908050500020808050006\r\n" +
                                 "Content-Type: text/plain;\r\n" +
                                 " name=\"AUTOEXEC.dll\"\r\n" +
                                 "Content-Transfer-Encoding: base64\r\n" +
                                 "Content-Disposition: inline;\r\n" +
                                 " filename=\"AUTOEXEC.dll\"\r\n" +
                                 "\r\n" +
                                 "\r\n" +
                                 "--------------050908050500020808050006--\r\n";

            SmtpClientSimulator.StaticSendRaw("*****@*****.**", "*****@*****.**", messageText);

            ImapClientSimulator.AssertMessageCount("*****@*****.**", "test", "Inbox", 1);

            Message message = CustomAsserts.AssertRetrieveFirstMessage(_account.IMAPFolders.get_ItemByName("INBOX"));

            Assert.AreEqual(1, message.Attachments.Count);
            Assert.AreEqual("AUTOEXEC.dll.txt", message.Attachments[0].Filename);

            string tempFile = Path.GetTempFileName();

            message.Attachments[0].SaveAs(tempFile);
            string contents = File.ReadAllText(tempFile);

            string removedMessage =
                SingletonProvider <TestSetup> .Instance.GetApp().Settings.ServerMessages.get_ItemByName(
                    "ATTACHMENT_REMOVED").Text;

            removedMessage = removedMessage.Replace("%MACRO_FILE%",
                                                    message.Attachments[0].Filename.Substring(0,
                                                                                              message.Attachments[0].
                                                                                              Filename.Length - 4));

            Assert.IsTrue(contents.Contains(removedMessage));
            File.Delete(tempFile);
        }
Exemplo n.º 17
0
        public void TestMultipleHostsHalfDeliveryOnFirstPermanentOnSecond()
        {
            Assert.AreEqual(0, _status.UndeliveredMessages.Length);

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

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

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

            deliveryResultsSecond["*****@*****.**"] = 550;
            deliveryResultsSecond["*****@*****.**"] = 550;
            deliveryResultsSecond["*****@*****.**"] = 500;

            int smtpServerPort = TestSetup.GetNextFreePort();

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


                // Add a route so we can connect to localhost.
                TestSetup.AddRoutePointingAtLocalhostMultipleHosts(1, smtpServerPort);

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

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

                smtp.Send("*****@*****.**", recipients, "Test", "Accepted message");

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

                // Trigger a sending of the bounce message.
                CustomAsserts.AssertRecipientsInDeliveryQueue(0, true);

                string bounceMessage = Pop3ClientSimulator.AssertGetFirstMessageText(_account.Address, "test");

                Assert.IsFalse(bounceMessage.Contains("RCPT TO:<*****@*****.**>"));
                Assert.IsFalse(bounceMessage.Contains("RCPT TO:<*****@*****.**>"));
                Assert.IsTrue(bounceMessage.Contains("RCPT TO:<*****@*****.**>"));
                Assert.IsTrue(bounceMessage.Contains("500 [email protected]"));
            }
        }
Exemplo n.º 18
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");

            Assert.IsTrue(message.Contains("ESMTPA\r\n"));
        }
Exemplo n.º 19
0
        public void TestSpamScoreHeadersAreCreatedEvenIfNoSpamMatch()
        {
            // Send a messages to this account.
            var smtpClientSimulator = new SmtpClientSimulator();

            smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "SURBL-Match",
                                     "Message body");

            var message = Pop3ClientSimulator.AssertGetFirstMessageText("*****@*****.**", "test");

            Assert.IsTrue(message.Contains("X-hMailServer-Reason-Score: 0"));
        }
Exemplo n.º 20
0
        public void TestMaxSizeNoLimit()
        {
            Application application = SingletonProvider <TestSetup> .Instance.GetApp();

            // 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";
            _antiSpam.MaximumMessageSize  = 0;

            // Enable SURBL.
            SURBLServer oSURBLServer = _antiSpam.SURBLServers[0];

            oSURBLServer.Active = true;
            oSURBLServer.Score  = 5;
            oSURBLServer.Save();

            // Send a messages to this account.
            var smtpClientSimulator = new SmtpClientSimulator();

            var sb         = new StringBuilder();
            int iterations = ((40 * 1024) / 100) + 1;

            for (int i = 0; i < iterations; i++)
            {
                sb.Append(
                    "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\r\n");
            }

            smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "SURBL-No-Match",
                                     "This is a test message with a SURBL url: -> http://surbl-org-permanent-test-point.com/ <-\r\n" +
                                     sb);

            string sMessageContents = Pop3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test");

            if (!sMessageContents.Contains("X-hMailServer-Spam") ||
                !sMessageContents.Contains("X-hMailServer-Reason") ||
                !sMessageContents.Contains("ThisIsSpam"))
            {
                throw new Exception("Spam message not detected as spam.");
            }

            oSURBLServer.Active = false;
            oSURBLServer.Save();
        }
Exemplo n.º 21
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");

            Assert.IsTrue(message.Contains("ESMTPS\r\n"));
        }
Exemplo n.º 22
0
        public void TestBasic()
        {
            // Send a messages to this account.
            var smtpClientSimulator = new SmtpClientSimulator();

            smtpClientSimulator.Send(account.Address, account.Address, "SA test", "This is a test message.");
            string sMessageContents = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test");

            if (!sMessageContents.Contains("X-Spam-Status"))
            {
                Assert.Fail("SpamAssassin did not run");
            }
        }
Exemplo n.º 23
0
        public void WhenSSL3IsDisabledTLSShouldWork()
        {
            SetSslVersions(false, true, true, true);
            var smtpClientSimulator = new SmtpClientSimulator(true, SslProtocols.Tls, 25001, IPAddress.Parse("127.0.0.1"));

            string errorMessage;

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

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

            Assert.IsTrue(message.Contains("version=TLSv1"), message);
        }
Exemplo n.º 24
0
        public void TestChangeFlags()
        {
            Account oAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

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

            var simulator = new ImapClientSimulator();

            simulator.ConnectAndLogon(oAccount.Address, "test");
            simulator.ExamineFolder("Inbox");
            Assert.IsFalse(simulator.SetFlagOnMessage(1, true, @"\Deleted"));
        }
Exemplo n.º 25
0
        public void TestMaxSizeLimitation_AnnouncedText()
        {
            _settings.MaxMessageSize = 102400;

            // Make sure that no bounce is sent.
            var smtpClient = new SmtpClientSimulator();

            smtpClient.Connect();
            smtpClient.Receive(); // Receive banner

            var ehloResponse = smtpClient.SendAndReceive("EHLO example.com\r\n");

            StringAssert.Contains("250-SIZE 104857600", ehloResponse, ehloResponse);
        }
Exemplo n.º 26
0
        private Message SendMessageWithSignature(string plainTextSignature, string htmlSignature, string message)
        {
            _domain.SignatureEnabled         = true;
            _domain.AddSignaturesToLocalMail = true;

            _account.SignatureEnabled   = true;
            _account.SignaturePlainText = plainTextSignature;
            _account.SignatureHTML      = htmlSignature;
            _account.Save();

            SmtpClientSimulator.StaticSendRaw(_account.Address, _account.Address, message);

            return(CustomAsserts.AssertGetFirstMessage(_account, "Inbox"));
        }
Exemplo n.º 27
0
        public void TreatRecipientAsExternalDomain()
        {
            int   smtpServerPort = TestSetup.GetNextFreePort();
            Route route          = TestSetup.AddRoutePointingAtLocalhost(1, smtpServerPort, false);

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

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

            CustomAsserts.Throws <DeliveryFailedException>(() => smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "Mail 1", "Mail 1", out result));
            Assert.IsTrue(result.Contains("530 SMTP authentication is required."));
        }
Exemplo n.º 28
0
        public void UnsupportedParameterInMailFrom()
        {
            var smtpConn = new SmtpClientSimulator();

            smtpConn.Connect();

            smtpConn.Receive();

            smtpConn.SendAndReceive("EHLO example.com\r\n");

            var response = smtpConn.SendAndReceive("MAIL FROM: [email protected] A=B\r\n");

            Assert.AreEqual("550 Unsupported ESMTP extension: A=B\r\n", response);
        }
Exemplo n.º 29
0
        public void DeliveryShouldSucceedAfterClearingDeliveryQueue()
        {
            SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            _application.GlobalObjects.DeliveryQueue.Clear();

            Assert.IsTrue(LogHandler.DefaultLogContains("Delivery queue cleared."));

            var smtpClientSimulator = new SmtpClientSimulator();

            smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "INBOX", "Mirror test message");

            Pop3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 1);
        }
Exemplo n.º 30
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);
        }