There may already be some builtin option that allows a client to reconnect when a timeout occurs but I was too lazy to look through the man pages. So I came up with line of bash commands that will do just that:
$ while [ 1 ]; do ssh email@example.com; sleep 120; done
This will keep reconnecting to the host 120 seconds after a connection drops out for whatever reason. This is specially handy to make sure that a remote tunnel stays open. Right now I use it to reach a single host (A,http) on a remote private network from home (B) via another machine in the private network (C) and an intermediate SSH server (D):
[user@C ~]$ while [ 1 ]; do ssh -R someport:A:80 user@D; sleep 120; done
[user@B ~]$ ssh -L 80:localhost:someport user@D
[root@B ~]# echo "127.0.0.1 A" >> /etc/hosts
Now it is possible to type “http://A” and visit the site from B as easily as from within the remote private network.