This article documents the setup for AWS SES to handle incoming/outgoing mail delivery.
75 karma · joined March 25, 2012
This article documents the setup for AWS SES to handle incoming/outgoing mail delivery.
Eg: one could piggy-back an entirely new file onto an existing file (it might have to be text encoded?).
It looks like the kernel might impose a limit of 64KiB on a file's metadata, but that's still quite a lot of room for data smuggling...
One rule of thumb is `mv` will keep the attributes by default (given similar filesystem) and everything else needs tweaking/extra args. There's a section on it over here:
https://wiki.archlinux.org/title/Extended_attributes#Preserv...
I admit it is perhaps unkind of me to not provide the laundry list of AI-tells in their article, but I see their response to me as being a direct lie ("I haven't used AI to write this post, that's just my style") so what explanation do I owe them?
I've gone through a few different incarnations of self-hosting email and web over the years.
- Used to have a little rack machine sitting in a data center (that I would occasionally have to go and "fix" in the middle of the night, because flakey KVM). It was running Openvz (sort of a precursor to lxc/docker) to host my web projects and email. I think it was about $70 per month to host (this was maybe about 2009ish)
- At some point I moved things over to servers in Vultr, and then later, EC2 in AWS. And was quite happy for say, a decade or so. Accessing email meant ssh-ing over to a tmux session that was running mutt on the mail server. Email setup was postfix, procmail, bogofilter, mutt. Costs were more like $30-40 per month. I never liked having web-accessible servers "out there" that needed to be looked after, but I did my best to keep them locked down and actually, everything went fine. Ssh on a non-standard port with TOTP 2FA seemed to work very well.
- Recently my email has gone sort of "serverless" (big double-quotes there) and my web projects are now all AWS lambda functions sitting behind API Gateways + Cloudfront for static items. Email is AWS SES delivering to an S3 bucket which gets polled by a super basic script running in my local home network.
All my personal boxes (including my phone) are connected via wireguard (VPN) so I realised I don't actually need to have any globally accessible linux servers anymore (i.e. I can access email at home from anywhere via wireguard on my laptop/phone). The monthly bill is a couple of dollars (with billing alerts in AWS), and I like having less machines to worry about.
Team A manages VPCs and Security groups, for example.
Team B manages autoscaling groups, EC2, etc.
It's great that now the two teams can look after their own things and not be too worried about resource contention with the other team. But if it's a centralized Postgres database (as you seem to be suggesting?) and both teams have write access to it...
How do we prevent teams from making changes to stuff that isn't "theirs" ?
And if the answer is "well this team only has IAM access to resources xyz", well then might it be a little tricky to represent the Stategraph DAG permission boundaries in IAM policy?
(ps: huge fan of terrateam's offerings -- Alex from tfstate.com)
"Grift for thee, but not for me"
https://www.crazygames.com/game/10x10
(I thought at first it was a bit like tetris, but there's a sort of key difference in the cadence/timing/pressure system)
You can probably get a feeling for where my priorities sit - secure, low-tech, terminal accessible. Got a recommendation?
a Slack and Discord app to help take turns (i.e. queue) with your teammates, overwhelmingly used for sharing tech resources like staging servers. It's crazy something that started so tiny (almost as a joke for my old workplace) has grown into my main "thing".
an infrastructure configuration monitoring solution for terraform/opentofu managed stacks. I am unsure how to proceed with this tbh. It's sort of the underdog in this space - it's much cheaper than the competitors. But really, it's yet to make a dent.
(I am maybe prowling around for something new to build)
After publishing the bot on the Slack App Directory there were some immediate scaling and performance challenges. In this post: I've gone into the how and why of the Dibs On Stuff re-architecture, and dunked a stubby quill into its origin story.
This avoids storing the secret's value in the state file (it's stored as an empty string) and also keeps the terraform plan clean.
One of my weekend projects https://tfstate.com is intended to aid with statefile configuration drift detection. Which (I've since discovered) is also something that Hashicorp offers as a service.
I feel worried.
https://github.com/alexlance/paw
It's a wrapper around gpg symmetric encryption that accesses a store of encrypted passwords sitting on a remote server accessible via ssh.
1) I made a Slack app in my spare time to help with a thing at work. Jumped through the hoops in the Slack marketplace, and then it was live (Dibs On Stuff). A few people at work used it and that was great! Solved the problem.
Blinked and then about 100 organizations had installed it. Xmas 2022 came and I used my free time to add (a ton of) extra features, and a paid mode to access them.
I feel like I have made quite a few side projects in the last 20 years - eg I spent 8 years on ONE of them (do you know how many commits you can make in 8 years?) Anyway this weekend Slack project that ate up one little Xmas has some legs!
I get an email every time someone uses the thing. There's new mail every day and honestly it is just - imagine this next bit uppercase and uncensored, possibly ending in 1 or 2 exclamation marks: f-ing awesome.
2) The private message app Signal has had to make some difficult decisions around continuing to support sms. It's fair enough sms is problematic. But there's also an aspect of "sorry but bad luck" to all the people that not only are stuck still using sms, but who acted as evangelists for Signal - helping our family members help themselves etc.
So I wrote an exporter for Signal: extract sms, mms and all Signal messages, into an xml file that can be re-imported into the stock Android message store. So at least you can choose to move them somewhere else.
I don't actually feel great about this, and more generally I do think Signal are saying all the right things, but it's still definitely a walled garden, eg:
You are free to fork Signal - it's open source - but you're not going to be able to message anyone on "original" Signal from your fork. They own the servers, and that's fair enough. Data tx/rx isn't cheap when you multiply it by hundreds of millions.
I am aware of Moxie's article from ages ago, touting the benefits of being able to upgrade people overnight to encrypted end to end protocols. But wow, the walled garden aspect is actually - STILL - after all these years and learnings - just terrible. I can pick up any phone and call anyone on any phone network. I can send an email to someone on goddamn hotmail or yahoo for example (if only it were encrypted by default). But Signal, Whatsapp - private networks, walled gardens, selfish, un-open, and disappointing considering what we're capable of.
Anyway, wrote an exporter (alexlance/signal-message-exporter) so you can get your stuff out of Signal. If you want to. (Their built-in exporter doesn't export Signal messages)
3) Before I realized Iran had really seized control of the country's internet - I spent time trying to migrate the Signal proxy to AWS lambda. I think it's still a decent idea. Lambda would let you spin up extremely cheap Signal proxies, regionally located all over the world. I got it working in nginx and also haproxy via docker image and deployed to Lambda, but unfortunately, it doesn't quite work because the lambda https endpoints don't support SNI.
If anyone can convince AWS to permit SNI in their lambda https endpoints then it could still be a goer. It may be the case that other people are wrecking this idea (illicit data over proxies via SNI). But yeah, super-cheap reverse proxy, yes ok with a 15 minute timeout, but it'd do brilliantly in times of need.
Or maybe people are just people, pleasant and unpleasant and everything else, and it can't really be helped?
It seems like putting something on the front page like "hey don't be a racist busy-body" isn't really enough. And at the other end of the extreme you've got Facebook employing organisations that filter sensitive content - with fairly horrific outcomes for the individuals who do the monitoring.
HackerNews is a pretty good example of getting a certain standard of behaviour out of people en masse. I wonder what the secret sauce was?
Otherwise you're in the queue, waiting... always waiting, until finally the conch falls from your predecessor's grip - and you get notified via email or webhook.
Or as a last resort, by polling:
while [ 1 ]; do
if [ "$(curl -sfL conchable.com/bearer ...)" == "me" ]; then
echo "THE CONCH IS MINE!"
exit 0
fi
sleep 30
doneA problem is happening at work with contention for a particular resource (a pre-production demo environment).
The developers have to continually negotiate taking turns to occupy the environment (to get their changes previewed just before they are launched). There's only one of those preview environments because it uses the same db as the main production system.
So I guess I'm playing with the idea of automating that conversation away. Also, the webhooks are neat; lets the person who adds themselves to the queue decide exactly how (slack/pagerduty/etc) they want to be notified.
SEIZE THE CONCH.
Guess it's double-edged though, if you don't confirm a person's exact residence then anyone could read the locality's discussions ... tricky.
Is there something inherently wrong with a random person signing up to a particular neighbourhood's group chat? These aren't exactly going to be super-private conversations if they're with everyone on your street ... and I want to encourage community building ... not necessarily GATED-community building. The end goal is world harmony, not several billion factions.
I guess my approach is aimed more toward casual acquaintances, where you might not know the people on your street very well at all, let alone have their phone number. (but I might be misunderstanding how whatsapp groups work).
On the one hand there is actually nothing to stop you just entering a street name and omitting your residence number - I think it will still setup the notice board and email group exactly the same.
And there is nothing to stop anyone from putting in some other street number than their own. There's no easy way to validate the correctness of that info - and it would be invasive to try.
There might be something useful that can be done with the street number though, I'm not sure. The flexibility of the geographic boundary is basically as general as the google maps API search. So it can be very broad.
As far as yoga groups or parents school groups etc are concerned, it seems like that domain is covered by FB...
I'm keen on fostering better street communities. Very light connections. Making it possible to do things like borrowing tools from each other, or creating a little veggie garden for the street, encouraging the sharing of resources with your neighbours. There's so much overlap and waste with everything...
And e.g. you probably wouldn't lend your spade to some random in your neighbourhood, but maybe lending it to the guy who lives across the road, is less of a big deal. After all - you know where he lives.
Love what you said about having a feel good story, and creating an example notice board page. Thank you will do!