Amazon Simple Email Service
Guía del desarrollador

Obtención de las credenciales de SMTP de Amazon SES

Necesita un nombre de usuario y una contraseña de SMTP de Amazon SES para tener acceso a la interfaz de SMTP de Amazon SES. Si tiene previsto utilizar la interfaz de SMTP para enviar correo electrónico en varias regiones de AWS, debe obtener un conjunto único de credenciales de SMTP para cada región.

importante

Su nombre de usuario y contraseña de SMTP son distintos de su ID de clave de acceso y clave de acceso secreta de AWS. Para obtener más información acerca de las credenciales, consulte Uso de credenciales con Amazon SES.

Obtención de credenciales de SMTP de Amazon SES utilizando la consola de Amazon SES

Cuando se generan las credenciales de SMTP a través de la consola de Amazon SES, la consola de Amazon SES crea un usuario de IAM con las políticas adecuadas para llamar a Amazon SES y proporciona las credenciales de SMTP asociadas a dicho usuario.

nota

Un usuario de IAM puede crear credenciales de SMTP de Amazon SES, pero la política de usuario de IAM puede concederle permiso para utilizar el propio IAM, dado que las credenciales de SMTP de Amazon SES se crean mediante IAM. Su política de IAM debe permitirle realizar las siguientes acciones de IAM: iam:ListUsers, iam:CreateUser, iam:CreateAccessKey e iam:PutUserPolicy. Si intenta crear credenciales SMTP de Amazon SES utilizando la consola y su usuario de IAM no tiene estos permisos, aparecerá un error que indica que su cuenta "no está autorizada para realizar iam:ListUsers".

Para crear sus credenciales de SMTP

  1. Inicie sesión en Consola de administración de AWS y abra la consola de Amazon SES en https://console.aws.amazon.com/ses/.

  2. En el panel de navegación, seleccione SMTP Settings.

  3. En el panel de contenido, elija Create My SMTP Credentials.

  4. En Create User for SMTP (Crear usuario para SMTP), escriba un nombre para el usuario de SMTP. También puede utilizar el valor predeterminado que se proporciona en este campo. Cuando haya terminado, elija Create.

    
                        Crear un usuario para SMTP
  5. Elija Show User SMTP Credentials. Sus credenciales de SMTP se muestran en la pantalla. Copie estas credenciales y guárdelas en un lugar seguro. También puede elegir Download Credentials para descargar un archivo que contenga sus credenciales.

    
                        Crear un usuario para SMTP

    importante

    Esta es la única vez que puede ver sus credenciales de SMTP. Le recomendamos que descargue estas credenciales y las guarde en un lugar donde no se eliminen. Si pierde estas credenciales, tiene que reiniciar el proceso de creación de su usuario de SMTP.

  6. Elija Close Window.

Si desea eliminar sus credenciales de SMTP, vaya a la consola de IAM en https://console.aws.amazon.com/iam/ y elimine el nombre de usuario de IAM que se corresponde con sus credenciales de SMTP. Para obtener más información, consulte la guía Using IAM.

Si desea cambiar su contraseña de SMTP, vaya a la consola de IAM y elimine su usuario de IAM existente y, a continuación, vaya a la consola de Amazon SES para volver a generar sus credenciales de SMTP.

Obtención de las credenciales de SMTP de Amazon SES convirtiendo credenciales de AWS existentes

Si tiene un usuario de IAM que ha configurado utilizando la interfaz de IAM, puede obtener las credenciales de SMTP de Amazon SES del usuario a partir de sus credenciales de AWS.

importante

No utilice las credenciales temporales de AWS para obtener credenciales de SMTP. La interfaz de SMTP de Amazon SES no es compatible con las credenciales de SMTP que se han generado a partir de credenciales de seguridad temporales.

Para permitir al usuario de IAM que envíe correo electrónico a través de la interfaz de SMTP de Amazon SES, tiene que realizar los dos pasos siguientes:

  • Obtenga las credenciales de SMTP del usuario a partir de sus credenciales de AWS utilizando el algoritmo proporcionado en esta sección. Dado que parte de las credenciales de AWS, el nombre de usuario de SMTP es el mismo que el ID de clave de acceso de AWS, por lo que solo tiene que generar la contraseña de SMTP.

  • Aplique la siguiente política al usuario de IAM:

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

    Para obtener más información acerca del uso de Amazon SES con IAM, consulte Control del acceso a Amazon SES.

nota

Aunque puede generar credenciales de SMTP de Amazon SES para cualquier usuario de IAM, le recomendamos que cree un usuario de IAM independiente cuando genere las credenciales de SMTP. Para obtener información sobre por qué es una práctica recomendable crear usuarios para fines específicos, acceda a Prácticas recomendadas de IAM.

El siguiente pseudocódigo muestra el algoritmo que convierte una clave de acceso secreta de AWS en una contraseña de SMTP de Amazon SES.

// 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"; versionInBytes = 0x04; kDate = HmacSha256(date, "AWS4" + key); kRegion = HmacSha256(region, kDate); kService = HmacSha256(service, kRegion); kTerminal = HmacSha256(terminal, kService); kMessage = HmacSha256(message, kTerminal); signatureAndVersion = Concatenate(versionInBytes, kMessage); smtpPassword = Base64(signatureAndVersion);

Algunos lenguajes de programación incluyen bibliotecas que puede utilizar para convertir una clave de acceso secreta de IAM en una contraseña de SMTP. En esta sección, se incluye un ejemplo de código que puede usar para convertir una clave de acceso secreta de AWS en una contraseña de SMTP de Amazon SES mediante Python.

Python
Python
#!/usr/bin/env python3 import hmac import hashlib import base64 import argparse # Values that are required to calculate the signature. These values should # never change. 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 calculateKey(secretAccessKey, region): signature = sign(("AWS4" + secretAccessKey).encode('utf-8'), DATE) signature = sign(signature, region) signature = sign(signature, SERVICE) signature = sign(signature, TERMINAL) signature = sign(signature, MESSAGE) signatureAndVersion = bytes([VERSION]) + signature smtpPassword = base64.b64encode(signatureAndVersion) print(smtpPassword.decode('utf-8')) def main(): parser = argparse.ArgumentParser(description='Convert a Secret Access Key for an IAM user to an SMTP password.') parser.add_argument('--secret', help='The Secret Access Key that you want to convert.', required=True, action="store") parser.add_argument('--region', help='The name of the AWS Region that the SMTP password will be used in.', required=True, choices=['us-east-1','us-west-2','eu-west-1'], action="store") args = parser.parse_args() calculateKey(args.secret,args.region) main()