Installeer en configureer Dovecot

 

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

  1. Dovecot krijgt een locatie waar de binnenkomende mail staan, van Postfix.
  2. 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’.
  3. Dovecot maakt secure IMAP en POP services mogelijk om clients toegang te geven tot hun inbox.
  4. 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)
  5. 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.

    1. 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>/.

    2. 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’.

    3. 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!

    4. Maak de directory /var/mail/vhosts aan. Vervang voorbeeld.nl door jouw eigen domeinnaam.[codebox]
      sudo mkdir -p /var/mail/vhosts/voorbeeld.nl

      [/codebox].

    5. 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]

    6. 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’.
    7. 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’.
    8. 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’.

    9. 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]

    10. 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 – IMAP

      service 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]
    11.  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’

    12. 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.

    13. 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]
    14. 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.
    15. Herstart Dovecot
      Dat was het. Om alle wijzigingen door te voeren moet Dovecot nog 1 keer herstart worden.[codebox]sudo service dovecot restart[/codebox]

     

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/

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *