Dovecot (Ubuntu 18.04)

Aus Tutorials
Version vom 10. Oktober 2020, 17:06 Uhr von Martin Kirner (Diskussion | Beiträge) (→‎LetsEncrypt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Installation

sudo apt-get install -y dovecot-core dovecot-imapd dovecot-mysql dovecot-lmtpd

Virtuellen Benutzer anlegen

Einheitliche UID ist unter anderem für die Replikation erforderlich.

sudo addgroup --system --no-create-home --disabled-login --gid 126 vmail
sudo adduser --system --no-create-home --disabled-login --uid 126 --ingroup vmail vmail

Konfiguration

SSL Zertifikat

Zertifikate für mail1.<domain> und postadmin1.<domain> erstellen.

LetsEncrypt

Siehe LetsEncrypt


Da die SSL-Schlüsselverzeichnisse nur für root lesbar sind, für die folgenden Schritte zu Benutzer root wechseln:

sudo su

Im Verzeichnis /etc/dovecot/private/ auf die erstellten Zertifikate verlinken:

Link-Target für mail2 ändern.

cd /etc/dovecot/private/
rm dovecot.*
ln -s /etc/letsencrypt/live/mail1.kirner.or.at/privkey.pem dovecot.key
ln -s /etc/letsencrypt/live/mail1.kirner.or.at/fullchain.pem dovecot.pem

Danach die root-Shell wieder verlassen:

exit

Damit die Zertifikate nach einem Update durch LetEncrypt periodisch übernommen werden, muss noch ein CronJob angelegt werden:

sudo crontab -e
0 23 * * 0 /bin/systemctl reload dovecot.service > /dev/null 2>&1

Selbstsigniert (Legacy)

Zertifikat erstellen (Hilfe zu Erstellung eines SSL-Zertifikates siehe SSL Zertifikat):


Da die SSL-Schlüsselverzeichnisse nur für root lesbar sind, für die folgenden Schritte zu Benutzer root wechseln:

sudo su

Einen 2048 Bit-Schlüssel und Zertifikat am üblichen Speicherort erstellen:

openssl genrsa -out /etc/ssl/private/dovecot.key 2048
openssl req -new -x509 -key /etc/ssl/private/dovecot.key -days <days> -sha256 -out /etc/ssl/certs/dovecot.crt

Im Verzeichnis /etc/dovecot/private/ einfach darauf verlinken:

cd /etc/dovecot/private/
rm dovecot.*
ln -s /etc/ssl/private/dovecot.key dovecot.key
ln -s /etc/ssl/certs/dovecot.crt dovecot.crt

Danach die root-Shell wieder verlassen:

exit

Dovecot (beide Varianten)

Die Datei /etc/dovecot/conf.d/10-ssl.conf editieren

sudo vi /etc/dovecot/conf.d/10-ssl.conf

und das vorhin erstellte Schlüssel/Zertifikat-Paar eintragen (das "<" darf nicht fehlen):

ssl = required
ssl_cert = </etc/dovecot/private/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.key

Schlüssel und Zeritikat müssen für den Benutzer vmail lesbar sein (ändert die Zieldateien der Softlinks):

sudo chown -h :vmail /etc/dovecot/private/dovecot.pem
sudo chown -h :vmail /etc/dovecot/private/dovecot.key

Speicherort der Mails

Für die beschriebene Installation werden virtuelle Benutzer verwendet. Virtuelle Benutzer sind Benutzer, die sich nicht am System anmelden können.

Zuerst erstellen wir ein Grundverzeichnis, das dem Benutzer vmail gehört. Hier werden später in den entsprechenden Unterverzeichnissen die Mails einsortiert.

Speicherort lokal

sudo mkdir /var/vmail/
sudo chown vmail:vmail /var/vmail/

Speicherort NAS

sudo mkdir -p /mnt/synology/mail1/maildir/vmail
sudo mkdir -p /mnt/synology/mail1/maildir/vmail-deleted
sudo chown -R vmail:vmail /mnt/synology/mail1/maildir

10-mail.conf

Das Mailverzeichnis wird in der Datei /etc/dovecot/conf.d/10-mail.conf eingetragen:

sudo vi /etc/dovecot/conf.d/10-mail.conf

'126' is 'gid' and 'uid' of user 'vmail'

Weiters wird hier noch das empfohlene Format maildir verwendet, was durch die Voranstellung von maildir: vor dem Pfad gekennzeichnet wird.

%d wird dann im laufenden Betrieb durch die Damain und %n durch den Benutzernamen ersetzt.

Speicherort lokal

mail_uid = vmail
mail_gid = vmail

mail_location = maildir:/var/vmail/%d/%n
# option is not predefined and must be added
mail_home = /home/vmail/%d/%n
mail_privileged_group = vmail
# 126 = uid of user vmail
first_valid_uid = 126

Speicherort NAS

mail_uid = vmail
mail_gid = vmail

mail_location = maildir:/mnt/synology/mail1/maildir/vmail/%d/%n
# option is not predefined and must be added
mail_home = /mnt/synology/mail1/home/vmail/%d/%n
mail_privileged_group = vmail
# 126 = uid of user vmail
first_valid_uid = 126

Benutzer Authentifizierung

Verzeichnis

Anlegen eines Benutzergrundverzeichnisses, das dem Benutzer vmail gehört (Benutzer mail muss darauf auch Schreibrechte haben - daher zur Gruppe hinzufügen)

Speicherort lokal
sudo mkdir -p /home/vmail/<domain>
sudo chown -R vmail:vmail /home/vmail/<domain>
Speicherort NAS
sudo mkdir -p /mnt/synology/mail1/home/vmail/<domain>
sudo chown -R vmail:vmail /mnt/synology/mail1/home/vmail/<domain>

Konfigurationsdateien

Datei /etc/dovecot/conf.d/10-auth.conf folgende Zeilen anpassen:

sudo vi /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login

# Folgende Zeile auskommentieren:
# !include auth-system.conf.ext

# Folgende Zeile einkommentieren:
!include auth-sql.conf.ext


In der Datei /etc/dovecot/conf.d/auth-sql.conf.ext folgende Zeile einkommentieren:

sudo vi /etc/dovecot/conf.d/auth-sql.conf.ext
userdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}


Datei /etc/dovecot/dovecot-sql.conf.ext:

sudo vi /etc/dovecot/dovecot-sql.conf.ext
# Database driver: mysql, pgsql, sqlite
driver = mysql

connect = host=localhost dbname=postfix user=postfix password=<password>

default_pass_scheme = SHA512-CRYPT

password_query = SELECT local_part, domain, password FROM mailbox WHERE local_part = '%n' AND domain = '%d'

user_query = SELECT concat('*:storage=', quota, 'M') AS quota_rule FROM mailbox WHERE local_part = '%n' AND domain = '%d'

Links

https://doc.dovecot.org/configuration_manual/authentication/user_databases_userdb/

SASL / LMTP

Datei /etc/dovecot/conf.d/10-master.conf:

sudo vi /etc/dovecot/conf.d/10-master.conf
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0660
    group = postfix
    user = postfix
  }

  user = vmail
}

service auth {
  unix_listener auth-userdb {
    mode = 0666
    user = vmail
    group = vmail
  }

  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}

Mail-Ordner automatisch erstellen

Standardmäßig werden Ordner nicht automatisch angelegt. Dazu muss die Datei /etc/dovecot/conf.d/15-mailboxes.conf angepaßt werden:

sudo vi /etc/dovecot/conf.d/15-mailboxes.conf

Bei allen Ordnern auto=create hinzufügen:

namespace inbox {
  # These mailboxes are widely used and could perhaps be created automatically:
  mailbox Drafts {
    special_use = \Drafts
    auto=create
  }
  mailbox Junk {
    special_use = \Junk
    auto=create
  }
  mailbox Trash {
    special_use = \Trash
    auto=create
  }

  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox Sent {
    special_use = \Sent
    auto=create
  }
  mailbox "Sent Messages" {
    special_use = \Sent
    auto=create
  }
}

Allgemein

Datei /etc/dovecot/dovecot.conf:

sudo vi /etc/dovecot/dovecot.conf
# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol

listen = *, ::

base_dir = /var/run/dovecot/

# Greeting message for clients
login_greeting = Dovecot ready.

!include conf.d/*.conf
!include_try local.conf

postmaster_address = <valid mail address>

# PassDB SQL
passdb {
    driver = sql
    args = /etc/dovecot/dovecot-sql.conf.ext
}

Dovecot neustarten

Postfix muss zumindest installiert sein, da sonst der Neustart wegen fehlenden Benutzer postfix fehlschlägt:

sudo service dovecot restart

Debugging

Beschreibung der Debugging-Konfiguration siehe https://doc.dovecot.org/admin_manual/dovecot_logging/

Log-Files

Folgender Befehl zeigt alle Dovecot-Log-Files an:

sudo doveadm log find

Links

https://wiki.ubuntuusers.de/Dovecot_2/


Weiter zu Postfix

Zurück zu Mailserver einrichten