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

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

importante

Las acciones de IAM mencionadas anteriormente tienen el nivel de acceso a la administración de permisos, que es el nivel de IAM más alto porque permite conceder o modificar permisos de recursos en el servicio. Por lo tanto, para mejorar la seguridad de su AWS cuenta, se recomienda encarecidamente que restrinja o supervise periódicamente estas políticas, que incluyen la clasificación de los niveles de acceso a la gestión de permisos.

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.

Procedimiento para permitir que el usuario de IAM pueda enviar correo electrónico a través de la interfaz de SMTP de SES
  1. Obtenga las credenciales SMTP del usuario a partir de sus AWS credenciales mediante el algoritmo que se proporciona en esta sección y siga estos procedimientos.

    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.

  2. Inicie sesión en la consola de IAM AWS Management Console y ábrala en. https://console.aws.amazon.com/iam/

  3. En Administración del acceso, elija Políticas y, a continuación, Crear política.

  4. En el Editor de políticas, seleccione JSON y borre todos los ejemplos de código del editor.

  5. Pegue la siguiente política de permisos en el editor:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ses:SendRawEmail", "Resource": "*" } ] }
  6. Seleccione Siguiente y escriba AmazonSesSendingAccess en el campo Nombre de política. A continuación, seleccione Crear política.

  7. En Administración del acceso, elija Grupos de usuarios y, a continuación, Crear grupo.

  8. En el campo Nombre del grupo de seguridad, escriba AWSSESSendingGroupDoNotRename.

  9. Agregue usuarios de SMTP al grupo. Para ello, selecciónelos en la tabla Agregar usuarios al grupo.

  10. Asocie la política AmazonSesSendingAccess creada anteriormente. Para ello, selecciónela en la tabla Asociar políticas de permisos y, a continuación, Crear grupo de usuarios.

Para obtener más información sobre el uso de SES con IAM, consulte Gestión de identidades y accesos 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) "us-gov-east-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.

  • path/to/Sustitúyala por la ruta a la ubicación en la que la smtp_credentials_generate.py guardaste.

  • Reemplace wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY con la clave de acceso secreta que desea convertir en una contraseña de SMTP.

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

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

Migración de un usuario de SMTP de una política insertada existente a una política de grupo (recomendación de seguridad)

importante

Si ha creado las credenciales de SMTP de SES antes del 6 de septiembre de 2024, a su usuario de SMTP se le han asociado una política insertada y una etiqueta. En SES, se están dejando de usar las políticas insertadas y la recomendación de seguridad es que todo el mundo haga lo mismo.

Antes de migrar a un usuario de SMTP de una política insertada existente a una política de grupo, primero debe crear un grupo de usuarios de IAM con la política de permisos de SES para sustituir a la política insertada. Si ya ha creado el grupo de usuarios de IAM, o bien este se ha creado automáticamente para las credenciales de SMTP que creó a partir del 6 de septiembre de 2024, puede ir directamente al paso 10 del procedimiento siguiente.

Migración de una política insertada existente a un grupo administrado
  1. Inicie sesión en la consola de IAM AWS Management Console y ábrala en. https://console.aws.amazon.com/iam/

  2. En Administración del acceso, elija Políticas y, a continuación, Crear política.

  3. En el Editor de políticas, seleccione JSON y borre todos los ejemplos de código del editor.

  4. Pegue la siguiente política de permisos en el editor:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ses:SendRawEmail", "Resource": "*" } ] }
  5. Seleccione Siguiente y escriba AmazonSesSendingAccess en el campo Nombre de política. A continuación, seleccione Crear política.

  6. En Administración del acceso, elija Grupos de usuarios y, a continuación, Crear grupo.

  7. En el campo Nombre del grupo de seguridad, escriba AWSSESSendingGroupDoNotRename.

  8. Agregue usuarios de SMTP al grupo. Para ello, selecciónelos en la tabla Agregar usuarios al grupo.

  9. Asocie la política AmazonSesSendingAccess creada anteriormente. Para ello, selecciónela en la tabla Asociar políticas de permisos y, a continuación, Crear grupo de usuarios.

    Ahora que ya ha creado el grupo de usuarios de IAM con la política de permisos de SES, puede migrar a un usuario de SMTP de la política insertada actual a esta política de grupo, tal y como se explica en los pasos restantes.

  10. En Administración del acceso, elija Usuarios y, a continuación, seleccione el usuario de SMTP que desee migrar.

  11. Seleccione la pestaña Grupos y haga clic en Agregar usuario a los grupos.

  12. Seleccione el grupo AWSSESSendingGroupDoNotRename y, a continuación, Agregar usuario a los grupos.

  13. Seleccione la pestaña Permisos y confirme que hay dos filas con el texto AmazonSesSendingAccess en la columna Nombre de la política, una con Inline y otra con Grupo en AWSSESSendingGroupDoNotRename la columna Adjuntado a través de.

  14. Seleccione solo la fila que contiene AmazonSesSendingAccess en la columna Nombre de la política e Inline en la columna Adjuntado a través de. A continuación, seleccione Quitar y elija Quitar política para confirmar.

    Compruebe que la fila cuya columna Adjuntado a través de contiene Grupo AWSSESSendingGroupDoNotRename sigue estando presente.

  15. Seleccione la pestaña Etiquetas y, a continuación, Administrar etiquetas.

  16. Seleccione Eliminar junto a la fila que contiene InvokedBylas columnas Clave y SESConsoleValor y, a continuación, Guardar cambios.

importante

La política AmazonSesSendingAccess (ya sea insertada, de grupo o ambas) debe permanecer asociada al usuario de SMTP para garantizar que el envío no se vea afectado. Solo debe borrar la política insertada después de haber asociado la política de grupo al usuario.