I am thinking the time is right to implement a #NNCP-based email network.
Anyone interested?
I am thinking the time is right to implement a #NNCP-based email network.
Anyone interested?
@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!
@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
@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
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.
@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!)
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.
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.
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.
@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.
@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.
@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.
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
@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, 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.