Dovecot: Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
 
(33 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>
 
== Virtuellen Benutzer anlegen ==
 
<pre>
sudo addgroup --system --no-create-home --disabled-login --gid 126 vmail
sudo adduser --system --no-create-home --disabled-login --uid 126 --ingroup vmail vmail
</pre>
</pre>


== Datenbank erstellen ==
== Datenbank erstellen ==
<pre style="white-space: pre-wrap;
 
white-space: -moz-pre-wrap;
Falls [[PostfixAdmin]] ''NICHT'' verwendet wird, benötigen wir eine Datenbank:
white-space: -pre-wrap;
 
white-space: -o-pre-wrap;
<pre>
word-wrap: break-word;">
mysql -u root -p  
mysql -u root -p  
mysql> create database if not exists mails;
mysql> create database if not exists mails;
mysql> create user 'mailserver'@'%' identified by '<password>';
mysql> create user 'mailserver'@'%' identified by '<password>';
mysql> grant usage on *.* to 'mailserver'@'%' identified by '<password>';
mysql> grant select on mails.* to 'mailserver'@'%';
mysql> grant all privileges on mails.* to 'mailserver'@'%';
mysql> flush privileges;  
mysql> flush privileges;  
mysql> use mails;
mysql> use mails;
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;
</pre>
</pre>


Zeile 34: Zeile 38:
word-wrap: break-word;">
word-wrap: break-word;">
mysql> create user 'mailserver'@'localhost' identified by '<password>';
mysql> create user 'mailserver'@'localhost' identified by '<password>';
</pre>
Jetzt müssen wir die Benutzer-Tabelle anlegen:
<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> quit;
</pre>
</pre>


Zeile 44: 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 style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo nano /etc/dovecot/conf.d/10-ssl.conf
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
<pre>
ssl = required
ssl = required
ssl_cert = </etc/ssl/certs/dovecot.crt
ssl_cert = </etc/ssl/certs/dovecot.crt
Zeile 54: Zeile 64:
</pre>
</pre>


Key und Zeritikat müssen für den Benutzer ''mail'' lesbar sein:
Key und Zeritikat müssen für den Benutzer ''vmail'' lesbar sein:
<pre style="white-space: pre-wrap;  
<pre style="white-space: pre-wrap;  
white-space: -moz-pre-wrap;  
white-space: -moz-pre-wrap;  
Zeile 68: Zeile 78:
Für die beschriebene Installation werden virtuelle Benutzer verwendet. Virtuelle Benutzer sind Benutzer, die sich nicht am System anmelden können.
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 <code>mail</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 style="white-space: pre-wrap;
 
white-space: -moz-pre-wrap;
<pre>
white-space: -pre-wrap;
sudo mkdir /var/vmail/
white-space: -o-pre-wrap;
sudo chown vmail:vmail /var/vmail/
word-wrap: break-word;">
sudo mkdir /var/vmails/
sudo chown vmail:vmail /var/vmails/
</pre>
</pre>


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 style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo vi /etc/dovecot/conf.d/10-mail.conf
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
<pre>
mail_location = maildir:/var/vmails/%d/%n
mail_location = maildir:/var/vmail/%d/%n
mail_privileged_group = vmail
mail_privileged_group = vmail
# 109 = uid of user vmail
# 109 = uid of user vmail
Zeile 97: 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 style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;">
sudo addgroup --system --no-create-home --disabled-login --group vmail
sudo adduser --system --no-create-home --disabled-login --ingroup vmail vmail
sudo mkdir /home/vmail/
sudo mkdir /home/vmail/
sudo chown vmail:vmail /home/vmail/
sudo chown vmail:vmail /home/vmail/
Zeile 109: Zeile 110:


Datei <code>/etc/dovecot/conf.d/10-auth.conf</code>:
Datei <code>/etc/dovecot/conf.d/10-auth.conf</code>:
<pre style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo nano /etc/dovecot/conf.d/10-auth.conf
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
<pre>
disable_plaintext_auth = yes
disable_plaintext_auth = yes
auth_mechanisms = plain login
auth_mechanisms = plain login
Zeile 124: Zeile 125:
</pre>
</pre>


In der Datei <code>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 style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo nano /etc/dovecot/conf.d/auth-sql.conf.ext
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
<pre>
# Database driver: mysql, pgsql, sqlite
# Database driver: mysql, pgsql, sqlite
userdb {
userdb {
   driver = static
   driver = static
   args = uid=vmail gid=vmail home=/home/vmails/%u
   args = uid=vmail gid=vmail home=/home/vmail/%u
}
}
</pre>
</pre>


Datei <code>/etc/dovecot/dovecot-sql.conf.ext</code>:
Datei <code>/etc/dovecot/dovecot-sql.conf.ext</code>:
<pre style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo nano /etc/dovecot/dovecot-sql.conf.ext
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
<pre>
# Database driver: mysql, pgsql, sqlite
# Database driver: mysql, pgsql, sqlite
driver = mysql
driver = mysql


connect = host=localhost dbname=mails user=mailserver password=<password>
connect = host=localhost dbname=(<mails>|<postfix>) user=<database user> password=<password>
 
default_pass_scheme = SHA512-CRYPT
</pre>


Falls [[PostfixAdmin]] verwendet wird:
<pre>
password_query = SELECT local_part, domain, password FROM mailbox WHERE local_part = '%n' AND domain = '%d'
</pre>
Falls [[PostfixAdmin]] ''nicht'' verwendet wird:
<pre>
password_query = SELECT username, domain, password FROM users WHERE username = '%n' AND domain = '%d'
password_query = SELECT username, domain, password FROM users WHERE username = '%n' AND domain = '%d'
default_pass_scheme = SHA512-CRYPT
</pre>
</pre>


==== Benutzerdatenbank befüllen ====
==== Benutzerdatenbank befüllen ====
Folgende Zeilen sind nur relevant, falls [[PostfixAdmin]] ''nicht'' verwendet wird:


Verschlüsseltes Passwort erstellen:
Verschlüsseltes Passwort erstellen:
<pre style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;">
doveadm pw -s SHA512-CRYPT
doveadm pw -s SHA512-CRYPT
</pre>
</pre>


Eintrag in Datenbank erstellen:
Eintrag in Datenbank erstellen:
<pre style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;">
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 176: Zeile 179:


Datei <code>/etc/dovecot/conf.d/10-master.conf</code>:
Datei <code>/etc/dovecot/conf.d/10-master.conf</code>:
<pre style="white-space: pre-wrap;
<pre>
white-space: -moz-pre-wrap;
sudo nano /etc/dovecot/conf.d/10-master.conf
white-space: -pre-wrap;
</pre>
white-space: -o-pre-wrap;
 
word-wrap: break-word;">
<pre>
service lmtp {
service lmtp {
   unix_listener /var/spool/postfix/private/dovecot-lmtp {
   unix_listener /var/spool/postfix/private/dovecot-lmtp {
Zeile 203: 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 209: Zeile 260:
=== Allgemein ===
=== Allgemein ===


Datei <code>/etc/dovecot/dovecot.conf</code>:
<pre>
sudo nano /etc/dovecot/dovecot.conf
</pre>


Datei <code>/etc/dovecot/dovecot.conf</code>:
<pre>
<pre style="white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;">
# Enable installed protocols
# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol
!include_try /usr/share/dovecot/protocols.d/*.protocol
Zeile 236: 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>


Zeile 245: Zeile 301:


[https://help.ubuntu.com/community/PostfixDovecotSASL https://help.ubuntu.com/community/PostfixDovecotSASL]
[https://help.ubuntu.com/community/PostfixDovecotSASL https://help.ubuntu.com/community/PostfixDovecotSASL]
[http://wiki2.dovecot.org/Debugging/Thunderbird http://wiki2.dovecot.org/Debugging/Thunderbird]





Aktuelle Version vom 5. Juli 2020, 12: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

http://wiki.dovecot.org/de/

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