WARNING: This article is in a user sandbox, indicating it is a rough draft, and as such, is likely incomplete, contains buggy and insecure configurations, and is subject to substantial and frequent changes.
Sending and receiving email is more complicated than most people realize. Email operates on very old standards and retains many essentially obsolete and anachronistic options to the point that, viewed as a whole, results in what is effectively a patched-up patchwork of patches, with configuration options that, if set, should horrify admins. Novice and enthusiast admins typically have great difficulty even figuring out what packages to install, and even after that it can seem nearly impossible to get everything operating in some coordinated manner. This is why most experienced admins recommend not maintaining a mail server, but for the hard-core do-it-yourselfer, such warnings are brashly overlooked.
That being said, admins are strongly encouraged to carefully read all of the articles in this series before deciding to move forward on creating a mail server. It is also strongly recommended to perform initial installs on a test server that can be easily backed up or imaged, and to perform such frequently under the wisdom of our elders to "save early, save often".
Fully-functional mail server
A fully-functional mail server performs nearly all the tasks a mail server can perform, including sending email, receiving email and checking for spam for authenticated clients. Even with a guide, it typically takes much longer to to set up than creating a web server from scratch. To get started on setting one up, see Fully-functional mail server with Postfix, Dovecot and MySQL.
Transactional mail server
A fully-functional mail server is often not necessary as many admins are simply looking for a way to send things such as transactional email (e.g. new account confirmation, topic replies, password reset, etc.) and newsletters while having much less need for the receiving of emails. Setting up for sending transactional email can be as simple as installing a single package, though such a minimal install may present issues, so additional options, such as using an outside sending service, may be more practical. To configure a server to support sending email, see the transactional mail server article.