Postfix Virtual Hosting mit LDAP-Backend und mit Dovecot als IMAP/POP3-Server auf Ubuntu Bionic Beaver 18.04 LTS

Dieses Howto beschreibt die Einrichtung und Konfiguration von virtuellem Mail-Hosting mit einem LDAP-Backend.

Die Software, die wir in diesem Howto verwenden werden: Postfix (MTA), Dovecot (IMAP / POP3), Gnarwl (Urlaub), OpenLDAP (LDAP) und vMailpanel als Verwaltungsoberfläche.

Optional sind Proftpd FTP,Roundcube (Webmail) und MariaDB (SQL-Backend für Roundcube).

Das hat bei mir funktioniert, aber ich kann nicht garantieren, dass diese Einrichtung für Sie funktioniert, also kommt dieses Howto ohne jegliche Garantie.

Annahmen

Dieses How-To geht von den folgenden Konfigurationen aus, falls Ihre Installation davon abweicht, dann ersetzen Sie die Einträge unten durch Ihre tatsächliche Konfiguration.

Pfad der Mailzustellung (Mailboxen):

/home/vmail/

Benutzer vmail:

UID:1000, GID:1000

Benutzer-Postfix:

UID: 108, GID:108

OpenLDAP-Basis dn:

dc=example,dc=tld

OpenLDAP-Administrator-Konto:

cn=admin,dc=example,dc=tld

vMailpanel-Suche dn:

o=hosting,dc=example,dc=tld

Ein schreibgeschütztes Konto für den o=Hosting,dc=Beispiel,dc=tld-Baum:

cn=vmail,o=hosting,dc=example,dc=tld

Während dieser Anleitung benutzen Sie root als Benutzer.

Wenn Sie z.B. o=Maildomains oder ou=Domains wollen, ersetzen Sie bitte o=Hosting durch das, was Sie wollen, insbesondere in der acl.ldif. Diese acl-Datei ist streng, phamm wird nicht korrekt funktionieren, wenn sie nicht genau so ist, wie sie sein sollte. Wenn Sie einen anderen Nur-Lese-Benutzer als phamm wünschen, ersetzen Sie cn=phamm durch cn=wat-you überall in diesem How to.

Diese Anleitung geht auch davon aus, dass Sie Ihren Ubuntu-Server installiert und konfiguriert haben, es gibt viele gute Anleitungen z.B. auf Howtoforge:

Der perfekte Server – Ubuntu 18.04 (Bionic Beaver) mit Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot und ISPConfig 3.1

Sie können nach der Installation und Konfiguration des Apache2 aufhören.

Schritt 1: vMailpanel herunterladen

Laden Sie das vMailpanel-Paket herunter:

cd /usr/share

Holen Sie sich die neueste Version von vMailpanel:

git clone https://git.com/wolmfan68/vMailpanel

OK, jetzt können wir anfangen.

Schritt 2: OpenLDAP installieren und konfigurieren

Installieren Sie OpenLDAP und ldap-utils:

apt -y install slapd ldap-utils php-ldap

Konfigurieren Sie slapd neu, um sicherzustellen, dass es Ihr gewünschtes Setup widerspiegelt

dpkg-reconfigure slapd

Sie werden einige Fragen beantworten müssen:

Omit OpenLDAP server configuration? No
 DNS domain name: example.tld ==>put your domain name here
Organization name: example.tld ==> put your organization here
 Administrator password: secret ==> put your password
 Confirm password: secret
Database backend to use: MDB
 Do you want the database to be removed when slapd is purged? Yes
 Move old database? Yes

Wechseln Sie in das Verzeichnis /etc/ldap/schema:

cd /etc/ldap/schema

Kopieren Sie das phamm.schema und perversia.net.schema aus dem phamm-Paket in das schema-Verzeichnis:

cp /usr/share/vMailbox/schema/* /etc/ldap/schema.

Jetzt fügen wir die Schemata zu openldap hinzu.

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/phamm.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ISPEnv2.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/amavis.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/pureftpd.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/perversia.net.ldif

Nun erstellen wir den o=Hosting-Eintrag und den vmail-Account.

Passen Sie den untenstehenden Text Ihren Bedürfnissen und Wünschen an und generieren Sie ein Passwort für den vmail-Account. Der Hash, der sich in dieser Datei befindet, setzt das Passwort auf schreibgeschützt

Um den Hash für das vmail-Konto zu erstellen, geben Sie den folgenden Befehl ein:

slappasswd -h {MD5}

Geben Sie das gewünschte Passwort zweimal ein und kopieren Sie das Ergebnis in den Text unten.

nano base.ldif

Inhalt der base.ldif

dn: o=hosting,dc=example,dc=tld
objectClass: organization
objectClass: top
o: hosting description: Hosting Organization
# Read only account
dn: cn=vmail,o=hosting,dc=example,dc=tld
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: vmail
userPassword: {MD5}M267sheb6qc0Ck8WIPOvQA==
description: Read only account

Laden Sie die Basis dn mit folgendem Befehl in die Datenbank:

ldapmodify -a -D cn=admin,dc=example,dc=tld -W -f base.ldif

Nun müssen wir die Acl’s so modifizieren, dass für jeden Benutzertyp der richtige Zugriff gewährt wird.

ldapmodify -Y EXTERNAL -H ldapi:/// -f acl-remove.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f acl-new.ldif

Sie können die neuen Acl’s mit dem folgenden Befehl überprüfen:

slapcat -n 0

Damit ist die OpenLDAP-Konfiguration abgeschlossen.

Schritt 3: Installieren und Konfigurieren von Postfix

Zuvor müssen wir den vmail-Benutzer und sein Heimatverzeichnis haben.

Erstellen Sie den vmail-Benutzer und die Gruppe:

useradd vmail

Standardmäßig wird auch die Gruppe vmail erstellt.

Überprüfen Sie /etc/passwd auf die tatsächliche uid und Gruppennummer.

Als nächstes erstellen Sie das vmail-Verzeichnis und legen die Eigentümerschaft für den vmail-Benutzer und die Gruppe fest.

mkdir /home/vmail
mkdir /home/vmail/domains 
chown -R vmail:vmail /home/vmail

Führen Sie den folgenden Befehl aus, um Postfix und andere erforderliche Anwendungen zu installieren:

apt install postfix postfix-ldap

Es werden Ihnen zwei Fragen gestellt. Antworten Sie wie folgt:

Allgemeine Art der Mail-Konfiguration:<–Steht allein
Name der System-Mail:<– mail.beispiel.tld

Wir installieren sasl nicht, da wir den Dovecot LDA verwenden und ausliefern werden.

Nun erstellen wir die Zertifikate für TLS:

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Hinweis: Sie können alle Dateien unter examples/postfix in Ihr etc/postfix-Verzeichnis kopieren und entsprechende Änderungen vornehmen. Der Vollständigkeit halber gebe ich unten das komplette Setup an.

Nun werden wir Postfix konfigurieren:

cd /etc/postfix
mv /etc/postfix/main.cf /etc/postfix/main.cf.bck
nano /etc/postfix/main.cf

Und fügen Sie folgendes ein. Bitte beachten Sie, dass diese Konfiguration das Versenden (Weiterleiten) von Mails durch authentifizierte Benutzer erlaubt, und auch das Versenden von lokalen Mails (wie z.B. an root, postmaster, …) an die entsprechenden Aliase, falls diese konfiguriert sind.

smtpd_banner = $myhostname ESMTP $mail_name
biff = no # das
Anhängen
der .domain ist Aufgabe der MUA. append_dot_mydomain
= no # Die nächste Zeile auskommentieren

, um „verzögerte Mail“ zu generieren warnings delay_warning_time
= 4h # TLS

Parameter smtpd_tls_cert_file
= /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache myhostname

= mail.example.tld
alias_maps = hash:/etc/aliases,
alias_database = hash:/etc/aliases
myorigin = localhost
relayhost = mynetworks
= 127.0.0.0/8
dovecot_destination_recipient_limit = 1
mailbox_command = /usr/lib/deliver
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = alle
inet_protocols = alle
#smtp_bind_address = Ihre IP-Adresse (optional) ==>Markierung aufheben und die IP-Adresse für Ihr Setup ändern.
smtpd_sasl_lokale_Domäne =
smtpd_sasl_auth_enable = ja
smtpd_sasl_security_options = neinanonym
smtpd_sasl_type = Taubenschlag
smtpd_sasl_path = privat/auth
broken_sasl_auth_clients = ja
smtpd_tls_auth_only = nein

smtp_use_tls = ja
smtp_tls_note_starttls_offer = ja
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = ja
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

home_mailbox = Maildir/ smtpd_recipient_restrictions

=
permit_mynetworks allow_sasl_authenticated
reject_invalid_hostname
reject_non_fqdn_hostname reject_non_fqdn_sender reject_non_fqdn_recipient
reject_unauth_destination
reject_unauth_pipelining reject_invalid_hostname
reject_unknown_sender_domain
reject_rbl_client list.dsbl.org reject_rbl_client
cbl.abuseat.org reject_rhsbl_sender
dsn.fc-ignorant.org

smtpd_data_restrictions = reject_unauth_pipelining
, reject_multi_recipient_bounce
, permit smtpd_helo_required
= yes
# transport_maps
maildrop_destination_concurrency_limit = 2 maildrop_destination_recipient_limit
= 1 gnarwl_destination_concurrency_limit
= 1 gnarwl_destination_recipient_limit
= 1 transport_maps
= hash:/etc/postfix/transport, ldap:/etc/postfix/ldap-transport.cf
mydestination = $transport_maps, localhost, localhost.localdomain, $myhostname, localhost.$mydomain, $mydomain

virtual_alias_maps = ldap
:/etc/postfix/ldap-aliases.cf, ldap:/etc/postfix/ldap-virtualforward
.cf, ldap
:/etc/postfix/ldap-accountsmap.cf # virtuelle
Konten
für die Zustellung virtual_mailbox_base
= /home/vmail virtual_mailbox_maps
= ldap:/etc/postfix/ldap-accounts
.cf
virtual_minimum_uid = 1000 ==> Ändern Sie dies auf die aktuelle uid des Benutzers vmail virtual_uid_maps
= static:1000 ==> Ändern Sie dies auf die aktuelle uid des Benutzers vmail virtual_gid_maps =
static:1000 ==> Ändern Sie dies auf die aktuelle uid des Benutzers vmail local_recipient_maps

= $alias_maps recipient_bcc_maps

= ldap:/etc/postfix/ldap-vacation.vgl.

nano /etc/postfix/master.cf

Und fügen Sie das Folgende ein (fügen Sie das Ende hinzu):

dovecot   unix  -       n       n       -       -       pipe
         flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
gnarwl    unix  -       n       n       -       -       pipe
         flags=F  user=vmail argv=/usr/bin/gnarwl -a ${user}@${nexthop} -s ${sender}

Jetzt müssen wir die verschiedenen ldap-xxx.cf Dateien schreiben

nano ldap-accounts.cf

Und fügen Sie folgendes ein:

server_host = localhost
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=vmail,o=hosting,dc=Beispiel,dc=tld
bind_pw = readmonly
search_base = o=hosting,dc=Beispiel,dc=tld
scope = sub
query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute = Postfach

nano ldap-accounstmap.cf

Und fügen Sie folgendes ein:

server_host = localhost
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=vmail,o=hosting,dc=Beispiel,dc=tld
bind_pw = nur lesen
search_base = o=hosting,dc=Beispiel,dc=tld
scope = sub
query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute = mail

nano ldap-aliases.cf

Und fügen Sie folgendes ein:

server_host = localhost
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=vmail,o=hosting,dc=Beispiel,dc=tld
bind_pw = nur lesen
search_base = o=hosting,dc=Beispiel,dc=tld
scope = sub
query_filter = (&(&(objectClass=VirtualMailAlias)(mail=%s))(accountActive=TRUE))
result_attribute = maildrop

nano ldap-transport.cf

Und fügen Sie folgendes ein:

server_host = localhost
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=vmail,o=hosting,dc=Beispiel,dc=tld
bind_pw = nur lesen
search_base = o=hosting,dc=Beispiel,dc=tld
scope = sub
query_filter = (&(&(vd=%s)(objectClass=VirtualDomain))(accountActive=TRUE)(delete=FALSE)) result_attribute
= postfixTransport

Nano-Ldap-Verdampfung.cf

Und fügen Sie folgendes ein:

server_host = localhost
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=vmail,o=hosting,dc=Beispiel,dc=tld
bind_pw = nur lesen
search_base = o=hosting,dc=Beispiel,dc=tld
scope = sub
query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(vacationActive=TRUE)(forwardActive=FALSE)(accountActive=TRUE)(delete=FALSE))
result_attribute = mailAutoreply

nano ldap-virtualforward.cf

Und fügen Sie folgendes ein:

server_host = localhost
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=vmail,o=hosting,dc=Beispiel,dc=tld
bind_pw = nur lesen
search_base = o=hosting,dc=Beispiel,dc=tld
scope = sub
query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(vacationActive=FALSE)(forwardActive=TRUE)(accountActive=TRUE)(delete=FALSE))
result_attribute = maildrop

Damit ist das Postfix-Setup abgeschlossen.

Schritt 4: Installieren und Konfigurieren von Dovecot

apt install dovecot-imapd dovecot-pop3d dovecot-ldap

Dies installiert dovecot und alle notwendigen Dateien und erstellt auch die Standard-SSL-Zertifikate für IMAPs und POP3s.

Zuerst wechseln wir in das Taubenschlag-Verzeichnis.

Hinweis: Sie können alle Dateien unter examples/dovecot in Ihr etc/dovecot-Verzeichnis kopieren und entsprechende Änderungen vornehmen. Der Vollständigkeit halber gebe ich unten das komplette Setup an.

 cd /etc/dovecot

Nun konfigurieren wir die verschiedenen Taubenschlag-Konfigurationsdateien.

nano dovecot-ldap.conf.ext

Und nehmen Sie die folgenden Änderungen vor:

hosts = lokalerGastgeber:389
ldap_version = 3 auth_bind =
ja dn= cn=vmail,o=Hosting,dc=Beispiel,dc=tld dnpass =
Nur-Lese-Basis= o=Hosting,dc=Hosting,dc=tld scope= Teilbaum deref =
nie user_attrs = quota=quota=maildir:Speicher
user_attrs = quota=quota=maildir:storage=%$B
user_filter = (&(objectClass=VirtualMailAccount)(accountActive=TRUE)(mail=%u)) pass_attrs
= mail,userPassword pass_filter
= (&(objectClass=VirtualMailAccount)(accountActive=TRUE)(mail=%u)) default_pass_scheme
= MD5

cd conf.d
vi 10-auth.conf

Und ändern Sie die Sektion Passwort und Benutzerdatenbanken auf diese:

#!include auth-deny.conf.ext
#!include auth-master.conf.ext

#!include auth-system.conf.ext
#!include auth-sql.conf.ext
!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext

vi 10-mail.conf

Und nehmen Sie die folgenden Änderungen vor:

mail_location = maildir:/home/vmail/%d/%u

mail_uid = 1000 ==> Änderung auf den aktuellen vmail uid Wert

mail_gid = 1000 ==> ändere dies auf den aktuellen vmail gid Wert

first_valid_uid = 1000 ==> Wechsel zum aktuellen vmail uid Wert

erstes_gültiges_Gid = 1000==> ändere dies auf den tatsächlichen vmail gid Wert

 

vi 10-master.conf

Und nehmen Sie die folgenden Änderungen vor:

unix_listener auth-userdb { mode =
0666 benutzer = vmail
gruppe = vmail } #

Postfix smtp-auth unix_listener
/var/spool/postfix/private/auth { mode =
0666 }

 vi 15-lda.conf

Und nehmen Sie die folgenden Änderungen vor:

postmaster_Adresse = postmaster@example.tld

lda_mailbox_autocreate = ja

Damit ist die Dovecot-Konfiguration abgeschlossen.

Schritt 5: Installieren und Konfigurieren von gnarwl

Installieren wir Gnarwl:

apt install gnarwl

Nun lass uns gnarwl konfigurieren.

Zuerst werden wir die ursprüngliche Konfigurationsdatei sichern und durch eine neue ersetzen.

mv /etc/gnarwl.conf /etc/gnarwl.conf.bck

Nun erstellen wir die neue Conf-Datei:

vi /etc/gnarwl.conf

Und fügen Sie Folgendes ein:

map_sender $sender
map_receiver $recepient
map_subject $subject
map_field $begin vacationStart
map_field $end vacationEnd
map_field $fullname cn
map_field $deputy vacationForward
map_field $reply mail
server localhost
port 389
scope sub
login cn=vmail,o=hosting,dc=example,dc=tld
password readonly
protocol 0
base dc=example,dc=tld
queryfilter (&(mailAutoreply=$recepient)(vacationActive=TRUE))
result vacationInfo
blockfiles /var/lib/gnarwl/block/
umask 0644
blockexpire 48
mta /usr/sbin/sendmail -F $recepient -t $sender
maxreceivers 64
maxheader 512
charset ISO8859-1
badheaders /var/lib/gnarwl/badheaders.db
blacklist /var/lib/gnarwl/blacklist.db
forceheader /var/lib/gnarwl/header.txt
forcefooter /var/lib/gnarwl/footer.txt
recvheader To Cc
loglevel 3

Machen Sie das gnarwl-Verzeichnis für den vmail-Benutzer lesbar

chown -R vmail:vmail /var/lib/gnarwl/

Als nächstes müssen wir den gnarwl-Transport zu postfix hinzufügen

vi /etc/postfix/transport

Fügen Sie Folgendes ein:

.autoreply      gnarwl:

Jetzt müssen wir die transport.db erstellen

postmap /etc/postfix/transport

Damit ist die Gnarwl-Konfiguration abgeschlossen.

Schritt 6: Installieren und Konfigurieren von vMailpanel

Da wir vMailpanel bereits heruntergeladen haben, können wir direkt mit der Konfiguration der vMailpanel-Schnittstelle beginnen.

chown -R www-data:www-data /usr/share/phamm
cd /usr/share/vMailpanel

Nun werden wir phamm für die tatsächliche Nutzung konfigurieren.

cp config.inc.example.php config.inc.php
nano config.inc.php

Ändern Sie die ldap-Verbindungsparameter so, dass sie zu Ihrer aktuellen Konfiguration passen.

// *============================*
// *=== LDAP Server Settings ===*
// *============================*

// The server address (IP or FQDN)
define ('LDAP_HOST_NAME','127.0.0.1');

// The protocol version [2,3]
define ('LDAP_PROTOCOL_VERSION','3');

// The server port
define ('LDAP_PORT','389');

// The container
define ('SUFFIX','dc=example,dc=tld');

// The admin bind dn (could be rootdn)
define ('BINDDN','cn=admin,dc=example,dc=tld');

// The Phamm container
define ('LDAP_BASE','o=hosting,dc=example,dc=tld');

und Veränderung

// Welcome message
define ('SEND_WELCOME',1);
$welcome_msg = '../welcome_message.txt';
$welcome_subject = 'Welcome!';
# $welcome_sender = 'postmaster@localhost';
$welcome_bcc = 'postmaster@example.tld';

Dies wird eine Willkommensnachricht und ein bcc an Ihren Postmaster-Account senden.

Aktivieren Sie das fpt- und Personen-Plugin, indem Sie das // in der Plugin-Sektion entfernen. Falls gewünscht, können Sie auch die davical und/oder jabber Plugins aktivieren, das für diese Plugins benötigte Schema wird installiert.

In der config.inc.php finden Sie

define ('DELETE_ACCOUNT_IMMEDIATELY', false);

Wenn Sie dies auf „true“ setzen, wird die Account- oder Domain-Löschung sofort wirksam. Die physische Mailbox wird jedoch nicht gelöscht (auch nicht das Domainverzeichnis). Um die physische Mailbox zu löschen, sollten wir das Skript cleaner.sh verwenden. Dies wird im Folgenden beschrieben.

Sie können plugins/mail.xml bearbeiten, um die Standardeinstellungen für SMTP und Quota zu ändern, und sie Ihren Bedürfnissen anzupassen. Die Standardeinstellung ist auf 1GB Quote eingestellt.

Sie können bearbeitenplugins/ftp.xmlum die Voreinstellungen für das Standard ftp (base) Verzeichnis und die Quota zu ändern, passen Sie diese Ihren Bedürfnissen an.

Vergessen Sie nicht, die Aliase und oder Mailboxen für Postmaster, Webmaster zu erstellen, da diese von Beamten und ISP’s verwendet werden, um im Falle von … Das Fehlen dieser Adressen könnte dazu führen, dass sie auf eine schwarze Liste gesetzt werden.

Standardmäßig werden die Aliase abuse@domain.tld und spam@domain.tld, die standardmäßig auf postmaster@domain.tld gesetzt sind, erstellt.

Jetzt das Cleaner-Skript:

cp tools/cleaner.sh /home/vmail/cleaner.sh

Ändern Sie Folgendes in cleaner.sh

BINDDN="cn=admin,dc=example,dc=tld"
BINDPW="password"
LDAP_BASE="o=hosting,dc=example,dc=tld"

Um Ihre Installation widerzuspiegeln

nano /home/vmail/cleaner.sh
crontab -e

Fügen Sie Folgendes ein:

*/10 * * * * /home/vmail/cleaner.sh

Dadurch wird das Cleaner-Skript alle 10 Minuten ausgeführt. Sie können das Timing gerne ändern.

Nun werden wir vMailpanel zum Apache hinzufügen

nano /etc/apache2/conf-enabled/000-default.conf

Und fügen Sie zwischen den Einträgen <VirtualHost> </VirtualHost> folgendes ein:

Alias /vmailpanel /usr/share/vMailpanel/public

Damit ist die vMailpanel-Konfiguration abgeschlossen.

Schritt 7: Roundcube Webmail installieren und konfigurieren

Zuerst erstellen wir eine Datenbank namens Roundcube:

mysqladmin -u root -p create roundcube

Als n?chstes gehen wir in die MySQL-Shell:

mysql -u root -p

Auf der MySQL-Shell erstellen wir den Benutzer roundcube mit dem Passwort roundcube_password (ersetzen Sie es durch ein Passwort Ihrer Wahl), der SELECT,INSERT,UPDATE,DELETE-Privilegien auf der roundcube-Datenbank hat. Dieser Benutzer wird von Postfix und Courier verwendet, um die Verbindung zur Roundcube-Datenbank herzustellen:

GRANT SELECT, INSERT, UPDATE, DELETE ON roundcube.* TO 'roundcube'@'localhost' IDENTIFIED BY 'roundcube_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON roundcube.* TO 'roundcube'@'localhost.localdomain' IDENTIFIED BY 'roundcube_password';
FLUSH PRIVILEGES;

Jetzt laden wir Roundcube herunter und installieren es:

cd/usr/src 
wget https://github.com/roundcube/roundcubemail/releases/download/1.3.6/roundcubemail-1.3.6.tar.gz
tar xvzf roundcubemail-1.3.6.tar.gz
mv roundcubemail-1.3.6 /var/www/roundcube
chown -R www-data:www-data /var/www/roundcube
cd /var/www/roundcube

Prüfen Sie immer, ob Sie die aktuellste Version von Roundcube haben und laden Sie diese herunter und passen Sie die Befehle oben an die Version von Roundcube an, die Sie heruntergeladen haben.

https://roundcube.net/download/

Nun laden wir die Sql-Tabellen in die zuvor erstellte Datenbank:

mysql -u roundcube -p roundcube <  SQL/mysql.initial.sql

Nun bearbeiten wir die Roundcube-Konfiguration:

cp config/config.inc.php.sample config/config.inc.php

Stellen Sie die Datenbankkonfiguration ein:

nano config/config.inc.php

Ändern Sie die folgende Zeile in die Datenbankkonfiguration:

$rcmail_config['db_dsnw'] = 'mysql://roundcube:roundcube_password@localhost/roundcube';

Und ändern Sie Folgendes

Von:

// List of active plugins (in plugins/ directory)
$config['plugins'] = array(
    'archive',
    'zipdownload',

An:

// List of active plugins (in plugins/ directory)
$config['plugins'] = array(
    'archive',
    'zipdownload',
    'password',
    'vacation',

Veränderung:

chars.$rcmail_config['des_key'] = 'rcmail-!24ByteDESkey*Str';

An:

chars.$rcmail_config['des_key'] = 'your-own-24-digitkeystring';

Veränderung:

$rcmail_config['default_host'] = '';

An:

$rcmail_config['default_host'] = 'localhost';

Veränderung:

$rcmail_config['smtp_server'] = '';

An

$rcmail_config['smtp_server'] = 'localhost';

Die Konfiguration für das Passwort-Plugin:

cp plugins/password/config.inc.php.dist plugins/password/config.inc.php

Bearbeiten Sie die Konfiguration:

nano plugins/password/config.inc.php

Ändern Sie die folgenden Einträge

Von:

$rcmail_config['password_driver'] = 'sql';

An:

$rcmail_config['password_driver'] = 'ldap';

Von:

// LDAP Driver options
// -------------------
// LDAP server name to connect to.
// You can provide one or several hosts in an array in which case the hosts are tried from left to right.
// Exemple: array('ldap1.exemple.com', 'ldap2.exemple.com');
// Default: 'localhost'
$rcmail_config['password_ldap_host'] = 'localhost';

// LDAP server port to connect to
// Default: '389'
$rcmail_config['password_ldap_port'] = '389';

// TLS is started after connecting
// Using TLS for password modification is recommanded.
// Default: false
$rcmail_config['password_ldap_starttls'] = false;

// LDAP version
// Default: '3'
$rcmail_config['password_ldap_version'] = '3';

// LDAP base name (root directory)
// Exemple: 'dc=exemple,dc=com'
$rcmail_config['password_ldap_basedn'] = 'dc=exemple,dc=com';

// LDAP connection method
// There is two connection method for changing a user's LDAP password.
// 'user': use user credential (recommanded, require password_confirm_current=true)
// 'admin': use admin credential (this mode require password_ldap_adminDN and password_ldap_adminPW)
// Default: 'user'
$rcmail_config['password_ldap_method'] = 'user';

// LDAP Admin DN
// Used only in admin connection mode
// Default: null
$rcmail_config['password_ldap_adminDN'] = null;

// LDAP Admin Password
// Used only in admin connection mode
// Default: null
$rcmail_config['password_ldap_adminPW'] = null;

// LDAP user DN mask
// The user's DN is mandatory and as we only have his login,
// we need to re-create his DN using a mask
// '%login' will be replaced by the current roundcube user's login
// '%name' will be replaced by the current roundcube user's name part
// '%domain' will be replaced by the current roundcube user's domain part
// Exemple: 'uid=%login,ou=people,dc=exemple,dc=com'
$rcmail_config['password_ldap_userDN_mask'] = 'uid=%login,ou=people,dc=exemple,dc=com';

// LDAP password hash type
// Standard LDAP encryption type which must be one of: crypt,
// ext_des, md5crypt, blowfish, md5, sha, smd5, ssha, or clear.
// Please note that most encodage types require external libraries
// to be included in your PHP installation, see function hashPassword in drivers/ldap.php for more info.
// Default: 'crypt'
$rcmail_config['password_ldap_encodage'] = 'crypt';

// LDAP password attribute
// Name of the ldap's attribute used for storing user password
// Default: 'userPassword'
$rcmail_config['password_ldap_pwattr'] = 'userPassword';

// LDAP password force replace
// Force LDAP replace in cases where ACL allows only replace not read
// See http://pear.php.net/package/Net_LDAP2/docs/latest/Net_LDAP2/Net_LDAP2_Entry.html#methodreplace
// Default: true
$rcmail_config['password_ldap_force_replace'] = true;

An:

$rcmail_config['password_ldap_host'] = 'localhost';
$rcmail_config['password_ldap_port'] = '389';
$rcmail_config['password_ldap_starttls'] = false;
$rcmail_config['password_ldap_version'] = '3';
$rcmail_config['password_ldap_basedn'] = 'o=hosting,dc=example,dc=tld';

$rcmail_config['password_ldap_method'] = 'user';
$rcmail_config['password_ldap_adminDN'] = null;
$rcmail_config['password_ldap_adminPW'] = null;

$rcmail_config['password_ldap_userDN_mask'] = 'mail=%login,vd=%domain,o=hosting,dc=example,dc=tld';

$rcmail_config['password_ldap_encodage'] = 'md5';
$rcmail_config['password_ldap_pwattr'] = 'userPassword';

$rcmail_config['password_ldap_force_replace'] = true;

Jetzt werden wir das Urlaubs-Plugin herunterladen und installieren:

cd /usr/src
wget https://github.com/bhuisgen/rc-vacation/archive/master.zip
unzip rc-vacation-master.zip
mv rc-vacation /var/www/roundcube/plugins/vacation
cd /var/www/roundcube/plugins/vacation

Jetzt bearbeiten wir die Konfiguration und ändern sie:

nano plugins/vacation/config.inc.php

Veränderung:

$rcmail_config['vacation_gui_vacationsubject'] = TRUE;

An:

$rcmail_config['vacation_gui_vacationsubject'] = FALSE;

Veränderung:

$rcmail_config['vacation_driver'] = 'sql';

An:

$rcmail_config['vacation_driver'] = 'ldap';

Veränderung:

// Base DN
$rcmail_config['vacation_ldap_base'] = 'dc=ldap,dc=my,dc=domain';

// Bind DN
$rcmail_config['vacation_ldap_binddn'] =
'cn=user,dc=ldap,dc=my,dc=domain';

// Bind password
$rcmail_config['vacation_ldap_bindpw'] = 'pa$$w0rd';

An:

// Base DN
$rcmail_config['vacation_ldap_base'] = 'o=hosting,dc=example,dc=tld';

// Bind DN
$rcmail_config['vacation_ldap_binddn'] = 'cn=admin,dc=example,dc=tld';

// Bind password
$rcmail_config['vacation_ldap_bindpw'] = 'yourpassword';

Veränderung:

// Search filter to read data
$rcmail_config['vacation_ldap_search_filter'] = '(objectClass=mailAccount)';

// Search attributes to read data
$rcmail_config['vacation_ldap_search_attrs'] = array ('vacationActive', 'vacationInfo');

// array of DN to use for modify operations required to write data.
$rcmail_config['vacation_ldap_modify_dns'] = array (
'cn=%email_local,ou=Mailboxes,dc=%email_domain,ou=MailServer,dc=ldap,dc=my,dc=domain'
);

An:

// Search base to read data
$rcmail_config['vacation_ldap_search_base'] =
'mail=%username,vd=%email_domain,o=hosting,dc=example,dc=tld';

// Search filter to read data
$rcmail_config['vacation_ldap_search_filter'] = '(objectClass=VirtualMailAccount)';

// Search attributes to read data
$rcmail_config['vacation_ldap_search_attrs'] = array ('vacationActive', 'vacationInfo');

// array of DN to use for modify operations required to write data.
$rcmail_config['vacation_ldap_modify_dns'] = array (
'mail=%username,vd=%email_domain,o=hosting,dc=example,dc=tld'
);

Wir müssen das Document Root in der Apche2-Server-Konfiguration ändern, damit auf den Roundcube zugegriffen werden kann.

nano /etc/apache2/sites-enabled/000-default.conf

Und Wechsel von:

DocumentRoot /var/www/html

An:

DocumentRoot /var/www/

 

Damit ist die Konfiguration für den Roundcube abgeschlossen.

Schritt 8: proftpd installieren und konfigurieren

Zuerst werden wir proftpd und seine Anforderungen installieren:

apt install proftpd proftpd-mod-ldap

Je nach Belastung können Sie sich zwischen stand alone und inet.d entscheiden.

Hinweis: Sie können die Konfigurationsdateien von examples/proftpd nach /etc/proftpd kopieren, aber der Klarheit halber werde ich alle Konfigurationsschritte skizzieren.

Bearbeiten Sie /etc/proftpd/proftpd.conf:

nano /etc/proftpd/proftpd.conf

Und Wechsel von:

# Use this to jail all users in their homes
# DefaultRoot                   ~

An:

# Use this to jail all users in their homes
DefaultRoot

Und Wechsel von:

#RequireValidShell               off

An:

RequireValidShell               off

 

Und Veränderung:

# Alternative authentication frameworks
#
# Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf

An:

# Alternative authentication frameworks
#
Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf
             ~

Nun editieren Sie /etc/proftpd/modules.conf:

nano /etc/proftpd/modules.conf

Und Wechsel von:

# Install proftpd-mod-ldap to use this
#LoadModule mod_ldap.c

An:

# Install proftpd-mod-ldap to use this
LoadModule mod_ldap.c

Und aus:

# Install proftpd-mod-ldap to use this
# LoadModule mod_quotatab_ldap.c

An:

# Install proftpd-mod-ldap to use this
LoadModule mod_quotatab_ldap.c

Nicht /etc/proftpd/ldap.conf bearbeiten und folgendes einstellen:

<IfModule mod_ldap.c>
#
#LDAPServer ldap://ldap.example.com
#LDAPBindDN "cn=admin,dc=example,dc=com" "admin_password"
#LDAPUsers dc=users,dc=example,dc=com (uid=%u) (uidNumber=%u)
#LDAPUseTLS on
#
#
#LDAPServer ldaps://ldap.example.com
#LDAPBindDN "cn=admin,dc=example,dc=com" "admin_password"
#LDAPUsers dc=users,dc=example,dc=com (uid=%u) (uidNumber=%u)
#
LDAPServer                      ldap://127.0.0.1/??sub
LDAPBindDN                      "cn=vmail,o=hosting,dc=example,dc=tld "readonly"
LDAPUsers                       "o=hosting,dc=example,dc=tld"  "(&(uid=%v)(objectclass=posixAccount))"
LDAPDefaultGID                  33
LDAPDefaultUID                  33
LDAPForceDefaultGID             True
LDAPForceDefaultUID             True

</IfModule>


Die folgenden Befehle setzen den Standardbenutzer auf www-data, was mir gefällt. Sie können diese Werte ändern, um sie an Ihr Setup anzupassen oder sie weglassen, um die Login-uid / gid zu benutzen.

LDAPDefaultGID                  33
LDAPDefaultUID                  33
LDAPForceDefaultGID             True
LDAPForceDefaultUID             True

33 Ist die uid/gid meiner Testvorrichtung, kann sie bei deiner Vorrichtung anders sein.

Damit ist die Installation von proftpd abgeschlossen.

Schritt 9: Alles zusammenbringen

Geben Sie die folgenden Befehle ein, um alle Dienste neu zu starten:

service slapd restart
service postfix restart
service dovecot restart
service proftpd restart
service apache2 restart

Jetzt können Sie zu phamm gehen und beginnen, Mail-Domains und Benutzer hinzuzufügen.

Viel Spaß.

Hinweis: Benachrichtigen Sie mich über alle Fehler oder Probleme mit diesem How to, damit ich dieses How to verbessern und ändern kann.

Benutzen Sie dieses Thema im Forum:

https://www.howtoforge.com/community/threads/postfix-virtual-hosting-with-ldap-backend-and-with-dovecot-as-imap-pop3-server-on-ubuntu-bionic-beav.79408/

Ich bin in diesem Thema abonniert, so dass ich über neue Beiträge in diesem Thema benachrichtigt werde.

Das könnte dich auch interessieren …