Amazon SES CiviCRM Integration

This is to configure Amazon SES as the email sending agent for CiviCRM sites in order to maintain a high sending rota, a good delivery rate and improve domain score.This guide only relays mail delivery with Amazon SES, there are other improvements you can do to improve sending rate in general regardless what sending agent is used. Highly recommend to perform Lifting EC2 Sending Limitation before/ after configuring SES.


- DNS record access to the email domain
- An email address for sending emails (from email). E.g.
- An email address for bounce processing. E.g.

SES Configuration

1. To start this process, make sure you have a activated AWS account with valid billing info.

2. Log onto AWS, select SES.

3. Click on "SMTP Settings" on the left, record the server info, generate SMTP credentials and record them in WPS as:

- Credential Name: Amazon SES - ClientName
- Username: Access key name
- Password: Access key pass
- Description: AMI user name

4. Click on "Verified Senders: Domains". Click "Verify a new Domain". Enter the sending domain name (e.g. also click "Generate DKIM settings".

5. Download the DNS records as CSV file.

6. Go to the domain provider's portal to update the DNS with the records acquired from step 5 with low refresh delay. NOTE: This might take up to 24 hours after DNS records are added but lowering refresh delay should shorten this.

7. Confirm the domain has a status of Verified before proceeding to step 8.

8. Add all sending addresses that will be used on the website in the verified sender - email address list. Make sure the client is notified to verify the relevant emails. Please not that all sending addresses need to have valid inbox in order to process the verification email.

CiviCRM Configuration

1. Configure Administer → CiviMail → From Email Addresses with the verified email addresses from above.

2. Set up Administer → System Settings → SMTP Outbound settings in CiviCRM to use the Amazon SMTP server. The information you need will be on SES/ Email Sending/ SMTP page. Note that a ssl:// prefix need to be added to the SMTP server and select a port of 465.

3. Click "Save and Test". Once the settings above saved correctly and successfully sent the test email, proceed to the next step.

4. Go to Administer → CiviMail → Mail Accounts, add a mail account with the following details:

- Name: Bounce Handling
- Server: The IMAP server address of your email provider
- Username: Bounce processing email address. e.g.
- Password: Password of the bounce processing email account
- Localpart: Local-part of the bounce processing email address with a plus symbol. e.g. bounce+
- Return-Path: Leave blank
- Protocol: IMAP
- Source: Leave blank if the email address is only used for bounce handling. If this email is also used for other purposes and have a filter for bounce notifications, fill in the label (folder) used for keep all bounce notifications. e.g. INBOX/CiviMail/Bounce
- Use SSL: Normally Yes unless the email server does not require SSL.
- Used For?: Bounce Processing

5. Go to Administer → System Settings → Scheduled Jobs, enable the Fetch Bounces job.

6. Test run Fetch Bounces job and confirm there is no error in the job log.