-- Leo's gemini proxy

-- Connecting to bbs.geminispace.org:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; charset=utf-8

I've added an SMTP <=> misfin bridge service in the python implementation. Emails sent to the SMTP service will be delivered to the gembox of the recipient(s) if they have a misfin identity on the server. Message delivery is rate-limited, only non-multipart text messages accepted.


Dunno if that's useful to anyone. If you run a big misfin mailserver and you want compatibility with SMTP, it's just 2 lines to add in the config file ..


https://gitlab.com/cipres/misfin


Posted in: s/misfin

๐Ÿ˜บ gemalaya

2023-10-16 ยท 7 months ago ยท ๐Ÿ‘ TKurtBond


31 Comments โ†“


๐Ÿ€ gritty ยท 2023-10-16 at 16:02:

that's pretty neat


๐Ÿ˜Ž flipperzero ยท Feb 04 at 08:49:

Hey @gemalaya been a lil bit, I decided to give this another go after getting things resituated with my server.


Anytime I try to run "sudo misfin serve hashnix"

After either doing "sudo misfin server-init hashnix hashnix.club" or "sudo misfin server-init hashnix 170.75.170.116"


I seem to only be getting this result, here's the log in verbose, as preformatted block.


{
    "service": {
        "main": {
            "listen_on": "hashnix.club:1958",
            "cert": "server.pem",
            "ratelimit": {
                "anonymous": {
                    "req_limit": 30,
                    "duration": 60
                },
                "verified": {
                    "req_limit": 100,
                    "duration": 60
                }
            }
        }
    }
}
DEBUG:misfin:Starting misfind at 2024-02-04 08:44:48.855202
DEBUG:misfin:OS error: [Errno 99] Cannot assign requested address

I'm not really sure what it is that could be happening, as I've tried with both my ipv4 address as well as adding my ipv6 address to my hosts file for the hashnix.club domain. Do you reckon what it is that could be causing any interference? I have ufw entries for 1958 on both ipv4 and ipv6 as well so IDK if it's anything to do with ports being blocked or something blocking the executable from running a server on that particular domain/address. Thanks for your help always, I hope alls well with ya.


๐Ÿ˜บ gemalaya [OP] ยท Feb 04 at 18:32:

@flipperzero Hi there ! I assume that misfin has been installed "globally" (probably in /usr/local). You're using sudo so the root user will run misfin from there.


I've never run into the "cannot assign requested address" problem with misfin. I've never run it as root though (1958 is not a privileged port).


I see that "hashnix.club" has both IPv4 and IPv6 addresses. The first thing i'd check is that nothing's listening on port 1958, just in case. Also:


- try to use "0.0.0.0:1958" in listen_on, or "127.0.0.1:1958"

- set "use_ipv6 = true" in [service.main] when you use "hashnix.club:1958"


๐Ÿ˜Ž flipperzero ยท Feb 04 at 19:03:

@gemalaya hahaahahahahahahahahahahahaha!!


Cipres, gemalaya..... give it a go now. :)


โ€” Hashnix.club Misfin Mail -- First Ever Misfin Host!


๐Ÿ˜Ž flipperzero ยท Feb 04 at 19:09:

if everything is going well, please go ahead, send me a message at userfxnet@hashnix.club via the gemini frontend :D


๐Ÿ˜บ gemalaya [OP] ยท Feb 04 at 19:35:

@flipperzero Just registered an account and sent you a message :) I think you're running in ipv6 right ? did you set "use_ipv6" to fix it ? Nice job.


๐Ÿ˜Ž flipperzero ยท Feb 04 at 20:21:

@gemalaya you have? Ok, we've made it this far, so let's see what else we can hash out aha.


BTW just to confirm, yes, as you said I went ahead and added the use_ipv6 tag under the service main field. At this point, anytime I try to fetch for the gembox from frontend, the /mail/fetch URL seems to produce a blank. When I try to use gembox-read from commandline, I get this.


Traceback (most recent call last):
  File "/tmp/.mount_misfincAgtKn/opt/python3.9/bin/misfin", line 8, in <module>
    sys.exit(run())
  File "/tmp/.mount_misfincAgtKn/opt/python3.9/lib/python3.9/site-packages/misfin/cli.py", line 465, in run
    return cli()
  File "/tmp/.mount_misfincAgtKn/opt/python3.9/lib/python3.9/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "/tmp/.mount_misfincAgtKn/opt/python3.9/lib/python3.9/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/tmp/.mount_misfincAgtKn/opt/python3.9/lib/python3.9/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/tmp/.mount_misfincAgtKn/opt/python3.9/lib/python3.9/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/tmp/.mount_misfincAgtKn/opt/python3.9/lib/python3.9/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/tmp/.mount_misfincAgtKn/opt/python3.9/lib/python3.9/site-packages/misfin/cli.py", line 449, in gembox_read
    from misfin import gemboxreader
  File "/tmp/.mount_misfincAgtKn/opt/python3.9/lib/python3.9/site-packages/misfin/gemboxreader.py", line 8, in <module>
    from .letter import GemBox
ImportError: cannot import name 'GemBox' from 'misfin.letter' (/tmp/.mount_misfincAgtKn/opt/python3.9/lib/python3.9/site-packages/misfin/letter.py)

Refreshing the page on it's own, it says I have 0 messages in my inbox right now, which I know must be untrue if the gembox produced and you were able to send to me successfully. Any idea what could be happening?


๐Ÿ˜Ž flipperzero ยท Feb 04 at 20:44:

@gemalaya what's the address you registered with? I'll see if I can send a message, and in turn see if you're able to fetch the gembox so you can find and read that message then reply to it.


๐Ÿ˜บ gemalaya [OP] ยท Feb 04 at 20:58:

@flipperzero I registered as cipres@hashnix.club


๐Ÿ˜บ gemalaya [OP] ยท Feb 04 at 21:07:

@flipperzero Just checked the gemboxreader's code, the class name on line 8 is indeed wrong, will fix that ..


Are you still running it with sudo ? I advise against running it as root. Do you see any errors, tracebacks in the logs ? What does "find <srvdir>" show ? You should see "cipres.pem" in the identities directory, and some folders in the "gemboxes" directory.


๐Ÿ˜Ž flipperzero ยท Feb 04 at 21:18:

@gemalaya let me know once it's newly compiled again in repo or appimage, I'll install it ASAP.


ATM the server is down but you're right, I'm going to go ahead and chmod + chown the executable to a dedicated daemon/user setup.


๐Ÿ˜Ž flipperzero ยท Feb 04 at 21:22:

last running i hadn't noticed anything too significant save for this popping up every now and then


INFO:pyrate_limiter:(sync)leaking bucket: <pyrate_limiter.buckets.in_memory_bucket.InMemoryBucket object at 0x7fc01b128430>, 0 items
INFO:pyrate_limiter:(sync)leaking bucket: <pyrate_limiter.buckets.in_memory_bucket.InMemoryBucket object at 0x7fc01b128d30>, 8 items

I'm not really sure what it could be alluding to or mean in this instance though. It prints back a value of conclusively set items which seem to vary between intervals.


๐Ÿ˜บ gemalaya [OP] ยท Feb 04 at 21:38:

@flipperzero Those periodic messages are about the requests rate limiting. In the config file you can configure how many requests per minute a client is allowed to send to the server.


Indeed, chown -R the service directory and run it as a user, that could be the reason why the messages can't be stored.


๐Ÿ˜บ gemalaya [OP] ยท Feb 04 at 21:46:

The rate limiting is based on this algorithm:


โ€” https://en.wikipedia.org/wiki/Leaky_bucket


When you see "8 items" in the logs, it means that there are 8 requests in the bucket that are being handled. The default limit is 100 requests / minute (per misfin sender identity).


๐Ÿ˜Ž flipperzero ยท Feb 04 at 22:25:

@gemalaya the server is back up, and I've sent a message to your address, it should be good to go for another test that hopefully yields better results


๐Ÿ˜บ gemalaya [OP] ยท Feb 04 at 23:12:

@flipperzero Do you see any errors in the logs ? When i send with the CLI he server replies code 60 (certificate required). I gotta go, i'll think about what this could be related to but, right now i'm thinking that it could be related to ipv6, your misfind only listens on an ipv6 socket, and all the tests with the implementation were with ipv4 connections.


Does it start with listen_on = "0.0.0.0:1958" WITHOUT setting "use_ipv6" ? Or with listen_on = "170.75.170.116:1958" (seems to be hashnix's public ip) ?


๐Ÿ˜Ž flipperzero ยท Feb 04 at 23:21:

@gemalaya you have a happy sunday. this is that popped up fortunately, that now there is time to work out any glitches and refine from there. expect word about the server within the next hour. thanks always


๐Ÿ˜Ž flipperzero ยท Feb 05 at 00:13:

@gemalaya Aaaahh wow. I see now. Yeah it seems to be working just fine with localnet addresses like 0.0.0.0 and it loads over the domain name without issue from external connections. Wow!


BTW I wasn't able to find anything in any active misfind logs concerning that page you've run into, though i'll let you know that I have run into that page when I first attempted to send a message. I just went and tried again and it went through without issue. I also notice it happens when a message exceeds or barely reaches character length limit right at peak.


๐Ÿ satch ยท Feb 05 at 01:15:

@flipperzero if you would be interested in setting up Skylab as an alternative misfin frontend let me know and I can help make sure it works smoothly. I think it would be a great fit!


๐Ÿ˜Ž flipperzero ยท Feb 05 at 01:20:

@satch I've been thinking the same, matter of fact, i'd be happy to test out the server! I'll follow the steps and see if I'm able to have both broadcast correspondingly over different ports if possible. I'll let you know within the next few hours thanks :D


๐Ÿ satch ยท Feb 05 at 01:25:

btw I made a misfin account on hashnix.club and it works to send to myself but I get a "60 certificate required" error when I try to send mail back :/


Also right now adding accounts is manual for Skylab which might not be great for your setup, but it shouldn't be too hard to automate by editing the bash script included in the Git repository.


๐Ÿ˜Ž flipperzero ยท Feb 05 at 01:28:

@satch hmm this might require further analyzing.

Imma send a message to your address (satch@hashnix.club?) and we'll see what goes on from there. The cert is assigned to root page as well? Also, is this at minimal character length or at max limit? Lmk, I'll check in more the next couple hours.


๐Ÿ satch ยท Feb 05 at 01:42:

Hey sorry it's satchlj@hashnix.club


๐Ÿ satch ยท Feb 05 at 01:55:

Also let me clarify, the 60 error is not on the gemini frontend but the misfin response status when i try sending mail to satchlj@hashnix.club from mail@satch.xyz


And it's minimal length, nowhere near max


๐Ÿ satch ยท Feb 05 at 02:11:

Update: I modified my client to treat 60 like a 59 error and it sending works now. @gemalaya please fix your status codes because I am receiving a certificate error when I send a Misfin(C) request instead of a 59 Malformed request which my client was set up to handle.


๐Ÿ satch ยท Feb 05 at 02:19:

But NOW I'm getting a 50 Cannot allocate mailbox error which I don't know what to make of


๐Ÿ˜Ž flipperzero ยท Feb 05 at 04:03:

@satch hmm damn that's strange, I hope that's not happening to other people's mailboxes rn :S


๐Ÿ˜บ gemalaya [OP] ยท Feb 05 at 10:38:

@satch Hey, thanks. Yeah i saw in the code where it's sending the 60 error, fixing that, it should send a 59 if it can't handle the request's format.


๐Ÿ˜บ gemalaya [OP] ยท Feb 05 at 11:34:

@satch @flipperzero Just pushed the fix, it will send a 59 error now when it can't handle the request. I'll merge the misfinC branch soon, sorry i didn't have much time to work on this lately.


๐Ÿ˜Ž flipperzero ยท Feb 07 at 01:39:

@gemalaya this is for whenever you see this, but a user on station is having their own personal complications with creating an account over the host yet I have a feeling they might be going about it the wrong way lol. here's the text lmk when you read it if you hmu on misfin or on irc.


โ€” misfin issues


๐Ÿ˜Ž flipperzero ยท Feb 07 at 01:40:

src of thread:

โ€” Station: hashnix misfin host

-- Response ended

-- Page fetched on Sun May 19 14:32:59 2024