The problem is ensuring that Big Providers (like: Yahoo, Gmail, Hotmail) accepts email sent from your server. Email Deliverability issues are the reason why people tends to buy a paid services.
If you setup own mail server, you must consider at least:
- Setup mail daemon for receiving and sending (like Apache James)
- Setup DNS related things like SPF, DKIM, PTR-record, etc
- Rate limited sending, some provider doesn't like when you throw 1000 email at once.
- Bounce management (e.g. you must stop delivering email to dead account)
- Spam/Virus Filtering (you don't want to receiving too many spam)
Note: Paid services may added several facilities like nice Statistics Dashboard.