Smoke testing is the basic kind of testing that you perform on each build that you get. It is generally defined as "testing the testability of the software". Here, a typical smoke test scenario would be something like: Install the application, launch it, open a page, add an item, list the items, navigate to so and so page, visit the home page again and logout.
System testing is very vast and has quite many tests revolving around it like "usability tests, performance tests, GUI tests, end-to-end tests, installation tests" etc. System testing is testing the complete the domain or the complete application with user simulated data or positive set of data.