Utilize o AWS SES como um Gateway de Entrada de Correio

2

Estou tentando usar o SES para interceptar um email recebido de um domínio, processar e manipular o email com um lambda e, em seguida, gostaria de continuar enviando o email para o destino final / servidor de email original.

Por exemplo:

  • Digamos que eu possua mydomain.com
  • mydomain.com usa serviços do Google Mail (GSuite)
  • Defino os registros MX de mydomain.com para apontar o SES a partir do GSuite
  • [email protected] envia um email para [email protected]
  • o email é recebido pelo SES e é processado pelo lambda
  • lambda envia o e-mail para o servidor de e-mail original do Gsuite
  • o resultado final é [email protected] recebe um email no gmail de [email protected] (possivelmente com alguns elementos do email redigidos pelo lambda)

A questão principal aqui é que o registro MX meudominio.com apontaria para o SES e, após o envio dentro do lambda, a mensagem enviaria ao SES e não ao servidor de correio original.

Existe uma boa maneira de contornar este problema? Existe uma melhor prática relacionada ao caso de uso acima, interceptando e manipulando e-mails? Também não tenho certeza se "Inbound Mail Gateway" é o termo correto para descrever meu caso de uso.

    
por andrsnn 08.11.2018 / 04:39

1 resposta

1

Para contornar que o seu Lambda terá que iniciar explicitamente o SMTP conexão aos servidores GSuite para entregar o email e não usar o SES como relay de saída.

Então será:

[Internet] -> {DNS MX} -> [SES] -> [Lambda] -> {explicit SMTP} -> [Gsuite]
                                       ^
                                       |
                           {list of Gsuite servers}

No seu caso eu também separaria o Lambda Recebedor do envio SMTP. Dessa forma, você poderá continuar recebendo e-mails mesmo se a entrega para o Gsuite falhar por algum motivo. Por exemplo, algo assim:

... [SES] -> [Receiving Lambda] -> [SQS queue] -> [Sending Lambda] -> {SMTP} ...

O SQS permitirá que você repita facilmente tentativas de entrega com falha. Claro que também criamos um SQS DLQ (Dead Letter Queue) e alguns CloudWatch Alarms para que você saiba quando mensagens não entregues começam a se acumular na sua fila SQS ou no DLQ!

Ter servidores SMTP "ocultos" não é incomum, mas observe que um determinado remetente pode descobrir que você usa o Gsuite (por exemplo, de respostas de email) e pode ignorar o processamento do SES. Não tenho certeza se é realmente um problema no seu caso, mas é bom estar ciente disso.

Espero que ajude:)

    
por 08.11.2018 / 05:30