nextCloud und Mail Server mit Roundcube und ISPconfig3 auf Ubuntu Server 18.04 LTS (auch 16.04 und 17.10)
Quellen: https://www.howtoforge.com/tutorial/per ... ispconfig/
Eigener Mail- und Cloudserver rein aus freier Software ohne Lizenzkosten auch im Gewerblichen Einsatz.
Das Hostsystem meiner Wahl ist ein Ubuntu Server 18.04 amd64 mit nachträglich eingepflegten PPAs der entsprechenden Communitys.
Ubuntu 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: Select all
apt update && apt -y install screen vim
Code: Select all
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: Select all
vim /etc/hosts
Code: Select all
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: Select all
vim /etc/hostname
Code: Select all
cloud
Server anschließend neustarten 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: Select all
service sendmail stop; update-rc.d -f sendmail remove
Fakultät Wirtschafts- und Sozialwissenschaften\\
Grundinstallation für Webservices und Verschlüsselungszertifikate
Paketquellen aktuallisieren
Code: Select all
apt update && apt -y dist-upgrade
Für Installation unter Ubuntu 18.04 LTS
Code: Select all
apt -y install ssh mc vim apache2 apache2-doc apache2-utils postfix postfix-mysql postfix-doc mariadb-client mariadb-server getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract 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 libapache2-mod-php php-mysql php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap php7.2-cli php7.2-cgi libapache2-mod-php libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python 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 memcached 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 letsencrypt 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
Code: Select all
apt -y install ssh mc vim apache2 apache2-doc apache2-utils postfix postfix-mysql postfix-doc mariadb-client mariadb-server getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract 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 libapache2-mod-php php-mysql php7.1 php7.1-common php7.1-gd php7.1-mysql php7.1-imap php7.1-cli php7.1-cgi libapache2-mod-php libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python php7.1-curl php7.1-intl php7.1-pspell php7.1-recode php7.1-sqlite3 php7.1-tidy php7.1-xmlrpc php7.1-xsl php7.1-opcache php-apcu php7.1-fpm memcached php-memcache php-imagick php-gettext php7.1-zip php7.1-mbstring openssl easy-rsa openvpn aptitude libreoffice clamav libnet-ldap-perl libconvert-asn1-perl ntp ntpdate letsencrypt 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
Code: Select all
apt -y install ssh mc vim apache2 apache2-doc apache2-utils postfix postfix-mysql postfix-doc mariadb-client mariadb-server getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract 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 libapache2-mod-php php-mysql php7.0 php7.0-common php7.0-gd php7.0-mysql php7.0-imap php7.0-cli php7.0-cgi libapache2-mod-php libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python php7.0-curl php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-opcache php-apcu php7.0-fpm memcached php-memcache php-imagick php-gettext php7.0-zip php7.0-mbstring openssl easy-rsa openvpn aptitude libreoffice clamav libnet-ldap-perl libconvert-asn1-perl ntp ntpdate letsencrypt 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
Let's Encrypt SSL/TLS Verschlüsselung
Code: Select all
sudo add-apt-repository ppa:certbot/certbot
Code: Select all
apt update && apt install python-certbot-apache
Apache Modul konfigurieren
Code: Select all
vim /etc/apache2/conf-available/httpoxy.conf
Code: Select all
<IfModule mod_headers.c>
RequestHeader unset Proxy early
</IfModule>
Apache Module aktivieren
Ubuntu 18.04 LTS
Code: Select all
a2enconf php7.2-fpm
Code: Select all
a2enconf php7.1-fpm
Code: Select all
a2enconf php7.0-fpm
Code: Select all
a2enmod suexec rewrite ssl actions include cgi
a2enmod dav_fs dav auth_digest headers
a2enmod actions fastcgi alias
a2enconf httpoxy
a2enmod proxy_fcgi setenvif
Mailserver Komponenten konfigurieren
Code: Select all
service spamassassin stop
update-rc.d -f spamassassin remove
Code: Select all
vim /etc/clamav/clamd.conf
Code: Select all
AllowSupplementaryGroups true
Code: Select all
freshclam
service clamav-daemon start
nachfolgende Codezeilen ausführenERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
Code: Select all
cd /tmp
wget https://git.ispconfig.org/ispconfig/ispconfig3/raw/stable-3.1/helper_scripts/ubuntu-amavisd-new-2.11.patch
cd /usr/sbin
cp -pf amavisd-new amavisd-new_bak
patch < /tmp/ubuntu-amavisd-new-2.11.patch
Postausgangsserver konfigurieren
Code: Select all
vim /etc/postfix/master.cf
Code: Select all
-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: Select all
vim /etc/postfix/master.cf
Code: Select all
smtp inet n - y - - smtpd
Code: Select all
465 inet n - y - - smtpd
Code: Select all
service postfix restart
MariaDB Server anpassen
Code: Select all
vim /etc/mysql/my.cnf
Code: Select all
#bind-address = 127.0.0.1
Code: Select all
[mysqld]
sql-mode="NO_ENGINE_SUBSTITUTION"
Code: Select all
service mysqld restart
Code: Select all
mysql_secure_installation
XMPP Chatserver installieren
Code: Select all
apt-get -y install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocks
Code: Select all
luarocks install lpc
Code: Select all
adduser --no-create-home --disabled-login --gecos 'Metronome' metronome
Code: Select all
cd /opt; git clone https://github.com/maranda/metronome.git metronome
cd ./metronome; ./configure --ostype=debian --prefix=/usr
make
make install
ISPConfig3 installieren
Code: Select all
cd /tmp
wget https://ispconfig.org/downloads/ISPConfig-3.1.13.tar.gz
tar xzf ISPConfig-3.1.13.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: Select all
pear install Mail_Mime
Code: Select all
pear install Net_IDNA2
Code: Select all
php pyrus.phar install pear/Net_IDNA2
Code: Select all
cd /var/www/client...
wget "https://github.com/roundcube/roundcubemail/archive/master.zip"
unzip master.zip
nextCloud installieren
**** PFAD MUSS NOCH ANGEPASST WERDEN****
Code: Select all
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
Datenverzeichnis für nextCloud anlegen. Dieses sollte sich Außerhalb des Webverzeichnisses befinden. In meinem Fall habe ich
Code: Select all
mkdir /home/benutzer/nextcloud
chown www-data:www-data /home/benutzer/nextcloud/
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: Select all
vim /etc/php/7.2/apache2/php.ini
Code: Select all
post_max_size = 1024M
upload_max_filesize = 1024M
date.timezone = Europe/Berlin
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 <<<