> ## Content Index
> Fetch the complete content index at: https://www.azurebrasil.cloud/llms.txt
> Use this file to discover other available public pages before exploring further.

# Azure Container Instance - Hospedando um servidor SMTP para testes
- URL: https://www.azurebrasil.cloud/blog/azure-container-instance-hospedando-um-servidor-smtp-para-testes/
- Published: 2023-06-15T16:48:01.000Z
- Updated: 2023-06-16T17:25:22.000Z
- Description: Você já precisou hospedar um contêiner na nuvem, mas não queria usar uma máquina virtual e não podia usar App Service, pois precisa de múltiplas portas expostas? Nesse artigo quero te mostrar como podemos usar o Azure Container Instance (ou ACI) para rodar contêineres de forma simples e prática.
- Author: Rafael dos Santos

Ola,

Você já precisou hospedar um contêiner na nuvem, mas não queria usar uma máquina virtual e não podia usar App Service, pois precisa de múltiplas portas expostas? Nesse artigo quero te mostrar como podemos usar o Azure Container Instance (ou ACI) para rodar contêineres de forma simples e prática.

Um caso muito comum no dia-a-dia de desenvolvedores é enviar notificações via e-mail dos mais variados assuntos que ocorrem em uma aplicação. Geralmente usamos controles de condição e variáveis de ambiente para forçar e-mails pessoais quando estamos em ambientes de teste ou de homologação. Recentemente em um projeto acabei conhecendo o [MailHog](https://github.com/mailhog/MailHog?ref=azurebrasil.cloud) um projeto simples, mas que fornece um servidor de SMTP para testes que podemos enviar e-mails e validar os usos sem arriscar mandar e-mails para endereços verdadeiros.

Edit 2023-06-16: Para quem preferir, também fiz um video na prática.

### Criando o Container Instance

A criação de um Azure Container Instance é bem simples e irei descrever no passo a passo a seguir:

1. Selecione a opção Criar na lista de Container Instance do Azure

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/06/image-9.png)

2\. Preencha as informações de Assinatura e grupo de recurso, as informações mais importantes aqui são o Image Source e o Size.  
Para o Image Source selecione a opção "Other Registry" e defina a imagem como "mailhog/mailhog".  
Para a opção size como é um contêiner bem leve iremos manter no minimo, com 1 vCpu e 1.5GB de memória.

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/06/image-10.png)

3\. Aqui é a parte mais importante, precisamos definir a rede como pública e expor as portas do nosso contêiner: ⁣  
1025 - para envio dos e-mails via serviço SMTP  
8025 - para acesso a interface web.

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/06/image-11.png)

4\. Não é necessário definir nenhuma variável de ambiente.

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/06/image-12.png)

5\. Após a validação dos parâmetros conclua a criação do contêiner.

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/06/image-13.png)

### Testando nosso servidor SMTP

Após a criação do container, podemos acessar tanto pelo IP publico quando pelo endereço DNS.

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/06/image-15.png)

Para enviar o email podemos utilizar qualquer código que envie um email via SMTP, no exemplo a seguir estou utilizando c#

```
using System.Net.Mail;

namespace MailhogSmtp;

internal class Program
{
    static async Task Main(string[] args)
    {
        var smtpHost = "azbrmailhog.ehgfbye4d5gseeck.eastus2.azurecontainer.io";
        var smtpPort = 1025;

        using var smtpClient = new SmtpClient(smtpHost, smtpPort);

        var mailMessage = new MailMessage
        {
            From = new MailAddress("notificao@azurebrasil.cloud"),
            Subject = "Existem novos alertas de redução de custos",
            Body = "Foram encontradas oportunidades de redução de custos na sua assinatura. Clique aqui para saber mais.",
            To = { new MailAddress("meucliente@meudominio.com.br") }
        };

        await smtpClient.SendMailAsync(mailMessage);
    }
}

```

Acessando nosso servidor pelo endereço criado pelo azure na porta 8025 podemos confirmar que o e-mail foi enviado.

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2023/06/image-16.png)

### Conclusão

O Azure Container Instance é uma forma simples e prática de rodarmos contêineres no Azure e como a maioria dos serviços pagamos por hora utilizada. Considerando o uso apenas durante o horário comercial o nosso exemplo custaria \~$10/mês.

Espero que tenham gostado \[\]s e até a próxima.