<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Renova</title>
    <description>The latest articles on DEV Community by Renova (@renova).</description>
    <link>https://dev.to/renova</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4127118%2F03e9733c-b2bd-4dc5-a9dd-4df4ea7bded1.png</url>
      <title>DEV Community: Renova</title>
      <link>https://dev.to/renova</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/renova"/>
    <language>en</language>
    <item>
      <title>How to Set Up Amazon SES with AcelleMail 2026</title>
      <dc:creator>Renova</dc:creator>
      <pubDate>Wed, 16 Sep 2026 03:54:35 +0000</pubDate>
      <link>https://dev.to/renova/how-to-set-up-amazon-ses-with-acellemail-2026-2e5a</link>
      <guid>https://dev.to/renova/how-to-set-up-amazon-ses-with-acellemail-2026-2e5a</guid>
      <description>&lt;h1&gt;
  
  
  Connecting Amazon SES to AcelleMail
&lt;/h1&gt;

&lt;p&gt;AcelleMail is a growing self-hosted email marketing platform. It manages contacts, campaigns, automation, sending queues, and reporting, while the actual email delivery is handled by a separate sending service.&lt;/p&gt;

&lt;p&gt;Amazon SES is one of the services that can be used for email delivery. AcelleMail supports both the Amazon SES API and SMTP. This guide focuses on the SES API because it also allows AcelleMail to manage sending identities and configure bounce and complaint notifications.&lt;/p&gt;

&lt;p&gt;The setup has three main parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create an AWS IAM user and access key.&lt;/li&gt;
&lt;li&gt;Add Amazon SES as a sending server in AcelleMail.&lt;/li&gt;
&lt;li&gt;Configure the sending domains and SES settings.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once the sending server is connected, AcelleMail can also configure the SES resources it needs for bounce and complaint handling.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Create an AWS IAM user
&lt;/h2&gt;

&lt;p&gt;AcelleMail needs AWS credentials to connect to Amazon SES.&lt;/p&gt;

&lt;p&gt;It is better to create a dedicated IAM user for AcelleMail instead of using the AWS root account credentials. A dedicated user can be disabled or have its access keys rotated without affecting other AWS services.&lt;/p&gt;

&lt;p&gt;In the AWS console, open &lt;strong&gt;IAM&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0igf10jlb001fd4xev1a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0igf10jlb001fd4xev1a.png" alt="Searching for IAM in the AWS console" width="799" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to &lt;strong&gt;IAM → Users&lt;/strong&gt; and click &lt;strong&gt;Create user&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can use a name such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;acellemail-ses
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The user does not need console access because AcelleMail will use its access key to access AWS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdx41akfdpjlzyc3ue055.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdx41akfdpjlzyc3ue055.png" alt="The IAM users list with the Create user button" width="799" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Attach the required permissions
&lt;/h3&gt;

&lt;p&gt;On the permissions step, choose &lt;strong&gt;Attach policies directly&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Attach these three AWS managed policies:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Policy&lt;/th&gt;
&lt;th&gt;Used by AcelleMail for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;AmazonSESFullAccess&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sending email and managing SES identities&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;AmazonSNSFullAccess&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creating and configuring the SNS resources used for bounce and complaint notifications&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;IAMReadOnlyAccess&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checking the AWS credentials and permissions when you use &lt;strong&gt;Test Connection&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9r9grggbjpfg2bmmxg5b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9r9grggbjpfg2bmmxg5b.png" alt="IAM user with AmazonSESFullAccess, AmazonSNSFullAccess and IAMReadOnlyAccess attached" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These policies provide broader permissions than a custom least-privilege policy. If the AWS account is dedicated to AcelleMail, this can be a practical setup. If the account also contains other production resources, consider creating a more restricted IAM policy instead.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create an access key
&lt;/h3&gt;

&lt;p&gt;Open the IAM user's &lt;strong&gt;Access keys&lt;/strong&gt; section and click &lt;strong&gt;Create access key&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7vp5kudx9t6q40weoshn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7vp5kudx9t6q40weoshn.png" alt="The Access keys section of the IAM user with the Create access key button" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When AWS asks what the key will be used for, choose &lt;strong&gt;Third-party service&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fekzrm9mw0r0mqzu4nkfn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fekzrm9mw0r0mqzu4nkfn.png" alt="Choosing Third-party service as the access key use case" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AWS will then show the &lt;strong&gt;Access key&lt;/strong&gt; and &lt;strong&gt;Secret access key&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Save both values. AWS only shows the secret access key when it is created. If you lose it later, create a new key and deactivate the old one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuyvbgspdzr187y3skwmd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuyvbgspdzr187y3skwmd.png" alt="The Retrieve access keys screen" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AcelleMail stores the AWS credentials in its database because it needs to access SES without user interaction. The AWS secret access key is encrypted at rest.&lt;/p&gt;

&lt;p&gt;You should still use a dedicated IAM user, limit its permissions where practical, and rotate its access keys periodically.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Add Amazon SES to AcelleMail
&lt;/h2&gt;

&lt;p&gt;Once you have the AWS access key, add it to AcelleMail.&lt;/p&gt;

&lt;p&gt;Log in to AcelleMail as an administrator and open:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sending → Sending Servers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk4fqvnew0rm7fpgdi7ar.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk4fqvnew0rm7fpgdi7ar.png" alt="The admin dashboard with Sending Servers in the left menu" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Add Server&lt;/strong&gt; and select:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon Web Service API&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2nvat52qxq0mjekcz176.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2nvat52qxq0mjekcz176.png" alt="The Choose Server Type window with Amazon Web Service API selected" width="799" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AcelleMail also supports &lt;strong&gt;Amazon Web Service SMTP&lt;/strong&gt;. The SMTP option requires SES SMTP credentials, while the API driver uses the AWS access key directly.&lt;/p&gt;

&lt;p&gt;For this setup, we recommend the &lt;strong&gt;Amazon Web Service API&lt;/strong&gt; driver.&lt;/p&gt;

&lt;p&gt;Under &lt;strong&gt;Connection details&lt;/strong&gt;, enter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Access Key ID&lt;/li&gt;
&lt;li&gt;AWS Secret Key&lt;/li&gt;
&lt;li&gt;AWS Region&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The region is important because Amazon SES identities and quotas are regional.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffr6ftous0x96vljz86qz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffr6ftous0x96vljz86qz.png" alt="The New server form with AWS Access Key ID, AWS Secret Key and AWS region" width="799" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Save Changes&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test the connection
&lt;/h3&gt;

&lt;p&gt;After saving the server, AcelleMail provides two useful tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test Connection&lt;/strong&gt; checks the AWS credentials and the permissions required by AcelleMail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Send Test Email&lt;/strong&gt; sends an actual email through Amazon SES.&lt;/p&gt;

&lt;p&gt;Use &lt;strong&gt;Test Connection&lt;/strong&gt; first. If it reports a permission problem, fix the IAM permissions before testing email delivery.&lt;/p&gt;

&lt;p&gt;If the SES account is still in the sandbox, the test recipient must be a verified email address.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5wxq4fi6og1tj633dlyb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5wxq4fi6og1tj633dlyb.png" alt="The saved sending server showing Test Connection and Send Test Email" width="799" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are running AcelleMail with multiple users or plans, also make sure the sending server is assigned to the appropriate plan. A correctly configured sending server will not send anything if no plan or user is allowed to use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Bounce and complaint notifications
&lt;/h2&gt;

&lt;p&gt;AcelleMail uses Amazon SNS to receive bounce and complaint notifications from SES.&lt;/p&gt;

&lt;p&gt;When the SES sending server is connected, AcelleMail creates the required SNS topic and subscription automatically.&lt;/p&gt;

&lt;p&gt;This allows AcelleMail to receive notifications from SES and associate them with the corresponding contacts. Contacts affected by hard bounces or complaints can then be excluded from later campaigns.&lt;/p&gt;

&lt;p&gt;There is one important requirement: &lt;strong&gt;your AcelleMail installation must be publicly accessible&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;SNS needs to send notifications to an endpoint on your AcelleMail installation. A localhost address, private IP address, or VPN-only hostname cannot receive these notifications from AWS.&lt;/p&gt;

&lt;p&gt;Make sure &lt;code&gt;APP_URL&lt;/code&gt; points to the public URL of your AcelleMail installation before enabling the SES server.&lt;/p&gt;

&lt;p&gt;If this is not configured correctly, email sending may still work, but bounce and complaint notifications will not be processed.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Share verified sender identities
&lt;/h2&gt;

&lt;p&gt;Every email sent through SES must use a verified sender identity.&lt;/p&gt;

&lt;p&gt;If you have already verified domains in Amazon SES, you can manage them from the AcelleMail sending server:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advanced → Sender Identity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The list shows the SES identities available in the selected region.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fftqsxneg0e1djn38qsl8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fftqsxneg0e1djn38qsl8.png" alt="Sender Identity rows with the Available for all checkbox and the Owner dropdown" width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can make a verified domain available in two ways.&lt;/p&gt;

&lt;h3&gt;
  
  
  Available for all
&lt;/h3&gt;

&lt;p&gt;Enable &lt;strong&gt;Available for all&lt;/strong&gt; if all users on the AcelleMail installation should be able to send from that domain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Assign to a user
&lt;/h3&gt;

&lt;p&gt;Alternatively, set an &lt;strong&gt;Owner&lt;/strong&gt; for the identity. The selected customer will then be able to use that domain.&lt;/p&gt;

&lt;p&gt;Only identities with an &lt;strong&gt;Active&lt;/strong&gt; status can be used for sending.&lt;/p&gt;

&lt;p&gt;If an identity is marked &lt;strong&gt;Failed&lt;/strong&gt;, the problem needs to be fixed in Amazon SES or DNS before it can be used.&lt;/p&gt;

&lt;p&gt;Once a domain is available to a user, it appears in the campaign's &lt;strong&gt;From email&lt;/strong&gt; field under &lt;strong&gt;Verified senders&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzwnvvhicg73e43enuhh5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzwnvvhicg73e43enuhh5.png" alt="The From email dropdown in a campaign showing a shared domain under Verified senders" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Add customer sending domains
&lt;/h2&gt;

&lt;p&gt;In a multi-user AcelleMail installation, customers will usually want to send from their own domains.&lt;/p&gt;

&lt;p&gt;A customer can add a domain from:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sending domains → Add domain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8cbdma318sp2fjjswybl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8cbdma318sp2fjjswybl.png" alt="The Sending Domains page with the Add domain button" width="799" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the customer's account uses the Amazon SES sending server, AcelleMail registers the domain with SES and displays the DNS records that need to be added.&lt;/p&gt;

&lt;p&gt;The domain page shows a &lt;strong&gt;Synced · Amazon SES&lt;/strong&gt; status and the required records.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd8rk2oudc8emzgq1xj71.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd8rk2oudc8emzgq1xj71.png" alt="The DNS records AcelleMail shows for a domain synced with Amazon SES" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The records normally include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Domain identity&lt;/strong&gt; — a TXT record at &lt;code&gt;_amazonses.theirdomain.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DKIM&lt;/strong&gt; — three CNAME records ending in &lt;code&gt;.dkim.amazonses.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SPF&lt;/strong&gt; — a TXT record containing &lt;code&gt;v=spf1 include:amazonses.com ~all&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After publishing the records, click &lt;strong&gt;Verify DNS records&lt;/strong&gt; in AcelleMail.&lt;/p&gt;

&lt;p&gt;DNS changes can take some time to propagate, so the verification can be run again later.&lt;/p&gt;

&lt;h3&gt;
  
  
  Two common DNS problems
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Do not create multiple SPF records
&lt;/h4&gt;

&lt;p&gt;A domain should have one SPF record.&lt;/p&gt;

&lt;p&gt;If the domain already has an SPF record for Google Workspace or another email service, add the Amazon SES include to the existing record instead of creating a second SPF record.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v=spf1 include:google.com include:amazonses.com ~all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Multiple SPF records can result in a &lt;code&gt;permerror&lt;/code&gt; and cause SPF validation to fail.&lt;/p&gt;

&lt;h4&gt;
  
  
  Check how your DNS provider handles record names
&lt;/h4&gt;

&lt;p&gt;Some DNS providers automatically append the domain name to the host field.&lt;/p&gt;

&lt;p&gt;For example, entering:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;_amazonses.theirdomain.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;may result in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;_amazonses.theirdomain.com.theirdomain.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the SES identity remains in &lt;code&gt;Pending&lt;/code&gt;, check the actual DNS record rather than relying only on what is shown in the DNS control panel.&lt;/p&gt;

&lt;p&gt;You can check the TXT record with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dig +short TXT _amazonses.theirdomain.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And a DKIM record with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dig +short CNAME &amp;lt;selector&amp;gt;._domainkey.theirdomain.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. SES sandbox, quotas and regions
&lt;/h2&gt;

&lt;p&gt;There are three Amazon SES settings you should check before sending a real campaign.&lt;/p&gt;

&lt;h3&gt;
  
  
  SES sandbox
&lt;/h3&gt;

&lt;p&gt;New SES accounts start in the sandbox, and the restriction applies per region.&lt;/p&gt;

&lt;p&gt;In the sandbox:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;recipients generally need to be verified&lt;/li&gt;
&lt;li&gt;the sending limit is 200 messages per 24 hours&lt;/li&gt;
&lt;li&gt;the sending rate is 1 message per second&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To request production access, open the SES Account dashboard and choose &lt;strong&gt;Request production access&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The review is asynchronous, so it is worth requesting production access while you are configuring your domains and AcelleMail.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sending quotas
&lt;/h3&gt;

&lt;p&gt;Production access does not mean that every AWS account has the same sending quota.&lt;/p&gt;

&lt;p&gt;SES sets sending quotas per account and region. Check the current quota in the AWS Account dashboard and use that value when configuring sending limits in AcelleMail.&lt;/p&gt;

&lt;p&gt;Do not assume that a commonly quoted quota such as 50,000 emails per day applies to your account.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS regions
&lt;/h3&gt;

&lt;p&gt;SES identities and sending quotas are regional.&lt;/p&gt;

&lt;p&gt;For example, if you verified a domain in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;us-east-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but configured AcelleMail to use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;eu-west-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the verified identity will not appear in the AcelleMail server's Sender Identity list.&lt;/p&gt;

&lt;p&gt;Make sure the region used by AcelleMail is the same region where your SES identities are configured.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Common problems
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What you see&lt;/th&gt;
&lt;th&gt;What it usually means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Action ses:... is not allowed&lt;/code&gt; / &lt;code&gt;sns:...&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;The IAM user is missing a required permission&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;The security token included in the request is invalid&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The access key is incorrect, truncated, or deactivated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Email address is not verified&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The SES account is still in the sandbox for that region&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;AWS SNS will not be able to reach it…&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;APP_URL&lt;/code&gt; is not publicly accessible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sender Identity list is empty&lt;/td&gt;
&lt;td&gt;The AcelleMail server region does not match the SES region&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customer domain remains &lt;code&gt;Pending&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;The DNS record may have been entered incorrectly or DNS has not propagated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;This domain is already registered on the system sending server…&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The domain was already registered in SES and needs to be assigned through Sender Identity&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;To connect AcelleMail to Amazon SES:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a dedicated AWS IAM user.&lt;/li&gt;
&lt;li&gt;Give it the permissions required by AcelleMail.&lt;/li&gt;
&lt;li&gt;Create an AWS access key.&lt;/li&gt;
&lt;li&gt;Add the credentials to an &lt;strong&gt;Amazon Web Service API&lt;/strong&gt; sending server in AcelleMail.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;Test Connection&lt;/strong&gt; before sending a campaign.&lt;/li&gt;
&lt;li&gt;Make sure &lt;code&gt;APP_URL&lt;/code&gt; is publicly accessible so SNS can deliver bounce and complaint notifications.&lt;/li&gt;
&lt;li&gt;Verify your sending domains and publish the required DNS records.&lt;/li&gt;
&lt;li&gt;Keep the SES region consistent between AWS and AcelleMail.&lt;/li&gt;
&lt;li&gt;Check your actual SES sending quota before configuring sending limits.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The same setup is also available as a step-by-step guide with screenshots on the AcelleMail website:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://acellesend.com/kb/articles/configuring-amazon-ses-with-acellemail" rel="noopener noreferrer"&gt;How to Set Up Amazon SES in AcelleMail, Step by Step&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>laravel</category>
      <category>acellemail</category>
      <category>email</category>
    </item>
  </channel>
</rss>
