Dovecot (Ubuntu 18.04): Unterschied zwischen den Versionen
(53 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Installation == | |||
<pre> | <pre> | ||
sudo apt-get install -y dovecot-core dovecot-imapd | sudo apt-get install -y dovecot-core dovecot-imapd dovecot-mysql dovecot-lmtpd | ||
</pre> | </pre> | ||
== Virtuellen Benutzer anlegen == | == Virtuellen Benutzer anlegen == | ||
{{note|Einheitliche UID ist unter anderem für die Replikation erforderlich.}} | |||
<pre> | <pre> | ||
Zeile 17: | Zeile 17: | ||
=== SSL Zertifikat === | === SSL Zertifikat === | ||
Zertifikate für <code>mail1.<domain></code> und <code>postadmin1.<domain></code> erstellen. | |||
==== LetsEncrypt ==== | |||
Siehe [[LetsEncrypt_(Ubuntu_18.04)|LetsEncrypt]] | |||
Da die SSL-Schlüsselverzeichnisse nur für ''root'' lesbar sind, für die folgenden Schritte zu Benutzer ''root'' wechseln: | |||
<pre> | |||
sudo su | |||
</pre> | |||
Im Verzeichnis ''/etc/dovecot/private/'' auf die erstellten Zertifikate verlinken: | |||
{{note|Link-Target für mail2 ändern.}} | |||
<pre> | |||
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 | |||
</pre> | |||
Danach die ''root''-Shell wieder verlassen: | |||
<pre> | |||
exit | |||
</pre> | |||
Damit die Zertifikate nach einem Update durch LetEncrypt periodisch übernommen werden, muss noch ein CronJob angelegt werden: | |||
<pre> | |||
sudo crontab -e | |||
</pre> | |||
<pre> | |||
0 23 * * 0 /bin/systemctl reload dovecot.service > /dev/null 2>&1 | |||
</pre> | |||
==== Selbstsigniert (Legacy) ==== | |||
Zertifikat erstellen (Hilfe zu Erstellung eines SSL-Zertifikates siehe [[SSL Zertifikat]]): | 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: | Da die SSL-Schlüsselverzeichnisse nur für ''root'' lesbar sind, für die folgenden Schritte zu Benutzer ''root'' wechseln: | ||
Zeile 47: | Zeile 90: | ||
exit | exit | ||
</pre> | </pre> | ||
==== Dovecot (beide Varianten) ==== | |||
Die Datei ''/etc/dovecot/conf.d/10-ssl.conf'' editieren | Die Datei ''/etc/dovecot/conf.d/10-ssl.conf'' editieren | ||
Zeile 54: | Zeile 99: | ||
</pre> | </pre> | ||
und das vorhin erstellte Schlüssel/Zertifikat-Paar eintragen: | und das vorhin erstellte Schlüssel/Zertifikat-Paar eintragen (das <code>"<"</code> darf nicht fehlen): | ||
<pre> | <pre> | ||
ssl = required | ssl = required | ||
ssl_cert = /etc/dovecot/private/dovecot. | ssl_cert = </etc/dovecot/private/dovecot.pem | ||
ssl_key = /etc/dovecot/private/dovecot.key | ssl_key = </etc/dovecot/private/dovecot.key | ||
</pre> | </pre> | ||
Zeile 65: | Zeile 110: | ||
<pre> | <pre> | ||
sudo chown :vmail /etc/dovecot/private/dovecot | sudo chown -h :vmail /etc/dovecot/private/dovecot.pem | ||
sudo chown -h :vmail /etc/dovecot/private/dovecot.key | |||
</pre> | </pre> | ||
Zeile 73: | Zeile 119: | ||
Zuerst erstellen wir ein Grundverzeichnis, das dem Benutzer <code>vmail</code> gehört. Hier werden später in den entsprechenden Unterverzeichnissen die Mails einsortiert. | Zuerst erstellen wir ein Grundverzeichnis, das dem Benutzer <code>vmail</code> gehört. Hier werden später in den entsprechenden Unterverzeichnissen die Mails einsortiert. | ||
==== Speicherort lokal ==== | |||
<pre> | |||
sudo mkdir /var/vmail/ | sudo mkdir /var/vmail/ | ||
sudo chown vmail:vmail /var/vmail/ | sudo chown vmail:vmail /var/vmail/ | ||
</pre> | </pre> | ||
==== Speicherort NAS ==== | |||
<pre> | |||
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 | |||
</pre> | |||
=== 10-mail.conf === | |||
Das Mailverzeichnis wird in der Datei ''/etc/dovecot/conf.d/10-mail.conf'' eingetragen: | Das Mailverzeichnis wird in der Datei ''/etc/dovecot/conf.d/10-mail.conf'' eingetragen: | ||
Zeile 86: | Zeile 141: | ||
sudo vi /etc/dovecot/conf.d/10-mail.conf | sudo vi /etc/dovecot/conf.d/10-mail.conf | ||
</pre> | </pre> | ||
{{note|'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 ==== | |||
<pre> | <pre> | ||
mail_uid = vmail | |||
mail_gid = vmail | |||
mail_location = maildir:/var/vmail/%d/%n | 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 | mail_privileged_group = vmail | ||
# 126 = uid of user vmail | # 126 = uid of user vmail | ||
Zeile 94: | Zeile 162: | ||
</pre> | </pre> | ||
==== Speicherort NAS ==== | |||
<pre> | |||
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 | |||
</pre> | |||
=== Benutzer Authentifizierung === | === Benutzer Authentifizierung === | ||
==== Verzeichnis ==== | |||
Anlegen eines Benutzergrundverzeichnisses, das dem Benutzer ''vmail'' gehört (Benutzer ''mail'' muss darauf auch Schreibrechte haben - daher zur Gruppe hinzufügen) | Anlegen eines Benutzergrundverzeichnisses, das dem Benutzer ''vmail'' gehört (Benutzer ''mail'' muss darauf auch Schreibrechte haben - daher zur Gruppe hinzufügen) | ||
===== Speicherort lokal ===== | |||
<pre> | |||
sudo mkdir -p /home/vmail/<domain> | |||
sudo chown -R vmail:vmail /home/vmail/<domain> | |||
</pre> | |||
===== Speicherort NAS ===== | |||
<pre> | <pre> | ||
sudo mkdir /home/vmail/ | sudo mkdir -p /mnt/synology/mail1/home/vmail/<domain> | ||
sudo chown vmail:vmail /home/vmail/ | sudo chown -R vmail:vmail /mnt/synology/mail1/home/vmail/<domain> | ||
</pre> | </pre> | ||
Datei <code>/etc/dovecot/conf.d/10-auth.conf</code>: | ==== Konfigurationsdateien ==== | ||
Datei <code>/etc/dovecot/conf.d/10-auth.conf</code> folgende Zeilen anpassen: | |||
<pre> | <pre> | ||
sudo vi /etc/dovecot/conf.d/10-auth.conf | sudo vi /etc/dovecot/conf.d/10-auth.conf | ||
Zeile 122: | Zeile 214: | ||
</pre> | </pre> | ||
In der Datei <code>/etc/dovecot/conf.d/auth-sql.conf.ext</code> folgende Zeile | |||
In der Datei <code>/etc/dovecot/conf.d/auth-sql.conf.ext</code> folgende Zeile einkommentieren: | |||
<pre> | <pre> | ||
sudo vi /etc/dovecot/conf.d/auth-sql.conf.ext | sudo vi /etc/dovecot/conf.d/auth-sql.conf.ext | ||
Zeile 128: | Zeile 221: | ||
<pre> | <pre> | ||
userdb { | userdb { | ||
driver = | driver = sql | ||
args | args = /etc/dovecot/dovecot-sql.conf.ext | ||
} | } | ||
</pre> | </pre> | ||
Datei <code>/etc/dovecot/dovecot-sql.conf.ext</code>: | Datei <code>/etc/dovecot/dovecot-sql.conf.ext</code>: | ||
<pre> | <pre> | ||
sudo vi /etc/dovecot/dovecot-sql.conf.ext | sudo vi /etc/dovecot/dovecot-sql.conf.ext | ||
</pre> | </pre> | ||
<pre> | <pre> | ||
Zeile 151: | Zeile 243: | ||
password_query = SELECT local_part, domain, password FROM mailbox WHERE local_part = '%n' AND domain = '%d' | 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' | |||
</pre> | </pre> | ||
==== Links ==== | |||
[https://doc.dovecot.org/configuration_manual/authentication/user_databases_userdb/ https://doc.dovecot.org/configuration_manual/authentication/user_databases_userdb/] | |||
=== SASL / LMTP === | === SASL / LMTP === | ||
Zeile 257: | Zeile 353: | ||
== Dovecot neustarten == | == Dovecot neustarten == | ||
[[Postfix_(Ubuntu_18.04)#Installation|Postfix]] muss zumindest installiert sein, da sonst der Neustart wegen fehlenden Benutzer ''postfix'' fehlschlägt: | |||
<pre> | <pre> | ||
Zeile 262: | Zeile 360: | ||
</pre> | </pre> | ||
== | == Debugging == | ||
Beschreibung der Debugging-Konfiguration siehe [https://doc.dovecot.org/admin_manual/dovecot_logging/ https://doc.dovecot.org/admin_manual/dovecot_logging/] | |||
=== | === Log-Files === | ||
Folgender Befehl zeigt alle Dovecot-Log-Files an: | |||
<pre> | <pre> | ||
sudo | sudo doveadm log find | ||
</pre> | </pre> | ||
Aktuelle Version vom 10. Oktober 2020, 17:06 Uhr
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