status-go/mailserver
Andrea Maria Piana 799bd93451 Memove mailserver registry and update ierc20 contract bindings
This commit removes the mailserver contract registry, as not used
anymore, and upgrade the ERC20 contract bindings.
2021-07-20 10:57:38 +02:00
..
migrations Memove mailserver registry and update ierc20 contract bindings 2021-07-20 10:57:38 +02:00
cleaner.go Add postgres 2019-05-15 11:01:34 +02:00
cleaner_test.go Handle connection state 2021-05-21 07:22:58 +02:00
db_key.go Create a home submodule for Eth node bridges- Rename StatusBackend to GethStatusBackend 2019-11-27 17:02:09 +01:00
db_key_test.go Use goimports instead of gofmt 2020-01-06 10:17:23 +01:00
limiter.go mailserver: refactor mailserver's rate limiter (#1341) 2019-01-10 17:07:16 +01:00
limiter_test.go mailserver: refactor mailserver's rate limiter (#1341) 2019-01-10 17:07:16 +01:00
mailserver.go Handle connection state 2021-05-21 07:22:58 +02:00
mailserver_db.go set archived_envelopes_total on start based on DB count 2020-04-09 13:08:14 +02:00
mailserver_db_leveldb.go Remove whisper 2021-05-21 07:22:58 +02:00
mailserver_db_postgres.go Remove whisper 2021-05-21 07:22:58 +02:00
mailserver_db_postgres_test.go Adding postgres docker to jenkins test (#2225) 2021-06-09 11:16:04 +01:00
mailserver_test.go Handle connection state 2021-05-21 07:22:58 +02:00
metrics.go fix typo in mailserver archived envelope failures metric 2021-01-29 16:33:28 +01:00
README.md Sync messages in a loop until error or no cursor (#1502) 2019-06-26 18:17:41 +02:00
request.go Remove whisper 2021-05-21 07:22:58 +02:00

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=[]