Train services have been steadily improving in recent years. Domestic routes are run by Elron (www.elron.ee) but it's also possible to travel between Tallinn and Narva on the Russian-bound services run by GoRail (www.gorail.ee).
The major domestic routes:
Tallinn–Rakvere (five daily), with four continuing to Narva
Tallinn–Tartu (11 daily)
Tallinn–Viljandi (five daily)
Tartu–Sangaste–Valga (four daily)