openMM Stretch Installation
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 'Dlvggqfvwowasph';
GRANT USAGE ON * . * TO 'openmm'@'localhost' IDENTIFIED BY 'Dlvggqfvwowasph' 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: Dlvggqfvwowasph
- 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 = Dlvggqfvwowasph
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 = Dlvggqfvwowasph
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 = Dlvggqfvwowasph
hosts = 127.0.0.1
dbname = openmm
query = query = SELECT 1 FROM VDomain WHERE VDomainName='%d' AND VDomainCatchAll = 1 LIMIT 1" > /etc/postfix/mysql-virtual-mailbox-catchall.cf
postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf,mysql:/etc/postfix/mysql-virtual-mailbox-catchall.cf
postmap -q test@test.de mysql:/etc/postfix/mysql-virtual-mailbox-catchall.cf
Postmap sollte als Ergebnis "1" zurückliefern, wenn für die Domain Catchall aktiviert ist.
echo "user = openmm
password = Dlvggqfvwowasph
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=Dlvggqfvwowasph
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.