If you rented a virtual server at your favorite hosting company then you already have a ready installation of Debian Stretch. If you have a chance to change the partitioning scheme then please create a seperate partition for /var/vmail as described below. Otherwise feel free to skip this page →
Basic installation and partitioning
Installing Debian Stretch is easy. Get a boot medium from the Debian website. The smaller network installer is sufficient – it will download all required packages directly from the internet. Make sure you choose ‘English’ as the installation language. If you have trouble with the server you will more likely find help when google’ing for english error messages.
The only part that takes some patience is when it comes to partitioning your disk. When the installation asks how to partition choose “Manual”. Throughout this tutorial you will store your users’ emails in the /var/vmail partition where the actual emails are stored. The MySQL database will live in /var/lib/mysql and is usually pretty small even for a large number of email accounts – so that won’t require a seperate mount point. Log files live in /var/log.
So my recommendation is:
- / (10 GB, ext4)
- /tmp (1 GB, ext4, optional but recommended)
- swap (1 GB)
- /var/vmail (the remaining space – the more the better, ext4, mounted with the noatime option)
If possible use the logical volume manager (LVM). It gives you a lot of flexibility to move or enlarge the mail partition without interrupting the operation of the server.
Step-by-step installation guide
If you feel uneasy installing Debian then just follow these steps and your installation will be done in a few minutes. After booting from the installation medium you will be greeted by…
Always choose ‘English’ as your installation language. As I said it will be easier to get help on the internet if you get stuck.
Choose your geographical location. This is mostly important for the time zone setting.
Choose the keymap that matches the layout of your keyboard.
The installer prepares further packages that are needed for the installation process:
Some system administrators consider this the most complicated step. Choosing a host name. 🙂
The domain of the server is independent from your mail domains. Just choose any of your domains. You should create a DNS record for that name later.
Think of a good password for the “root” user. You do not have to fear that someone from the internet will be able to access that account. SSH is by default configured to only allow root access from the console or using public key authentication.
Debian has adopted Ubuntu’s habit to avoid direct SSH logins as “root”. So you are asked for the realname, username and password of an aditional user. I will call this user “johndoe” in this guide but of course you can call it anything you like.
Depending on the country you chose you may get asked which time zone you are in.
Now it is time to partition your disk. Choose “Manual”.
Select the disk you want to use. In my example I just have one disk called “sda”:
On a fresh system there are no partitions. So the installer will ask you to create a new partition table:
Select the line reading “FREE SPACE” and press Enter:
Create a new partition:
The first partition is used for the actual operating system. Make it 10 GB:
The type is “Primary”. (Historically you can have four primary partitions. If you need more then the first three are primary and further partitions are logical. We just need four partitions so you can create all of type “primary”.)
The new partition will be created at the beginning of the free space:
Make sure that the root (“/”) partition is set to bootable.
Your first partition is created. Now choose “FREE SPACE” again:
Create another new partition…
This is the “/tmp” partition. Make it 1 GB large:
It is of type “Primary” as usual:
…at the beginning of the free space…
There are no special settings required. Just choose “/tmp” as themount point and you are done…
Again choose “FREE SPACE”…
Create another partition for swap space…
1 GB is more than enough…
The type is “Primary” as usual…
…at the beginning of the remaining space…
As type choose “swap area”:
Now for the final partition in /var/vmail that will later contain the actual emails. We will grant it all the remaining space. So choose “FREE SPACE” one last time…
Create a new partition…
The installer suggests to use all the remaining space. So press Enter to confirm that…
“Primary”…
Set the mount point to “/var/vmail” and add the mount option “noatime”. noatime means “no access time”. Without this option a file system will record any access to a file. This is not necessary to operate a mail server and will spare one file system access per email which slightly speeds up the disk access…
That’s it. All partitions are now created. Finish the partitioning…
The installer shows an overview again. If it looks similar on your screen then choose “Yes”…
After the installer created the partitions it will install basic packages and install the base system.
Depending on your geographical location you will get asked which download server you would like to use. Usually you can just confirm the suggested default…
Unless you need a proxy to access the download servers on the internet you can leave this blank…
The installer will get information from the Debian download server and download further packages…
Participating in the package survey (also known as popcon) is purely voluntary. It records which packages you install to help Debian developers assess which packages are commonly used and deserver special attention…
Now you are getting asked which groups of packages to install. All you need is an “SSH server” (to be able to log in to the system later) and the “standard utilities”…
Your selected packages are getting downloaded and installed…
To make your system bootable the installer will write a boot loader into the beginning of your first disk…
The choice depends on your system. Usually it is the first disk that you use to install the boot loader…
Nearly done…
That is it. The installation is done and by selecting “Continue” your system will reboot.
What will be the drawbacks when using a “standard” partitioning scheme, that is 1 GB swap and rest to / ? I ask because I have an existing server which is partitioned that way and has no LVM for easy resizing…
I think the reason for this partitioning scheme (especially the extra partition for /var/mail) is the fact, that he sets noatime option for this partion. As mentioned in the tutorial:
‘…noatime means “no access time”. Without this option a file system will record any access to a file. This is not necessary to operate a mail server and will spare one file system access per email which slightly speeds up the disk access…’
So in my opinion that’s quite optional and not a must…
@Alad: Just keep it that way. Using LVM is nice to create snapshots for backup. Or to resize partitions. Or to move logical volumes across physical volumes in case you migrate to larger RAIDs. Do not worry.
Thanks!
Perhaps it should be noted that the partitioning scheme where GPT is involved (many desktop computers manufactured in the last five years support UEFI) is somewhat different. GPT boots from a “EFI System” partition and then onto the root Linux partition. That being the case, the “Bootable flag” does NOT get set on the root partition.
I usually opt for the automatic partitioning, delete all the Linux partitions and then re-add them as described. GPT puts a couple of sectors of free space up front and then the EFI System partition otherwise everything looks familiar.
typo – “and deserver special”
Hi, I have a question, would it be advisable to create a “/usr/local” partition if you plan to install different services that are not part of Debian?
Yes, that’s where you should put software that does not come with APT/DEB packages. See https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
The email data of the mail server however should live unter /var/something or /srv
Ok, Thanks!
If I have 1 TB disk and 8 GB of RAM space, it’s still good to use 10GB for system, 1GB for SWAP, and 1GB for Temp? And other space (980 GB) for mail?
I saw no mention of what architecture to install. I installed i386. Then when I tried to install rspamd I found it does not seem to be available for i386. Or did I miss something?