Edited 17 hours ago by ExtremeHow Editorial Team
DebianEmail ServerNetworkingServer SetupLinuxOpen SourceSystem AdministrationCLIITSoftware
This content is available in 7 different language
Setting up an email server can be a complex task, but with Debian, it can be simplified thanks to its rich repository of software packages. In this guide, we will cover the steps required to implement a basic email server on a Debian system. We will use widely recognized applications like Postfix for sending emails and Dovecot for receiving emails. While this setup will be suitable for most basic needs, remember that large-scale deployments may require additional setup details and rigor.
Before we begin, make sure you have a Debian server running. This server should have:
Log in to the server using SSH:
ssh root@your-server-ip
Start by updating the package index and upgrading installed packages. This ensures you're starting with a fully up-to-date system:
apt update && apt upgrade -y
Next, install the necessary packages for mail transport and receipt using Postfix and Dovecot. Type the following commands in your terminal:
apt install postfix dovecot-core dovecot-imapd mailutils -y
Postfix will be used as a mail transfer agent (MTA). It is responsible for sending emails to external servers and receiving incoming emails. During installation, you will be asked to select the "General type of mail configuration". Select the "Internet Site" option. When prompted for the "System mail name", enter your domain name (for example, yourdomain.com
).
Now, we need to adjust the Postfix configuration file. Open the main configuration file using a text editor like nano:
nano /etc/postfix/main.cf
Add or modify these lines in the file to use your domain and ensure proper mail delivery:
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = /etc/mailname
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/
Save the changes and restart Postfix to apply the modifications:
systemctl restart postfix
Dovecot will handle receiving and retrieving mail. It plays the role of an IMAP and POP3 server. Here are the steps to configure Dovecot:
10-mail.conf
configuration file:
nano /etc/dovecot/conf.d/10-mail.conf
Uncomment the following line and make sure it looks like this:
mail_location = maildir:~/Maildir
Edit the 10-auth.conf
configuration file to allow both password storage methods for Dovecot. This can be useful in some circumstances:
nano /etc/dovecot/conf.d/10-auth.conf
Uncomment this line to allow plain text login (this is usually safer if you will be using SSL/TLS which we will configure later):
disable_plaintext_auth = no
Edit the 10-master.conf
configuration file to configure the path and permissions:
nano /etc/dovecot/conf.d/10-master.conf
Make sure the following lines are configured to allow proper control:
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
}
Finally, edit 10-ssl.conf
to activate SSL (Secure Sockets Layer), which encrypts communications between your server and email clients:
nano /etc/dovecot/conf.d/10-ssl.conf
Make sure the following line is set as is:
ssl = required
Save and close the file, then restart Dovecot:
systemctl restart dovecot
In this setup, emails are stored on the server and accessed through a mail client. For this, you need to create an account for each user. Use the following command to add a new user. This example creates the user 'alice':
adduser alice
Configure the password for the new user as prompted. Repeat this step for each user who needs a mailbox.
After completing the configuration steps, you should verify that the server is processing incoming and outgoing emails correctly.
Send a test email to one of your accounts using the mail
command from a non-root user account on your server:
echo "This is a test email from Postfix!" | mail -s "Test Postfix" alice@yourdomain.com
Check if the email was delivered by logging into the user account and using the following:
mail
For more complex email clients (such as those on desktops or smartphones), configure them to connect to the server using the account information you set up. Make sure the IMAP port is set to 143 or port 993 when using SSL/TLS.
Although we have a working email server, security is important, especially when exposed to the Internet. Here are some steps:
Use ufw
to manage firewall rules. If it doesn't exist, install it, enable it, and allow the required ports:
apt install ufw
ufw allow OpenSSH
ufw allow 25/tcp # SMTP
ufw allow 143/tcp # IMAP
ufw allow 587/tcp # Submission
ufw allow 993/tcp # IMAPS
ufw enable
SpamAssassin can filter spam from your inbox. Install it and configure Postfix to pass the messages through:
apt install spamassassin spamc
Enable the SpamAssassin service:
systemctl enable spamassassin
systemctl start spamassassin
This is a basic setup for filtering spam. See the specific SpamAssassin documentation for advanced setup.
Setting up a mail server involves managing many software components and configurations. While you now have a basic Postfix-Dovecot mail server, remember to regularly check logs, update software, and maintain secure configurations. As your needs evolve, consider implementing additional measures such as user quota limits, advanced spam filtering systems, and backups for your mail data. It is also worth regularly reviewing your mail server's presence on IP blacklists, which can occur if your server is compromised or misconfigured.
If you find anything wrong with the article content, you can