AWS Messaging & Targeting Blog
What is BIMI and how to use it with Amazon SES
Introduction
In this blog post I’d like to walk you through how to implement BIMI while using Amazon SES. For your information BIMI can be best described by the following excerpt from bimigroup.org:
Brand Indicators for Message Identification or BIMI (pronounced: Bih-mee) is an emerging email specification that enables the use of brand-controlled logos within supporting email clients. BIMI leverages the work an organization has put into deploying DMARC protection, by bringing brand logos to the customer’s inbox. For the brand’s logo to be displayed, the email must pass DMARC authentication checks, ensuring that the organization’s domain has not been impersonated.
Brands continually need to protect themselves from spoofing and phishing from bad actors who can damage the trust that customers and recipients have in those brands. Brand Indicators for Message Identification (BIMI) is an email specification that enables email inboxes to display a brand’s logo next to the brand’s authenticated email messages within supporting email clients. BIMI is an email specification that’s directly connected to authentication, but it’s not a standalone email authentication protocol as it requires all your email to comply with DMARC authentication. Recipients are more likely to engage with email that displays the logo of the brand associated with the message author. Higher engagement helps deliverability and inbox placement because it indicates that the recipients trust your brand. BIMI is a great brand protector in email and provides a better user experience for the end recipients and customers.
BIMI requires that you authenticate all of your organization’s email with SPF, DKIM and DMARC. In this how-to we will be utilizing Amazon SES to authenticate the emails, Amazon S3 to host the SVG image, and Amazon Route53 to add DNS records. We will be walking through how to accomplish each step until completion.
Note: While we’re using AWS products in this how-to, it is not a requirement to use all AWS products to implement BIMI. Any hosting provider for content or domain can be used however the steps may differ based on the provider you use.
BIMI Implementation
The following are the steps needed to prepare your SES account and domain for BIMI:
Step 1
Note: If you already have SPF, DKIM, and DMARC enabled for your domain (with 100% as the rate for DMARC) you can move on to Step 2.
Enable Easy DKIM for your domain
- Sign in to the AWS Management Console and open the Amazon SES console at https://console.thinkwithwp.com/ses/.
- In the navigation pane, under Configuration, choose Verified identities.
- In the list of identities, choose an identity where the Identity type is Domain.
Note: If you need to create or verify a domain, see Creating a domain identity.
- Under the Authentication tab, in the DomainKeys Identified Mail (DKIM) container, choose Edit.
- In the Advanced DKIM settings container, choose the Easy DKIM button in the Identity type field.
- In the DKIM signing key length field, choose either RSA_2048_BIT or RSA_1024_BIT.
- In the DKIM signatures field, check the Enabled box.
- Choose Save changes.
- Now that you’ve configured your domain identity with Easy DKIM, you must complete the verification process with your DNS provider – proceed to Verifying a DKIM domain identity with your DNS provider and follow the DNS authentication procedures for Easy DKIM.
Create a DMARC record for your domain
- Sign in to the AWS Management Console and open the Route 53 console at https://console.thinkwithwp.com/route53/
- In the navigation pane, choose Hosted zones.
- On the Hosted zones page, choose the name of the hosted zone that you want to create records in.
- Choose and define the applicable routing policy and the following values:
Name | Record Type | Value |
_dmarc.example.com | TXT | v=DMARC1;p=quarantine;pct=100;rua=mailto:dmarcreports@example.com |
- Choose Create records.
Note: The DMARC policy must enforce at 100% and include either a quarantine or reject policy. (i.e. p=reject or p=quarantine) to meet the DMARC authentication requirement. This may mean you will need to update your existing policy and DMARC record.
Configure a Custom Mail From for your sending domain
- Open the Amazon SES console at https://console.thinkwithwp.com/ses/.
- In the left navigation pane, under Configuration, choose Verified identities.
- In the list of identities, choose the identity you want to configure where the Identity type is Domain and Status is Verified.
a. If the Status is Unverified, complete the procedures at Verifying a DKIM domain identity with your DNS provider to verify the email address’s domain.
- At the bottom of the screen in the in the Custom MAIL FROM domain pane, choose Edit .
- In the General details pane, do the following:
a. Select the Use a custom MAIL FROM domain checkbox.
b. For MAIL FROM domain, enter the subdomain that you want to use as the MAIL FROM domain.
c. For Behavior on MX failure, choose one of the following options:
-
- Use default MAIL FROM domain – If the custom MAIL FROM domain’s MX record is not set up correctly, Amazon SES uses a subdomain of amazonses.com. The subdomain varies based on the AWS Region that you use Amazon SES in.
- Reject message – If the custom MAIL FROM domain’s MX record is not set up correctly, Amazon SES returns a MailFromDomainNotVerified error. Emails that you attempt to send from this domain are automatically rejected. If you want to ensure that 100% of your email is BIMI compatible, then you should choose the reject message option.
d. Choose Save changes – you’ll be returned to the previous screen.
- Publish the MX and SPF (type TXT) records to the DNS server of the custom MAIL FROM domain:
Note: In the Custom MAIL FROM domain pane, the Publish DNS records table now displays the MX and SPF (type TXT) records in that you have to publish (add) to your domain’s DNS configuration. These records use the formats shown in the following table.
Name | Record Type | Value |
subdomain.example.com | MX | 10 feedback-smtp.region.amazonses.com |
subdomain.example.com | TXT | v=spf1 include:amazonses.com ~all |
Step 2
Produce an SVG Tiny PS version of your official logo
In order to display your logo in the email it must conform to the specifications of the BIMI requirements. To meet these requirements the logo must be a Scalable Vector Graphics (SVG) image and must meet the Tiny PS Specification. Once your image meets this requirement you can move on to the next step.
Note: bimigroup.org outlines this process and includes references to software to assist with this process.
Step 3
Upload your image to an S3 bucket
- Sign in to the AWS Management Console and open the Amazon S3 console at https://console.thinkwithwp.com/s3/
- In the Buckets list, choose the name of the bucket that you want to upload your folders or files to.
- Choose Upload.
- In the Upload window, do one of the following:
-
- Drag and drop files and folders to the Upload window.
- Choose Add file choose your SVG image to upload, and choose Open.
To configure additional object properties
- To change access control list permissions, choose Permissions.
- Under Access control list (ACL), edit the permissions.
-
- You need to grant read access to your objects to the public (everyone in the world) for the SVG image you are uploading. However, we recommend not changing the default setting for your bucket to public read access.
- To configure other additional properties, choose Properties.
- To upload your objects, choose Upload.
Note: Amazon S3 uploads your object. When the upload completes, you can see a success message on the Upload: status page.
- Choose Exit.
Step 4
Publish a BIMI record for your domain
- Sign in to the AWS Management Console and open the Route 53 console at https://console.thinkwithwp.com/route53/
- In the navigation pane, choose Hosted zones.
- On the Hosted zones page, choose the name of the hosted zone that you want to create records in.
- Choose and define the applicable routing policy and the following values with the understanding the URLs must be HTTPS:
Name | Record Type | Value |
default._bimi.example.com | TXT | v=BIMI1; l=[SVG URL]; a=[PEM URL] |
- Choose Create records.
Note: the a= tag is currently optional and will not be used in this example.
You can validate your BIMI record with a tool like the BIMI Inspector.
Conclusion
All of the steps to set up your SES account and your domain are now complete. The final component in this process is to have regular sending patterns to the mailbox providers that support BIMI logo placement. Your domain should have a regular delivery cadence and needs to have a good reputation with the mailbox providers you are sending mail. BIMI logo placement may take time to populate to mailbox providers where you don’t have an established reputation or sending cadence. The time spent implementing BIMI is well worth it as it will strengthen your sender reputation and create a better and more trusted customer experience for your end recipients.
You can find more information about the BIMI specification here.