Groupware Server mit Debian/Ubuntu Unterbau (CalDAV, CardDAV, WebDAV, IMAPS, SMTPS)

installieren, modifizeren, administrieren
Antworten
Benutzeravatar
h3rb3rn
Administrator
Beiträge: 155
Registriert: vor 4 Jahre

Groupware Server mit Debian/Ubuntu Unterbau (CalDAV, CardDAV, WebDAV, IMAPS, SMTPS)

Beitrag von h3rb3rn » vor 2 Monate

Fassung vom 02.08.2019
*** Funktioniert aktuell nicht mit PerconaSQL! ***
Das Hostsystem

ein Ubuntu Ubuntu Server 19.04 amd64
oder Debian Debian 9.9 Stretch amd64

Repo von Debian Stretch

Code: Alles auswählen

deb http://deb.debian.org/debian stretch main contrib non-free
deb-src http://deb.debian.org/debian stretch main contrib non-free

deb http://deb.debian.org/debian-security/ stretch/updates main contrib non-free
deb-src http://deb.debian.org/debian-security/ stretch/updates main contrib non-free

deb http://deb.debian.org/debian stretch-updates main contrib non-free
deb-src http://deb.debian.org/debian stretch-updates main contrib non-free

deb http://deb.debian.org/debian stretch-backports main contrib non-free
deb-src http://deb.debian.org/debian stretch-backports main contrib non-free


Ubuntu oder Debian Server installieren (Server oder Desktop ist egal)

Wichtig: wer per SSH seinen Server aufsetzt, der sollte alle Schritte in einer Bash ausführen welche in einer Screen Session gestartet wurde. Nur so führt der Server alle Schritte bis zum Ende aus auch wenn die SSH Session unterbrochen wurde.

Code: Alles auswählen

sudo apt update && sudo  apt -y install screen
Screen Session starten mit

Code: Alles auswählen

sudo screen bash
Hostname an die öffentliche Domain anpassen (wenn bei der Installation des Basis Systems noch nicht geschehen)

Der Hostname muss identisch (gleichnamig) sein zur verwendete Domain oder Subdomain die auf die Server IP zeigt. Die Server IP muss in der Domainverwaltung der Nameserver Einstellungen hinterlegt sein.

Beispiel:

Code: Alles auswählen

sudo nano /etc/hosts
Inhalt von /etc/hosts

Code: Alles auswählen

127.0.0.1       localhost
127.0.1.1       cloud.4noobs.de cloud

# The following lines are desirable for IPv6 capable hosts
#::1     localhost ip6-localhost ip6-loopback
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters

Code: Alles auswählen

sudo nano /etc/hostname
Inhalt von /etc/hostname

Code: Alles auswählen

cloud

Server anschließend neu starten damit der neue Hostname übernommen wird.

Hinweis: Wenn die IP des Servers nicht in den Nameserver Einstellungen der Domain hinterlegt ist, kann der Hostname nicht aufgelöst werden. Dadurch lässt sich der Mailserver Dienst amavisd-new nicht konfigurieren.

Bei Heimservern, welche hinter einem DSL Anschluss mit öffentlicher IPv4 Adresse hängen, muss statt der Server IP die öffentliche IPv4 Adresse des DSL Anschlusses in den Nameserver Einstellungen der verwendeten Domain hinterlegt werden. Wer keine feste IP Adresse hat kann stattdessen auch einen CNAME Eintrag einen DynDNS Dienstes in den Nameserver Einstellungen hinterlegen. Zusätzlich muss ein Portforwarding im Router auf die lokale IP des Servers eingerichtet werden.



System bereinigen und für Groupware Installation vorbereiten

Code: Alles auswählen

sudo service sendmail stop; update-rc.d -f sendmail remove
Grundinstallation für Webservices und Verschlüsselungszertifikate

Paketquellen aktualisieren

Code: Alles auswählen

sudo apt update && sudo apt -y full-upgrade


Für Installation unter Debian/Ubuntu

Code: Alles auswählen

sudo apt -y install ssh mc vim  unzip bzip2 arj nomarch lzop cabextract patch
Standard

Code: Alles auswählen

sudo apt -y install nginx
Debian Backports

Code: Alles auswählen

sudo apt -y install nginx/stretch-backports

Code: Alles auswählen

sudo apt -y install letsencrypt python-certbot-nginx -t stretch-backports

Code: Alles auswählen

sudo apt -y install postfix postfix-mysql postfix-doc getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd amavisd-new spamassassin clamav clamav-daemon apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl mailman sudo



Quelle: https://packages.sury.org/php/README.txt

Code: Alles auswählen

sudo apt -y install apt-transport-https lsb-release ca-certificates
Für Debian

Code: Alles auswählen

wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Code: Alles auswählen

sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Für Ubuntu

Code: Alles auswählen

sudo add-apt-repository ppa:ondrej/php

Code: Alles auswählen

sudo apt-get update && sudo apt -y install php-mysql php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap php7.2-cli php7.2-cgi php-pear imagemagick libruby php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-opcache php-apcu php7.2-fpm redis-server php-memcache php-imagick php-gettext php7.2-zip php7.2-mbstring openssl easy-rsa openvpn aptitude libreoffice clamav libnet-ldap-perl libconvert-asn1-perl ntp ntpdate  bind9 dnsutils haveged fail2ban ufw javascript-common libjs-jquery-mousewheel php-net-sieve tinymce libnet-rblclient-perl libparse-syslog-perl php-mbstring php-curl software-properties-common

Mailserver Komponenten konfigurieren

Code: Alles auswählen

sudo service spamassassin stop 
update-rc.d -f spamassassin remove

Code: Alles auswählen

sudo nano /etc/clamav/clamd.conf
Bei "AllowSupplementaryGroups" den Wert von "false auf "true" abändern

Code: Alles auswählen

AllowSupplementaryGroups true 

Code: Alles auswählen

sudo freshclam
sudo service clamav-daemon start
Bei Fehlermeldung
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
nachfolgende Codezeilen ausführen

Code: Alles auswählen

cd /tmp
wget https://git.ispconfig.org/ispconfig/ispconfig3/raw/stable-3.1/helper_scripts/ubuntu-amavisd-new-2.11.patch
cd /usr/sbin
sudo cp -pf amavisd-new amavisd-new_bak
sudo patch < /tmp/ubuntu-amavisd-new-2.11.patch
Postausgangsserver konfigurieren

Code: Alles auswählen

sudo nano /etc/postfix/master.cf
Die # bei den nachfolgenden Codezeilen enffernen

Code: Alles auswählen

  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
Port des Postausgangsservers ändern

In vielen Firmen- und Hochschulnetzwerken ist der Port 25 gesperrt. Der Port 25 wird in der Regel für unverschlüsselten Mailversand genutzt und besonders von Spambots missbraucht. Unser Mailserver jedoch sendet verschlüsselt per SMTPS auf Port 465

Code: Alles auswählen

sudo nano /etc/postfix/master.cf
Die nachfolgende Zeile suchen

Code: Alles auswählen

smtp      inet  n       -       y       -       -       smtpd
das smtp zu Anfang der Zeile durch 465 ersetzen

Code: Alles auswählen

465      inet  n       -       y       -       -       smtpd
Speichern und Postfixserver neustarten

Code: Alles auswählen

sudo service postfix restart
*** Funktioniert aktuell nicht mit ISPConfig3 ***

Alternativ MariaDB-Server installieren
Percona MySQL Server installieren

Quelle: https://www.percona.com/doc/percona-ser ... _repo.html

Code: Alles auswählen

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
sudo apt update && sudo percona-release setup ps57 percona-toolkit
sudo apt-get install percona-server-server-5.7
Alternative:

Code: Alles auswählen

sudo apt install mariadb-server


Ausführen!

Code: Alles auswählen

mysql_secure_installation

Passwort Authentifizierung umstellen

Code: Alles auswählen

mysql -u root -p

Code: Alles auswählen

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpassword';

Code: Alles auswählen

CREATE USER 'root@%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root@%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

ISPConfig3 installieren

Code: Alles auswählen

cd /tmp
wget https://ispconfig.org/downloads/ISPConfig-3.1.14p2.tar.gz
tar xzf ISPConfig-3.1.14p2.tar.gz
cd ispconfig3_install
cd install
php install.php

Hinweis: für ein Update von ISPConfig3 den gleichen Weg gehen, aber statt "php install.php" muss "php update.php" ausgeführt werden!


Nach der Installation von ISPConfig3 Rechner neustarten und über das

Webinterfache https://ipdesservers:8080 aufrufen und mit

Benutzer: admin
Passwort: "das bei der Installation vergebene Passwort"

einloggen.

Hinweis: bei alten ISPConfig3 Versionen war das Passwort "admin" vorgegeben




Platzhalter für Screenshots von ISPConfig3 beim Anlegen der Domains für phpMyAdmin, Roundcube und nextCloud.




Webserverinhalte Roundcube (WebGUI um Mails abzurufen) und nextCloud installieren

Roundcube installieren

Voraussetzungen erfüllen

Code: Alles auswählen

pear install Mail_Mime

Code: Alles auswählen

pear install Net_IDNA2
Wenn Net_IDNA2 sich nicht installieren lässt dann muss es manuell heruntergeladen werden

Code: Alles auswählen

php pyrus.phar install pear/Net_IDNA2
**** PFAD MUSS NOCH ANGEPASST WERDEN****

Code: Alles auswählen

cd /var/www/client...
wget "https://github.com/roundcube/roundcubemail/archive/master.zip"
unzip master.zip


nextCloud installieren

**** PFAD MUSS NOCH ANGEPASST WERDEN****

Code: Alles auswählen

cd /var/www/
wget https://download.nextcloud.com/server/releases/nextcloud-13.0.4.zip
unzip nextcloud-13.0.4.zip
chown www-data:www-data -R /var/www/client.../nextcloud
rm nextcloud-13.0.4.zip
Im Browser http://beispielserver.de/phpmyadmin aufrufen und Benutzer mit Datenbank für nextCloud anlegen.

Datenverzeichnis für nextCloud anlegen. Dieses sollte sich Außerhalb des Webverzeichnisses befinden. In meinem Fall habe ich

Code: Alles auswählen

mkdir /home/benutzer/nextcloud
chown www-data:www-data /home/benutzer/nextcloud/
angelegt und dem Webserver Zugriffsberechtigung erteilt.

Um Dateien größer 2 MB hochladen zu können und damit der Webserver die korrekte Zeitzone kennt (für Roundcube) müsst Ihr noch in der
vim /etc/php/7.2/apache2/php.ini folgende Werte ändern auf

Code: Alles auswählen

vim /etc/php/7.2/apache2/php.ini

Code: Alles auswählen

post_max_size = 1024M
upload_max_filesize = 1024M
date.timezone = Europe/Berlin
Wichtiger Hinweis:

wenn der Mail Server ohne Relayhost betrieben wird, muss unbedingt noch der PTR Resource Record und SPF Record gesetzt werden da sonst die ausgehenden Mails von den Mailservern des Empfängers mit hoher Wahrscheinlichkeit abgewiesen werden aufgrund dessen verschärften SPAM Filtern.

Eine Anleitung dazu gibt es hier im Forum unter >>> diesem Link <<<

Link:
BBcode:
HTML:
Hide post links
Show post links

Antworten