documents/dev/snippets/aws/email forwarding.md

AWS Email Forward

https://docs.aws.amazon.com/ses/latest/dg/receiving-email-permissions.html https://aws.amazon.com/premiumsupport/knowledge-center/lambda-send-email-ses/ SES account needs to be in prod and not sandbox to send to unverified recipient https://docs.aws.amazon.com/ses/latest/dg/request-production-access.html

// https://github.com/arithmetric/aws-lambda-ses-forwarder
var LambdaForwarder = require("./aws-lambda-ses-forwarder");

exports.handler = function(event, context, callback) {
  var overrides = {
    config: {
      fromEmail: "forwarder@dominickpham.com",
      subjectPrefix: "",
      emailBucket: "dominickpham",
      emailKeyPrefix: "mail/",
      forwardMapping: {
        "@dominickpham.com": [
          "dominick.pham@gmail.com"
        ],
        "@dph.am": [
          "dominick.pham@gmail.com"
        ]
      }
    }
  };
  LambdaForwarder.handler(event, context, callback, overrides);
};
{
  "Records": [
    {
      "eventSource": "aws:ses",
      "eventVersion": "1.0",
      "ses": {
        "mail": {
          "timestamp": "2022-01-28T15:44:27.951Z",
          "source": "dominick.pham@gmail.com",
          "messageId": "1iqg5m43fqvgpe71tuediuphaiqvfma9kr65so01",
          "destination": [
            "me@dominickpham.com"
          ],
          "headersTruncated": false,
          "headers": [
            {
              "name": "Return-Path",
              "value": "<dominick.pham@gmail.com>"
            },
            {
              "name": "Received",
              "value": "from mail-lj1-f170.google.com (mail-lj1-f170.google.com [209.85.208.170]) by inbound-smtp.us-east-1.amazonaws.com with SMTP id 1iqg5m43fqvgpe71tuediuphaiqvfma9kr65so01 for me@dominickpham.com; Fri, 28 Jan 2022 15:44:27 +0000 (UTC)"
            },
            {
              "name": "X-SES-Spam-Verdict",
              "value": "PASS"
            },
            {
              "name": "X-SES-Virus-Verdict",
              "value": "PASS"
            },
            {
              "name": "Received-SPF",
              "value": "pass (spfCheck: domain of _spf.google.com designates 209.85.208.170 as permitted sender) client-ip=209.85.208.170; envelope-from=dominick.pham@gmail.com; helo=mail-lj1-f170.google.com;"
            },
            {
              "name": "Authentication-Results",
              "value": "amazonses.com; spf=pass (spfCheck: domain of _spf.google.com designates 209.85.208.170 as permitted sender) client-ip=209.85.208.170; envelope-from=dominick.pham@gmail.com; helo=mail-lj1-f170.google.com; dkim=pass header.i=@gmail.com; dmarc=pass header.from=gmail.com;"
            },
            {
              "name": "X-SES-RECEIPT",
              "value": "AEFBQUFBQUFBQUFFRW84U01hRHdaRUJzazBtZ0x5RndNTnUyRWx3N2taZ1VVWHhUNVZsRmdURTBybS9wbnBZTWhqajk3V29RaDNlNWJqNlE4VmNHQnBGTnF3Rk9OSGJiTXVPeUVNYm9od05Kc0hmenpvd0FNYnUzL1NzRXE4NDMzS0JMdDlkL2NJRlRSQmZvdno4emprU2tWYW0xN0w4a29lRmQvTnQvTFFVNGhzR2Q1NnVaYU44Q3QyVjRqYytJbXVzQnRQVUF3OUFCdnYwRWplQXViY1hpczRLRmJoOFd4OHozZmNlcThOa09nbXV2UGZSUExXRTNaU0ZOTmFVRnVwMVRnVCtYd2Z4K2NXK0JHSU41STdUelk2bDRzKzdSSTBsSVBSRGpsdExRdG5hVWNndFBJeUE9PQ=="
            },
            {
              "name": "X-SES-DKIM-SIGNATURE",
              "value": "a=rsa-sha256; q=dns/txt; b=VKO8iKK7wOgE1C5yyzbG0wGN6DnWWQBdhOpFOjVOX4224lZTGyXR/ZVqlP02YDIY9y7eq1RNRni5Cj7Zx8Cbwn4wiR/Zcly6/TZMINKIDZl6H7u/niFykrA64lCrdp7Z0JD+TOvkh3ETj11BhSXe8a2cza22A2gPqwjVO9U4MCE=; c=relaxed/simple; s=ug7nbtf4gccmlpwj322ax3p6ow6yfsug; d=amazonses.com; t=1643384668; v=1; bh=dd0+1PoWVP0FePNMqdsGSZjAInx7mP5tYbKjzBFDExE=; h=From:To:Cc:Bcc:Subject:Date:Message-ID:MIME-Version:Content-Type:X-SES-RECEIPT;"
            },
            {
              "name": "Received",
              "value": "by mail-lj1-f170.google.com with SMTP id e9so9623669ljq.1 for <me@dominickpham.com>; Fri, 28 Jan 2022 07:44:27 -0800 (PST)"
            },
            {
              "name": "DKIM-Signature",
              "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=dd0+1PoWVP0FePNMqdsGSZjAInx7mP5tYbKjzBFDExE=; b=kAWqzeVyuVddWAvkRwcaEpYjk1p6EbQbqaX2C3BpmbaRW9VFzXOWJn9nCLyfKu/RyMAmlel2QnWLOlZFqwL4Qdi2ehdYQxa4hQVRRsyQljjhlOItQngSn45ftbp3oYacRNGuse1V24WXHsxCRYbGn6qJzbAN+vX0hofPvhSgLr76CjOW+NhwEI6smGyRZfjdMd54DSqcMC0aSllDa6n0q6xjmTD6V7VA2cB9z+VfKlYusIVfIV4+vh8zU5VyQ1UrXI+VjR0A5nZAwQNiJl1AlWcWfkrmM4FihW4Hp6cDF1la+HBrs73jjyQHc4/Sgc/34OVdrrWKd71CQJ1Lh8Pf0A=="
            },
            {
              "name": "X-Google-DKIM-Signature",
              "value": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=dd0+1PoWVP0FePNMqdsGSZjAInx7mP5tYbKjzBFDExE=; b=5Egk8sc6f+oeyy9AhWolL9//D0CgjtJ14+aOXijdKkfqWhfHKhrS+TcLvK7b7eYWhg gGjoByEeWgz3DABvxbWMMjytvZZSYChDyYCT/+ZSoS5zIbkCHvgSl5VgKOKG0SecQS3J +6HCc96t/HmnZn0hhubs8NdyEUvmJSfab/68el2Ln4oIZ/i5QuIROaFZVo5gqur5hpsX IT6j2ipwwaE8Ze/5XIAJPkIhVFBWkQr2+AHrKmLBgJpvayro9FUE5frSvPlNXESzBo8R mvPkNZLQAd1xsPv7gVuv2PWgsa0Nsgh9NqNdqmY0kLmB6hgk+Ux0q26+17iSh96+RowX eMog=="
            },
            {
              "name": "X-Gm-Message-State",
              "value": "AOAM532zjYQnjho7nCIg+FsYegBbKMcSYV8KN1kFGFR/ful/N14mqFxv O0SGJWyh8VB9sOcvk/IrusaIqD5RwmKPRQgBr7m9NbEg058="
            },
            {
              "name": "X-Google-Smtp-Source",
              "value": "ABdhPJx0H0nMTzXVD+qhWu02ihm0lU2P4PgBl7lXiDVCJ9LJD+qeenc5kYH11kqhQWbwlBFY8tWu6UJPgheVy6mXnxM="
            },
            {
              "name": "X-Received",
              "value": "by 2002:a2e:9b0a:: with SMTP id u10mr6397270lji.25.1643384666109; Fri, 28 Jan 2022 07:44:26 -0800 (PST)"
            },
            {
              "name": "MIME-Version",
              "value": "1.0"
            },
            {
              "name": "From",
              "value": "Dominick Pham <dominick.pham@gmail.com>"
            },
            {
              "name": "Date",
              "value": "Fri, 28 Jan 2022 07:44:14 -0800"
            },
            {
              "name": "Message-ID",
              "value": "<CAD603MDF_wSnj+QW7OwNkaDhi6Bv1CbJXBFXpeHKEh0jJ1TqGA@mail.gmail.com>"
            },
            {
              "name": "Subject",
              "value": "subject:test"
            },
            {
              "name": "To",
              "value": "me@dominickpham.com"
            },
            {
              "name": "Content-Type",
              "value": "multipart/alternative; boundary=\"00000000000040b80305d6a64f01\""
            }
          ],
          "commonHeaders": {
            "returnPath": "dominick.pham@gmail.com",
            "from": [
              "Dominick Pham <dominick.pham@gmail.com>"
            ],
            "date": "Fri, 28 Jan 2022 07:44:14 -0800",
            "to": [
              "me@dominickpham.com"
            ],
            "messageId": "<CAD603MDF_wSnj+QW7OwNkaDhi6Bv1CbJXBFXpeHKEh0jJ1TqGA@mail.gmail.com>",
            "subject": "subject:test"
          }
        },
        "receipt": {
          "timestamp": "2022-01-28T15:44:27.951Z",
          "processingTimeMillis": 661,
          "recipients": [
            "me@dominickpham.com"
          ],
          "spamVerdict": {
            "status": "PASS"
          },
          "virusVerdict": {
            "status": "PASS"
          },
          "spfVerdict": {
            "status": "PASS"
          },
          "dkimVerdict": {
            "status": "PASS"
          },
          "dmarcVerdict": {
            "status": "PASS"
          },
          "action": {
            "type": "Lambda",
            "functionArn": "arn:aws:lambda:us-east-1:432174144495:function:sendEmail",
            "invocationType": "Event"
          }
        }
      }
    }
  ]
}