Einrichtung Stretch

Installieren Sie zunächst ein Debian Stretch mit dem Netinst-ISO und melden Sie sich anschließend als root-Benutzer am System an.

apt update
apt dist-upgrade
apt install ssh
apt install postfix postfix-mysql

Wählen Sie bei der Konfiguration "Internet Site".

apt --purge remove 'exim4*'
apt install mysql-server
apt install phpmyadmin mutt unzip less sudo telnet php5-curl
apt install spamassassin spamass-milter swaks
apt install dovecot-imapd dovecot-lmtpd dovecot-mysql dovecot-managesieved

Zertifikat

openssl req -newkey rsa:4096 -nodes -sha512 -x509 -days 3650 -nodes -out /etc/ssl/certs/mailserver.pem -keyout /etc/ssl/private/mailserver.pem
chmod go= /etc/ssl/private/mailserver.pem
postconf 'smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3' postconf smtpd_tls_security_level=may postconf smtpd_tls_auth_only=yes postconf smtpd_tls_cert_file=/etc/ssl/certs/mailserver.pem postconf smtpd_tls_key_file=/etc/ssl/private/mailserver.pem

Verschlüsselung

postconf smtp_tls_security_level=may
postconf smtp_tls_loglevel=1
postconf smtpd_tls_loglevel=1

Datenbank

Erstellen Sie einen MySQL-Benutzer mit Datenbank:

mysql -uroot -p -e "CREATE USER 'openmm'@'localhost' IDENTIFIED BY 'Olepxs0tkbznumx';
GRANT USAGE ON * . * TO 'openmm'@'localhost' IDENTIFIED BY 'Olepxs0tkbznumx' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE DATABASE IF NOT EXISTS openmm;
GRANT ALL PRIVILEGES ON openmm . * TO 'openmm'@'localhost';"

Geben Sie das MySQL-root-passwort ein, um den Befehl auszuführen.

openMM

Installieren Sie openMM nach /var/www/http und geben Sie im Installation-Plugin an:

  • Host: localhost
  • Benutzer: openmm
  • Passwort: Olepxs0tkbznumx
  • Datenbank: openmm

Bei der Installation werden automatisch alle benötigten Tabellen erzeugt.

Sie können dann bereits im openMM als Benutzer die ersten Domains und Mailboxen anlegen.

Zu Testzwecken legen Sie bitte mindestens die Domain test.de sowie die Mailbox test@test.de und den Alias alias@test.de an.

Postfix

Nachfolgend wird Postfix so konfiguriert, dass die Datenbank verwendet wird.

echo "user = openmm
password = Olepxs0tkbznumx
hosts = 127.0.0.1
dbname = openmm
query = SELECT 1 FROM VDomain WHERE VDomainName='%s'" > /etc/postfix/mysql-virtual-mailbox-domains.cf
postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
postmap -q test.de mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

Postmap sollte als Ergebnis "1" zurückliefern.

 

echo "user = openmm
password = Olepxs0tkbznumx
hosts = 127.0.0.1
dbname = openmm
query = SELECT 1 FROM VUser WHERE VUserName='%s'" > /etc/postfix/mysql-virtual-mailbox-maps.cf
postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
postmap -q test@test.de mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

Postmap sollte als Ergebnis "1" zurückliefern.

 

echo "user = openmm
password = Olepxs0tkbznumx
hosts = 127.0.0.1
dbname = openmm
query = SELECT VAliasDestination FROM VAlias WHERE VAliasSource='%s'" > /etc/postfix/mysql-virtual-alias-maps.cf
postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf
postmap -q alias@test.de mysql:/etc/postfix/mysql-virtual-alias-maps.cf

Postmap sollte als Ergebnis "test@test.de" zurückliefern.

 

Abschließend stellen Sie die Rechte sicher:

chgrp postfix /etc/postfix/mysql-*.cf
chmod u=rw,g=r,o= /etc/postfix/mysql-*.cf

Und Postfix soll Dovecot verwenden:

postconf virtual_transport=lmtp:unix:private/dovecot-lmtp
postconf smtpd_sasl_type=dovecot
postconf smtpd_sasl_path=private/auth
postconf smtpd_sasl_auth_enable=yes

Dovecot

groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /var/vmail -m
chown -R vmail:vmail /var/vmail
chmod u+w /var/vmail

nano /etc/dovecot/conf.d/10-auth.conf

#!include auth-system.conf.ext
!include auth-sql.conf.ext

nano /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/var/vmail/%d/%n/mail/
mail_privileged_group = vmail

nano /etc/dovecot/conf.d/15-lda.conf

postmaster_address = test@test.de

nano /etc/dovecot/dovecot-sql.conf.ext

driver = mysql
connect = host=127.0.0.1 dbname=openmm user=openmm password=Olepxs0tkbznumx
password_query = SELECT VUserName AS user, VUserPassword AS password, '/var/vmail/%d/%n' AS userdb_home, 'vmail' AS userdb_uid, 'vmail' AS userdb_gid FROM VUser WHERE VUserName='%u';
iterate_query = SELECT VUserName AS user FROM VUser
user_query = SELECT '/var/vmail/%d/%n' AS home, 'vmail' AS uid, 'vmail' AS gid FROM VUser WHERE VUserName='%u'
doveadm user '*'

Doveadm user sollte dann alle Benutzer in der Datenbank auflisten.

doveadm user test@test.de

Sollte dann folgendes Ergebnis bringen:

field value
uid 5000
gid 5000
home /var/vmail/test.de/test
mail maildir:/var/vmail/test.de/test/mail/

nano /etc/dovecot/conf.d/10-ssl.conf

ssl_cert = ssl = yes

nano /etc/dovecot/conf.d/20-lmtp.conf

protocol lmtp {
mail_plugins = $mail_plugins sieve
}

nano /etc/dovecot/conf.d/10-master.conf

Passen Sie den Block "service lmtp" folgendermaßen an:

service lmtp {
 unix_listener /var/spool/postfix/private/dovecot-lmtp {
   mode = 0600
   user = postfix
   group = postfix
  }
}

Kommentieren Sie den Block "service auth" aus und fügen Sie ihn neu ein:

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }

  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }

  user = dovecot
}

Der Block "service auth-worker" muss nur minimal angepasst werden:

service auth-worker {
user = vmail
}
chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot
service dovecot restart

Sie können jetzt eine Test-E-Mail mit dem openMM Wizard verschicken.