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:
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:
Ich bin in diesem Thema abonniert, so dass ich über neue Beiträge in diesem Thema benachrichtigt werde.