Skip to Content
sesameSend

AWS setup

Create the SES, SNS, SQS and S3 resources with scripts/setup-aws.mjs.

sesameSend needs an SES configuration set that publishes events to SNS, an SQS queue that receives them, and a private S3 bucket for attachments. scripts/setup-aws.mjs creates all of it.

Credentials

Use the default AWS credential chain (environment variables or a profile). The IAM user needs SES, SNS, SQS, S3 and STS permissions.

Preview, then run

node scripts/setup-aws.mjs --dry-run                  # prints the planned calls, creates nothing
node scripts/setup-aws.mjs --verify you@example.com   # sending side, plus a sandbox identity for your login email

It is safe to re-run: it only creates what is missing and re-applies policies. It creates the SES configuration set with an SNS event destination, the SNS topic, the SQS events queue and its policy, a private S3 bucket, and the tracking sets. Copy the variables it prints into .env, then click the verification link SES emails you.

Receiving mail

Add --inbound and one or more --inbound-domain values:

node scripts/setup-aws.mjs --inbound --inbound-domain inbound.example.com

This also creates the inbound topic, queue, bucket policy and an SES receipt rule. If another receipt rule set is already active in the account, the script will not replace it unless you pass --activate-rule-set.

Flags

FlagMeaning
--dry-runPrint the plan, touch nothing. Needs no credentials.
--verify <email or domain>Create an SES identity. Repeatable.
--inbound, --inbound-domain <d>Set up receiving. Repeatable.
--prefixResource name prefix. Default opensend.
--regionDefault us-east-1. Other regions print a warning and will not work.
--rule-set, --activate-rule-setName the receipt rule set; replace a different active one.
--no-shared-setsSkip the shared tracking sets.

Variables it gives you

SES_CONFIGURATION_SET, SES_EVENTS_QUEUE_URL, ATTACHMENTS_BUCKET, and with --inbound, INBOUND_QUEUE_URL. Put them in .env or in your host's environment settings.

Sending works in us-east-1 only. Configuration sets and the event queue live there.

Next: request SES production access.