public void TestChangeRecentFlag() { 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"); string result = simulator.ExamineFolder("Inbox"); Assert.IsTrue(result.Contains("* 1 RECENT"), result); simulator.Close(); simulator.Disconnect(); simulator = new ImapClientSimulator(); simulator.ConnectAndLogon(oAccount.Address, "test"); Assert.IsTrue(simulator.SelectFolder("Inbox", out result)); Assert.IsTrue(result.Contains("* 1 RECENT"), result); simulator.Close(); simulator.Disconnect(); simulator = new ImapClientSimulator(); simulator.ConnectAndLogon(oAccount.Address, "test"); result = simulator.ExamineFolder("Inbox"); Assert.IsTrue(result.Contains("* 0 RECENT"), result); simulator.Close(); simulator.Disconnect(); }
public void TestMirror() { // Create a test account // Fetch the default domain Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); Account account2 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); _settings.MirrorEMailAddress = "*****@*****.**"; _settings.AddDeliveredToHeader = true; // Send 5 messages to this account. var smtpClientSimulator = new SmtpClientSimulator(); for (int i = 0; i < 5; i++) { smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "INBOX", "Mirror test message"); } // Check using POP3 that 5 messages exists. Pop3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 5); string message = Pop3ClientSimulator.AssertGetFirstMessageText(account2.Address, "test"); Assert.IsTrue(message.Contains("Delivered-To: [email protected]")); }
public void TestUpdateSubjectOnMessageWithNoMessageWideCharacterSet() { Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); string script = "Sub OnAcceptMessage(oClient, oMessage) " + Environment.NewLine + " oMessage.Subject = \"[ov]\" + oMessage.Subject " + Environment.NewLine + " oMessage.Save() " + Environment.NewLine + "End Sub" + Environment.NewLine + Environment.NewLine; Scripting scripting = _settings.Scripting; File.WriteAllText(scripting.CurrentScriptFile, script); scripting.Enabled = true; scripting.Reload(); Assert.IsEmpty(scripting.CheckSyntax()); string body = @"From: <*****@*****.**>" + Environment.NewLine + "Subject: =?windows-1251?B?yuDr7Pvq7uLzIMji4O3zIC0g7/Do7OXwICLy5fXt6Pfl8eru4+4g8OX4?=" + Environment.NewLine + " =?windows-1251?B?5e3o/yIgW0Z3ZDog0tAg4uXw8ejoIDEuMl0=?=" + Environment.NewLine + Environment.NewLine + "Hej!" + Environment.NewLine; SmtpClientSimulator.StaticSendRaw("*****@*****.**", "*****@*****.**", body); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); CustomAsserts.AssertFolderMessageCount(account.IMAPFolders[0], 1); string subject = account.IMAPFolders[0].Messages[0].Subject; }
public void TestRETR() { Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "TestBody1"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "TestBody2"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 2); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "TestBody3"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 3); var sim = new Pop3ClientSimulator(); sim.ConnectAndLogon(account.Address, "test"); string result = sim.RETR(1); Assert.IsTrue(result.Contains("TestBody1"), result); result = sim.RETR(2); Assert.IsTrue(result.Contains("TestBody2"), result); result = sim.RETR(3); Assert.IsTrue(result.Contains("TestBody3"), result); Assert.IsFalse(result.Contains(".\r\n.")); }
public void TestSearchUTF8TEXT() { Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); string body = TestSetup.GetResource("Messages.MessageContainingGreekSubject.txt"); SmtpClientSimulator.StaticSendRaw(account.Address, account.Address, body); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); var oSimulator = new ImapClientSimulator(); Assert.IsTrue(oSimulator.ConnectAndLogon(account.Address, "test")); Assert.IsTrue(oSimulator.SelectFolder("INBOX")); string result = oSimulator.Search("CHARSET UTF-8 ALL TEXT GRΣΣK"); Assert.AreEqual("1", result); result = oSimulator.Search("CHARSET UTF-8 ALL TEXT 標準語"); Assert.AreEqual("1", result); result = oSimulator.Search("CHARSET UTF-8 ALL TEXT GRΣΣK標準語"); Assert.AreEqual("1", result); result = oSimulator.Search("CHARSET UTF-8 ALL TEXT GRΣΣKWHAT標準語"); Assert.AreEqual("", result); }
public void TestSendToAddressWithQuote() { Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "us'*****@*****.**", "test"); SmtpClientSimulator.StaticSend("*****@*****.**", "us'*****@*****.**", "Test", "Test"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); }
public void TestIncorrectLineEndings() { // Create a test account // Fetch the default domain Account oAccount1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); // Disallow incorrect line endings. SingletonProvider <TestSetup> .Instance.GetApp().Settings.AllowIncorrectLineEndings = false; // Send a messages to this account. var smtpClientSimulator = new SmtpClientSimulator(); smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "INBOX", "This is a test message\r\n consisting of correct lines"); CustomAsserts.Throws <DeliveryFailedException>(() => smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "INBOX", "This is a test message\r consisting of incorrect lines")); CustomAsserts.Throws <DeliveryFailedException>( () => smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "INBOX", "This is a test message\n consisting of incorrect lines")); CustomAsserts.Throws <DeliveryFailedException>(() => smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "INBOX", "This is a test message\n\r consisting of incorrect lines")); Pop3ClientSimulator.AssertMessageCount(oAccount1.Address, "test", 1); }
public void RecipientNotInListButDomainHasCatchAll_EmailShouldEndUpInCatchAll() { SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); // 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; route.Save(); var routeAddress = route.Addresses.Add(); routeAddress.Address = "*****@*****.**"; routeAddress.Save(); route.Save(); _domain.Postmaster = "*****@*****.**"; _domain.Save(); SmtpClientSimulator.StaticSend("*****@*****.**", "*****@*****.**", "A", "B"); Pop3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 1); }
public void CacheShouldHaveMaxSize() { _settings.Cache.DomainCacheMaxSizeKb = 40; _settings.Cache.AccountCacheMaxSizeKb = 20; for (int i = 0; i < 41; i++) { var domain = _application.Domains.Add(); domain.Name = string.Format("{0}.example.com", i); domain.Active = true; domain.Save(); var account = domain.Accounts.Add(); account.Address = "test@" + domain.Name; account.Password = "******"; account.Active = true; account.Save(); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 0); } // Before the 41 domain is placed in cache, 10% of the items should be removed, // so at this point we should have 40-10%+1 = 37 items in cache Assert.AreEqual(37, _settings.Cache.DomainCacheSizeKb); // Account max size is set to 20 above, so 10% removal leaves 18, plus the one we just added. Assert.AreEqual(19, _settings.Cache.AccountCacheSizeKb); }
public void ChangingFlagShouldAffectAllConnections() { var account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "Test"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); var sim1 = new ImapClientSimulator(); Assert.IsTrue(sim1.ConnectAndLogon(account.Address, "test")); Assert.IsTrue(sim1.SelectFolder("Inbox")); var sim2 = new ImapClientSimulator(); Assert.IsTrue(sim2.ConnectAndLogon(account.Address, "test")); Assert.IsTrue(sim2.SelectFolder("Inbox")); sim1.SetFlagOnMessage(1, true, "\\Deleted"); var flags1 = sim1.GetFlags(1); var flags2 = sim2.GetFlags(1); Assert.IsTrue(flags2.Contains(@"* 1 FETCH (FLAGS (\Deleted))"), flags2); Assert.IsTrue(flags2.Contains(@"* 1 FETCH (FLAGS (\Deleted) UID 1)"), flags2); }
public void TestImportOfMessageIntoOtherFolder() { string @messageText = "From: [email protected]\r\n" + "\r\n" + "Test\r\n"; Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); account.IMAPFolders.Add("Woho"); string domainPath = Path.Combine(_application.Settings.Directories.DataDirectory, "test.com"); string accountPath = Path.Combine(domainPath, "test"); Directory.CreateDirectory(accountPath); string fileName = Path.Combine(accountPath, "something.eml"); File.WriteAllText(fileName, messageText); Assert.IsTrue(_application.Utilities.ImportMessageFromFileToIMAPFolder(fileName, account.ID, "Woho")); Pop3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 0); var sim = new ImapClientSimulator(); sim.ConnectAndLogon("*****@*****.**", "test"); Assert.AreEqual(1, sim.GetMessageCount("Woho")); sim.Disconnect(); }
public void TestSaveMessageInExistingIMAPFolder() { Settings settings = SingletonProvider <TestSetup> .Instance.GetApp().Settings; Account oAccount1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); // Check that the message does not exist Pop3ClientSimulator.AssertMessageCount(oAccount1.Address, "test", 0); // Send a message to the account. IMAPFolder folder = oAccount1.IMAPFolders.get_ItemByName("INBOX"); hMailServer.Message oMessage = folder.Messages.Add(); Assert.AreEqual(0, oMessage.State); oMessage.Body = "Välkommen till verkligheten"; oMessage.Subject = "Hej"; oMessage.Save(); Assert.AreEqual(2, oMessage.State); Assert.IsFalse(oMessage.Filename.Contains(settings.PublicFolderDiskName)); Assert.IsTrue(oMessage.Filename.Contains(_domain.Name)); // Check that the message exists string message = Pop3ClientSimulator.AssertGetFirstMessageText(oAccount1.Address, "test"); Assert.IsNotEmpty(message); Assert.Less(0, message.IndexOf("Hej")); }
public void TestLiveLog() { Application app = SingletonProvider <TestSetup> .Instance.GetApp(); Utilities utilities = app.Utilities; Logging logging = app.Settings.Logging; logging.EnableLiveLogging(true); // Add an account and send a message to it. Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); string liveLog = logging.LiveLog; Assert.IsTrue(liveLog.Length > 0, liveLog); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 2); logging.EnableLiveLogging(true); liveLog = logging.LiveLog; Assert.IsFalse(liveLog.Contains("SMTPDeliverer - Message")); }
public void TestChangeSeenFlag() { 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"); string flags = simulator.GetFlags(1); string body = simulator.Fetch("1 RFC822"); string flagsAfter = simulator.GetFlags(1); simulator.Close(); simulator.Disconnect(); Assert.AreEqual(flags, flagsAfter); var secondSimulator = new ImapClientSimulator(); secondSimulator.ConnectAndLogon(oAccount.Address, "test"); secondSimulator.SelectFolder("Inbox"); string secondFlags = secondSimulator.GetFlags(1); string secondBody = secondSimulator.Fetch("1 RFC822"); string secondFlagsAfter = secondSimulator.GetFlags(1); secondSimulator.Close(); secondSimulator.Disconnect(); Assert.AreNotEqual(secondFlags, secondFlagsAfter); }
public void WhenForwardingFromAddressShouldBeSetToForwardingAccount() { var sender = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); var forwarder = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); var recipient = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); forwarder.ForwardEnabled = true; forwarder.ForwardAddress = recipient.Address; forwarder.ForwardKeepOriginal = true; forwarder.Save(); var smtpClientSimulator = new SmtpClientSimulator(); smtpClientSimulator.Send(sender.Address, forwarder.Address, "INBOX", "POP3 test message"); Pop3ClientSimulator.AssertMessageCount(forwarder.Address, "test", 1); // Tell hMailServer to deliver now, so that the forward takes effect. SingletonProvider <TestSetup> .Instance.GetApp().SubmitEMail(); var message = Pop3ClientSimulator.AssertGetFirstMessageText(recipient.Address, "test"); Assert.IsTrue(message.Contains("Return-Path: [email protected]")); }
public void TestPOP3Server() { Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); var smtpSim = new SmtpClientSimulator(); smtpSim.Send("*****@*****.**", account.Address, "Test", "MyBody"); for (int i = 0; i < 10; i++) { try { Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); var pop3Sim = new Pop3ClientSimulator(true, 11001); string text = pop3Sim.GetFirstMessageText(account.Address, "test"); Assert.IsTrue(text.Contains("MyBody")); break; } catch (AssertionException) { throw; } catch (Exception) { if (i == 9) { throw; } } } }
public void TestForwardingAndDelete() { // Create a test account // Fetch the default domain Account oAccount1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); Account oAccount2 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); // Set up account 1 to forward to account2. oAccount1.ForwardEnabled = true; oAccount1.ForwardAddress = "*****@*****.**"; oAccount1.ForwardKeepOriginal = false; oAccount1.Save(); // Send 2 messages to this account. var smtpClientSimulator = new SmtpClientSimulator(); smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "INBOX", "POP3 test message"); CustomAsserts.AssertRecipientsInDeliveryQueue(0); Pop3ClientSimulator.AssertMessageCount(oAccount2.Address, "test", 1); string domainDir = Path.Combine(_settings.Directories.DataDirectory, "test.com"); string userDir = Path.Combine(domainDir, "Forward1"); string[] dirs = Directory.GetDirectories(userDir); foreach (string dir in dirs) { string[] files = Directory.GetFiles(dir); Assert.AreEqual(0, files.Length); } }
public void TestMoveMessageWithGlobalRule() { Account testAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "Test'*****@*****.**", "test"); // First deliver two messages to the inbox. SmtpClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); Pop3ClientSimulator.AssertMessageCount(testAccount.Address, "test", 1); IMAPFolder inboxFolder = testAccount.IMAPFolders[0]; Assert.AreEqual(1, inboxFolder.CurrentUID); Assert.AreEqual(1, inboxFolder.Messages[0].UID); SmtpClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); Pop3ClientSimulator.AssertMessageCount(testAccount.Address, "test", 2); Assert.AreEqual(2, inboxFolder.CurrentUID); Assert.AreEqual(2, inboxFolder.Messages[1].UID); CreateMoveRule(_application.Rules, "TestFolder"); // This message will be moved into the test folder. SmtpClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); // Wait for the message to arrive. CustomAsserts.AssertFolderExists(testAccount.IMAPFolders, "TestFolder"); IMAPFolder testFolder = testAccount.IMAPFolders.get_ItemByName("TestFolder"); CustomAsserts.AssertFolderMessageCount(testFolder, 1); // Since the message is placed in a new folder, it should receive a unique UID. Assert.AreEqual(1, testFolder.Messages.Count); Assert.AreEqual(1, testFolder.CurrentUID); Assert.AreEqual(1, testFolder.Messages[0].UID); }
public void TestMissingMXRecord() { 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.SpamDeleteThreshold = 1; _antiSpam.UseMXChecks = true; _antiSpam.UseMXChecksScore = 2; // Send a messages to this account. var smtpClientSimulator = new SmtpClientSimulator(); smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "INBOX", "This is a test message."); CustomAsserts.Throws <DeliveryFailedException>( () => smtpClientSimulator.Send("test@domain_without_mx_records421dfsam430sasd.com", oAccount1.Address, "INBOX", "This is a test message.")); _antiSpam.UseMXChecks = false; Pop3ClientSimulator.AssertMessageCount(oAccount1.Address, "test", 1); }
public void TestBasicIncrements() { Account testAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "Test'*****@*****.**", "test"); SmtpClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); Pop3ClientSimulator.AssertMessageCount(testAccount.Address, "test", 1); IMAPFolder inboxFolder = testAccount.IMAPFolders[0]; Assert.AreEqual(1, inboxFolder.CurrentUID); Assert.AreEqual(1, inboxFolder.Messages[0].UID); SmtpClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); Pop3ClientSimulator.AssertMessageCount(testAccount.Address, "test", 2); Assert.AreEqual(2, inboxFolder.CurrentUID); Assert.AreEqual(2, inboxFolder.Messages[1].UID); SmtpClientSimulator.StaticSend(testAccount.Address, testAccount.Address, "Test", "Test"); Pop3ClientSimulator.AssertMessageCount(testAccount.Address, "test", 3); Assert.AreEqual(3, inboxFolder.CurrentUID); Assert.AreEqual(3, inboxFolder.Messages[2].UID); }
public void TestPOP3TransactionSafety() { Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "TestBody"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); var sim = new Pop3ClientSimulator(); sim.ConnectAndLogon(account.Address, "test"); // Now delete the message using an IMAP client. var imapSimulator = new ImapClientSimulator(); Assert.IsTrue(imapSimulator.ConnectAndLogon(account.Address, "test")); Assert.IsTrue(imapSimulator.SelectFolder("INBOX")); Assert.IsTrue(imapSimulator.SetDeletedFlag(1)); Assert.IsTrue(imapSimulator.Expunge()); Assert.AreEqual(0, imapSimulator.GetMessageCount("Inbox")); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "TestBody"); ImapClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1); // This deletion should not have any effect, since the POP3 connection is referencing an old message. sim.DELE(1); sim.QUIT(); Assert.AreEqual(1, imapSimulator.GetMessageCount("Inbox")); }
public void TestMessageAndTerminationInSameBuffer() { FetchAccount fetchAccount; using (var pop3Server = CreateServer()) { pop3Server.SendBufferMode = Pop3ServerSimulator.BufferMode.MessageAndTerminatonTogether; pop3Server.StartListen(); fetchAccount = CreateFetchAccount(); // Fetch message fetchAccount.DownloadNow(); pop3Server.WaitForCompletion(); LockHelper.WaitForUnlock(fetchAccount); } // Do it again, to make sure using (var pop3Server = CreateServer()) { pop3Server.SendBufferMode = Pop3ServerSimulator.BufferMode.MessageAndTerminatonTogether; pop3Server.StartListen(); fetchAccount.DownloadNow(); pop3Server.WaitForCompletion(); LockHelper.WaitForUnlock(fetchAccount); } Pop3ClientSimulator.AssertMessageCount(_account.Address, "test", 2); string downloadedMessage = Pop3ClientSimulator.AssertGetFirstMessageText(_account.Address, "test"); Assert.IsTrue(downloadedMessage.Contains(_message)); }
public void TestWhitelistSpecificIpV4Address() { var addresses = GetAllLocalAddresses(System.Net.Sockets.AddressFamily.InterNetwork); var firstAddress = addresses[0]; // Enable SURBL. var oSURBLServer = _antiSpam.SURBLServers[0]; oSURBLServer.Active = true; oSURBLServer.Score = 5; oSURBLServer.Save(); // Make sure we are now blacklisted. var smtpClient = new SmtpClientSimulator(false, 25, IPAddress.Parse(firstAddress)); CustomAsserts.Throws <DeliveryFailedException>(() => smtpClient.Send("*****@*****.**", "*****@*****.**", "Hello", SurblTestPointBody)); // White list all IPv4 addresses foreach (var address in addresses) { var obAddress = _antiSpam.WhiteListAddresses.Add(); obAddress.EmailAddress = "*"; obAddress.LowerIPAddress = address; obAddress.UpperIPAddress = address; obAddress.Description = "Test"; obAddress.Save(); } // Make sure we can now send again. smtpClient.Send("*****@*****.**", "*****@*****.**", "Hello", SurblTestPointBody); Pop3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 1); }
public void TestDisconnectAfterRetrCommand() { var pop3Server = CreateServer(); pop3Server.SecondsToWaitBeforeTerminate = 180; pop3Server.DisconnectAfterRetrCompletion = true; pop3Server.StartListen(); // Connection will be dropped after we perform the RETR command. var fetchAccount = CreateFetchAccount(); fetchAccount.DownloadNow(); pop3Server.WaitForCompletion(); LockHelper.WaitForUnlock(fetchAccount); // Simulate another download where the connection is not dropPed. pop3Server = CreateServer(); pop3Server.SecondsToWaitBeforeTerminate = 180; pop3Server.DisconnectAfterRetrCompletion = false; pop3Server.StartListen(); fetchAccount.DownloadNow(); pop3Server.WaitForCompletion(); Pop3ClientSimulator.AssertMessageCount(_account.Address, "test", 2); }
public void TestMirrorMultipleRecipientsOver255Chars() { // Create a test account // Fetch the default domain var recipients = new List <string>(); for (int i = 0; i < 20; i++) { string address = string.Format("mirror{0}@test.com", i); SingletonProvider <TestSetup> .Instance.AddAccount(_domain, address, "test"); recipients.Add(address); } Account mirrorAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); _settings.MirrorEMailAddress = "*****@*****.**"; _settings.AddDeliveredToHeader = true; // Send 1 messages to this account. var smtpClientSimulator = new SmtpClientSimulator(); smtpClientSimulator.Send("*****@*****.**", recipients, "INBOX", "Mirror test message"); Pop3ClientSimulator.AssertMessageCount(mirrorAccount.Address, "test", 1); string message = Pop3ClientSimulator.AssertGetFirstMessageText(mirrorAccount.Address, "test"); Assert.IsTrue( message.Contains( "Delivered-To: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],mirror14@test\r\n")); CustomAsserts.AssertRecipientsInDeliveryQueue(0); }
public void TestAntiVirusEnabled() { var messages = new List <string>(); string messageText = "From: [email protected]\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "Should be blocked by SPF."; messages.Add(messageText); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.StartListen(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = CreateFetchAccount(account, port, false, true); fa.DownloadNow(); pop3Server.WaitForCompletion(); fa.Delete(); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); Message message = account.IMAPFolders.get_ItemByName("INBOX").Messages[0]; Assert.IsTrue(message.get_Flag(eMessageFlag.eMFVirusScan)); } }
public void TestMirrorMultipleRecipients() { // Create a test account // Fetch the default domain Account account1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); Account account2 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); Account account3 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); Account mirrorAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); _settings.MirrorEMailAddress = "*****@*****.**"; _settings.AddDeliveredToHeader = true; // Send 5 messages to this account. var smtpClientSimulator = new SmtpClientSimulator(); smtpClientSimulator.Send("*****@*****.**", new List <string> { account1.Address, account2.Address, account3.Address }, "INBOX", "Mirror test message"); Pop3ClientSimulator.AssertMessageCount(mirrorAccount.Address, "test", 1); string message = Pop3ClientSimulator.AssertGetFirstMessageText(mirrorAccount.Address, "test"); Assert.IsTrue(message.Contains("Delivered-To: [email protected],[email protected],[email protected]")); CustomAsserts.AssertRecipientsInDeliveryQueue(0); }
public void TestForwarding() { // Create a test account // Fetch the default domain Account oAccount1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); Account oAccount2 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); // Set up account 1 to forward to account2. oAccount1.ForwardEnabled = true; oAccount1.ForwardAddress = "*****@*****.**"; oAccount1.ForwardKeepOriginal = true; oAccount1.Save(); // Send 2 messages to this account. var smtpClientSimulator = new SmtpClientSimulator(); for (int i = 0; i < 2; i++) { smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "INBOX", "POP3 test message"); } Pop3ClientSimulator.AssertMessageCount(oAccount1.Address, "test", 2); // Tell hMailServer to deliver now, so that the forward takes effect. SingletonProvider <TestSetup> .Instance.GetApp().SubmitEMail(); Pop3ClientSimulator.AssertMessageCount(oAccount2.Address, "test", 2); }
public void TestWildcardSingleQuote() { WhiteListAddresses obAddresses = _antiSpam.WhiteListAddresses; WhiteListAddress obAddress = obAddresses.Add(); obAddress.EmailAddress = "white'*****@*****.**"; obAddress.LowerIPAddress = "0.0.0.0"; obAddress.UpperIPAddress = "255.255.255.255"; obAddress.Description = "Test"; obAddress.Save(); // Enable SURBL. SURBLServer oSURBLServer = _antiSpam.SURBLServers[0]; oSURBLServer.Active = true; oSURBLServer.Score = 5; oSURBLServer.Save(); // Send a messages to this account. SmtpClientSimulator.StaticSend("white'*****@*****.**", "*****@*****.**", "SURBL-Match", "This is a test message with a SURBL url: -> http://surbl-org-permanent-test-point.com/ <-"); CustomAsserts.Throws <DeliveryFailedException>(() => SmtpClientSimulator.StaticSend("whitelist@micro_soft.com", "*****@*****.**", "SURBL-Match", "This is a test message with a SURBL url: -> http://surbl-org-permanent-test-point.com/ <-")); Pop3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 1); }
public void TestExpunge() { 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.SelectFolder("Inbox"); Assert.IsTrue(simulator.SetFlagOnMessage(1, true, @"\Deleted")); var secondSimulator = new ImapClientSimulator(); secondSimulator.ConnectAndLogon(oAccount.Address, "test"); string result = secondSimulator.ExamineFolder("INBOX"); Assert.IsTrue(result.Contains("1 EXISTS"), result); Assert.IsFalse(secondSimulator.Expunge()); simulator.SelectFolder("INBOX"); Assert.IsTrue(simulator.Expunge()); simulator.Close(); secondSimulator.Close(); }