I have an old server lying around and I am thinking of using it as an internal telephone server. Its main use would be to set up a 1 to 1 telephone system that could be used internally to connect to different users in different offices.
I have looked at software like Asterisk, but it seems that this is mainly for external telephone systems.
Is this possible to do with Asterisk (or other software) or is this not possible without involving a VOIP company?
Asterisk will be able to easily do what you need. There's no reason it can't be used for an internal-only telephone system. If it will truly be internal-only, there's no need to involve a VoIP company for service.
Additionally, I will add that learning asterisk, while fun, is a pretty steep learning curve. Unless you have very specific demands or a lot of spare time on your hands, I'd use one of the many asterisk distributions that come pre-configured with a nice GUI, control panel, etc. I typically frown on GUI control panels (cPanel, Webmin, etc.), but in this case I feel it's a good alternative. I've used Trixbox and Elastix, both of which work quite well. They won't do anything you couldn't do manually with a vanilla asterisk install, but they'll make it a lot easier to implement more complex call routing, applications, IVR stuff, etc.