Obtención de las credenciales de SMTP de Amazon SES - Amazon Simple Email Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Obtención de las credenciales de SMTP de Amazon SES

Necesita las credenciales de SMTP de Amazon SES para acceder a la interfaz de SMTP de SES.

Las credenciales que utiliza para enviar correos electrónicos a través de la interfaz SMTP de SES son exclusivas de cada AWS región. Si utiliza la interfaz de SMTP de SES para enviar correo electrónico en más de una región, deberá generar un conjunto de credenciales de SMTP para cada región que tenga previsto usar.

Su contraseña SMTP es diferente de su clave de acceso AWS secreta. Para obtener más información acerca de las credenciales, consulte Tipos de credenciales de Amazon SES.

nota

Los puntos de conexión de SMTP no están disponibles actualmente en África (Ciudad del Cabo), Asia Pacífico (Yakarta), Europa (Milán), Israel (Tel Aviv) y Medio Oriente (Baréin).

Obtención de credenciales de SMTP de SES con la consola de SES

Al usar el flujo de trabajo de SES siguiente para generar credenciales SMTP a través de la consola, se le redirige a la consola de IAM para crear un usuario con las políticas adecuadas para llamar a SES y se le proporcionan las credenciales de SMTP asociadas a dicho usuario.

Requisito

Un usuario de IAM puede crear credenciales de SMTP de SES, pero la política de usuario puede concederle permiso para utilizar el propio IAM, dado que las credenciales de SMTP de SES se crean mediante IAM. La política de IAM debe permitirle realizar las siguientes acciones de IAM: iam:ListUsers, iam:CreateUser, iam:CreateAccessKey e iam:PutUserPolicy. Si intenta crear las credenciales SMTP de SES mediante 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 la consola Amazon SES AWS Management Console y ábrala en https://console.aws.amazon.com/ses/.

  2. Elija SMTP settings (Configuración de SMTP) en el panel de navegación de la izquierda. Se abrirá la página Simple Mail Transfer Protocol (SMTP) settings (Configuración del protocolo simple de transferencia de correo [SMTP]).

  3. Elija Create SMTP Credentials (Crear credenciales SMTP) en la esquina superior derecha. Se abrirá la consola de IAM.

  4. (Opcional) Si necesita ver, editar o eliminar los usuarios de SMTP que ya ha creado, elija Manage my existing SMTP credentials (Administrar mis credenciales de SMTP existentes) en la esquina inferior derecha. Se abrirá la consola de IAM. Los detalles para administrar las credenciales de SMTP se proporcionan siguiendo estos procedimientos.

  5. En Crear usuario para SMTP, escriba un nombre para el usuario de SMTP en el campo Nombre de usuario. También puede utilizar el valor predeterminado que se proporciona en este campo. Cuando haya terminado, elija Crear usuario en la esquina inferior derecha.

  6. Seleccione Mostrar en la Contraseña SMTP: las credenciales de SMTP se muestran en la pantalla.

  7. Elija Descargar archivo .csv para descargar estas credenciales o cópielas y almacénelas en un lugar seguro, ya que no podrá ver ni guardar las credenciales después de haber cerrado este cuadro de diálogo.

  8. Elija Volver a la consola de SES.

Puede ver una lista de las credenciales de SMTP que ha creado mediante este procedimiento en la consola de IAM en Access management (Administración de accesos) y elegir Users (Usuarios) seguido de la barra de búsqueda para encontrar a todos los usuarios a los que ha asignado credenciales de SMTP.

También puede utilizar la consola de IAM para eliminar usuarios de SMTP existentes. Para obtener más información sobre cómo eliminar usuarios, consulte Administración de usuarios de IAM en la Guía de introducción de IAM.

Si desea cambiar la contraseña de SMTP, elimine el usuario de SMTP existente en la consola de IAM. A continuación, para generar un nuevo conjunto de credenciales de SMTP, realice los procedimientos anteriores.

Obtener las credenciales SMTP de SES mediante la conversión de las credenciales existentes AWS

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

importante

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

Para habilitar el usuario de IAM con el fin de enviar correo electrónico a través de la interfaz de SMTP de SES, haga lo siguiente.

  • Obtenga las credenciales SMTP del usuario a partir de sus AWS credenciales mediante el algoritmo que se proporciona en esta sección. Como se parte de las AWS credenciales, el nombre de usuario de SMTP es el mismo que el ID de la clave de AWS acceso, por lo que solo necesita 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 sobre el uso de SES con IAM, consulte Identity and Access Management en Amazon SES.

nota

Aunque puede generar credenciales de SMTP de 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 acerca de 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 AWS secreta en una contraseña SMTP de 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"; 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);

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. Esta sección incluye un ejemplo de código que puede utilizar para convertir una clave de acceso AWS secreta en una contraseña SMTP de SES mediante Python.

nota

En el siguiente ejemplo, se utilizan f-strings que se introdujeron en Python 3.6; si usa una versión anterior, no funcionarán.

Actualmente, el SDK de Python (Boto3) es oficialmente compatible con las versiones 2.7 y 3.6 (o posteriores). Sin embargo, la compatibilidad con la versión 2.7 es obsoleta y se descartará el 15/7/2021, por lo que deberá actualizarse al menos a la 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 obtener la contraseña de SMTP mediante este script, guarde el código anterior como smtp_credentials_generate.py. A continuación, en la línea de comandos, ejecute el comando siguiente:

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

En el comando anterior, haga lo siguiente.

  • Reemplace path/to/ con la ruta de acceso a la ubicación donde guardó smtp_credentials_generate.py.

  • Sustituya wjalRxUtnFemi/K7MDEng/ bPxRfi CYEXAMPLEKEY por la clave de acceso secreta que desee convertir en una contraseña SMTP.

  • Sustituya us-east-1 por la región en AWS la que desee utilizar las credenciales SMTP.

Cuando este script se ejecuta correctamente, el único resultado es la contraseña de SMTP.