Een mailserver is een systeem dat zorgt voor de correcte aflevering van e-mails tussen verzender en ontvanger. Wanneer je bijvoorbeeld een e-mail verstuurt via Gmail, gebruik je de mailserver van Google.
Een mailclient is het programma dat je gebruikt om e-mails te lezen, verzenden en opslaan. Voorbeelden hiervan zijn Microsoft Outlook, Thunderbird en andere clients.
Choose your server now!
De uitgaande mailserver gebruikt het SMTP-protocol (Simple Mail Transfer Protocol).
Het heeft twee hoofdrollen:
Controleren van de verzendconfiguratie van de afzender en toestaan dat het bericht wordt verzonden.
Het bericht afleveren en de reactiecode verwerken.
SMTP gebruikt de poorten 25 (onversleuteld) en 465 (versleuteld).
POP3 is een protocol voor het ontvangen van e-mails. Het stelt de mailclient in staat om verbinding te maken met de server en berichten lokaal te downloaden, zodat ze offline beschikbaar zijn. Standaard worden berichten na het downloaden van de server verwijderd (hoewel je ervoor kunt kiezen een kopie te bewaren).
POP3 gebruikt de poorten 110 (onversleuteld) en 995 (SSL/TLS-versleuteld).
Net als POP3 wordt IMAP gebruikt om e-mails te ontvangen, maar het laat je berichten rechtstreeks op de server beheren, zonder ze te downloaden. Dat is handig als je e-mail vanaf meerdere apparaten wilt bekijken.
De meest voorkomende reden is:
“Om mijn eigen domeinnaam te gebruiken voor mijn e-mailadres.”
Dat is waar, maar niet het hele verhaal. Je kunt je domein gebruiken zonder een eigen mailserver te beheren. Veel providers laten je jouw domein koppelen aan hun mailservers. Het voordeel: ze hebben al een geconfigureerde SMTP-server, inclusief spamfilters en versleuteling. Je hoeft alleen de NS-records (Name Server-records) goed in te stellen — veel eenvoudiger dan zelf alles bouwen.
Nadelen van externe diensten:
Minder controle: je hebt geen volledige invloed op het gedrag van het mailsysteem.
Verzendlimieten: elke provider heeft limieten op hoeveel berichten je per uur of dag kunt versturen. Dit kan lastig zijn voor zakelijk gebruik of nieuwsbrieven.
Als je een eigen mailserver bouwt, moet je zelf zorgen voor:
Mailboxquota en verzendlimieten
Back-ups om dataverlies te voorkomen
Bescherming tegen spam-blacklists
Toegangsrechten voor meerdere gebruikers
Een eigen mailserver geeft meer controle, maar vereist meer technische kennis en verantwoordelijkheid.
In deze handleiding laten we zien hoe je een eigen mailserver opzet met een Hostman-cloudserver en Ubuntu 20.04 als besturingssysteem.
De server zal ondersteuning bieden voor versleuteling, antispambeveiliging en een webgebaseerd beheerpaneel voor accountbeheer.
Schakel over naar superuser-modus:
sudo su
Werk de pakketten bij:
apt update && apt upgrade
Controleer of de hostnaam overeenkomt met je domein:
hostname
Zo niet:
hostnamectl set-hostname mail.hostname.com
Installeer chrony voor tijdsynchronisatie en stel de tijdzone in:
apt install chrony
timedatectl set-timezone Europe/Athens
Bekijk beschikbare tijdzones:
timedatectl list-timezones
Schakel chrony in:
systemctl enable chrony
Gebruik iptables om de volgende poorten open te zetten:
25, 465 — SMTP (verzenden)
110, 995 — POP3 (ontvangen)
143, 993 — IMAP (ontvangen)
iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995,80,443 -j ACCEPT
Maak de regels persistent:
netfilter-persistent save
Postfix is een open-source Mail Transfer Agent (MTA) met een modulaire architectuur.
Installeer Postfix en de MySQL-module:
apt install postfix postfix-mysql
Tijdens de installatie:
Kies Internet Site
Voer je FQDN (volledig gekwalificeerde domeinnaam) in
Maak een gebruiker en groep aan voor het beheren van mail:
addgroup -gid 1080 vmail
adduser --home /home/mail -gid 1080 -uid 1080 vmail
Controleer de rechten:
ll /home
Open het hoofdbestand:
nano /etc/postfix/main.cf
Voeg toe of wijzig:
# Domains we accept mail for
mydestination = localhost.$mydomain, localhost, localhost.localdomain
# Postfix protocol
inet_protocols = ipv4
# Path to the public certificate
smtpd_tls_cert_file = /etc/ssl/mail/public.pem
# Path to the private certificate
smtpd_tls_key_file = /etc/ssl/mail/private.key
Then, add additional options required for Postfix to function correctly:
# Mail storage location
virtual_mailbox_base = /home/mail
# Path to alias maps
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
# Domain storage format
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
# Mailbox storage format
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
# Minimum virtual user ID
virtual_minimum_uid = 1080
# UID for the main user handling mail
virtual_uid_maps = static:1080
# GID for the group handling mail
virtual_gid_maps = static:1080
# Register Dovecot as the mail delivery agent
virtual_transport = dovecot
# Enable secure authentication
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
# Enable TLS encryption for outgoing SMTP connections
smtp_use_tls = yes
# Enable TLS support for incoming connections
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes
Alias:
nano /etc/postfix/mysql_virtual_alias_maps.cf
Voeg de volgende inhoud toe:
user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Domeinen:
nano /etc/postfix/mysql_virtual_domains_maps.cf
Mailboxen:
user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%u'
nano /etc/postfix/mysql_virtual_mailbox_maps.cf
Toevoegen:
user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
master.cf aanpassen
nano /etc/postfix/master.cf
Voeg toe:
submission inet n - n - - smtpd
-o smtpd_tls_security_level=may
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=/var/spool/postfix/private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
Maak de map aan:
mkdir -p /etc/ssl/mail
Genereer certificaten:
openssl req -new -x509 -days 1000 -nodes -out /etc/ssl/mail/public.pem -keyout /etc/ssl/mail/private.key -subj "/C=CY/ST=Limassol/L=Limassol/O=Global Security/OU=IT Department/CN=mail.devnullhost.com"
Start Postfix:
systemctl enable postfix && systemctl restart postfix
Dovecot is een open-source IMAP/POP3-server.
Installeer het samen met de MySQL-module:
apt install dovecot-imapd dovecot-pop3d dovecot-mysql
Open:
nano /etc/dovecot/conf.d/10-mail.conf
Specificeer in het bestand de directorystructuur voor het opslaan van e-mail. We gebruiken een hiërarchie van domein → gebruiker:
mail_location = maildir:/home/mail/%d/%u/
Configureer in hetzelfde bestand de authenticatiemethode:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
group = vmail
}
}
service stats {
unix_listener stats-reader {
user = vmail
group = vmail
mode = 0660
}
unix_listener stats-writer {
user = vmail
group = vmail
mode = 0660
}
}
Bewerk het Dovecot-authenticatieconfiguratiebestand:
nano /etc/dovecot/conf.d/10-auth.conf
SSL-instellingen:
nano /etc/dovecot/conf.d/10-ssl.conf
Voeg het volgende toe aan dit bestand:
ssl = required
ssl_cert = </etc/ssl/mail/public.pem
ssl_key = </etc/ssl/mail/private.key
Automatische mailbox-aanmaak:
nano /etc/dovecot/conf.d/15-lda.conf
Voeg de volgende regel toe:
lda_mailbox_autocreate = yes
MySQL-verbinding:
nano /etc/dovecot/dovecot-sql.conf.ext
Voeg de volgende regels toe om MySQL te configureren:
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfixPa$$w0rd
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1080 AS uid, 1080 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1080 AS uid, 1080 AS gid FROM mailbox WHERE username = '%u'
Open het hoofdconfiguratiebestand van Dovecot om de serverinterface in te stellen:
nano /etc/dovecot/dovecot.conf
Voeg in dit bestand de volgende regel toe om op alle beschikbare netwerkinterfaces te luisteren:
listen = *
Activeer Dovecot:
systemctl enable dovecot && systemctl restart dovecot
Vereisten: webserver, PHP en MySQL.
Installeer de benodigde PHP-extensies:
apt install php-mysql php-mbstring php-imap
PostfixAdmin downloaden:
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz
Maak een directory voor PostfixAdmin en pak de archiefinhoud uit:
mkdir -p /var/www/html/postfixadmin && tar -C /var/www/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1
Maak vervolgens een map voor het opslaan van sjablooncaches:
mkdir /var/www/html/postfixadmin/templates_c
Stel de juiste machtigingen in voor de webserver om toegang te krijgen tot de map PostfixAdmin:
chown -R www-data:www-data /var/www/html/postfixadmin
Maak de database aan:
mysql -u root
CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfixPa$$w0rd';
exit;
Configuratiebestand:
nano /var/www/html/postfixadmin/config.local.php
De inhoud van het bestand zou moeten zijn:
<?php
$CONF['configured'] = true;
$CONF['default_language'] = 'en';
$CONF['database_password'] = 'postfixPa$$w0rd';
$CONF['emailcheck_resolve_domain']='NO';
?>
Open /postfixadmin/public/setup.php, genereer de hash van je wachtwoord, voeg deze toe aan het bestand en log in via /postfixadmin/public/login.php.
nano /var/www/html/postfixadmin/config.local.php
In de webinterface:
Verbindingsinstellingen voor clients:
|
Protocol |
Poort |
Beveiliging |
|
IMAP |
143 |
STARTTLS |
|
POP3 |
110 |
STARTTLS |
|
SMTP |
25 |
STARTTLS |
Gebruikersnaam en wachtwoord: zoals ingesteld bij het aanmaken van de mailbox.
Choose your server now!
In deze gids heb je geleerd hoe je een zelfgehoste mailserver opzet en configureert. Met een eigen mailserver krijg je volledige controle: je kunt onbeperkt mailboxen aanmaken, aliassen beheren en gebruikersinstellingen aanpassen.
Dit alles kan worden gerealiseerd met een Hostman-cloudserver, door stap voor stap deze instructies te volgen voor een veilige en stabiele e-mailomgeving.