Obtenção de credenciais SMTP do Amazon SES - Amazon Simple Email Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Obtenção de credenciais SMTP do Amazon SES

Você precisa das credenciais SMTP do Amazon SES para acessar a interface SMTP do SES.

As credenciais que você usa para enviar e-mails pela interface SMTP do SES são exclusivas para cada AWS região. Se usar a interface SMTP do SES para enviar e-mails em mais de uma região, você deve gerar um conjunto de credenciais SMTP para cada região que pretende usar.

Sua senha SMTP é diferente da sua chave de acesso AWS secreta. Para obter mais informações sobre credenciais, consulte Tipos de credenciais do Amazon SES.

nota

No momento, os endpoints SMTP não estão disponíveis na África (Cidade do Cabo), Ásia-Pacífico (Jacarta) Europa (Milão), Israel (Tel Aviv) e Oriente Médio (Bahrein).

Obter as credenciais SMTP do SES usando o console do SES

Ao usar o fluxo de trabalho do SES abaixo para gerar credenciais SMTP usando o console, você está usando o console do IAM para criar um usuário com as políticas adequadas para chamar o SES e fornecer as credenciais SMTP associadas a esse usuário.

Requisito

Um usuário do IAM pode criar credenciais SMTP do SES, mas a política de usuário deve conceder a ele permissão para usar o IAM em si, pois as credenciais SMTP do SES são criadas com o uso do IAM. Sua política do IAM deve permitir que você execute as seguintes ações do IAM: iam:ListUsers, iam:CreateUser, iam:CreateAccessKey e iam:PutUserPolicy. Se você tentar criar credenciais SES SMTP usando o console e seu usuário do IAM não tiver essas permissões, você verá um erro informando que sua conta “não está autorizada a realizar iam:ListUsers”.

Para criar suas credenciais SMTP
  1. Faça login AWS Management Console e abra o console do Amazon SES em https://console.aws.amazon.com/ses/.

  2. Selecione SMTP settings (Configurações de SMTP) no painel de navegação à esquerda. Isso abrirá a página Simple Mail Transfer Protocol (SMTP) settings [Configurações de SMTP (Simple Mail Transfer Protocol)].

  3. Selecione Create SMTP Credentials (Criar credenciais de SMTP) no canto superior direito. Isso abrirá o console do IAM.

  4. (Opcional) Se você precisar visualizar, editar ou excluir usuários de SMTP que já criou, selecione Manage my existing SMTP credentials (Gerenciar minhas credenciais SMTP existentes) no canto inferior direito. Isso abrirá o console do IAM. Os detalhes do gerenciamento de credenciais de SMTP são fornecidos seguindo esses procedimentos.

  5. Para Criar usuário para SMTP, digite um nome para seu usuário SMTP no campo Nome de usuário. Como alternativa, você pode usar o valor padrão que é fornecido nesse campo. Ao terminar, escolha Criar usuário no canto inferior direito.

  6. Selecione Mostrar em Senha SMTP: as credenciais SMTP são mostradas na tela.

  7. Baixe essas credenciais escolhendo Baixar arquivo .csv ou copie e armazene-as em local seguro, porque você não poderá visualizar nem salvar as credenciais depois que fechar essa caixa de diálogo.

  8. Escolha Retornar ao console do SES.

É possível exibir uma lista de credenciais SMTP que você criou usando esse procedimento no console do IAM em Access management (Gerenciamento de acesso) e escolhendo Users (Usuários). Depois, use a barra de pesquisa para localizar todos os usuários aos quais você atribuiu credenciais SMTP.

Também é possível usar o console do IAM para excluir usuários SMTP existentes. Para saber mais sobre como excluir usuários, consulte Gerenciar usuários do IAM no Guia de conceitos básicos do IAM.

Se pretender alterar a senha SMTP, exclua o usuário SMTP existente no console do IAM. Depois, para gerar um novo conjunto de credenciais SMTP, realize os procedimentos anteriores.

Obtendo credenciais SES SMTP convertendo credenciais existentes AWS

Se você tiver um usuário configurado usando a interface do IAM, poderá derivar as credenciais SES SMTP do usuário a partir de suas credenciais. AWS

Importante

Não use AWS credenciais temporárias para derivar credenciais SMTP. A interface SMTP do SES não é compatível com credenciais SMTP que tenham sido geradas com base nas credenciais de segurança temporárias.

Para que o usuário do IAM possa enviar e-mails usando a interface SMTP do SES, faça o seguinte:

  • Derive as credenciais SMTP do usuário a partir de suas AWS credenciais usando o algoritmo fornecido nesta seção. Como você está começando com AWS as credenciais, o nome de usuário SMTP é o mesmo que o ID da chave de AWS acesso, então você só precisa gerar a senha SMTP.

  • Aplique a política a seguir ao usuário do IAM:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ses:SendRawEmail", "Resource": "*" } ] }

    Para obter mais informações sobre como usar o SES com o IAM, consulte Gerenciamento de identidade e acesso no Amazon SES.

nota

Embora você possa gerar credenciais SMTP do SES para qualquer usuário do IAM, recomendamos criar um usuário do IAM separado ao gerar suas credenciais SMTP. Para obter mais informações sobre por que é uma prática recomendada criar usuários para fins específicos, consulte Melhores práticas do IAM.

O pseudocódigo a seguir mostra o algoritmo que converte uma chave de acesso AWS secreta em uma senha SES SMTP.

// Modify this variable to include your AWS secret access key key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"; // Modify this variable to refer to the AWS Region that you want to use to send email. region = "us-west-2"; // The values of the following variables should always stay the same. date = "11111111"; service = "ses"; terminal = "aws4_request"; message = "SendRawEmail"; version = 0x04; kDate = HmacSha256(date, "AWS4" + key); kRegion = HmacSha256(region, kDate); kService = HmacSha256(service, kRegion); kTerminal = HmacSha256(terminal, kService); kMessage = HmacSha256(message, kTerminal); signatureAndVersion = Concatenate(version, kMessage); smtpPassword = Base64(signatureAndVersion);

Algumas linguagens de programação incluem bibliotecas que você pode usar para converter uma chave de acesso secreta do IAM em uma senha SMTP. Esta seção inclui um exemplo de código que você pode usar para converter uma chave de acesso AWS secreta em uma senha SES SMTP usando Python.

nota

O exemplo a seguir usa f-strings que foram introduzidos no Python 3.6; se estiver usando uma versão mais antiga, elas não funcionarão.

Atualmente, o Python SDK (Boto3) suporta oficialmente as versões 2.7 e 3.6 (ou posterior). No entanto, o suporte da versão 2.7 está defasado e será descontinuado em 15/7/2021, portanto, você precisará atualizar pelo menos para a versão 3.6.

Python
#!/usr/bin/env python3 import hmac import hashlib import base64 import argparse SMTP_REGIONS = [ "us-east-2", # US East (Ohio) "us-east-1", # US East (N. Virginia) "us-west-2", # US West (Oregon) "ap-south-1", # Asia Pacific (Mumbai) "ap-northeast-2", # Asia Pacific (Seoul) "ap-southeast-1", # Asia Pacific (Singapore) "ap-southeast-2", # Asia Pacific (Sydney) "ap-northeast-1", # Asia Pacific (Tokyo) "ca-central-1", # Canada (Central) "eu-central-1", # Europe (Frankfurt) "eu-west-1", # Europe (Ireland) "eu-west-2", # Europe (London) "eu-south-1", # Europe (Milan) "eu-north-1", # Europe (Stockholm) "sa-east-1", # South America (Sao Paulo) "us-gov-west-1", # AWS GovCloud (US) ] # These values are required to calculate the signature. Do not change them. DATE = "11111111" SERVICE = "ses" MESSAGE = "SendRawEmail" TERMINAL = "aws4_request" VERSION = 0x04 def sign(key, msg): return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest() def calculate_key(secret_access_key, region): if region not in SMTP_REGIONS: raise ValueError(f"The {region} Region doesn't have an SMTP endpoint.") signature = sign(("AWS4" + secret_access_key).encode("utf-8"), DATE) signature = sign(signature, region) signature = sign(signature, SERVICE) signature = sign(signature, TERMINAL) signature = sign(signature, MESSAGE) signature_and_version = bytes([VERSION]) + signature smtp_password = base64.b64encode(signature_and_version) return smtp_password.decode("utf-8") def main(): parser = argparse.ArgumentParser( description="Convert a Secret Access Key to an SMTP password." ) parser.add_argument("secret", help="The Secret Access Key to convert.") parser.add_argument( "region", help="The AWS Region where the SMTP password will be used.", choices=SMTP_REGIONS, ) args = parser.parse_args() print(calculate_key(args.secret, args.region)) if __name__ == "__main__": main()

Para obter sua senha SMTP usando esse script, salve o código anterior como smtp_credentials_generate.py. Depois, na linha de comando, execute o seguinte comando:

python path/to/smtp_credentials_generate.py wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY us-east-1

No comando anterior, faça o seguinte:

  • Substitua path/to/ pelo caminho para o local em que você salvou smtp_credentials_generate.py.

  • Substitua wjalrxutnfemi/k7mdeng/ bPxRfi CYEXAMPLEKEY pela chave de acesso secreta que você deseja converter em uma senha SMTP.

  • Substitua us-east-1 AWS pela região na qual você deseja usar as credenciais SMTP.

Quando esse script é executado com êxito, a única saída é sua senha SMTP.