コード例 #1
0
 public void ValidateSender_InternalSenderInternalList()
 {
     Assert.True(
         MailDispatcher.CheckValidSender(
             "*****@*****.**",
             _domainSettings.DistributionLists.First(dl => dl.Mailbox == "*****@*****.**")));
 }
コード例 #2
0
 public Worker(
     ILogger <Worker> logger,
     MailDispatcher mailDispatcher)
 {
     _logger         = logger;
     _mailDispatcher = mailDispatcher;
 }
コード例 #3
0
        public MailDispatcherTests(ITestOutputHelper output)
        {
            _queue          = new MockMailQueue();
            _transfer       = new MockMailTransferQueue();
            _mailbox        = new MockMailboxStore();
            _domainSettings = new DomainSettings(
                new[]
            {
                new DistributionList(
                    "*****@*****.**",
                    "Internal only list",
                    new[] { "*****@*****.**" },
                    new[] { "*****@*****.**", "*****@*****.**" },
                    false,
                    true
                    ),
                new DistributionList(
                    "*****@*****.**",
                    "Disabled list",
                    new[] { "*****@*****.**" },
                    new[] { "*****@*****.**", "*****@*****.**" }
                    ),
                new DistributionList(
                    "*****@*****.**",
                    "External list",
                    new[] { "*****@*****.**" },
                    new[]
                {
                    "*****@*****.**",
                    "*****@*****.**",
                    "*****@*****.**",
                    "*****@*****.**"
                },
                    true,
                    true
                    )
            },
                new Dictionary <string, string>
            {
                { "*****@*****.**", "*****@*****.**" }
            });
            AgentSettings settings = TestHelpers.MakeSettings(
                "example.com",
                new[] { new SmtpAcceptDomain("example.com") },
                relayDomains: new[] { new SmtpRelayDomain("relay.example.com", "relay.example.com") },
                idleDelay: 1);

            _dispatcher = new MailDispatcher(
                _queue,
                _mailbox,
                _transfer,
                new TestOutputLogger(output),
                new MockDomainResolver(_domainSettings),
                null,
                new MockVolatile <AgentSettings>(settings));
        }
コード例 #4
0
        public void MailDispatcher_WhenMailListIsNull_ThrowsArgumentNullException()
        {
            // Arrange
            MailDispatcher dispatcher;

            // Act
            List <Mail> mails = null;

            dispatcher = new MailDispatcher(null);
            // Assert - Expected Exception
        }
コード例 #5
0
 public MainHostedService(ILogger <MainHostedService> logger,
                          Dispatcher dispatcher,
                          MailDispatcher mailDispatcher,
                          ManagerMediator managerMediator,
                          DBGrpcChannel dbGrpcChannel,
                          DBMailQueueRepository dbMailQueueRepository)
 {
     _logger                = logger;
     _dispatcher            = dispatcher;
     _mailDispatcher        = mailDispatcher;
     _managerMediator       = managerMediator;
     _dbGrpcChannel         = dbGrpcChannel;
     _dbMailQueueRepository = dbMailQueueRepository;
 }
コード例 #6
0
ファイル: AgentHandler.cs プロジェクト: garath/mail-server
 public AgentHandler(
     ProtocolListener protocol,
     MailDispatcher dispatcher,
     MailTransfer transfer,
     AgentSettings settings,
     ILogger logger,
     CancellationToken cancellationToken)
 {
     _protocol          = protocol;
     _dispatcher        = dispatcher;
     _transfer          = transfer;
     _settings          = settings;
     _logger            = logger;
     _cancellationToken = cancellationToken;
 }
コード例 #7
0
        private static async Task AssertMessage(
            string inputMessage,
            string expectedMessage,
            string inputSender,
            string expectedSender)
        {
            expectedMessage = expectedMessage ?? inputMessage;
            expectedSender  = expectedSender ?? inputSender;
            Stream newStream = null;

            try
            {
                var stream = new MemoryStream(Encoding.ASCII.GetBytes(
                                                  inputMessage));
                var headers = await MailUtilities.ParseHeadersAsync(stream);

                string newSender;

                (newStream, newSender) =
                    await MailDispatcher.ReplaceSenderAsync(headers, stream, inputSender, CancellationToken.None);

                if (inputMessage == expectedMessage && inputSender == expectedSender)
                {
                    Assert.Same(stream, newStream);
                }
                else
                {
                    Assert.NotSame(stream, newStream);
                    Assert.Throws <ObjectDisposedException>(() => stream.ReadByte());
                }

                Assert.Equal(0, newStream.Position);
                Assert.Equal(expectedSender, newSender);
                using (var reader = new StreamReader(newStream, Encoding.ASCII, false, 1024, true))
                {
                    Assert.Equal(expectedMessage, await reader.ReadToEndAsync());
                }
            }
            finally
            {
                newStream.Dispose();
            }
        }