Mailserver einrichten: Unterschied zwischen den Versionen
| Zeile 290: | Zeile 290: | ||
myorigin = <local domain> | myorigin = <local domain> | ||
inet_protocols = all | inet_protocols = all | ||
</pre> | |||
==== SSL Zertifikat ==== | |||
Hilfe zu Erstellung eines SSL-Zertifikates siehe [[SSL Zertifikat]] | |||
<pre style="white-space: pre-wrap; | |||
white-space: -moz-pre-wrap; | |||
white-space: -pre-wrap; | |||
white-space: -o-pre-wrap; | |||
word-wrap: break-word;"> | |||
##### TLS parameters ###### | |||
smtpd_tls_cert_file=/etc/ssl/certs/postfix.crt | |||
smtpd_tls_key_file=/etc/ssl/private/postfix.key | |||
smtpd_use_tls=yes | |||
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 | |||
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache | |||
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache | |||
</pre> | </pre> | ||
Version vom 19. März 2016, 10:28 Uhr
Voraussetzungen
Für den Betrieb eines Mailservers ist eine Datenbank Voraussetzung - ich habe mich für MySQL entschieden.
Siehe dazu auch MySQL installieren.
Dovecot
Installation
sudo apt-get install dovecot-core sudo apt-get install dovecot-imapd dovecot-pop3d sudo apt-get install dovecot-mysql
Datenbank erstellen
mysql -u root -p mysql> create database if not exists mails; mysql> create user 'dovecot'@'%' identified by '<password>'; mysql> grant usage on *.* to 'dovecot'@'%' identified by '<password>'; mysql> grant all privileges on mails.* to 'dovecot'@'%'; mysql> flush privileges; 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;
Soll nur von localhost auf die Datenbank zugegriffen werden können, dann folgenden Befehl verwenden:
mysql> create user 'dovecot'@'localhost' identified by '<password>';
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.
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 mail 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 mail gehört. Hier werden später in den entsprechenden Unterverzeichnissen die Mails einsortiert.
sudo mkdir /var/vmails/ sudo chown vmail:vmail /var/vmails/
Das Mailverzeichnis wird in der Datei /etc/dovecot/conf.d/10-mail.conf eingetragen:
mail_location = maildir:/var/vmails/%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 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 chown vmail:vmail /home/vmail/
Datei /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 auth-sql.conf.ext folgende Zeile ausbessern / einkommentieren:
# Database driver: mysql, pgsql, sqlite
userdb {
driver = static
args = uid=vmail gid=vmail home=/home/vmails/%u
}
Datei /etc/dovecot/dovecot-sql.conf.ext:
# Database driver: mysql, pgsql, sqlite driver = mysql connect = host=localhost dbname=mails user=dovecot password=<password> password_query = SELECT username, domain, password FROM users WHERE username = '%n' AND domain = '%d' default_pass_scheme = SHA512-CRYPT
Benutzerdatenbank befüllen
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:
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
}
}
Allgemein
Datei /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.donf
# Passedb SQL
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
Postfix
Installation
apt-get install postfix postfix-mysql
Konfiguration
Der Übersichtlichkeit halber legen wir ein neues Konfigurationsfile /etc/postfix/main.cf mit nur dem notwendigsten Inhalt an:
cd /etc/postfix/ sudo mv main.cf main.cf_bak sudo touch main.cf
Die neu erstelle Datei mit folgenden Inhalt befüllen (<local domain> durch den entsprechenden Wert ersetzen):
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no append_dot_mydomain = no readme_directory = no mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mydestination = mailbox_size_limit = 51200000 message_size_limit = 51200000 recipient_delimiter = inet_interfaces = all myorigin = <local domain> inet_protocols = all
SSL Zertifikat
Hilfe zu Erstellung eines SSL-Zertifikates siehe SSL Zertifikat
##### TLS parameters ######
smtpd_tls_cert_file=/etc/ssl/certs/postfix.crt
smtpd_tls_key_file=/etc/ssl/private/postfix.key
smtpd_use_tls=yes
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
Links
https://wiki.ubuntuusers.de/Dovecot_2/
https://help.ubuntu.com/community/PostfixDovecotSASL
https://thomas-leister.de/internet/mailserver-ubuntu-server-dovecot-postfix-mysql/
Zurück zu Ubuntu