Giter VIP home page Giter VIP logo

0x4447_product_s3_email's People

Contributors

davidgatti avatar lynnepatterson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

0x4447_product_s3_email's Issues

New feature: aws cdk

My Problem

The repo would be easier to maintain and to understand if it used code to specify the infra imo

Solution

  • drop some links to the cdk project just in case someone isn't familiar with it
  • collect some opinions from maintainers about it, have a conversation

links

getting started
docs
examples

examples are amazing

New feature: IMAP like WorkMail?

My Problem

Is it / will it ever be possible to connect an IMAP Client (like Thunderbird) to handle S3 email?

Solution

According to the documentation, there is a way to connect AWS SES to an email client, but I suppose there would be more to it, hence the question.

Not to mention how to go about authenticating users...

Regards, DAVI

.

.

nodejs8.10 is no longer supported

Error Symptoms

The stack can't be created because the lambda functions use a not supported version.

Error Message

The runtime parameter of nodejs8.10 is no longer supported for creating or updating AWS Lambda functions. We recommend you use the new runtime (nodejs12.x) while creating or updating functions. (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; 

Question regarding spam

Hey David, I like the idea & project so thank you ๐Ÿ˜ƒ
Even tho I didn't have a chance to give it a try I can't to the assumption that spam could be an issue. Not only does it cost, it could potentially even be exploited to harm someone directly, right?
I mean spam is always an issue and someone has to pay for the processing etc yet many probably never think about it. At least I didn't until your project came along ๐Ÿ˜…

New feature: attachment for sent email

My Problem

Ability to send attachments to the email_out/json messages

Solution

the json for an outbound email could be arranged as such

{
  "to": "[email protected]"
  "from": "[email protected]"
  ...
  "attachments" : [
     "attachment/baz.pdf"
  ]
}

and the baz.pdf file being located in email_out/json/attachment/baz.pdf

this may already be possible but I'm not aware.

Update Grapes

Update the build spec to use the latest version of Grapes.

New feature: Deny list

My Problem

Great project, love having the catch-all option for emails, works perfect.

Thinking about a deny list of some sort, so I can sign up [email protected] and then after using it and not needing it again, add that specific email to a deny list, so when the lambda executes for incoming mail, checks the address against the deny, and drops it instead of formatting into the S3 buckey

Solution

Seems like a simple DynamoDB table lookup would suffice, but I haven't thought too much into latency lookups, or costs of looking up each time

Webhook don't work as expected

Error Symptoms

Make the CodePipeline conditional based on this issue #22. Since to have a webhook set you need to really own the repo, for AWS to edit its configuration, and to do so you have to fork them if you want to have auto deployment, if you don't want to fork them and don't need auto-deployment, then the webhook should be skipped.

New feature: Don't make the artifact bucket

My Problem

Right now the stack will make the CodePipeline Artifact bucket. This is not a good approach, people should be able to point to a preexisting bucket that they already use for CodePipline artifacts

Solution

Remove the S3 resource and use the bucket name provided in the deployment as.

Webhook could not be registered with GitHub.

Error Symptoms

Running stage master, getting the following error when trying to deploy the CloudFormation template.

Error Message

Webhook could not be registered with GitHub. Error cause: Not found [StatusCode: 404, Body: {"message":"Not Found","documentation_url":"https://developer.github.com/v3/repos/hooks/#create-a-hook"}] (Service: AWSCodePipeline; Status Code: 400; Error Code: ValidationException;

nodejs 12 is no longer supported and ses does not have permissions to write to bucket

I updated the lambda node version to 14 and that part deploys successfully (Not sure if the code actually works or not on node14) then the next error i get is SES does not have permissions to write to the s3 bucket. It looks like the bucket policy is there so kind of stuck on that one. I'll try to troubleshoot some more but wanted to report it in case anything immediate stands out.

New feature: Switch from GitHub pulling to GitHub Webhooks

My Problem

Right now CodePipeline will check for changes on GitHub, and this some times exceed the limit that GitHub imposes.

Solution

Add a new resource: AWS::CodePipeline::Webhook, to configure CodePipeline to receive notifications when something changes on GitHub.

Lambda can't process big emails.

Error Symptoms

Big emails over 25MB will stop at the parse_the_email step with no error.

Error Message

No error message, the lambda just exits after this step normally.

Template format error

Template format error: Unrecognized resource types: [AWS::SES::ReceiptRule, AWS::SES::ReceiptRuleSet]

New feature: add support for Intelligent-Tiering

My Problem

Over time there will be lots of files that are accessed very rarely. It be a nice thing to add support for Intelligent-Tiering, to makes sure we keep the price of hosting the files as low as possible.

Solution

Update the Stack with the right life time policy.

New feature: Rate limiting/Error handling

My Problem

This is more a question that could turn into a feature request.
I'm wondering how you're handling errors, especially those from send rate limits.
Let's say I can send 100 emails/s with a daily limit of 100k right now and I am sending emails from a couple of services with peaks of 5k emails within a few seconds.

Solution

Ideally the system would react to the rate limit errors that will come from the ses.sendEmail command and have an exponential delay (or actually keep track of the quota and adjust as needed).

The stack won't deploy some times

There is a known bug that AWS is aware of in CF, which makes it that the stack won't deploy when you deal with S3 Events. To mitigate this problem the stack could be split in two.

Work around

Right now a work around that works 100% of the time is to remove from the S3Email resource this NotificationConfiguration.LambdaConfigurations, build the stack, deploy it, and then re-add the removed section, and perform and update on the stack.

This solution works, since we make sure that the Lambdas are in place before we add the events. For some this will work out of the box, it all depends how fast a Lambda will be deployed, and no, the DependsOn directive dose nothing - hence the bug.

New feature: Programmatic addresses

My Problem

On the same domain I want to have email address (e.g. forum-*@example.com) what is send directly to our system (e.g. Discourse forum). Emails send to this address should be immediatelly send by HTTP to an app endpoint (by a Lambda what will transform it to the right format).

Solution

At least document how to configure custom Lambda processing specific address prefix to not break anything for 0x4447_product_s3_email.

Ideally have support for it. E.g. config what will turn off processing for some prefix but runs specific lambda.

Emails in which one is CCed/BCCed get treated as 'Sent'.

Error Symptoms

Emails in which one is CCed/BCCed get treated as 'Sent'.

Emails in which 'To' contains other addresses before a recognised address gets treated as 'Sent'

Notes

I decided to spin this up and have a play. It's wonderful!

I actually found it via a thread on reddit. One comment asked about how bcc and cc were handled, and you specified that you weren't sure. I thought I'd test that. The poster's concerns were astute: items that you are cced or bcced in get treated as 'Sent' mail.

I wish I could have a crack at fixing this and submit a pull request, but I have only the vaguest idea of how this all works (the plan is to use your brilliant product to learn). If you felt like it was worth your time to point me to the most relevant documentation, I would be more than willing to have a go. I think the thing I'm having most difficulty with understanding is how the cloudformation file would change if I were to play with the forks of your repos. Is your 'grapes' consolidation program included in the codepipeline autodeploy feature?

Otherwise, do let me know if there's any outputs I can provide that would be useful for you to troubleshoot the issue.

Increase memory for all Lambdas

My Problem

Actually after #16, I realized that all Lambdas will have to be 256MB to be able, to process and send email over 25MB.

Solution

Update the CF with a new memory limit.

[BUG] Deploy Failed (Bucket already exists)

Error Symptoms

AWS Cloud Formation deployment is failed and rollbacked
The error message is clear. but the problem is that I don't have the incoming bucket.
I tried a couple of times with other names, and It's the same always.

Error Message

//Incoming is the bucket name for EamilRestingPlace 
S3Email | CREATE_FAILED | incoming already exists

Param

AutoDeployParam No -
CodePipelineArtifactsParam configure-s3-mail -
EmailRestingPlace incoming -
GitHubAccountOwnerParam 0x4447 -
GitHubTokenParam **** -
StageParam master -

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.