public void TestFetchFromInvalidHostName() { Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "nonexistant.example.com"; fa.Port = 110; fa.ProcessMIMERecipients = false; fa.Save(); fa.DownloadNow(); RetryHelper.TryAction(TimeSpan.FromSeconds(10), () => { var log = LogHandler.ReadCurrentDefaultLog(); Assert.IsTrue( log.Contains("The IP address for external account Test could not be resolved. Aborting fetch.")); }); fa.Delete(); }
public void TestDeliverToExternalMimeRecipientsEnabledRouteAsExternal() { var messages = new List <string>(); string message = "From: [email protected]\r\n" + "To: \"Test\" <*****@*****.**>, \"ExternalGuy\" <*****@*****.**>\r\n" + "Subject: Test\r\n" + "\r\n" + "Hello!"; messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.StartListen(); // Add a route so we can connect to localhost. //Route route = SMTPClientTests.AddRoutePointingAtLocalhost(5, 250, false); //route.TreatSecurityAsLocalDomain = false; //route.Save(); Account userAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); Account recipientAccount1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); Account catchallAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); _domain.Postmaster = catchallAccount.Address; _domain.Save(); FetchAccount fa = userAccount.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = true; fa.EnableRouteRecipients = true; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); fa.Delete(); string downloadedMessage1 = Pop3ClientSimulator.AssertGetFirstMessageText(recipientAccount1.Address, "test"); Assert.IsTrue(downloadedMessage1.Contains(message), downloadedMessage1); CustomAsserts.AssertRecipientsInDeliveryQueue(0, false); } }
public void TestDeliverToMIMERecipients() { var messages = new List <string>(); string message = "From: [email protected]\r\n" + "To: \"Test\" <*****@*****.**>, \"Test 2\" <*****@*****.**>\r\n" + "Subject: Test\r\n" + "\r\n" + "Hello!"; messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.StartListen(); 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 catchallAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); _domain.Postmaster = catchallAccount.Address; _domain.Save(); FetchAccount fa = account1.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = true; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); fa.Delete(); string downloadedMessage1 = Pop3ClientSimulator.AssertGetFirstMessageText(account2.Address, "test"); string downloadedMessage2 = Pop3ClientSimulator.AssertGetFirstMessageText(account3.Address, "test"); Pop3ClientSimulator.AssertMessageCount(account1.Address, "test", 0); Pop3ClientSimulator.AssertMessageCount(catchallAccount.Address, "test", 0); Assert.IsTrue(downloadedMessage1.Contains(message), downloadedMessage1); Assert.IsTrue(downloadedMessage2.Contains(message), downloadedMessage2); } }
public void TestSpamProtectionDisabled() { _application.Settings.AntiSpam.SpamMarkThreshold = 1; _application.Settings.AntiSpam.SpamDeleteThreshold = 100; _application.Settings.AntiSpam.AddHeaderReason = true; _application.Settings.AntiSpam.AddHeaderSpam = true; _application.Settings.AntiSpam.PrependSubject = true; _application.Settings.AntiSpam.PrependSubjectText = "ThisIsSpam"; _application.Settings.AntiSpam.UseSPF = true; _application.Settings.AntiSpam.UseSPFScore = 5; var messages = new List <string>(); string message = "From: [email protected]\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "Should be blocked by SPF."; messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.StartListen(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.DaysToKeepMessages = -1; fa.UseAntiSpam = false; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); fa.Delete(); string downloadedMessage = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test"); Assert.IsFalse(downloadedMessage.Contains("X-hMailServer-Spam: YES")); } }
public void TestSpamProtectionPreTransmissionHELOPass() { _application.Settings.AntiSpam.SpamMarkThreshold = 1; _application.Settings.AntiSpam.SpamDeleteThreshold = 100; _application.Settings.AntiSpam.AddHeaderReason = true; _application.Settings.AntiSpam.AddHeaderSpam = true; _application.Settings.AntiSpam.PrependSubject = true; _application.Settings.AntiSpam.PrependSubjectText = "ThisIsSpam"; _application.Settings.AntiSpam.CheckHostInHelo = true; _application.Settings.AntiSpam.CheckHostInHeloScore = 105; var messages = new List <string>(); string message = "Received: from mail.hmailserver.com (mail.hmailserver.com [" + TestSetup.GethMailServerCOMIPaddress() + "]) by mail.host.edu\r\n" + "From: [email protected]\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "Should not be blocked."; messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.StartListen(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.DaysToKeepMessages = 0; fa.UseAntiSpam = true; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); fa.Delete(); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); } }
public void TestProcessLargeNumberOfMessages() { Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); var messages = new List <string>(); string message = "From: [email protected]\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "Hello!"; const int msgCount = 30000; for (int i = 0; i < msgCount; i++) { messages.Add(message); } int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages) { SecondsToWaitBeforeTerminate = 3600 }) { pop3Server.StartListen(); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.DaysToKeepMessages = -1; fa.Save(); fa.DownloadNow(); Pop3ClientSimulator.AssertMessageCount("*****@*****.**", "test", msgCount, TimeSpan.FromMinutes(60)); pop3Server.WaitForCompletion(); fa.Delete(); } }
public void TestFetchMessageWithInvalidFromAddress() { string message = string.Format("From: A\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "Hello!"); var messages = new List <string>() { message }; int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.SendBufferMode = Pop3ServerSimulator.BufferMode.SingleBuffer; pop3Server.StartListen(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); LockHelper.WaitForUnlock(fa); fa.Delete(); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); var log = LogHandler.ReadCurrentDefaultLog(); Assert.IsTrue(log.Contains("Delivering message from <Empty> to [email protected].")); } }
public void TestDeleteMutliple() { var messages = new List <string>(); string message = "From: [email protected]\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "Hello!"; messages.Add(message); messages.Add(message); messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.StartListen(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.DaysToKeepMessages = -1; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); fa.Delete(); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 3); Assert.AreEqual(3, pop3Server.DeletedMessages.Count); } }
public void TestServerNotSupportingUIDL() { var messages = new List <string>(); string message = "Received: from example.com (example.com [1.2.3.4]) by mail.host.edu\r\n" + "From: [email protected]\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "Hello!"; messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.SupportsUIDL = false; pop3Server.StartListen(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); fa.Delete(); RetryHelper.TryAction(TimeSpan.FromSeconds(10), () => { string error = LogHandler.ReadCurrentDefaultLog(); Assert.IsTrue(error.Contains("-ERR unhandled command")); Assert.IsTrue(error.Contains("Completed retrieval of messages from external account.")); }); } }
public void TestFetchAccount() { Account oAccount1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount oFA = oAccount1.FetchAccounts.Add(); oFA.Name = "test"; oFA.Save(); if (oFA.ID == 0) { throw new Exception("Fetch account could not be saved"); } oAccount1.FetchAccounts.Delete(0); }
public void TestBasicExternalAccount() { var messages = new List <string>(); string message = "Received: from example.com (example.com [1.2.3.4]) by mail.host.edu\r\n" + "From: [email protected]\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "Hello!"; messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.StartListen(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); fa.Delete(); string downloadedMessage = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test"); Assert.IsTrue(downloadedMessage.Contains(message)); } }
public void POP3ServerSupportingStartTLS_StartTLSOptional() { var messages = new List <string>(); string message = "From: [email protected]\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "Hello!"; messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new POP3Server(1, port, messages, eConnectionSecurity.eCSSTARTTLSRequired)) { pop3Server.SetCertificate(SslSetup.GetCertificate()); pop3Server.StartListen(); TestSetup.DeleteCurrentDefaultLog(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.ConnectionSecurity = eConnectionSecurity.eCSSTARTTLSOptional; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); POP3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 1); fa.Delete(); } }
private static FetchAccount CreateFetchAccount(Account account, int port, bool antiSpam, bool antiVirus) { FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.DaysToKeepMessages = -1; fa.UseAntiSpam = antiSpam; fa.UseAntiVirus = antiVirus; fa.Save(); return(fa); }
public void TestFetchFromInvalidHostName() { Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "nonexistant.example.com"; fa.Port = 110; fa.ProcessMIMERecipients = false; fa.Save(); fa.DownloadNow(); TestSetup.AssertReportedError("The IP address for external account Test could not be resolved. Aborting fetch."); fa.Delete(); }
public void POP3ServerNOTSupportingStartTLS_StartTLSRequired() { var messages = new List <string>(); string message = "From: [email protected]\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "Hello!"; messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new POP3Server(1, port, messages, eConnectionSecurity.eCSNone)) { pop3Server.SetCertificate(SslSetup.GetCertificate()); pop3Server.StartListen(); TestSetup.DeleteCurrentDefaultLog(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.ConnectionSecurity = eConnectionSecurity.eCSSTARTTLSRequired; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.Save(); fa.DownloadNow(); string expectedMessage = string.Format( "The download of messages from external account {0} failed. The external aAccount is configured to use STARTTLS connection security, but the POP3 server does not support it.", fa.Name); string contentSoFar = ""; for (int i = 0; i <= 10; i++) { if (i == 5) { CustomAssert.Fail("No connection: " + contentSoFar); } contentSoFar = TestSetup.ReadCurrentDefaultLog(); if (contentSoFar.Contains(expectedMessage)) { break; } Thread.Sleep(1000); } pop3Server.WaitForCompletion(); fa.Delete(); } }
public void TestSpamProtectionPostTransmission() { _application.Settings.AntiSpam.SpamMarkThreshold = 1; _application.Settings.AntiSpam.SpamDeleteThreshold = 100; _application.Settings.AntiSpam.AddHeaderReason = true; _application.Settings.AntiSpam.AddHeaderSpam = true; _application.Settings.AntiSpam.PrependSubject = true; _application.Settings.AntiSpam.PrependSubjectText = "ThisIsSpam"; SURBLServer oSURBLServer = _application.Settings.AntiSpam.SURBLServers[0]; oSURBLServer.Active = true; oSURBLServer.Score = 5; oSURBLServer.Save(); var messages = new List <string>(); string message = "Received: from example.com (example.com [1.2.3.4]) by mail.host.edu\r\n" + "From: [email protected]\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "http://surbl-org-permanent-test-point.com/"; messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.StartListen(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.DaysToKeepMessages = -1; fa.UseAntiSpam = true; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); fa.Delete(); string downloadedMessage = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test"); Assert.IsTrue(downloadedMessage.Contains("X-hMailServer-Spam: YES")); } }
public void TestSpamProtectionNoTagging() { CustomAsserts.AssertSpamAssassinIsRunning(); _application.Settings.AntiSpam.SpamMarkThreshold = 5; _application.Settings.AntiSpam.SpamDeleteThreshold = 9999; _application.Settings.AntiSpam.MaximumMessageSize = 1024 * 1024; _application.Settings.AntiSpam.AddHeaderReason = false; _application.Settings.AntiSpam.AddHeaderSpam = false; _application.Settings.AntiSpam.PrependSubject = false; _application.Settings.AntiSpam.PrependSubjectText = "ThisIsSpam"; // Enable SpamAssassin _application.Settings.AntiSpam.SpamAssassinEnabled = true; _application.Settings.AntiSpam.SpamAssassinHost = "localhost"; _application.Settings.AntiSpam.SpamAssassinPort = 783; _application.Settings.AntiSpam.SpamAssassinMergeScore = true; _application.Settings.AntiSpam.SpamAssassinScore = 5; var messages = new List <string>(); string message = "From: [email protected]\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X"; messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.StartListen(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.DaysToKeepMessages = -1; fa.UseAntiSpam = true; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); fa.Delete(); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); } }
public void POP3ServerNotSupportingSSL() { var messages = new List <string>(); string message = "From: [email protected]\r\n" + "To: [email protected]\r\n" + "Subject: Test\r\n" + "\r\n" + "Hello!"; messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new POP3Server(2, port, messages)) { pop3Server.DisconnectImmediate = true; pop3Server.StartListen(); TestSetup.DeleteCurrentDefaultLog(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = true; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.Save(); fa.DownloadNow(); string contentSoFar = ""; for (int i = 0; i <= 10; i++) { if (i == 5) { CustomAssert.Fail("No connection: " + contentSoFar); } contentSoFar = TestSetup.ReadCurrentDefaultLog(); if (contentSoFar.Contains("TCPConnection - TLS/SSL handshake failed.")) { break; } Thread.Sleep(1000); } TestSetup.DeleteCurrentDefaultLog(); // try again. fa.DownloadNow(); contentSoFar = ""; for (int i = 0; i <= 10; i++) { if (i == 5) { CustomAssert.Fail("No connection: " + contentSoFar); } contentSoFar = TestSetup.ReadCurrentDefaultLog(); if (contentSoFar.Contains("TCPConnection - TLS/SSL handshake failed.")) { break; } Thread.Sleep(1000); } pop3Server.WaitForCompletion(); fa.Delete(); } }
private void SetupAccountObject(Domain domain) { Account account = SingletonProvider <TestSetup> .Instance.AddAccount(domain, "*****@*****.**", "test"); // Make sure the inbox contains two messages which should be backed up. SmtpClientSimulator.StaticSend(account.Address, account.Address, "Message 1 Subject", "Message 1 Body"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Message 2 Subject", "Message 2 Body"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 2); SmtpClientSimulator.StaticSend(account.Address, account.Address, "Message 3 Subject", "Message 3 Body"); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 3); var sim = new ImapClientSimulator(); Assert.IsTrue(sim.ConnectAndLogon(account.Address, "test")); Assert.IsTrue(sim.SelectFolder("Inbox")); Assert.IsTrue(sim.SetDeletedFlag(2)); Assert.IsTrue(sim.Expunge()); sim.Disconnect(); _folderCreationTime = account.IMAPFolders.get_ItemByName("INBOX").CreationTime; account.Active = true; account.ADDomain = "AD"; account.AdminLevel = eAdminLevel.hAdminLevelDomainAdmin; account.ADUsername = "******"; account.ForwardAddress = "FA"; account.ForwardEnabled = false; account.ForwardKeepOriginal = true; account.IsAD = false; account.MaxSize = 1250; account.PersonFirstName = "First"; account.PersonLastName = "Last"; account.SignatureEnabled = true; account.SignatureHTML = "HTML"; account.SignaturePlainText = "PLAIN"; account.VacationMessage = "VAC"; account.VacationMessageExpires = true; account.VacationMessageExpiresDate = "2020-01-01"; account.VacationMessageIsOn = true; account.VacationSubject = "SUBJ"; account.Password = "******"; account.Save(); // Set up fetch account FetchAccount fa = account.FetchAccounts.Add(); fa.DaysToKeepMessages = 5; fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "test"; fa.Port = _fetchAccountPort; fa.ProcessMIMEDate = true; fa.ProcessMIMERecipients = true; fa.ServerAddress = "127.0.0.1"; fa.Username = "******"; fa.UseSSL = false; fa.UseAntiSpam = true; fa.UseAntiVirus = true; fa.Save(); DownloadFromExternalAccount(account, fa); Rule rule = account.Rules.Add(); rule.Name = "MyRule"; RuleCriteria criteria = rule.Criterias.Add(); criteria.MatchType = eRuleMatchType.eMTGreaterThan; criteria.PredefinedField = eRulePredefinedField.eFTMessageSize; criteria.MatchValue = "0"; criteria.Save(); RuleAction action = rule.Actions.Add(); action.Type = eRuleActionType.eRAForwardEmail; action.To = "*****@*****.**"; action.Body = "Test"; action.Filename = "File"; action.FromAddress = "T"; action.FromName = "N"; action.HeaderName = "H"; action.IMAPFolder = "Folder"; action.ScriptFunction = "Script"; action.Subject = "Subj"; action.Value = "Value"; action.Save(); rule.Save(); }
public void TestFetchMessagesWithVeryLongHeader() { var messages = new List <string>(); var toHeaderBuilder = new StringBuilder(); for (int i = 0; i < 10000; i++) { if (i > 0) { toHeaderBuilder.Append("; "); } toHeaderBuilder.AppendFormat("to-{0}@example.com", i); } for (int i = 0; i < 5; i++) { string message = string.Format("To: {1}\r\n" + "X-Dummy: {0}\r\n" + "Subject: Test\r\n" + "\r\n" + "Hello!", i, toHeaderBuilder); messages.Add(message); } int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.SendBufferMode = Pop3ServerSimulator.BufferMode.SingleBuffer; pop3Server.StartListen(); Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); FetchAccount fa = account.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = false; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); LockHelper.WaitForUnlock(fa); fa.Delete(); Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 5); string downloadedMessage = Pop3ClientSimulator.AssertGetFirstMessageText(account.Address, "test"); for (int i = 0; i < 5; i++) { if (downloadedMessage.Contains(messages[i])) { return; } } Assert.Fail("Downloaded messages did not match uploaded messages."); } }
public void TestDeliverToExternalMimeRecipientsEnabled() { var messages = new List <string>(); string message = "From: [email protected]\r\n" + "To: \"Test\" <*****@*****.**>, \"ExternalGuy\" <*****@*****.**>\r\n" + "Subject: Test\r\n" + "\r\n" + "Hello!"; messages.Add(message); int port = TestSetup.GetNextFreePort(); using (var pop3Server = new Pop3ServerSimulator(1, port, messages)) { pop3Server.StartListen(); var deliveryResults = new Dictionary <string, int>(); deliveryResults["*****@*****.**"] = 250; int smtpServerPort = TestSetup.GetNextFreePort(); using (var smtpServer = new SmtpServerSimulator(1, smtpServerPort)) { smtpServer.AddRecipientResult(deliveryResults); smtpServer.StartListen(); // Add a route so we can connect to localhost. Route route = TestSetup.AddRoutePointingAtLocalhost(1, smtpServerPort, false); route.TreatSecurityAsLocalDomain = true; route.Save(); Account account1 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); Account account2 = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); Account catchallAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test"); _domain.Postmaster = catchallAccount.Address; _domain.Save(); FetchAccount fa = account1.FetchAccounts.Add(); fa.Enabled = true; fa.MinutesBetweenFetch = 10; fa.Name = "Test"; fa.Username = "******"; fa.Password = "******"; fa.UseSSL = false; fa.ServerAddress = "localhost"; fa.Port = port; fa.ProcessMIMERecipients = true; fa.EnableRouteRecipients = true; fa.Save(); fa.DownloadNow(); pop3Server.WaitForCompletion(); fa.Delete(); string downloadedMessage1 = Pop3ClientSimulator.AssertGetFirstMessageText(account2.Address, "test"); Pop3ClientSimulator.AssertMessageCount(account1.Address, "test", 0); Pop3ClientSimulator.AssertMessageCount(catchallAccount.Address, "test", 0); Assert.IsTrue(downloadedMessage1.Contains(message), downloadedMessage1); // Make sure the exernal recipient has received his copy. smtpServer.WaitForCompletion(); string messageData = smtpServer.MessageData; Assert.IsTrue(messageData.Contains(messageData), messageData); CustomAsserts.AssertRecipientsInDeliveryQueue(0, false); } } }