Aussie living in the San Francisco Bay Area.
Coding since 1998.
.NET Foundation member. C# fan
https://d.sb/
Mastodon: @dan@d.sb

  • 1 Post
  • 2.37K Comments
Joined 3 years ago
cake
Cake day: June 14th, 2023

help-circle


  • All the data gathered by Cambridge Analytica was gathered through the public API though, after users had consented to share it (by logging into a quiz app that requested the permissions). That’s why the API is very locked down now, and the approval process to get any sort of data access is very strict.

    The main issue was that they gathered data from people whose profiles were set to be visible only to friends. If someone logged into the quiz and granted permissions, their friends’ data was also accessible via the API.


  • With your idea, you either have to list a local IP in your public DNS record, or highjack your local DNS to point to the local IP. Both feel inelegant

    The DNS recordz for your internal servers don’t have to be public - they can be only on an internal DNS server if you want to do that. Only the _acme-challenge subdomain has to be public. Let’s Encrypt does follow CNAMEs.

    And you have to give your NAS write access to your API key of your DNS registrar

    You can use a separate DNS server just for Let’s Encrypt, as it follows CNAMEs. I use acme-dns for this. Let’s Encrypt supports IPv6-only DNS servers so I have my acme-dns instance listening on an IPv6 address in the /64 range on one of my VPSes.





  • aggressively guard

    tbh it’s a hard balance for any social media company.

    Guard content too little and you end up with Cambridge Analytica, which was literally because the public APIs allowed too much access (third-party apps could see any data through the API that you could see through your Facebook account, including friends profiles). You also end up with headlines talking about big data leaks which really just end up being compilations of public data (which has happened to both Facebook and LinkedIn).

    Guard content too much and you restrict users’ freedom too much.


  • It’s not too bad if you use an outbound SMTP relay for sending. SMTP2Go is pretty good, and they have a free plan with 1000 emails per month. I use Mailcow and you can configure relays in their web UI, but it works just as well with the sender_dependent_relayhost_maps setting in Postfix.

    Sure, it’s not fully self-hosted, but the interesting part to self-host is the storage of your emails, not the sending (which will just relay through other SMTP servers along the way anyways).



  • In my experience, no large business would decide to only accept encrypted inbound SMTP

    For submission (connections coming from users that have an account on the server) or for relay/target (connections coming from other email clients)? All email clients support encryption so I think requiring encryption for submission is reasonable. Server-to-server (port 25) can’t have it enforced though, like you said.

    SMTP is one of the worst protocols I have ever seen so widely used

    It’s from a era where everyone trusted everyone else. All connections were unencrypted, spam protection and rate limiting weren’t needed, and security really wasn’t on people’s minds. Modern security and spam protection is hacky because it’s built on top of protocols that weren’t designed for it.

    The other major issue with old protocols is that they’re stateful. Modern protocols are mostly stateless since it’s generally easier to deal with. They’ve also had more and more features hacked into them over time, so the specs are enormous.

    There’s been one major attempt at modernizing it: JMAP. It’s stateless, uses JSON, and intends to replace both IMAP and SMTP. FastMail started the project. https://jmap.io/why-jmap/

    However, they’ve only looked at the “easier” part to replace: Communication between a user and their email server. They’re not looking to replace server-to-server communication at all.


  • I’ve used that on automated systems. No need to worry about email quota and everything incoming is single-use input for other systems so there’s no need to store messages on the mail server

    You can do this with IMAP as well, you just need to delete and expunge the emails. Any good email client or library will have an option for this.

    POP is literally just downloading all the emails, then deleting them. That’s it.

    You can’t have a script that only downloads emails that match a search (for example emails from a particular sender), since POP doesn’t support search. A basic use case is to check for bills/invoices from certain companies and import them into an accounting system, while leaving other emails untouched.

    You can’t receive emails in real-time and have to instead poll, since POP doesn’t support real time notifications. IMAP supports IMAP IDLE.

    If you have rules that filter emails into folders, you can’t download them via POP, as it doesn’t support folders.

    For automated systems, if you don’t want to store the emails, you can configure the email server to pipe the emails directly to a script. That way they’re not stored at all, and your script gets them immediately rather than having to poll.