status-go/mailserver
Mykhailo Prakhov 3959948c4c
chore: fix ban/unban flow and delete all messages feature (#4743)
feat: delete all messages for banned member and ban/unban AC notifications
2024-02-22 11:25:13 +01:00
..
migrations chore: fix ban/unban flow and delete all messages feature (#4743) 2024-02-22 11:25:13 +01:00
README.md
cleaner.go
cleaner_test.go [Fixes: #2328] Fixes iterator on leveldb 2021-08-24 15:40:40 +02:00
db_key.go
db_key_test.go
limiter.go
limiter_test.go
mailserver.go [Fixes: #2328] Fixes iterator on leveldb 2021-08-24 15:40:40 +02:00
mailserver_db.go [Fixes: #2328] Fixes iterator on leveldb 2021-08-24 15:40:40 +02:00
mailserver_db_leveldb.go mailserver: add DB query metrics 2022-07-26 17:23:54 +02:00
mailserver_db_leveldb_test.go test: use `T.TempDir` to create temporary test directory (#2746) 2023-04-26 21:39:51 +01:00
mailserver_db_postgres.go mailserver: add DB query metrics 2022-07-26 17:23:54 +02:00
mailserver_db_postgres_test.go Turning the tests back on (#2519) 2022-02-03 20:37:41 +00:00
mailserver_test.go Revert "test: bump go-libp2p" 2024-01-18 20:29:33 +00:00
metrics.go mailserver: add DB query metrics 2022-07-26 17:23:54 +02:00
request.go

README.md

MailServer

This document is meant to collect various information about our MailServer implementation.

Syncing between mail servers

It might happen that one mail server is behind other due to various reasons like a machine being down for a few minutes etc.

There is an option to fix such a mail server:

  1. SSH to a machine where this broken mail server runs,
  2. Add a mail server from which you want to sync:
# sudo might be not needed in your setup
$ echo '{"jsonrpc":"2.0","method":"admin_addPeer", "params": ["enode://c42f368a23fa98ee546fd247220759062323249ef657d26d357a777443aec04db1b29a3a22ef3e7c548e18493ddaf51a31b0aed6079bd6ebe5ae838fcfaf3a49@206.189.243.162:30504"], "id":1}' | \
    sudo socat -d -d - UNIX-CONNECT:/docker/statusd-mail/data/geth.ipc
  1. Mark it as a trusted peer:
# sudo might be not needed in your setup
$ echo '{"jsonrpc":"2.0","method":"shh_markTrustedPeer", "params": ["enode://c42f368a23fa98ee546fd247220759062323249ef657d26d357a777443aec04db1b29a3a22ef3e7c548e18493ddaf51a31b0aed6079bd6ebe5ae838fcfaf3a49@206.189.243.162:30504"], "id":1}' | \
    sudo socat -d -d - UNIX-CONNECT:/docker/statusd-mail/data/geth.ipc
  1. Finally, trigger the sync command:
# sudo might be not needed in your setup
$ echo '{"jsonrpc":"2.0","method":"shhext_syncMessages","params":[{"mailServerPeer":"enode://c42f368a23fa98ee546fd247220759062323249ef657d26d357a777443aec04db1b29a3a22ef3e7c548e18493ddaf51a31b0aed6079bd6ebe5ae838fcfaf3a49@206.189.243.162:30504", "to": 1550479953, "from": 1550393583, "limit": 1000}],"id":1}' | \
    sudo socat -d -d - UNIX-CONNECT:/docker/statusd-mail/data/geth.ipc

You can add "followCursor": true if you want it to automatically download messages until the cursor is empty meaning all data was synced.

Debugging

To verify that your mail server received any responses, watch logs and seek for logs like this:

INFO [02-18|09:08:54.257] received sync response count=217 final=false err= cursor=[]

And it should finish with:

INFO [02-18|09:08:54.431] received sync response count=0 final=true err= cursor=[]