Obtención de SES SMTP credenciales de Amazon - 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 SES SMTP credenciales de Amazon

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

Las credenciales que utilizas para enviar correos electrónicos a través de la SES SMTP interfaz son exclusivas de cada AWS región. Si utiliza la SES SMTP interfaz para enviar correos electrónicos en más de una región, debe generar un conjunto de SMTP credenciales para cada región que vaya a utilizar.

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

nota

SMTPLos puntos finales no están disponibles actualmente en África (Ciudad del Cabo), Asia Pacífico (Yakarta), Europa (Milán), Israel (Tel Aviv) y Oriente Medio (Bahréin).

Obtención de SES SMTP credenciales mediante la consola SES

Si utiliza el siguiente SES flujo de trabajo para generar SMTP credenciales mediante la consola, accederá a la IAM consola para crear un usuario con las políticas de llamadas adecuadas SES y le proporcionará las SMTP credenciales asociadas a ese usuario.

Requisito

Un IAM usuario puede crear SES SMTP credenciales, pero la política del usuario debe concederle permiso para usarlas por IAM sí mismo, ya que SES SMTP las credenciales se crean mediante el usoIAM. Su IAM política debe permitirle realizar las siguientes IAM acciones:iam:ListUsers, iam:CreateUseriam:CreateAccessKey, yiam:PutUserPolicy. Si intentas crear SES SMTP credenciales mediante la consola y tu IAM usuario no tiene estos permisos, aparecerá un error que indica que tu cuenta «no está autorizada para realizar iam:»ListUsers.

Para crear tus credenciales SMTP
  1. Inicia sesión en la SES consola de Amazon AWS Management Console y ábrela en https://console.aws.amazon.com/ses/.

  2. Selecciona la SMTPconfiguración en el panel de navegación izquierdo; se abrirá la página de configuración del Protocolo simple de transferencia de correo (SMTP).

  3. Selecciona Crear SMTP credenciales en la esquina superior derecha y se abrirá la IAM consola.

  4. (Opcional) Si necesitas ver, editar o eliminar SMTP los usuarios que ya has creado, selecciona Administrar mis SMTP credenciales existentes en la esquina inferior derecha y se abrirá la IAM consola. Los detalles para administrar SMTP las credenciales se proporcionan siguiendo estos procedimientos.

  5. En Crear usuario para SMTP, escriba un nombre para el SMTP usuario 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 con SMTPcontraseña: sus SMTP credenciales 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. Selecciona Volver a la SES consola.

Puede ver una lista de las SMTP credenciales que ha creado siguiendo este procedimiento en la IAM consola, en Administración de acceso, seleccionando Usuarios y, a continuación, utilizando la barra de búsqueda para buscar todos los usuarios a los que ha asignado SMTP credenciales.

También puede usar la IAM consola para eliminar SMTP los usuarios existentes. Para obtener más información sobre la eliminación de usuarios, consulte Administración de IAM usuarios en la IAMGuía de introducción.

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

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

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

importante

No utilice AWS credenciales temporales para SMTP derivarlas. La SES SMTP interfaz no admite SMTP credenciales generadas a partir de credenciales de seguridad temporales.

Para permitir que el IAM usuario envíe correos electrónicos mediante la SES SMTP interfaz, haga lo siguiente.

  • Obtenga las SMTP credenciales 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 SMTP usuario es el mismo que el ID de la clave de AWS acceso, por lo que solo necesita generar la SMTP contraseña.

  • Aplique la siguiente política al IAM usuario:

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

    Para obtener más información sobre el uso SES conIAM, consulteIdentity and Access Management en Amazon SES.

nota

Aunque puede generar SES SMTP credenciales para cualquier IAM usuario, le recomendamos que cree un IAM usuario independiente al generar sus SMTP credenciales. Para obtener información sobre por qué es una buena práctica crear usuarios para fines específicos, consulta las prácticas IAM recomendadas.

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

// 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 se pueden utilizar para convertir una clave de acceso IAM secreta en una SMTP contraseña. En esta sección se incluye un ejemplo de código que puede utilizar para convertir una clave de acceso AWS secreta en una SES SMTP contraseña 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, Python SDK (Boto3) es compatible oficialmente con 2.7 y 3.6 (o versiones 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 SMTP contraseña 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.

  • Reemplazar path/to/ con la ruta a la ubicación en la que la guardósmtp_credentials_generate.py.

  • Reemplazar wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY con la clave de acceso secreta que desee convertir en SMTP contraseña.

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

Cuando este script se ejecute correctamente, el único resultado será su SMTP contraseña.