<?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: Sai Praveen Sanapalli</title>
    <description>The latest articles on DEV Community by Sai Praveen Sanapalli (@saipraveen446).</description>
    <link>https://dev.to/saipraveen446</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3807369%2F4c4b6cbb-dd10-48aa-bd8c-c43cc780b4c0.png</url>
      <title>DEV Community: Sai Praveen Sanapalli</title>
      <link>https://dev.to/saipraveen446</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saipraveen446"/>
    <language>en</language>
    <item>
      <title># AWS SES Setup Guide: Domain Verification, SMTP Configuration, DKIM, SPF &amp; DMARC</title>
      <dc:creator>Sai Praveen Sanapalli</dc:creator>
      <pubDate>Wed, 03 Jun 2026 18:55:53 +0000</pubDate>
      <link>https://dev.to/saipraveen446/-aws-ses-setup-guide-domain-verification-smtp-configuration-dkim-spf-dmarc-273j</link>
      <guid>https://dev.to/saipraveen446/-aws-ses-setup-guide-domain-verification-smtp-configuration-dkim-spf-dmarc-273j</guid>
      <description>&lt;p&gt;Email delivery is a critical component of modern applications. Whether you're sending OTPs, transactional notifications, account alerts, invoices, or marketing campaigns, reliable email delivery is essential.&lt;/p&gt;

&lt;p&gt;In this guide, we'll walk through the complete setup of Amazon Simple Email Service (AWS SES), including domain verification, DKIM, SPF, DMARC, SMTP credentials, and production access.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is AWS SES?
&lt;/h2&gt;

&lt;p&gt;Amazon Simple Email Service (AWS SES) is a cloud-based email service that enables businesses and developers to send and receive emails securely and at scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Benefits
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Cost-effective email delivery&lt;/li&gt;
&lt;li&gt;High deliverability&lt;/li&gt;
&lt;li&gt;SMTP and API support&lt;/li&gt;
&lt;li&gt;Easy integration with applications&lt;/li&gt;
&lt;li&gt;Reputation monitoring&lt;/li&gt;
&lt;li&gt;Scalable infrastructure&lt;/li&gt;
&lt;li&gt;Security through SPF, DKIM, and DMARC&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Step 1: Before You Start
&lt;/h1&gt;

&lt;p&gt;Before configuring AWS SES, complete the following prerequisites.&lt;/p&gt;

&lt;h3&gt;
  
  
  Login to AWS Console
&lt;/h3&gt;

&lt;p&gt;Sign in to your AWS account and select the correct region.&lt;/p&gt;

&lt;h3&gt;
  
  
  Select AWS Region
&lt;/h3&gt;

&lt;p&gt;For users in India, use:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Asia Pacific (Mumbai) – ap-south-1&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Important:&lt;br&gt;
SMTP credentials are region-specific.&lt;br&gt;
For SMTP and SMS credential generation, it is recommended to use the Mumbai (ap-south-1) region.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Create Identity Using Your Domain
&lt;/h3&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;AWS SES uses this domain identity for email authentication and reputation management.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 2: Create Domain Identity
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open AWS Console&lt;/li&gt;
&lt;li&gt;Search for SES&lt;/li&gt;
&lt;li&gt;Open Amazon Simple Email Service&lt;/li&gt;
&lt;li&gt;Navigate to Verified Identities&lt;/li&gt;
&lt;li&gt;Click Create Identity&lt;/li&gt;
&lt;li&gt;Select Identity Type → Domain&lt;/li&gt;
&lt;li&gt;Enter your domain&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Enable Easy DKIM&lt;/li&gt;
&lt;li&gt;Click Create Identity&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;AWS SES will generate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TXT record for domain verification&lt;/li&gt;
&lt;li&gt;Three DKIM CNAME records&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Step 3: Configure DNS Records
&lt;/h1&gt;

&lt;p&gt;Add the records generated by SES to your DNS provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  TXT Record (Domain Verification)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Type: TXT
Value: amazonses-verification-token
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  DKIM Records
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Type: CNAME
Count: 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AWS provides these automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  SPF Record
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Type: TXT

Value:
v=spf1 include:amazonses.com -all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SPF authorizes Amazon SES to send emails on behalf of your domain.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 4: Route 53 Configuration (Optional)
&lt;/h1&gt;

&lt;p&gt;If your domain is hosted in Route 53:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Route 53&lt;/li&gt;
&lt;li&gt;Select Hosted Zone&lt;/li&gt;
&lt;li&gt;Add TXT verification record&lt;/li&gt;
&lt;li&gt;Add DKIM CNAME records&lt;/li&gt;
&lt;li&gt;Save changes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;DNS propagation generally completes within:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;5–15 minutes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Step 5: Configure Custom MAIL FROM Domain
&lt;/h1&gt;

&lt;p&gt;Using a custom MAIL FROM domain improves deliverability and branding.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mail.alerts.yourcompany.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Navigate to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SES → Verified Identities → Domain → MAIL FROM Domain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Select:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use Custom MAIL FROM Domain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Add MX Record
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Type: MX

Value:
10 feedback-smtp.ap-south-1.amazonses.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Add SPF Record
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Type: TXT

Value:
v=spf1 include:amazonses.com -all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Step 6: Create Configuration Set (Optional but Recommended for monitoring)
&lt;/h1&gt;

&lt;p&gt;Configuration Sets help monitor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deliverability&lt;/li&gt;
&lt;li&gt;Bounce rates&lt;/li&gt;
&lt;li&gt;Complaint rates&lt;/li&gt;
&lt;li&gt;Reputation metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open SES&lt;/li&gt;
&lt;li&gt;Navigate to Configuration Sets&lt;/li&gt;
&lt;li&gt;Click Create Configuration Set&lt;/li&gt;
&lt;li&gt;Enter a name&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;alerts-config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Enable Reputation Metrics&lt;/li&gt;
&lt;li&gt;Attach SNS or CloudWatch event destinations&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  Step 7: Request Production Access
&lt;/h1&gt;

&lt;p&gt;New AWS SES accounts start in Sandbox Mode.&lt;/p&gt;

&lt;p&gt;Sandbox restrictions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can only send to verified email addresses&lt;/li&gt;
&lt;li&gt;Limited sending quotas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To move to production:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open SES Dashboard&lt;/li&gt;
&lt;li&gt;Select Request Production Access&lt;/li&gt;
&lt;li&gt;Fill in:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use Case: Transactional Emails
Email Type: Transactional
Website: https://yourcompany.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Approval typically takes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2–24 hours
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Step 8: Create SMTP Credentials
&lt;/h1&gt;

&lt;p&gt;Navigate to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SES → SMTP Settings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Click:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create SMTP Credentials
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AWS creates an IAM user and generates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SMTP Username&lt;/li&gt;
&lt;li&gt;SMTP Password&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  SMTP Endpoint (Mumbai Region)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host:
email-smtp.ap-south-1.amazonaws.com

Port:
587

Encryption:
TLS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Important
&lt;/h3&gt;

&lt;p&gt;Always use the SMTP endpoint that matches the region where credentials were generated.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 9: Test Email Delivery
&lt;/h1&gt;

&lt;p&gt;You can test email delivery using:&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 1
&lt;/h3&gt;

&lt;p&gt;SMTP integration from your application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 2
&lt;/h3&gt;

&lt;p&gt;AWS SES test email functionality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 3
&lt;/h3&gt;

&lt;p&gt;Python Boto3 SDK.&lt;/p&gt;

&lt;p&gt;After receiving the email:&lt;/p&gt;

&lt;p&gt;Open Gmail → Show Original&lt;/p&gt;

&lt;p&gt;Verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SPF: PASS
DKIM: PASS
DMARC: PASS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Step 10: Configure DMARC
&lt;/h1&gt;

&lt;p&gt;DMARC adds an additional layer of protection against email spoofing.&lt;/p&gt;

&lt;p&gt;Create:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Type: TXT

Host:
_dmarc.alerts.yourcompany.com

Value:
v=DMARC1; p=none; rua=mailto:admin@yourcompany.com;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After monitoring reports, you can move from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;p=none
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;p=quarantine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and eventually&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;p=reject
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;for stronger protection.&lt;/p&gt;




&lt;h1&gt;
  
  
  Email Deliverability Best Practices
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Warm Up New Domains
&lt;/h3&gt;

&lt;p&gt;Start with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10–20 emails per day
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and gradually increase volume.&lt;/p&gt;

&lt;h3&gt;
  
  
  Maintain Low Bounce Rates
&lt;/h3&gt;

&lt;p&gt;Recommended:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bounce Rate &amp;lt; 5%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Maintain Low Complaint Rates
&lt;/h3&gt;

&lt;p&gt;Recommended:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Complaint Rate &amp;lt; 0.1%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Send Multipart Emails
&lt;/h3&gt;

&lt;p&gt;Always send:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML version&lt;/li&gt;
&lt;li&gt;Plain text version&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Monitor Reputation Dashboard
&lt;/h3&gt;

&lt;p&gt;Review:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delivery rates&lt;/li&gt;
&lt;li&gt;Bounce rates&lt;/li&gt;
&lt;li&gt;Complaint rates&lt;/li&gt;
&lt;li&gt;Reputation status&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;regularly.&lt;/p&gt;




&lt;h1&gt;
  
  
  High-Level Email Flow
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
      ↓
AWS SES
      ↓
Domain Verification
      ↓
SPF + DKIM + DMARC
      ↓
Recipient Inbox
      ↓
High Deliverability
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;AWS SES provides a reliable, scalable, and cost-effective solution for sending transactional and notification emails. By properly configuring Domain Verification, DKIM, SPF, DMARC, Custom MAIL FROM, and SMTP credentials, you can significantly improve email deliverability and protect your domain reputation.&lt;/p&gt;

&lt;p&gt;If you're building SaaS platforms, ERP systems, notification services, fintech applications, or customer communication platforms, AWS SES is one of the most efficient email delivery services available today.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>awsses</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
