Install and Configure Dovecot
We hebben Postfix geinstalleerd en gaan nu verder met Dovecot, de IMAP/POP server. Dovecot doet echter nog veel meer dan dat.
Goed om te weten
- Dovecot krijgt een locatie waar de binnenkomende mail staan, van Postfix.
- Er wordt een apart ‘system user account’ gemaakt voor Dovecot zodat Dovecot kan lezen en schrijven in die mail-storage-diretory. Wij gebruiken de gebruikersnaam ‘vmail’.
- Dovecot maakt secure IMAP en POP services mogelijk om clients toegang te geven tot hun inbox.
- Dovecot maakt een SASL authenticatieservice beschikbaar voor Postfix via een unix-socket. Dezelfde gebruikersnaam/wachtwoord combinatie werkt met zowel Postfix(SMTP) als Dovecot (IMAP/POP)
- We gebruiken het volledige emailadres (Jan@voorbeeld.nl) als gebruikersnaam en gebruiken een versleuteld wachtwoord.
Installeer Dovecot
We installeren Dovecot en enkele benodigde packages. Installeer de Dovecot-core package en packages voor IMAP, POP en LMTP.
[codebox]sudo apt-get install dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql[/codebox]
Na het installeren van Dovecot kun je voor de zekerheid de versie controleren. Dat doe je met het volgende commando:
[codebox]
dovecot --version
[/codebox]
Ik gebruik zelf momenteel versie 2.2.22
Dovecot toevoegen aan de firewall
Laten we eerst Dovecot maar toegang geven zodat we ons daar later geen zorgen over hoeven te maken.
[codebox]
sudo ufw allow "Dovecot Secure IMAP" sudo ufw allow "Dovecot Secure POP3"
[/codebox]
Dovecot configureren
De aanpassingen die we maken in de configuratie van Dovecot zullen voornamelijk gedaan worden in de /etc/dovecot/conf.d/ directory.
-
- Controleer of in de /etc/dovecot/dovecot.conf file alle protocollen worden toegevoegd. Zoniet, voeg dan deze regels toe.
[codebox]sudo nano /etc/dovecot/dovecot.conf
[/codebox]en zoek naar:
[entrybox]# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol[/entrybox]
Voeg hier de volgende regel onder toe [codebox]protocols = imap pop3 lmtp
[/codebox]Sla de file op met <ctrl-x> gevolgd door een ‘Y’.
Ter info:
Geinstalleerde protocollen kun je met de volgende regel opvragen:[codebox]ls -l /usr/share/dovecot/protocols.d[/codebox]
Het resultaat kan dan zijn:
[entrybox]total 12
-rw-r–r– 1 root root 28 Nov 30 15:44 imapd.protocol
-rw-r–r– 1 root root 28 Nov 30 15:44 lmtpd.protocol
-rw-r–r– 1 root root 28 Nov 30 15:44 pop3d.protocol[/entrybox]Inbox locatie instellen – 10-mail.conf
We geven in de configuratiefile aan dat Dovecot de mails moet opslaan in de /var/mail/vhosts directory en dan in de sub directories voor elk domein en user onder dat domein. Dus dat wordt /var/mail/vhosts/<domein>/<user>/.
- Wijzig de 10-mail.conf file
[codebox]sudo nano /etc/dovecot/conf.d/10-mail.conf[/codebox]
Wijzig de volgende regel of voeg ze toe: (tip: zoek met <ctrl-W> op ‘mail_location’)
[codebox]mail_location = maildir:/var/mail/vhosts/%d/%n
[/codebox]
Zoek vervolgens met <ctrl-W> naar ‘mail_privileged_group’ en verander deze. Als de regel niet bestaat, voeg deze dan toe. Als er een ‘#’ voor staat, verwijder dan het ‘#’.
[codebox]mail_privileged_group = mail
[/codebox]Sla de file op met <ctrl-x> gevolgd door een ‘Y’.
- Controleer de rechten van de map /var/mail met het volgende commando:[codebox]
ls -ld /var/mail
[/codebox].
Als het goed is komt hier het volgende uit:[entrybox]drwxrwsr-x 2 root mail 4096 Mar 6 15:08 /var/mail[/entrybox]Als dat niet klopt, dan is er iets misgegaan tijdens de vorige tutorials. Controleer alles goed! - Maak de directory /var/mail/vhosts aan. Vervang voorbeeld.nl door jouw eigen domeinnaam.[codebox]
sudo mkdir -p /var/mail/vhosts/voorbeeld.nl
[/codebox].
- We gaan een gebruiker aanmaken voor Dovecot met de username en group ‘vmail’ en met 5000 als uid en gid. het uid kan elk gewenst nummer zijn, maar we gebruiken 5000 om aan te geven dat het geen normale gebruiker is. De ‘-r’ optie geeft aan dat de gebruiker een system level user is en geen login heeft. We maken vmail de eigenaar van de mail-map en geven deze de rechten om te lezen en schrijven in die map.
[codebox]sudo groupadd -g 5000 vmail sudo useradd -r -g vmail -u 5000 vmail -d /var/mail -c "virtual mail user" sudo chown -R vmail:vmail /var/mail
[/codebox]
- Authenticatie instellen. Open de 10-auth.conf file.[codebox]sudo nano /etc/dovecot/conf.d/10-auth.conf[/codebox]Schakel de regel disable_plaintext_auth in door het # voor de regel te verwijderen. Dit zorgt ervoor dat TLS/SSL encryptie gebruikt wordt voor authenticatie.[codebox]disable_plaintext_auth = yes[/codebox]Zoek vervolgens naar de instelling auth_mechanism en schakel ook deze regel in door het ‘#’weg te halen, en de regel aan. Deze regel specificeert hoe het wachtwoord wordt doorgegeven aan Dovecot.[codebox]auth_mechanisms = plain login[/codebox]
Schakel de volgende regel uit door er een ‘#’voor te zetten:[codebox]#!include auth-system.conf.ext[/codebox]En we kiezen de juiste authenticatiemethode door alleen de regel van auth-sql.conf.ext in te schakelen.[codebox] #!include auth-system.conf.ext
!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext[/codebox]Sla de file op met <ctrl-x> gevolgd door een ‘Y’. - Wijzig de /etc/dovecot/conf.d/auth-sql.conf.ext file. Hier wordt de authenticatie informatie ingesteld. [codebox]sudo nano /etc/dovecot/conf.d/auth-sql.conf.ext[/codebox]Zorg ervoor dat deze file onderstaande regels bevat en dat ze ingeschakeld zijn. [codebox] passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}[/codebox]Sla de file op met <ctrl-x> gevolgd door een ‘Y’. - Verstrek de juiste informatie aan Dovecot over de MySQL verbinding in de file /etc/dovecot/dovecot-sql.conf.ext.
[codebox]sudo nano /etc/dovecot/dovecot-sql.conf.ext
[/codebox]Schakel onderstaande regels in door het ‘#’ voor de regel weg te halen en pas de tekst aan. Vervang mail-password door het door jou gekozen wachtwoord voor de MySQL verbinding.[codebox]
driver = mysql connect = host=127.0.0.1 dbname=mailserver user=mailuser password=mail-password default_pass_scheme = SHA512-CRYPT password_query = SELECT email as user, password FROM virtual_users WHERE email='%u'
[/codebox]Sla de file op met <ctrl-x> gevolgd door een ‘Y’.
- Maak vmail de eigenaar van de map /etc/dovecot/ en verander de rechten zodat vmail toegang heeft tot de map:[codebox]
sudo chown -R vmail:dovecot /etc/dovecot sudo chmod -R o-rwx /etc/dovecot
[/codebox]
- IMAPS and POP3S services inschakelen – 10-master.conf
We geven in deze configuratiefile aan dat de IMAPS en POPS services gestart moeten worden. Wijzig de 10-master.conf file en schakel de regels voor de poorten van de betreffende services in, en zet SSL op yes. Laat de poorten voor IMAP en POP uitgequote zodat de un-secure services niet gebruikt worden.
[codebox]sudo nano /etc/dovecot/conf.d/10-master.conf[/codebox]
[codebox]#for IMAPS – IMAPservice imap-login { inet_listener imap { #port = 143 } inet_listener imaps { port = 993 ssl = yes } } #For POP3S - Secure POP3 service pop3-login { inet_listener pop3 { #port = 110 } inet_listener pop3s { port = 995 ssl = yes } }[/codebox]
- lmtp socket configureren
De dovecot wiki page on LMTP bevat een eenvoudig voorbeeld over het instellen van de lmtp socket in de /etc/dovecot/conf.d/10-master.conf file.We blijven in de 10-master.conf file die we net geopend hebben. Zoek met <ctrl>-W naar de sectie “service lmtp” en wijzig dit blok. Hetzelfde pad wordt gebruikt door Postfix voor de instelling van het ‘virtual transport’.[codebox]service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix } .....
[/codebox]
De socket moet alle rechten hebben van de user:group postfix zodat Postfix deze socket kan gebruiken.
Zoek met <ctrl>-W naar de sectie “service auth” en voeg het volgende stukje toe, of pas het aan als het er al in staat:
[codebox]
service auth { ..... # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 user=postfix group=postfix } unix_listener auth-userdb { mode = 0600 user = vmail #group = } .....
[/codebox]
Zoek met <ctrl>-W naar de sectie “service auth-worker”, schakel onderstaande regel in en stel user in op vmail:
[codebox]
service auth-worker {
# Auth worker process is run as root by default, so that it can access
# /etc/shadow. If this isn’t necessary, the user should be changed to
# $default_internal_user.
user = vmail
}[/codebox]Sla nu de file 10master.conf op, door <ctrl>-X in te drukken gevolgd door een ‘Y’
- SSL aanzetten voor Dovecot – 10-ssl.conf
Open de file /etc/dovecot/conf.d/10-ssl.conf.[codebox]sudo nano /etc/dovecot/conf.d/10-ssl.conf[/codebox]in deze file schakel je de SSL-regel in en geef je aan welke functie gebruikt wordt.[codebox]# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = required[/codebox]Controleer ook of de volgende regels aanwezig zijn en geef de juiste files aan. Vervang ‘voorbeeld.nl’ natuurlijk door jouw eigen site.
Onderstaand voorbeeld klopt als je Let’s Encrypt geïnstalleerd hebt volgens de tutorials van deze site.[codebox]ssl_cert = </etc/letsencrypt/live/voorbeeld.nl/fullchain.pem ssl_key = </etc/letsencrypt/live/voorbeeld.nl/privkey.pem
[/codebox]
Sla de .conf file nu op.
- Logfiles voor Setup dovecot instellen
Dovecot schrijft zijn log-files standaad weg in de /var/log/syslog directory, maar dat is niet erg overzichtelijk. Wij stellen Dovecot in zodat de log-file weggeschreven wordt in /var/log/dovecot.log. Die instelling kun je maken in /etc/dovecot/conf.d/10-logging.conf.[codebox]sudo nano /etc/dovecot/conf.d/10-logging.conf[/codebox][codebox]# Log file to use for error messages. “syslog” logs to syslog,
# /dev/stderr logs to stderr.
log_path = /var/log/dovecot.log
# Log file to use for informational messages. Defaults to log_path
#info_log_path =
# Log file to use for debug messages. Defaults to info_log_path.
#debug_log_path =[/codebox] - Instellen van logrotate
Als we de log files van Dovecot veranderen, dan is het ook belangrijk om logrotate in te stellen. Dit zorgt ervoor dat de verschillende onderdelen apart worden opgeslagen in plaats van in 1 grote file.[codebox]sudo nano /etc/logrotate.d/dovecot [/codebox]Schrijf het volgende weg in die file:[codebox]/var/log/dovecot*.log {
missingok
notifempty
delaycompress
sharedscripts
postrotate
doveadm log reopen
endscript
}[/codebox]Kijk voor meer informatie op dovecot wiki page on logging. - Herstart Dovecot
Dat was het. Om alle wijzigingen door te voeren moet Dovecot nog 1 keer herstart worden.[codebox]sudo service dovecot restart[/codebox]
- Controleer of in de /etc/dovecot/dovecot.conf file alle protocollen worden toegevoegd. Zoniet, voeg dan deze regels toe.
Mailclient instellen
Om nu met een externe mailclient te verbinden geef je het volgende op:
Gebruikersgegevens:
email: email@voorbeeld.nl
Servergegevens:
Type Account: IMAP
Server inkomend mailverkeer: mail.voorbeeld.nl
Server uitgaand mailverkeer: mail.voorbeeld.nl
Aanmeldingsgegevens:
Gebruikersnaam: email@voorbeeld.nl
Wachtwoord: <dat-weet-je-zelf-het-beste>
Voor de server voor uitgaande mail (SMTP) is verificatie vereist
Poortnummers:
Inkomende mail: 993 SSL/TLS
Uitgaande mail: 587 STARTTLS
Deze tutorial is vooral gebaseerd op deze post:
www.binarytides.com/install-postfix-dovecot-debian
https://linode.com/docs/email/postfix/email-with-postfix-dovecot-and-mysql/