I am thinking the time is right to implement a #NNCP-based email network.

Anyone interested?

@jgoerzen I'm super interested in the _idea,_ but what kind of buy-in are you looking for? Real Life gets in the way of, e.g., significant development projects.
@elb Nothing super big, sorta an "if I build it, would you try it?" I got a few responses, so now it's up to me to find some time to try to build it

@jgoerzen I'm not currently using NNCP for anything, but it's on my list of "I definitely need this, I just need to take the time to sit down and sort it out" things.

Also I hate modern email and how ... complicated and hard it is. Bring it on.

@elb I'm now ready to announce #NNCPNET, the #NNCP-based email network. https://salsa.debian.org/jgoerzen/docker-nncpnet-mailnode/-/wikis/home

It is open to all. It can route email across the Internet or USB stick. You can run a full, real mail server without a public IP, port forwarding, or even Internet access. It's a friend-of-a-friend network; mail delivery is automatic, but adding people is done by humans.

It uses all the tools that you're used to with Internet email, but is the opposite of it. Enjoy!

Home · Wiki · John Goerzen / Docker container for email over NNCP · GitLab

Debian Salsa Gitlab

GitLab
@jgoerzen The opposite of email is l(i)ame.
@oclsc Nice mental rev(1), there.
@jgoerzen I'm under the weather this week with some generalized lurgi, which seems to make things like that pop out to me.
@jgoerzen I'm not in a place to check it out this weekend, but your post describes everything I dreamed it could be.
@elb Feel free to drop me questions when you do have time. (Or to join - I'm always interested in what people do with things like this)

@jgoerzen @elb Just having a look now.

I've managed to compile NNCP on OpenBSD 7.5 (amd64), bit leery about it defining an unprotected call to `sendmail` though… seems if I deploy this on a server with a mail server configured, this is a recipe for relaying mail from unauthorised users to the public Internet.

So I think the concept is good, but we need to move carefully rather than rushing implementation.

@stuartl @elb Fully agreed. In fact, my implementation:

Lives in a self-contained Docker container

Does not need any open incoming ports

Has wrappers around calls to sendmail and calls FROM sendmail/exim

Explicitly is not designed to receive mail from the public Internet

I run it in a Docker container and access the mounted Maildir from mu4e on the host, but you can also use IMAP locally, etc.

There's a lot of info on the wiki at https://salsa.debian.org/jgoerzen/docker-nncpnet-mailnode/-/wikis/home

Home · Wiki · John Goerzen / Docker container for email over NNCP · GitLab

Debian Salsa Gitlab

GitLab

@stuartl @elb Configuring a general-purpose mail server for this would be tricky. I run a general-purpose NNCP node on my host, and a mail-specific one in the Docker container. You can make as many as you want.

https://salsa.debian.org/jgoerzen/docker-nncpnet-mailnode/-/wikis/operation covers how things work in the container.

I haven't touched my host's mail configuration a bit. https://salsa.debian.org/jgoerzen/docker-nncpnet-mailnode/-/wikis/accessing-mail may also be helpful

Operation · Wiki · John Goerzen / Docker container for email over NNCP · GitLab

Debian Salsa Gitlab

GitLab

@jgoerzen @elb

Yeah. Docker doesn't work on OpenBSD, which is what my VPS is running.

The VPS is configured as backup MX for my domain, and I'd like to eventually experiment with linking it to NNCPNET.

Anyway, we'll figure something out.

@stuartl @elb Ahh, got it.

Ahh, now I understand. Well, you'll be running in hard mode, but the source is available at https://salsa.debian.org/jgoerzen/docker-nncpnet-mailnode and https://salsa.debian.org/jgoerzen/nncpnet . A lot of the tooling is around automated config generation and nodelist updates; that nncpnet repo has the Rust programs that perform verification and sanity checks on incoming and outgoing mail.

I wonder if vmm might help, but that may be difficult in a VPS.

John Goerzen / Docker container for email over NNCP · GitLab

Debian Salsa Gitlab

GitLab
@jgoerzen @stuartl @elb I might check how to do it with postfix.
@ttyS1 @stuartl @elb Should also be doable. The main bits involve the verifications, and a bit of munging for mailing lists. If you happen to make a fork, I'd be interested.

@jgoerzen @elb

This is intriguing enough that I wonder if SDF might be interested in implementing it.

@publius @elb It would be right up their alley! I did try to get a UUCP feed from them awhile back, but nobody replied to my request following instructions. I guess probably was shut down. The tildeverse may also be interested.
@jgoerzen @elb Hey John, I'm eager to look into using NNCPNET! Thanks for your post. I can reach the Debian Salsa page but the wiki link 404's for me at the moment: https://salsa.debian.org/jgoerzen/docker-nncpnet-mailnode/-/wikis/home
Home · Wiki · John Goerzen / Docker container for email over NNCP · GitLab

Debian Salsa Gitlab

GitLab
@jeremiah_ @elb Whoops, that was my fault. I flipped a Salsa setting that didn't do what I thought it did. Fixed!
@jgoerzen @elb Super! Thanks, and thanks for all your work, I use a lot of your code. :-) I use InterIMAP regularly.

@jeremiah_ @elb #NNCPNET, the new #NNCP-based email network, now has a bidirectional, opt-in, Internet #email bridge! https://salsa.debian.org/jgoerzen/docker-nncpnet-mailnode/-/wikis/bridge/intro

This gates Internet email to/from NNCP. The bridge is off by default. It is a full participant in #SPF, #DKIM, #DMARC, and #TLS in both directions.

Yes, now you can get Internet email straight to your #RaspberryPi ! (And even without this, your Pis can email each other!)

Introduction to the Internet Bridge · Wiki · John Goerzen / Docker container for email over NNCP · GitLab

Debian Salsa Gitlab

GitLab

@jgoerzen

I spotted some people were trying to define structured data format over email.
https://structured.email/

in a form intended to carry application/ld+json which I believe is what activity streams serialized as.

Which leads to the silly possibility of activity streams messages over usenet messages.

Home

Structured email aims to provide a machine-readable version of email messages

Structured Email
@alienghic Interesting! And it all comes back to Usenet, doesn't it? 🙂

@jgoerzen

Activity pub acts a lot like email without store and forward, every message posted has to get distributed to all of the following servers if not even for every account so it gets more and more expensive the more people someone follows.

Newer protocols (matrix) that try to do synchronization often use merkle trees, and that makes deleting stuff really hard.

I've been thinking usenet's method of passing blocks of messages around by comparing lists of message ids helps decrease the numbers of connections needed to share posts, and does a better job of allowing for deleting old posts.

Both of which I think are desirable features for passing around social messages.

@jgoerzen

I think the big problem for original usenet is if it's popular scammers will harvest your email address from it and spam you, so there need to be a way of posting with an identity that allows controlling if someone can send direct messages back at the poster.

@alienghic @jgoerzen the kmail/kitinerary combo by #KDE uses the structuredness when possible to import your travels and events to your calendar (and if you are not flying your own plane like John, also manage boarding passes and such)

@svuorela @jgoerzen

I went digging through my email folder and found a number of instances of application/ld+json in script tags. I think for me it was mostly receipts and shipping statements

@alienghic @jgoerzen Here it is gitlab emails (KDE invent, freedesktop.org) that dominates and the others are mostly either linkedin or github. All of them is with EmailMessage schema type with some actions attached to them.

@jgoerzen Is the mail.quux node up? I get instant exim bounces from it.

Also the sendmail wrapper script should be

docker exec -u <localuser name> -i mailnode /usr/sbin/sendmail "$@"

otherwise it sends as root@.

@jgoerzen Hmm, never mind on the mail.quux issue, it looks like due to an issue with lingering broken storage from an earlier config attempt it never finished the firstrun node list. Manually invoking

/opt/nncpnet/bin/nodelist-proc firstrun

got my mail working. Subscribed from kadathmail!

@tidux Glad to hear it! On the sendmail command line, the canonical solution to a wrong envelope sender would be to add "-f name@domain". Some programs will already do that, which is why I didn't list it. If your program generates a From: address, that is probably sufficient.

BTW I sent you a welcome message in-network.

@tidux Nice troubleshooting, BTW! If there is something I should fix there, let me know. Maybe I could make it a bit more robust and not require FIRSTRUN but rather check to see if there is a basic configuration... Yes, probably should do that indeed 🙂

@jgoerzen It's more that the whole approach to Docker is wrong, really. Systemd-in-docker and requiring host cgroupns is a major antipattern, that /persist folder mixes too many different types of files together in one volume, commands like editing dovecot.conf and downloading the nncpnet binaries are in setup.sh that should be in Dockerfile commands, the nodelist updater is half broken...

...but I think I can make a better container out of this as a starting point.

@tidux I'd be happy to see it! I know the usual Docker approach is a bunch of tiny containers, but I think it also makes for a nice lightweight system... That said, I would be happy to have something that is easier for others. Please let me know if you come up with something else!

@jgoerzen Started working on it: https://mastodon.sdf.org/@tidux/114322366467872035

I'm also considering setting up an NNTP<=>NNCP bridge with INN and peering it to Eternal September.

Tidux (@[email protected])

I am working on an alternate implementation of John Goerzen's NNCPnet network node container, using Alpine and Postfix rather than Debian and Exim4. Design goals include building NNCP and NNCPNet from source, not requiring special host access (no systemd-in-container), running in Kubernetes, and eventually supporting mail handling for multiple users. It's not working yet, but I put the source up on Sourcehut. https://git.sr.ht/~tidux/nncpnet-docker/tree https://mastodon.sdf.org/@[email protected]/114311298853655934

Mastodon @ SDF

@tidux Fantastic! It is great to have a diversity of implementations like that.

BTW, for NNTP, https://www.complete.org/usenet-over-nncp/ may prove helpful, whether you run your own NNTP gateway or get a NNCP feed from quux. Either path is most welcome, and giving NNCzp users options is good too.

Usenet over NNCP

Usenet, of course, originally ran over UUCP in quite a few cases. Since NNCP is quite similar to UUCP – in fact, you can map UUCP commands to NNCP ones – it is quite possible, and not all that hard, to run Usenet over NNCP. In fact, in a number of ways, it works better than Usenet over UUCP! Introduction to NNCP According to the NNCP documentation, NNCP is intended to help build up small size ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant networks for fire-and-forget secure reliable files, file requests, Internet mail and commands transmission.

www.complete.org