Dovecot: Unterschied zwischen den Versionen
(21 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Installation == | == Installation == | ||
<pre style="white-space: pre-wrap; | <pre style="white-space: pre-wrap; | ||
white-space: -moz-pre-wrap; | white-space: -moz-pre-wrap; | ||
Zeile 7: | Zeile 8: | ||
sudo apt-get install dovecot-core | sudo apt-get install dovecot-core | ||
sudo apt-get install dovecot-imapd dovecot-pop3d | sudo apt-get install dovecot-imapd dovecot-pop3d | ||
sudo apt-get install dovecot-mysql | sudo apt-get install dovecot-mysql dovecot-lmtpd | ||
</pre> | </pre> | ||
Zeile 18: | Zeile 19: | ||
== Datenbank erstellen == | == Datenbank erstellen == | ||
Falls [[PostfixAdmin]] ''NICHT'' verwendet wird, benötigen wir eine Datenbank: | |||
<pre> | |||
mysql -u root -p | mysql -u root -p | ||
mysql> create database if not exists mails; | mysql> create database if not exists mails; | ||
Zeile 40: | Zeile 40: | ||
</pre> | </pre> | ||
Jetzt müssen wir die Benutzer-Tabelle anlegen: | |||
<pre> | <pre> | ||
mysql> CREATE TABLE users (id INT UNSIGNED AUTO_INCREMENT NOT NULL, username VARCHAR(128) NOT NULL, domain VARCHAR(128) NOT NULL, password VARCHAR(128) NOT NULL, UNIQUE (id), PRIMARY KEY (username, domain)); | mysql> CREATE TABLE users (id INT UNSIGNED AUTO_INCREMENT NOT NULL, username VARCHAR(128) NOT NULL, domain VARCHAR(128) NOT NULL, password VARCHAR(128) NOT NULL, UNIQUE (id), PRIMARY KEY (username, domain)); | ||
Zeile 59: | Zeile 54: | ||
Erstelltes Zertifikat in der Datei ''/etc/dovecot/conf.d/10-ssl.conf'' eintragen. | Erstelltes Zertifikat in der Datei ''/etc/dovecot/conf.d/10-ssl.conf'' eintragen. | ||
<pre | <pre> | ||
sudo nano /etc/dovecot/conf.d/10-ssl.conf | |||
</pre> | |||
<pre> | |||
ssl = required | ssl = required | ||
ssl_cert = </etc/ssl/certs/dovecot.crt | ssl_cert = </etc/ssl/certs/dovecot.crt | ||
Zeile 84: | Zeile 79: | ||
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. | ||
<pre | |||
<pre> | |||
sudo mkdir /var/vmail/ | sudo mkdir /var/vmail/ | ||
sudo chown vmail:vmail /var/vmail/ | sudo chown vmail:vmail /var/vmail/ | ||
Zeile 94: | Zeile 86: | ||
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: | ||
<pre | <pre> | ||
sudo vi /etc/dovecot/conf.d/10-mail.conf | |||
</pre> | |||
<pre> | |||
mail_location = maildir:/var/vmail/%d/%n | mail_location = maildir:/var/vmail/%d/%n | ||
mail_privileged_group = vmail | mail_privileged_group = vmail | ||
Zeile 112: | Zeile 104: | ||
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) | ||
<pre | <pre> | ||
sudo mkdir /home/vmail/ | sudo mkdir /home/vmail/ | ||
sudo chown vmail:vmail /home/vmail/ | sudo chown vmail:vmail /home/vmail/ | ||
Zeile 124: | Zeile 110: | ||
Datei <code>/etc/dovecot/conf.d/10-auth.conf</code>: | Datei <code>/etc/dovecot/conf.d/10-auth.conf</code>: | ||
<pre | <pre> | ||
sudo nano /etc/dovecot/conf.d/10-auth.conf | |||
</pre> | |||
<pre> | |||
disable_plaintext_auth = yes | disable_plaintext_auth = yes | ||
auth_mechanisms = plain login | auth_mechanisms = plain login | ||
Zeile 140: | Zeile 126: | ||
In der Datei <code>/etc/dovecot/conf.d/auth-sql.conf.ext</code> folgende Zeile ausbessern / einkommentieren: | In der Datei <code>/etc/dovecot/conf.d/auth-sql.conf.ext</code> folgende Zeile ausbessern / einkommentieren: | ||
<pre | <pre> | ||
sudo nano /etc/dovecot/conf.d/auth-sql.conf.ext | |||
</pre> | |||
<pre> | |||
# Database driver: mysql, pgsql, sqlite | # Database driver: mysql, pgsql, sqlite | ||
userdb { | userdb { | ||
Zeile 153: | Zeile 139: | ||
Datei <code>/etc/dovecot/dovecot-sql.conf.ext</code>: | Datei <code>/etc/dovecot/dovecot-sql.conf.ext</code>: | ||
<pre | <pre> | ||
sudo nano /etc/dovecot/dovecot-sql.conf.ext | |||
</pre> | |||
<pre> | |||
# Database driver: mysql, pgsql, sqlite | # Database driver: mysql, pgsql, sqlite | ||
driver = mysql | driver = mysql | ||
connect = host=localhost dbname=mails user= | connect = host=localhost dbname=(<mails>|<postfix>) user=<database user> password=<password> | ||
default_pass_scheme = SHA512-CRYPT | default_pass_scheme = SHA512-CRYPT | ||
Zeile 181: | Zeile 167: | ||
Verschlüsseltes Passwort erstellen: | Verschlüsseltes Passwort erstellen: | ||
<pre | <pre> | ||
doveadm pw -s SHA512-CRYPT | doveadm pw -s SHA512-CRYPT | ||
</pre> | </pre> | ||
Eintrag in Datenbank erstellen: | Eintrag in Datenbank erstellen: | ||
<pre | <pre> | ||
insert into users (username, domain, password) values ('<benutzer>', '<domain.tld>', '$6$A3ZAyqvdkl4nc8BM$bz8YAW7/0B1DcE2I37epHO/p33MbdVKb0FbGH56Ey1KVO1.m3NPL/s5v35NwFrSZMPTBkrc6DDX6rx2MCQhUa0'); | insert into users (username, domain, password) values ('<benutzer>', '<domain.tld>', '$6$A3ZAyqvdkl4nc8BM$bz8YAW7/0B1DcE2I37epHO/p33MbdVKb0FbGH56Ey1KVO1.m3NPL/s5v35NwFrSZMPTBkrc6DDX6rx2MCQhUa0'); | ||
</pre> | </pre> | ||
Zeile 201: | Zeile 179: | ||
Datei <code>/etc/dovecot/conf.d/10-master.conf</code>: | Datei <code>/etc/dovecot/conf.d/10-master.conf</code>: | ||
<pre | <pre> | ||
sudo nano /etc/dovecot/conf.d/10-master.conf | |||
</pre> | |||
<pre> | |||
service lmtp { | service lmtp { | ||
unix_listener /var/spool/postfix/private/dovecot-lmtp { | unix_listener /var/spool/postfix/private/dovecot-lmtp { | ||
Zeile 228: | Zeile 206: | ||
user = postfix | user = postfix | ||
group = postfix | group = postfix | ||
} | |||
} | |||
</pre> | |||
=== Mail-Ordner automatisch erstellen === | |||
Standardmäßig werden Ordner nict automatisch angelegt. Dazu muss die Datei ''/etc/dovecot/conf.d/15-mailboxes.conf'' angepaßt werden: | |||
<pre> | |||
sudo nano /etc/dovecot/conf.d/15-mailboxes.conf | |||
</pre> | |||
Bei allen Ordnern ''auto=create'' hinzufügen: | |||
<pre> | |||
namespace inbox { | |||
#mailbox name { | |||
# auto=create will automatically create this mailbox. | |||
# auto=subscribe will both create and subscribe to the mailbox. | |||
#auto = no | |||
# Space separated list of IMAP SPECIAL-USE attributes as specified by | |||
# RFC 6154: \All \Archive \Drafts \Flagged \Junk \Sent \Trash | |||
#special_use = | |||
#} | |||
# 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 | |||
} | } | ||
} | } | ||
Zeile 234: | Zeile 260: | ||
=== Allgemein === | === Allgemein === | ||
Datei <code>/etc/dovecot/dovecot.conf</code>: | |||
<pre> | |||
sudo nano /etc/dovecot/dovecot.conf | |||
</pre> | |||
<pre> | |||
# Enable installed protocols | # Enable installed protocols | ||
!include_try /usr/share/dovecot/protocols.d/*.protocol | !include_try /usr/share/dovecot/protocols.d/*.protocol | ||
Zeile 261: | Zeile 286: | ||
args = /etc/dovecot/dovecot-sql.conf.ext | args = /etc/dovecot/dovecot-sql.conf.ext | ||
} | } | ||
</pre> | |||
== Dovecot neustarten == | |||
<pre> | |||
sudo service dovecot restart | |||
</pre> | </pre> | ||
Aktuelle Version vom 5. Juli 2020, 11:59 Uhr
Installation
sudo apt-get install dovecot-core sudo apt-get install dovecot-imapd dovecot-pop3d sudo apt-get install dovecot-mysql dovecot-lmtpd
Virtuellen Benutzer anlegen
sudo addgroup --system --no-create-home --disabled-login --gid 126 vmail sudo adduser --system --no-create-home --disabled-login --uid 126 --ingroup vmail vmail
Datenbank erstellen
Falls PostfixAdmin NICHT verwendet wird, benötigen wir eine Datenbank:
mysql -u root -p mysql> create database if not exists mails; mysql> create user 'mailserver'@'%' identified by '<password>'; mysql> grant select on mails.* to 'mailserver'@'%'; mysql> flush privileges; mysql> use mails;
Soll nur von localhost auf die Datenbank zugegriffen werden können, dann folgenden Befehl verwenden:
mysql> create user 'mailserver'@'localhost' identified by '<password>';
Jetzt müssen wir die Benutzer-Tabelle anlegen:
mysql> CREATE TABLE users (id INT UNSIGNED AUTO_INCREMENT NOT NULL, username VARCHAR(128) NOT NULL, domain VARCHAR(128) NOT NULL, password VARCHAR(128) NOT NULL, UNIQUE (id), PRIMARY KEY (username, domain)); mysql> quit;
Konfiguration
SSL Zertifikat
Hilfe zu Erstellung eines SSL-Zertifikates siehe SSL Zertifikat
Erstelltes Zertifikat in der Datei /etc/dovecot/conf.d/10-ssl.conf eintragen.
sudo nano /etc/dovecot/conf.d/10-ssl.conf
ssl = required ssl_cert = </etc/ssl/certs/dovecot.crt ssl_key = </etc/ssl/private/dovecot.key
Key und Zeritikat müssen für den Benutzer vmail lesbar sein:
sudo chown vmail:vmail /etc/ssl/certs/dovecot.crt sudo chown vmail:vmail /etc/ssl/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.
sudo mkdir /var/vmail/ sudo chown vmail:vmail /var/vmail/
Das Mailverzeichnis wird in der Datei /etc/dovecot/conf.d/10-mail.conf eingetragen:
sudo vi /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/vmail/%d/%n mail_privileged_group = vmail # 109 = uid of user vmail first_valid_uid = 109
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.
Benutzer Authentifizierung
Anlegen eines Benutzergrundverzeichnisses, das dem Benutzer vmail gehört (Benutzer mail muss darauf auch Schreibrechte haben - daher zur Gruppe hinzufügen)
sudo mkdir /home/vmail/ sudo chown vmail:vmail /home/vmail/
Datei /etc/dovecot/conf.d/10-auth.conf
:
sudo nano /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 ausbessern / einkommentieren:
sudo nano /etc/dovecot/conf.d/auth-sql.conf.ext
# Database driver: mysql, pgsql, sqlite userdb { driver = static args = uid=vmail gid=vmail home=/home/vmail/%u }
Datei /etc/dovecot/dovecot-sql.conf.ext
:
sudo nano /etc/dovecot/dovecot-sql.conf.ext
# Database driver: mysql, pgsql, sqlite driver = mysql connect = host=localhost dbname=(<mails>|<postfix>) user=<database user> password=<password> default_pass_scheme = SHA512-CRYPT
Falls PostfixAdmin verwendet wird:
password_query = SELECT local_part, domain, password FROM mailbox WHERE local_part = '%n' AND domain = '%d'
Falls PostfixAdmin nicht verwendet wird:
password_query = SELECT username, domain, password FROM users WHERE username = '%n' AND domain = '%d'
Benutzerdatenbank befüllen
Folgende Zeilen sind nur relevant, falls PostfixAdmin nicht verwendet wird:
Verschlüsseltes Passwort erstellen:
doveadm pw -s SHA512-CRYPT
Eintrag in Datenbank erstellen:
insert into users (username, domain, password) values ('<benutzer>', '<domain.tld>', '$6$A3ZAyqvdkl4nc8BM$bz8YAW7/0B1DcE2I37epHO/p33MbdVKb0FbGH56Ey1KVO1.m3NPL/s5v35NwFrSZMPTBkrc6DDX6rx2MCQhUa0');
SASL / LMTP
Datei /etc/dovecot/conf.d/10-master.conf
:
sudo nano /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 nict automatisch angelegt. Dazu muss die Datei /etc/dovecot/conf.d/15-mailboxes.conf angepaßt werden:
sudo nano /etc/dovecot/conf.d/15-mailboxes.conf
Bei allen Ordnern auto=create hinzufügen:
namespace inbox { #mailbox name { # auto=create will automatically create this mailbox. # auto=subscribe will both create and subscribe to the mailbox. #auto = no # Space separated list of IMAP SPECIAL-USE attributes as specified by # RFC 6154: \All \Archive \Drafts \Flagged \Junk \Sent \Trash #special_use = #} # 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 nano /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> # Passedb SQL passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext }
Dovecot neustarten
sudo service dovecot restart
Links
https://wiki.ubuntuusers.de/Dovecot_2/
https://help.ubuntu.com/community/PostfixDovecotSASL
http://wiki2.dovecot.org/Debugging/Thunderbird
Weiter zu Postfix
Zurück zu Mailserver einrichten