Community gopher hole - Community & Forums Related Discussions

Users browsing this thread: 1 Guest(s)
z3bra
Grey Hair Nixers
Hello fellow rodents !

The official gopher community hole is up and running ! You can browse it here:

gopher://g.nixers.net (HTTP)

It is still in construction, but every member can request an account ! To do so, send an email to contact at z3bra dot org, with your forum username and SSH public key.

You'll get an account on the server, and a hole will be dugged under your name. You can then add content as you please to ~/public_gopher.

More information is available on the server:

gopher://g.nixers.net/0/howto.txt (HTTP).

I am also providing an email to gopher phlogging using scribo(1). It is still in beta, but I'm sure you can help me make it better and more robust over time !

An anonymous account is available to try it. Send an email to anon at g dot nixers dot net to create a post ! Please be serious and respectful about it, so I'm not forced to take it down.

So, will you gopher it ?
BANGARANG, MOTHERFUCKER
opFez
Members
Hey, this is sick! Gopher is such a great protocol. Excited to see how people's pages turn out.
z3bra
Grey Hair Nixers
By the way, I'm also working on a gopher to http proxy, to expose holes over HTTP. It runs as an inetd daemon. You can try it here (warning: bugs ahead !) : http://phroxy.z3bra.org/g.nixers.net/1/
ekangmonyet
Registered
Very new to this, is there any CLI client for gopher? I am interested to build one if there isn't any actively maintained.
z3bra
Grey Hair Nixers
There are a few ones already:

What gopher really need is a wider adoption !
ekangmonyet
Registered
Thanks they are pretty awesome! I will browse around and maybe write something soon heh.
opFez
Members
Got myself logged in, really cool. Unfortunately, I don't think the phlog works. I get an error message as an email when I try to post to it.
Here it is:
Code:
Hi!

    This is the MAILER-DAEMON, please DO NOT REPLY to this email.

    An error has occurred while attempting to deliver a message for
    the following list of recipients:

opFez@g.nixers.net: "doas: Operation not permitted"
z3bra
Grey Hair Nixers
Glad it works !

I made a typo in the mail config. It should work now ! Thanks for reporting !
z3bra
Grey Hair Nixers
So I just improved the phlogging system, by moving everything to the user's ~/.forward file. Receiving an email for your account will pipe the mail into scribo(1), which is configured by default to write logs into ~/public_gopher/rlog. Now that the command is in ~/.forward, you can get more creative about what to do with those mails !

Note: The index.gph file is not generated by default anymore. Either add "-o index.gph", or make a CGI script (named index.dcgi) to generate a gophermap.

By default, the geomyidae daemon will list the content of the directory, sorted alphabetically.
Ramiferous
Members
Ok, so clearly I'm a dumdum and cannot figure it out... I asked in the IRC but got no love :(

adding content to phlog via forward/scribo...

Quote:> Post content to my phlog ?

By sending emails !

Edit ~/.forward and set your real email address. The content of the file
should ressemble something like this:

"|/usr/local/bin/scribo -b ~/public_gopher/rlog -a you@domain.tld"

Every email sent to <account@g.nixers.net> will create a file in the
the "rlog" directory with you email content inside it. The post title
will inherit from the mail subject, as for the file name.

Ok, so first question: the line in ~/.forward is to contain my "real' email address. Which I presume is the email address I used to create my nixers account? Would it make any difference if I sent my initial email to z3bra requesting a gopher hole from a different email address than the one I used to create my nixers account?

Second question is: The email address I send content to (in my case) would be ramiferous@g.nixers.net yes?


Thanks for clarifying. So far I've tried various combinations but nothing has worked as yet.
z3bra
Grey Hair Nixers
When in doubt, you can check the scribo(1) man page (available on the host system).

scribo(1) Wrote:
Code:
-a address
    Only process emails originated from address. This will be checked against the internet address extracted according to the rfc5322 specification.

Upon reading an email, scribo will parse the headers, and check the "From:" field of the email. If the email address (usually enclosed in "<>" match the string you specified with the -a flag, then the mail is "accepted" and written on disk.

It means that when you want to post something on your rlog, the "From" should be the address set in your .forward file, and the "To" should be "$USER@g.nixers.net", where $USER is your account (for you, ramiferous@g.nixers.net indeed).

Hope it makes things clear ! I should probably reword the FAQ, as it is definitely not explicit enough.
Ramiferous
Members
(18-09-2020, 11:16 AM)z3bra Wrote: Hope it makes things clear ! I should probably reword the FAQ, as it is definitely not explicit enough.

Thanks z3bra, that is much clearer :) Will try it out later tonight.
vain
Long time nixers
mcol had the idea on IRC to show a world map here on nixers.net, with a pin for each member. Maybe it would be fun to do this in the community Gopher hole using asciiworld.

Each member could have a file ".location" in their directory. A cronjob or a CGI script could collect all those files and render the map. The only real problem is: An ASCII world map is pretty "crowded" and you need colors to highlight a location (otherwise it's just too hard to spot the marker). So the map would need to be wrapped in a short HTML file. Here's an example:

Code:
#!/bin/sh

# Latitude (positive is north), longitude (positive is east).
cat >locs <<EOF
points
50 8
40 -74
EOF

cat >map.html <<EOF
<html>
<head>
<style type="text/css">
* { color: grey; background-color: black }
b { color: red }
</style>
<body>
<pre>
EOF

./asciiworld -c 0 -o -l locs -w 84 -h 21 | sed 's#X#<b>X</b>#g' >>map.html

cat >>map.html <<EOF
</pre>
</body>
</html>
EOF

Looks like this in lynx:
[Image: 2020-09-19--19-50-28--%2B0200--pinguin--pid148276.png]

Granted, it doesn't appear to work great in other Gopher clients. Some just pipe the raw HTML file to less(1).

asciiworld itself is a C program and needs shapelib and gd. There are OpenBSD ports for those. (The other shell scripts and Python scripts in the asciiworld repo can be ignored.)

Just an idea. :) A fun excercise in simplicity, because it would probably be much more involved to implement this here on the actual forum.
Ramiferous
Members
(18-09-2020, 11:16 AM)z3bra Wrote: ... when you want to post something on your rlog, the "From" should be the address set in your .forward file, and the "To" should be "$USER@g.nixers.net", where $USER is your account (for you, ramiferous@g.nixers.net indeed).

Still not succeeding at this :(

I noticed you have changed the how-to slightly to include:
Quote:Every email sent to this account, from your real email address
(the one you used to request an account) will create a file
in this "rlog" directory containing your email body.

Now, I emailed you from my protonmail email to request my g.nixers.net account, yet my neixers.net account was created using my gmail account. I have tried both my gmail and my protonmail email addresses in ~/.forward and yet neither of them have worked.

I even took a sneak peek at some other users ~/.forward files, just to make sure I was getting the syntax correct, which it is.

I would love to use this functionality as it would be far easier than logging in and creating text files in standard vi.. plz install vim :P
z3bra
Grey Hair Nixers
That's weird. Does your message gets bounced ? In case of error, you should receive a message from MAILER-DAEMON (check your spam folder maybe?).
evbo
Members
Tried playing with it this morning. I wasn't sure where it goes, so I placed two copies of .forward in my directory, one in ~/ and one in ~/public_gopher.

The contents of my .forward file are

Code:
"|/usr/local/bin/scribo -b ~/public_gopher/rlog -a EMAIL@ADDRESS"

The error message I get from MAILER-DAEMON is

Code:
evbo@g.nixers.net: "<EMAIL@ADDRESS> is not authorized to publish content"
z3bra
Grey Hair Nixers
It goes to ~/.forward (see forward(5) on the host). You have to modify the content of this file to set the email address you want to authorize publishing to your phlog, instead of "EMAIL@ADDRESS".

I think you need to understand how the SMTP daemon works on this system, so here is a breakdown, starting with the user's mail client. Let's say my own personal address is "spamtrap@z3bra.org" (don't email me to this address or you'll get blacklisted on my server. I hope some crawling spammers will). My .forward file will thus include the following:

Code:
"|/usr/local/bin/scribo -b ~/public_gopher/rlog -a spamtrap@z3bra.org"

Here is what happens:

1. Create an email (note the "From:" field)

Code:
From: The stripped horse <spamtrap@z3bra.org>
To: z3bra@g.nixers.net
Subject: Showing off smtpd(8) work

This email will hopefully reach the g.nixers.net server, get
processed to scribo and create an entry in ~/public_gopher/rlog named
"showingoffsmtpd8work.txt".

The phlog is accessible at gopher://g.nixers.net/~z3bra/rlog
--
z3bra

2. Send the email

Upon pressing "Send!", your email will be sent to your email provider (in my case, "z3bra.org"), and then be transferred to the running smtpd(8) daemon at "g.nixers"net" (our server). The daemon will receive it on its TCP socket, read the enveloppe, and accept it (because it's configured to accept all mails for @g.nixers.net").

3. Deliver the email

Now that the mail is accepted, it must be delivered. The rules are listed in "/etc/mail/gopherlog", you can even check, there's nothing fancy. The format is that of the aliases(5) file (you can check the man page on the system).

This file lists the existing mailboxes, and what to do when an email arrives for that mailbox. In my case, I have this line:

Code:
z3bra@g.nixers.net     z3bra

Which means, deliver all mails to "z3bra@g.nixers.net" to the local user "z3bra" on this host. smtpd(8) will then lookup my home directory in the passwd(5) database, and search for a .forward file here. If it's not found, the mail will go to /var/mail/z3bra (my mailbox).

In my case, the .forward file exists, and is not empty, so the server will process it, just like if its content was in the "/etc/mail/gopherlog", next to my email.

4. Pipe the email

The aliases(5) manpage states the following:

Code:
|command
             Pipe the message to command on its standard input.  The command
             is run under the privileges of the daemon's unprivileged account.

Which means that the email I received will be passed to "/usr/local/bin/scribo", on stdin. Upon reading the email, scribo(1) will read all email headers, and check that the "From:" field includes the email address passed with the "-a" flag. In my case, if the From: field doesn't include "spamtrap@z3bra.org", the message will be bounce, and a mail from "MAILER-DAEMON" will arrive in my inbox, similar to the one evbo received.

5. Create log entry

In my case, the email address is correct though, so the mail will be happily processed by scribo, which will use the subject to generate a filename, and write the email body in this file, inside the ~/public_gopher/rlog directory, and be immediately available over gopher !

Code:
$ curl -s gopher://g.nixers.net/0/~z3bra/rlog/showingoffsmtpd8work.txt
Showing off smtpd(8) work

This email will hopefully reach the g.nixers.net server, get
processed to scribo and create an entry in ~/public_gopher/rlog named
"showingoffsmtpd8work.txt".

The phlog is accessible at gopher://g.nixers.net/~z3bra/rlog
--
z3bra

[Mon Sep 21 18:25:07 2020] -- powered by smtpd(1)
evbo
Members
My apologies z3bra, I was not explaining myself properly:
Code:
EMAIL@ADDRESS
was an attempt to obfuscate my personal email address from this forum. What it is actually set to in ~/.forward is the email address I contacted you from.
z3bra
Grey Hair Nixers
I just checked your account (pardon my intrusion), and your ~/.forward still has "user@domain.tld" in it. It looks like you set the correct address, but in ~/public_gopher/.forward instead.

The forward(5) file must be right in your home, not at the root of your gopher directory.
opFez
Members
Just saw your phlog-post on Yggdrasil, z3bra. If I understand correctly, it is like an alternative internet? Anyways, looks really cool.
z3bra
Grey Hair Nixers
Kind of indeed. Some would call it a "dark net", but this term has a bad connotation. The peering happens over the internet, and it then creates a new network between the peers, similarly to a VPN. The difference being that it's not centralized, and traffic can be routed between nodes.
Ramiferous
Members
(21-09-2020, 01:26 PM)z3bra Wrote: Upon reading the email, scribo(1) will read all email headers, and check that the "From:" field includes the email address passed with the "-a" flag. In my case, if the From: field doesn't include "spamtrap@z3bra.org", the message will be bounce, and a mail from "MAILER-DAEMON" will arrive in my inbox, similar to the one evbo received.

Thank you z3bra for the detailed explanation. However I have checked, ad re-checked, My
Code:
/home/ramiferous/.forward
contains my Gmail address (including the -a flag). Please feel free to check it for yourself, I don't mind, I just wont post my email address here on the forum.

I have not received any messages in my spam or other inbox from MAILER-DAEMON.

PS. I am currently unable to even view g.nixers.net also. I get 'No route to host (os error 65)' in my gopher client.
venam
Administrators
The issue might be related to DMARC policies. I've relaxed them for subdomains, they should propagate soon.
Z3bra can setup DKIM and SPF as these are required for gmail not to flag the mails or instantly reject them. (Bless the world of emails today)
z3bra
Grey Hair Nixers
Good catch on the DMARC policies, I forgot about the bounce-back messages. Gmail was indeed rejecting them bounced messages (see logs below).

Good news: your .forward if correctly configured, as I see your emails in the smtpd logs.
Bad news: You're facing a scribo(1) limitation that I forgot to mention… Here is the log entry (I removed your original email email):

Code:
/var/log/maillog.5.gz:Sep 19 14:29:32 tea smtpd[84733]: 94a9c89b66baa836 smtp envelope evpid=6d5389d7d6f48374 from=<REDACTED> to=<ramiferous@g.nixers.net>
/var/log/maillog.5.gz:Sep 19 14:29:32 tea smtpd[84733]: 94a9c89ca18225cb mda delivery evpid=6d5389d7d6f48374 from=<REDACTED> to=<ramiferous@g.nixers.net> rcpt=<ramiferous@g.nixers.net> user=ramiferous delay=0s result=PermFail stat=Error ("Content-Type: multipart/alternative; boundary="000000000000eecdd505afab7145" is not supported")
/var/log/maillog.5.gz:Sep 19 14:29:33 tea smtpd[84733]: 94a9c89e9ea7579b smtp envelope evpid=338d76cebd715224 from=<> to=<REDACTED>
/var/log/maillog.5.gz:Sep 19 14:29:35 tea smtpd[84733]: 94a9c8a2b9672151 mta delivery evpid=338d76cebd715224 from=<> to=<REDACTED> rcpt=<-> source="135.181.44.46" relay="64.233.161.26 (lh-in-f26.1e100.net)" delay=2s result="PermFail" stat="550-5.7.26 Unauthenticated email from nixers.net is not accepted due to domain's5.7.26 DMARC policy. Please contact the administrator of nixers.net domain5.7.26 if this was a legitimate mail. Please visit5.7.26  https://support.google.com/mail/answer/2451690 to learn about the5.7.26 DMARC initiative. k128si2450996lfd.163 - gsmtp"

The important part is "Content-Type: multipart/alternative; boundary="000000000000eecdd505afab7145" is not supported".

Currently, scribo(1) is not smart enough to parse multipart/* messages, and can only handle messages in text/plain. So you must ensure you're sending plain text email for now (patches welcome!).

That's definitely something that should be in the manpage.
Ramiferous
Members
(24-09-2020, 12:32 PM)z3bra Wrote: you must ensure you're sending plain text email

Thanks, that works :) In fact, I learned that I can send plain text emails from my Gmail account using heirloom-mailx from the command line. This is awesome!


On a totally different issue however, my gopher client phetch is now giving me an error when visiting g.nixers.net

I had it bookmarked and didn't have problems previously, but now I get
Code:
No route to host (os error 64)

Any idea what this might be?
z3bra
Grey Hair Nixers
Glad it works ! Sorry for not realising eariler what it could be ^^

About the no route to host, this could be related to the freshly configured ipv6 stack on the server. I added an AAAA record for g.nixers.net.

Maybe try accessing the hole directly from the ipv4 ?
Ramiferous
Members
(25-09-2020, 06:30 AM)z3bra Wrote: Glad it works ! Sorry for not realising eariler what it could be ^^

About the no route to host, this could be related to the freshly configured ipv6 stack on the server. I added an AAAA record for g.nixers.net.

Maybe try accessing the hole directly from the ipv4 ?

It's really strange, I only get this error on my NetBSD machine, On Linux it works fine using the same client. I have disabled ipv6 on NetBSD tho, but not sure how I'd go about accessing it directly from ipv4... And I'm a few too many beers in to try figure it out tonight :P
z3bra
Grey Hair Nixers
You can try the following:

Code:
curl -4 -sS gopher://g.nixers.net/1/
petch gopher://$(dig +short A g.nixers.net)/1/

You can also try setting up ipv6, that could be the occasion ^^
Ramiferous
Members
(25-09-2020, 12:58 PM)z3bra Wrote: You can also try setting up ipv6, that could be the occasion ^^

I cant argue with this ))

EDIT: fyi, it turns out that this wasn't the issue and it has something to do with phetch as I can reach g.nixers.net using Lynx.