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 <otl@apubtest2.srcbeat.com>
To: localtesting@aussie.zone
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.

You are viewing a single thread.
View all comments
4 points

When you specify To: localtesting@aussie.zone how does the bridge know if you meant https://aussie.zone/c/localtesting or https://aussie.zone/u/localtesting instead?

permalink
report
reply
1 point

Hi there! Looks like you linked to a Lemmy community using a URL instead of its name, which doesn’t work well for people on different instances. Try fixing it like this: !localtesting@aussie.zone

permalink
report
parent
reply
2 points

When you specify To: localtesting@aussie.zone how does the bridge know if you meant https://aussie.zone/c/localtesting or https://aussie.zone/u/localtesting instead?

Good question

The process of going from that email-like address to an ActivityPub Actor (https URL) is done by WebFinger. So whatever we get back from that lookup is who we send the message to. For example, when we look up localtesting@aussie.zone we get this response (truncated for readability):

{
  "rel": "self",
  "type": "application/activity+json",
  "href": "https://aussie.zone/c/localtesting",
  "properties": {
    "https://www.w3.org/ns/activitystreams#type": "Group"
  }
}

The value for type, application/activity+json tells us that we can send ActivityPub stuff to it.

You can play around with WebFinger in the browser.

Hope that makes sense?

permalink
report
parent
reply
1 point

Very cool!

permalink
report
parent
reply

Fediverse

!fediverse@lemmy.world

Create post

A community to talk about the Fediverse and all it’s related services using ActivityPub (Mastodon, Lemmy, KBin, etc).

If you wanted to get help with moderating your own community then head over to !moderators@lemmy.world!

Rules

  • Posts must be on topic.
  • Be respectful of others.
  • Cite the sources used for graphs and other statistics.
  • Follow the general Lemmy.world rules.

Learn more at these websites: Join The Fediverse Wiki, Fediverse.info, Wikipedia Page, The Federation Info (Stats), FediDB (Stats), Sub Rehab (Reddit Migration), Search Lemmy

Community stats

  • 5.1K

    Monthly active users

  • 1.8K

    Posts

  • 62K

    Comments