Criar Relés SMTP do Office 365 com e sem TLS

Ódio ou amor; o email está em todo lugar. O protocolo para mover esse email por toda parte é o SMTP, e os “roteadores” SMTP são relés SMTP.

Not a reader? Check out this tutorial’s related video.

Configurar relés SMTP varia entre sistemas, mas se o seu provedor de serviços de email for o Office 365, suas opções são limitadas. A configuração pode ser complicada e propensa a erros, especialmente para dispositivos que não são capazes de TLS.

Observe que enviar emails através do Office 365 não requer um relé SMTP. Você pode fazer com que os clientes enviem emails diretamente para o Office 365 sem adicionar um relé SMTP, o que não requer nenhuma alteração de configuração. Para saber mais, leia Como Enviar Email Direto/Suporte de Cliente SMTP no Office 365 (PowerShell).

Pré-requisitos

Esses são os requisitos antes de prosseguir.

  1. Uma assinatura do Office 365. Se você ainda não tem, pode inscrever-se para um teste de assinatura do Office 365 E5.
  2. A Windows 10 computer with PowerShell v5.1
  3. A public static IP address. You can still create an SMTP relay in Office 365 even without this, but you might not test.
  4. Acesso à porta TCP 25 de um cliente até o ponto final MX do seu Office.
  5. A valid SSL certificate. This certificate could be a wildcard certificate (eg. *.yourdomain.com) issued by third-party certificate authorities like LetsEncrypt, Digicert, etc. Note, that you cannot use self-signed certificates or certificates issued by an internal PKI because they are not supported. (only required for TLS connections)

Para configurar um relé SMTP, primeiro é necessário criar um conector no Office 365 para aceitar transações SMTP. Este conector receberá transações de relé SMTP da aplicação ou dispositivo.

Antes de tentar criar um conector, certifique-se de que sua conta tenha as permissões adequadas do Exchange Online. Garanta que sua conta seja membro do grupo Organization Management.

Existem duas maneiras de criar um conector. Você pode usar o Exchange Admin Center ou o PowerShell. Ambas as opções realizarão a mesma tarefa. A escolha é sua. Neste artigo, abordaremos ambas. Também abordaremos a criação de conectores não TLS e TLS.

Crie um conector não TLS usando o Exchange Admin Center

Vamos começar criando um conector não TLS. Primeiro, aprenda como fazer isso via Exchange Admin Center. Você pode configurar muitas configurações SMTP do Office 365 no Exchange Admin Center.

Depois de fazer login, clique em fluxo de email (1) –> conectores (2) –> Novo (3). A janela Novo Conector aparecerá.

New Connector

Na janela Novo Conector, selecione De: Servidor de e-mail da sua organização (1), selecione Para: Office 365 (2), clique em Avançar (3).

Selecting a mail flow scenario

Na próxima janela, insira o nome SMTP Relay (Non-TLS) ou escolha seu próprio nome (1), digite na descrição Aceitar relé do servidor SMTP local (2), desmarque Manter cabeçalhos de email do Exchange internos (recomendado) (3) e clique em Avançar (4).

Assigning a name to the connector

Na próxima janela, selecione Ao verificar se o endereço IP do servidor de envio corresponde a um desses endereços IP que pertencem à sua organização (1) e clique em Adicionar (2).

Adding allowed IP adresses to the connector

Na nova janela que surgir, digite seu endereço IP público (1), em seguida, clique em OK (2). Isso deve levá-lo de volta à janela anterior.

Adding allowed IP adresses to the connector

Verifique se o endereço IP foi adicionado à lista (1), então clique em Avançar (2).

Adding allowed IP adresses to the connector

Então você verá um resumo das alterações que precisa implementar. Trabalhe primeiro nas alterações necessárias. Se não houver nenhuma, você pode clicar em Salvar.

De volta ao Centro de Administração do Exchange, agora você pode confirmar que o novo conector foi criado.

Office 365 Connector has been created

Agora você deve ter um conector sem TLS criado.

Crie um Conector TLS usando o Centro de Administração do Exchange

Criar um conector TLS é semelhante à criação de um conector sem TLS. Assim como você criou um conector sem TLS, volte para o assistente Novo Conector e use o mesmo cenário de fluxo de email. Vou usar um nome de conector de SMTP Relay (Non-TLS), mas o seu pode variar.

Na janela para definir o Office 365, deve identificar o email do seu servidor de email, selecionar:

  • Ao verificar se o nome do assunto no certificado que o servidor de envio usa para autenticar com o Office 365 corresponde a este nome de domínio (recomendado) (1)
  • em seguida, digite o assunto do certificado SSL (2)
  • e clique em Seguinte (3).
Create a TLS Connector using Exchange Admin Center

Novamente, verá um resumo das alterações necessárias. Trabalhe nelas primeiro antes de processá-las. Se não houver nenhuma, pode clicar imediatamente no botão Guardar.

Crie um conector Non-TLS usando o PowerShell

Se criar conectores do Office 365 via uma GUI não é o seu estilo, sempre pode criá-los também via PowerShell. Para fazer isso, primeiro certifique-se de estar conectado ao PowerShell do Exchange Online.

Para criar o conector, precisará executar o comando New-InboundConnector. Este comando requer alguns parâmetros diferentes, então configurarei esses parâmetros antecipadamente usando o splatting.

I’ve added some comments in the code itself below but here’s a breakdown of each parameter and what it’s used for:

  • Nome – Este é o nome do conector.
  • Tipo de Conector – Este é o tipo de conector. Este valor pode ser OnPremises ou Partner. Neste cenário, o tipo apropriado é OnPremises.
  • SenderDomains – Esta pode ser uma lista dos domínios de remetentes permitidos. Apenas os domínios verificados para o seu locatário são escolhas válidas. O asterisco (*) significa que você está permitindo que todos os seus domínios verificados retransmitam mensagens usando este conector. Se você só precisa permitir certos domínios de remetentes, altere este valor para uma matriz dos domínios. (por exemplo, 'dominio1.com','dominio2.com')
  • SenderIPAddresses – Este é o seu endereço IP público. Não se esqueça de alterá-lo antes da execução.
  • RestrictDomainsToIPAddresses – Quando este valor é definido como $true, indica que este conector só aceitará e-mails de endereços de remetentes provenientes do seu endereço IP público permitido.
$splat = @{
    ## Definir o nome do conector.
    Name = 'SMTP Relay'
    ## Definir o tipo de conector a criar.
    ConnectorType = 'OnPremises'
    ## O conjunto de domínios de remetentes permitidos para retransmitir.
    SenderDomains = '*'
    ## Altere isso para o seu endereço IP público real.
    SenderIPAddresses = '110.x.x.x'
    ## Restringir a retransmissão de e-mail apenas para seus domínios de remetentes e endereço IP de remetentes
    RestrictDomainsToIPAddresses = $true
}

## Criar o conector
New-InboundConnector @splat

Quando executado, você deverá ver algo semelhante ao abaixo.

New-InboundConnector

Criar um Conector TLS usando PowerShell

Supondo que você esteja conectado, execute o código abaixo para criar um conector TLS com o PowerShell também. Você pode ver abaixo que muitos parâmetros são idênticos à criação de um conector não-TLS. Os parâmetros necessários que diferem da criação de um conector não-TLS são:

  • RequireTLS – Isso especifica que todas as mensagens recebidas por este conector requerem transmissão TLS
  • TlsSenderCertificateName – Este é o nome (ou assunto) do certificado usado pelo remetente.
$splat = @{
    ## Defina o nome do conector.
    Name = 'SMTP Relay (TLS)'
    ## O tipo de conector a ser criado.
    ConnectorType = 'OnPremises'
    ## O conjunto de domínios do remetente permitidos para relay.
    SenderDomains = '*'
    ## Exigir TLS
    RequireTLS = $true
    ## Assunto/Nome do certificado SSL
    TlsSenderCertificateName = '*.YourDomain.com'
}

## Crie o conector
New-InboundConnector @splat

Execute o código acima para ter um conector TLS criado e pronto para receber e-mails.

Testando o Conector de Re-transmissão SMTP do Office 365 com PowerShell

Após criar o conector, prepare-se para testá-lo. A maneira mais fácil de fazer isso é usando o PowerShell. Nesta seção, vamos criar alguns scripts do PowerShell para permitir que você garanta facilmente que o conector esteja funcionando corretamente.

Antes de começar a testar, certifique-se de saber qual é o URL do ponto de extremidade MX para o seu domínio Exchange Online. Se você não sabe como encontrar o URL do ponto de extremidade MX, faça login no Portal de Administração do Office 365. Clique em Configuração, selecione Domínios, clique no nome do domínio e copie o endereço ou valor do ponto de extremidade MX.

Testando um Relé SMTP não-TLS (Endereço IP)

Observação: Este teste deve ser feito a partir do computador cujo endereço IP público está permitido na configuração de relé SMTP do Office 365.

Use o código PowerShell abaixo para teste. Certifique-se de alterar os valores dos parâmetros From, To e SmtpServer para usar suas próprias configurações de relé SMTP do Office 365 antes de executá-lo.

  • To – Deve incluir um destinatário de domínio interno e um destinatário de domínio externo. Não se esqueça de alterar esses valores para os seus próprios.
  • From – Deve ser alterado para o endereço de remetente designado. A parte do domínio do endereço de e-mail deve ser um dos domínios de e-mail do seu locatário.
  • SmtpServer – Deve ser alterado para o ponto de extremidade MX do locatário do Office 365.
$mailParams = @{
    SmtpServer = '<tenant>.mail.protection.outlook.com'
    Port = '25'
    From = '[email protected]'
    To = '[email protected]','[email protected]'
    Subject = ('SMTP Relay - ' + (Get-Date -Format g))
    Body = 'This is a test email using SMTP Relay'
    DeliveryNotificationOption = 'OnFailure','OnSuccess'
}

Send-MailMessage @mailParams

Testando um Relé SMTP TLS (Certificado)

Observação: Você deve ter o certificado SSL público no formato PFX antes de prosseguir com este teste.

Uma vez que o relé SMTP TLS requer um certificado, não é possível utilizar o cmdlet Send-MailMessage do PowerShell porque não permite selecionar um certificado específico. Em vez disso, utilize dois objetos .NET chamados System.Net.Mail.SmtpClient para definir os parâmetros SMTP e System.Net.Mail.MailMessage para compor a mensagem.

Abaixo, você encontrará um trecho de código do PowerShell que pode utilizar para testar o relé SMTP TLS. Não se esqueça de alterar os valores de pfxFile, pfxPass, From, To e SmtpServer para utilizar as configurações do relé SMTP do Office 365 antes de executá-lo.

# especifique o caminho completo do seu certificado PFX
$pfxFile = "C:\Certificate\cert.pfx"
$pfxPass = '<cert password here>'
$pfxBytes = Get-Content -path $pfxFile -encoding Byte -ErrorAction:SilentlyContinue
$X509Cert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2
$X509Cert.Import([byte[]]$pfxBytes, $pfxPass,"Exportable,PersistKeySet")

# Defina as propriedades do SMTP
$smtpServer = '<tenant>.mail.protection.outlook.com'
$smtpPort = '25'
$smtp = New-Object Net.Mail.SmtpClient($smtpServer,$smtpPort)
$smtp.ClientCertificates.Add($X509Cert)
$smtp.EnableSSL = $true

# Componha a mensagem
$emailMessage = New-Object System.Net.Mail.MailMessage
$emailMessage.From = '[email protected]'
$emailMessage.To.Add('[email protected]')
$emailMessage.To.Add('[email protected]')
$emailMessage.Subject = ('SMTP Relay (TLS) - ' + (Get-Date -Format g))
$emailMessage.Body = 'This is a test email using SMTP Relay (TLS)'

# Envie a mensagem
$smtp.Send($emailMessage)

Se a configuração do conector TLS estiver correta, os destinatários definidos via método Add() devem receber o email de teste.

Validando os Saltos do Relé SMTP usando o Cabeçalho da Mensagem

Agora você tem um relé SMTP funcional configurado utilizando um servidor local e relé SMTP do Office 365. Todos os testes foram bem-sucedidos e seus dispositivos podem enviar mensagens tanto para destinatários internos quanto externos. Bom trabalho!

Se ainda estiver em dúvida e precisar confirmar se essas mensagens estão passando pelo relé SMTP do Office 365, você pode revisar os cabeçalhos das mensagens nos emails recebidos.

Nota: A abertura dos cabeçalhos da mensagem varia entre diferentes clientes de email. O exemplo abaixo é específico para o Gmail.

Abra o email na interface do Gmail, abra a mensagem e clique nos três pontos verticais (1), depois clique em Mostrar original (2).

Validating SMTP Relay Hops using the Message Header

A new page will show the email message headers. Click on Copy to clipboard (1).

Validating SMTP Relay Hops using the Message Header

Abra uma nova guia do navegador e vá para https://testconnectivity.microsoft.com/.

Vá para a guia Analisador de Mensagens (1), cole os dados copiados na caixa (2) e clique em Analisar cabeçalhos (3).

Analyzing headers

O resultado da análise será exibido na tabela conforme mostrado abaixo.

Analyzing results

Você deverá ver o seguinte fluxo de trabalho nos resultados acima:

  1. Endereço IP 192.168.0.3 indica a origem do computador.
  2. Servidor de relé SMTP local recebeu a mensagem.
  3. A Proteção do Exchange Online (EOP) recebeu a mensagem.
  4. Servidor do Exchange Online e roteado para entrega externa receberam a mensagem.
  5. Office 365 entregou a mensagem para google.com.

Com base nos resultados da análise, você pode confirmar que a mensagem passou pelo relé SMTP do Office 365 conforme pretendido.

Resumo

Neste artigo, você aprendeu como criar um relé SMTP do Office 365 com e sem TLS. Você também aprendeu como testar e confirmar sua funcionalidade usando diferentes técnicas e como validar as rotas SMTP pelas quais a mensagem passou.

Leitura Adicional

Source:
https://adamtheautomator.com/office-365-smtp-relay/