What have I done?! My abomination of an idea of bridging my email and ActivityPub progresses. If you see this message, something is working! Comments replies are welcome as it’s a good test of this system :)

People keep saying ActivityPub is a lot like email. If it’s so similar to email, could I use my email client to interact with the fediverse?

Previously I did this by writing a SMTP interface to the Mastodon HTTP API. That worked. But as we probably know, the fediverse is not Mastodon; it’s really ActivityPub. The real deal would be working with ActivityPub directly, not the Mastodon HTTP API.

And that’s now (mostly?) working! In shonky diagram form, sending looks like this:

laptop --SMTP--> my_server --ActivityPub--> fediverse

Replies look like this:

fediverse --ActivityPub--> my_server --SMTP--> mailbox <--IMAP-- laptop

my_server translates back and forth between ActivityPub messages and mail messages.

For example given the message:

Date: Wed, 6 Mar 2024 16:37:59 +1100
From: Oliver Lowe <[email protected]>
To: [email protected]
Subject: test 2

test hello world!

The following ActivityPub message is created:

{
	"@context": "https://www.w3.org/ns/activitystreams",
	"id":"https://apubtest2.srcbeat.com/outbox/1709703480070628170",
	"type":"Note",
	"name":"test 2",
	"to": ["https://aussie.zone/c/localtesting","https://www.w3.org/ns/activitystreams#Public"],
	"cc": ["https://aussie.zone/c/localtesting"],
	"published":"2024-03-06T16:37:59+11:00",
	"attributedTo":"https://apubtest2.srcbeat.com/actor.json",
	"content":"test hello world!",
	"mediaType":"text/markdown"
}

There’s still a lot of bugs (of course) and unimplemented bits (of course). I can’t call this a proper fediverse service yet. I’m going to roll with this for a bit and see how it holds up.

  • @[email protected]
    link
    fedilink
    English
    6010 months ago

    Dude was so preoccupied about whether he could, that he never stopped to think whether he should.

    • Oliver LoweOP
      link
      fedilink
      4010 months ago

      Oh I stopped and thought whether I should. The answer was “probably not” every time…

  • Handles
    link
    fedilink
    English
    2910 months ago

    LOL, you maniac. You did it, you finally did it!

    • Oliver LoweOP
      link
      fedilink
      3710 months ago

      Excuse my ignorance but how will the fediverse defend itself against email spam?

      That’s a good question. Right now there’s very little stopping people from spinning up some ActivityPub server and blasting out messages. I’m actually surprised at how little ActivityPub spam there is currently.

      One of the awesome things about the fediverse is how anti-commercial it is right now. Maybe it’s not a major target for spam because there’s not a lot of money in it.

      • Quokka
        link
        fedilink
        English
        1210 months ago

        But if you can keep spamming our (heh) a new site for like 99c a domain name, you could do this a lot despite getting banned.

        The alternative is something like FediSeer where you can get sites guaranteed by others and block anything not given the all-clear, but that really harms the ability for new sites to appear.

        • Oliver LoweOP
          link
          fedilink
          1210 months ago

          The alternative is something like FediSeer where you can get sites guaranteed by others and block anything not given the all-clear, but that really harms the ability for new sites to appear.

          If something like this were to gain lots of traction I’d hope it would be something not too difficult to implement by smaller new sites.

          What really sucks is the situation with email now: it’s really tricky to get stuff delivered if you’re not Google/Microsoft. The barrier to entry is way, way too high :(

          • Skelectus
            link
            fedilink
            English
            310 months ago

            I joined fediseer with this lemmy instance. I don’t know what’s going to happen with your self-built software, but getting a guarantee is easy, if your instance looks credible. I’m not aware of anyone that uses it as a filter at this point either.

            Anyway, this is an awesome project. If you keep working on it and need a fediseer guarantor for the site, I’m happy to do that.

            See their lemmy community: lemmy.dbzer0.com/c/fediseer

            • Oliver LoweOP
              link
              fedilink
              210 months ago

              Oh wow awesome. Thanks so much!

              It needs a bit more fleshing out, removing a bit of hardcoding too. And of course I want to publishit under an open source licence too. Thanks for the tip - I’ve written it down in the growing TODO file! :)

          • @Tangent5280
            link
            English
            110 months ago

            The barrier got higher and higher because people kept overcoming the previous barrier to keep sending spam. It’s an unsolved problem I think.

        • Oliver LoweOP
          link
          fedilink
          210 months ago

          The alternative is something like FediSeer where you can get sites guaranteed by others and block anything not given the all-clear, but that really harms the ability for new sites to appear.

          If something like this were to gain lots of traction I’d hope it would be something not too difficult to implement by smaller new sites.

          What really sucks is the situation with email now: it’s really tricky to get stuff delivered if you’re not Google/Microsoft. The barrier to entry is way, way too high :(

        • Draconic NEO
          link
          English
          1
          edit-2
          10 months ago

          But if you can keep spamming our (heh) a new site for like 99c a domain name, you could do this a lot despite getting banned.

          I mean you already could do that with something like ActivityPub proxy or just change your instance domain every time. If that’s such a risk, why aren’t people doing it now?

  • Lung
    link
    English
    2210 months ago

    Brilliant, who needs new fancy apps when you have email clients

    Tell Google to give us back our RSS feeds too, they stole em

    Then there’s the irc client bridge to think about, posts could be channels and you reply in em

    And ofc the extra spicy sms bridge where an AI gives you an executive summary of your memes for the day

    • Oliver LoweOP
      link
      fedilink
      1510 months ago

      And ofc the extra spicy sms bridge where an AI gives you an executive summary of your memes for the day

      needs more crypto

    • @[email protected]
      link
      fedilink
      English
      410 months ago

      RSS is not gone - you can read RSS by mail and it’s quite awesome. Check RSS2Email or Nachrichtensortiermaschine

  • @Feathercrown
    link
    English
    2110 months ago

    I hereby bestow upon ye the title of “Interoperability Warlock”, for ye are tampering with forces beyond this mortal realm.

  • Rentlar
    link
    fedilink
    English
    1710 months ago

    The ghost of Lemmy Kilmister graces ur presence! 🎸🎤

    Forward this to at least 3 of ur friends and you will have ur wish granted! 🤩

    • 3 friends - ur wish granted in 5 years🌟⭐
    • 5 friends - in 3 years
    • 10 friends - in 1 year
    • 20 friends - in 6 months
    • 30 friends - in 3 months
    • 50 friends - in 1 month
    • 100 friends - TOMORROW! 🌠🌠🌠

    But be careful, if you don’t pass on the good luck, Lemmy’s ghost will HAUNT you in 3 days!!! 👻😱😱 Hurry!


    [The only thing missing is random colours of text]

  • haui
    link
    fedilink
    English
    1610 months ago

    Sounds awesome! Good work. Does it also send you an update of how many upvotes you get? (Random thought)

    Good luck.

    • Oliver LoweOP
      link
      fedilink
      1510 months ago

      Does it also send you an update of how many upvotes you get?

      Well, I receive the corresponding ActivityPub "Like"s from the servers. But right now I just drop the message. I suppose that could turn into a mail message with a body like “user X liked your post” or something, but that doesn’t feel like a natural mapping to me.

      I’m also one of those people that hides upvote & boost counts in my Mastodon app ;)

      • haui
        link
        fedilink
        English
        610 months ago

        Thats actually very smart imo.

  • @hperrin
    link
    English
    1510 months ago

    This is cool. Keep working on it.

  • fmstrat
    link
    fedilink
    English
    1410 months ago

    This is interesting, but have you considered porting to Usenet? It’s basically a shared inbox thats whole intent is threaded conversation. Sound familiar?

    • Oliver LoweOP
      link
      fedilink
      410 months ago

      This is interesting, but have you considered porting to Usenet?

      Yes that’s on the list! Now that I have a whole bunch of RFC822 files, (in Maildirs) I can also serve them over read-only NNTP. This was the original goal actually - I like the idea of using the simpler protocol NNTP over IMAP to read stuff.

  • Onno (VK6FLAB)
    link
    fedilink
    1410 months ago

    This is an excellent idea. It’s gateways like this that will continue to offer options that are not available on other platforms.

    Look forward to seeing how this evolves!

  • @[email protected]
    link
    fedilink
    English
    1310 months ago

    Looks like a really fun project and honestly, this looks like the future of mailinglists (fuck mailinglists). Do keep working on it. I’d much rather have this put in front of LKML than the terrible interface they have right now.

    👏

    CC BY-NC-SA 4.0

    • Oliver LoweOP
      link
      fedilink
      110 months ago

      I’d much rather have this put in front of LKML than the terrible interface they have right now.

      Interesting. Could you go into this a bit more? Do you mean for example being able to use the Lemmy web UI to read LKML?

      • @[email protected]
        link
        fedilink
        English
        310 months ago

        Darn it, you got me. I hadn’t thought about it more deeply, but now I’ll give it a few minutes.

        So yeah, a lemmy UI to LKML would make the experience much better. Obviously the LKML serves two purposes: discussion and code review, for which the latter lemmy probably isn’t too well equipped, but it would help make it more approachable.

        Probably to make it work there’d need to be some kind of listener. I imagine signing up to a mailinglist with an email address of the domain running your software would suffice. Incoming emails would then be converted to activitypub messages and sent to the lemmy server you control.

        You’d have two classes of email addressed: list email addresses which map to lemmy communities and user email addresses which map to users on the lemmy server (which could also be remote users in the fediverse). The list email addresses are there to create posts in the lemmy community and populate existing lemmy posts (created in the mailinglist) with responses from the mailinglist (response = comment).

        A user on lemmy on lemmy commenting on a post from a mailinglist would be automatically signed up to the mailinglist with a user email address that’s dynamically created (I think your email has to be signed up otherwise the mailinglist rejects it). Upon successful signup, the response would be sent using their email address to the maillinglist thread.

        The other way around, a comment would show up on lemmy with email address and username of the person that responded on the mailinglist.


        (10 minutes later) After writing it out, I’m not sure it’s what you’re doing and more like a bridge, but maybe it’ll inspire you. Who knows. There’s probably something I’m missing and probably this isn’t even what your intention was when you started out with this.

        Anyway, do your thing dude and have fun!

        CC BY-NC-SA 4.0

        • Oliver LoweOP
          link
          fedilink
          410 months ago

          Hey mate thanks for writing all that down. Gives me a few ideas - in particular how NNTP could fit in to the equation.

          LKML can be accessed by a usenet client at nntp.lore.kernel.org. In theory, then, it should be possible to at least read both LKML and ActivityPub stuff hosted at the same NNTP server. To get that working means making sure all the conversion and mapping of concepts are as clean as possible. It’s a good test!

          Thanks again!