I tried the new "Mail Manager SMTP Guided Setup" feature in the Amazon SES console

I tried the new "Mail Manager SMTP Guided Setup" feature in the Amazon SES console

A guided setup for Mail Manager SMTP has been added to the Amazon SES console. Ingress endpoints, traffic policies, rule sets, and IAM roles are automatically created, allowing you to send messages using the issued credentials. I confirmed everything from sending via Python's smtplib to the authentication results of emails received in Gmail.
2026.07.26

This page has been translated by machine translation. View original

Introduction

On July 24, 2026, a guided setup for Mail Manager SMTP was added to the Amazon SES console. By simply following the wizard, a complete set of traffic policies, rule sets, IAM roles, and ingress endpoints required for SMTP sending are created. This guided setup is available in all regions where SES is available.

https://aws.amazon.com/jp/about-aws/whats-new/2026/07/amazon-ses-simplified-smtp-mail-manager/

The SES SMTP settings screen displays both the traditional IAM SMTP credentials and the Mail Manager SMTP that is now covered by the guided setup. The main differences between the two are as follows.

Aspect Mail Manager SMTP IAM SMTP
Credential creation Specify a custom or auto-generated SMTP password, or a Secrets Manager secret Create an IAM user and use SMTP credentials derived from that user's access key
IAM user creation Not required (the console creates an IAM role) Required (IAM permissions such as iam:CreateUser and iam:PutGroupPolicy are needed)
Traffic policy / rule set Automatically created during setup Mail Manager traffic policies and rule sets are not used
Changing credentials Change password or secret from the ingress endpoint details screen The documentation guides you through deleting and recreating the SMTP user
Regions where credentials can be created All regions where SES is available Select regions only

Source: Creating SMTP credentials using Mail Manager / Obtaining Amazon SES SMTP credentials

The same documentation states that the use of Mail Manager is recommended.

We will walk through the process from setup and resource verification, to sending with Python, and confirming authentication results of received emails. The verification environment is as follows. Note that in this article, the sending domain has been replaced with the example example.com, and the latter parts of resource IDs and endpoint hostnames are masked.

Item Value
Region us-east-1
Sending domain example.com (verified in SES, DKIM/SPF/DMARC configured)
Destination Gmail
SES sending limit Sandbox removed

Setup in the Console

Start the guided setup from "Create SMTP credentials" on the Mail Manager SMTP side.

SMTP settings screen

Step 1: Credentials

Enter the ingress endpoint name and choose the authentication type. This time, "Password" was selected, and the password was generated using the console's "Auto-generate" option.

Step 1: Credentials

Step 2: Advanced Settings

Select "Create new" for the traffic policy and rule set, and create the IAM role by selecting "Create a new role." Additionally, specify the network type, IP address type, and TLS policy for the ingress endpoint.

Step 2: Advanced Settings

The configuration values applied in this setup are as follows. The descriptions for network type, TLS policy, and IP address type are the text displayed on the screen.

Setting Value Description
Network type Public Emails sent to the domain travel through the public network
TLS policy Required Only accept emails with TLS encryption
IP address type IPv4 Allow IPv4 addresses only
Authentication type Password Use the password authentication specified in Step 1
Traffic policy default action ALLOW Also allow traffic that does not match any condition

The reason the description reads "emails sent to the domain" from a receiving perspective is that Mail Manager ingress endpoints were originally designed as entry points for receiving email. In this use case, the configuration involves the SMTP client connecting to this endpoint over the internet to relay email.

Step 3: Review

Review the credentials and advanced settings, then execute "Create credentials."

Step 3: Review

Setup Complete

Once the status becomes active, the endpoint hostname (ARecord) and username to specify in the SMTP client are displayed. The .csv file containing the password is downloaded from this screen. The lower part of the screen also provides setup instructions for SMTP clients using STARTTLS on port 587.

Completion screen

Verifying Created Resources (CLI)

We use the AWS CLI Mail Manager API to verify what was created by the wizard.

aws mailmanager list-ingress-points --region us-east-1
{
    "IngressPoints": [
        {
            "IngressPointName": "ingressendpoint-20260724-201901",
            "IngressPointId": "inp-4zdtzptathov...",
            "Status": "ACTIVE",
            "Type": "AUTH",
            "ARecord": "cdx6ee******.fips.****.mail-manager-smtp.amazonaws.com"
        }
    ]
}

Status is ACTIVE and Type is AUTH, indicating it was created as an ingress endpoint that accepts authenticated email from SMTP clients. The ARecord hostname is the connection destination to configure in the SMTP client.

aws mailmanager list-rule-sets --region us-east-1
{
    "RuleSets": [
        {
            "RuleSetId": "rs-5e7xcrj7pw6v...",
            "RuleSetName": "rule-set-20260724-202926",
            "LastModificationDate": "2026-07-25T05:31:01+09:00"
        }
    ]
}
aws mailmanager list-traffic-policies --region us-east-1
{
    "TrafficPolicies": [
        {
            "TrafficPolicyName": "traffic-policy-20260724-202926",
            "TrafficPolicyId": "tp-6woxwxztljlg...",
            "DefaultAction": "ALLOW"
        }
    ]
}

A summary of the names and IDs of the three automatically created resources.

Resource Name ID
Ingress endpoint ingressendpoint-20260724-201901 inp-4zdtzptathov...
Rule set rule-set-20260724-202926 rs-5e7xcrj7pw6v...
Traffic policy traffic-policy-20260724-202926 tp-6woxwxztljlg...

In addition to the ingress endpoint, the rule set and traffic policy were also created upon wizard completion, so no separate creation steps were needed. The IAM role created at the same time is not a target of the Mail Manager API listing, so it is not covered here.

SMTP Connection and Sending Test

This is a minimal Python script that performs authentication and sending after STARTTLS encryption on port 587. Replace the hostname, username, and password with the values from the .csv downloaded on the completion screen before running.

import smtplib
from email.mime.text import MIMEText

SMTP_HOST = "<SMTP endpoint hostname>"
SMTP_PORT = 587
SMTP_USER = "<SMTP username>"
SMTP_PASSWORD = "<SMTP password>"
MAIL_FROM = "test@example.com"
MAIL_TO = "<Gmail address>"

msg = MIMEText("This is a test email sent from SES Mail Manager SMTP.")
msg["Subject"] = "SES Mail Manager SMTP Test"
msg["From"] = MAIL_FROM
msg["To"] = MAIL_TO

server = smtplib.SMTP(SMTP_HOST, SMTP_PORT)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.ehlo()
server.login(SMTP_USER, SMTP_PASSWORD)
server.sendmail(MAIL_FROM, [MAIL_TO], msg.as_string())
server.quit()

In the EHLO before STARTTLS, STARTTLS and AUTH PLAIN LOGIN were presented, and authentication via AUTH PLAIN succeeded.

send: 'STARTTLS\r\n'
reply: b'220 Ready to start TLS\r\n'
...
reply: b'235 Authentication successful.\r\n'
SMTP communication log (authentication section)
send: 'ehlo [<client IP>]\r\n'
reply: b'250-****.mail-manager-smtp.amazonaws.com\r\n'
reply: b'250-8BITMIME\r\n'
reply: b'250-STARTTLS\r\n'
reply: b'250-AUTH PLAIN LOGIN\r\n'
reply: b'250 Ok\r\n'
reply: retcode (250); Msg: b'****.mail-manager-smtp.amazonaws.com\n8BITMIME\nSTARTTLS\nAUTH PLAIN LOGIN\nOk'
send: 'STARTTLS\r\n'
reply: b'220 Ready to start TLS\r\n'
reply: retcode (220); Msg: b'Ready to start TLS'
send: 'ehlo [<client IP>]\r\n'
reply: b'250-****.mail-manager-smtp.amazonaws.com\r\n'
reply: b'250-8BITMIME\r\n'
reply: b'250-AUTH PLAIN LOGIN\r\n'
reply: b'250 Ok\r\n'
reply: retcode (250); Msg: b'****.mail-manager-smtp.amazonaws.com\n8BITMIME\nAUTH PLAIN LOGIN\nOk'
send: 'AUTH PLAIN <credentials masked>\r\n'
reply: b'235 Authentication successful.\r\n'
reply: retcode (235); Msg: b'Authentication successful.'
send: 'quit\r\n'
reply: b'221 Bye\r\n'
reply: retcode (221); Msg: b'Bye'

In the EHLO after STARTTLS, STARTTLS was no longer presented, and only AUTH PLAIN LOGIN was offered. Email sending also succeeded, and receipt was confirmed on the Gmail side.

Received Email Header Verification

Check Result
DKIM (example.com) pass
DKIM (amazonses.com) pass
SPF pass
DMARC pass (p=REJECT sp=REJECT)

In this verification, the reverse lookup of the sending host was a host under smtp-out.amazonses.com. In Gmail's received headers, the communication from SES to Gmail during delivery used TLS1_3 (TLS_AES_128_GCM_SHA256).

Summary

With the guided setup for Mail Manager SMTP, all settings required for SMTP sending can now be created together.

If you are configuring SMTP sending from now on, we recommend avoiding the traditional IAM SMTP where possible. IAM SMTP requires creating an IAM user and a non-expiring access key for SMTP credentials, and the person performing the setup also needs IAM permissions at the access management level, such as iam:CreateUser and iam:PutGroupPolicy. There is also the operational overhead of deleting and recreating the IAM user whenever you want to change the password. The official documentation also recommends using Mail Manager.

With Mail Manager SMTP, no IAM user or access key is needed — you only need to manage the SMTP password or a Secrets Manager secret. With the password method used in this test, changes can be completed entirely from the ingress endpoint details screen. For environments already operating with IAM SMTP, if STARTTLS connections to Mail Manager SMTP are supported, we recommend taking this opportunity to migrate.

For information on SES pricing plans, please refer to the article below.

https://dev.classmethod.jp/articles/ses-pricing-plans-price-list-api-sesv2-api/

Share this article

AWSのお困り事はクラスメソッドへ