kb

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste Überarbeitung Beide Seiten der Revision
kb [2014/03/28 14:05]
flacco [Letzte Etappe - Dovecot]
kb [2015/04/01 16:18]
flacco [Paketbenennung und Konfliktverhalten]
Zeile 562: Zeile 562:
 Bei aller Freude über Peer Heinleins neues Dovecot Buch, ist doch festzustellen,​ dass die Aufgabenstellung die sich für die Dovecot-Konfiguration auf einem invis-Server stellt, mit dem Buch allein nicht zu bewältigen ist. Peer trennt im Prinzip zwischen einer Installation mit lokalen Benutzern und einer Hosting-Situation mit virtuellen Benutzern. Auf einem invis-Server haben wir es zwar mit lokalen Benutzern zu tun, aufgrund der Vorzüge, die das mit sich bringt, möchte ich sie aber lieber wie virtuelle Benutzer behandeln, da dies einige Vorteile mit sich bringt. Bei aller Freude über Peer Heinleins neues Dovecot Buch, ist doch festzustellen,​ dass die Aufgabenstellung die sich für die Dovecot-Konfiguration auf einem invis-Server stellt, mit dem Buch allein nicht zu bewältigen ist. Peer trennt im Prinzip zwischen einer Installation mit lokalen Benutzern und einer Hosting-Situation mit virtuellen Benutzern. Auf einem invis-Server haben wir es zwar mit lokalen Benutzern zu tun, aufgrund der Vorzüge, die das mit sich bringt, möchte ich sie aber lieber wie virtuelle Benutzer behandeln, da dies einige Vorteile mit sich bringt.
  
-Definieren wir zunächst die Ziele:+**Definieren wir zunächst die Ziele:**
  
   * Zugriff auf die LDAP-Benutzerkonten via PAM   * Zugriff auf die LDAP-Benutzerkonten via PAM
Zeile 568: Zeile 568:
   * Sieve Filter und sei es nur für Abwesenheitsbenachrichtigungen   * Sieve Filter und sei es nur für Abwesenheitsbenachrichtigungen
   * Quotas, wenn auch nur zum Warnen   * Quotas, wenn auch nur zum Warnen
-  * SASL-Auth Schnittstelle für Postfix 
   * Lokale Email-Zustellung via LMTP   * Lokale Email-Zustellung via LMTP
 +  * SASL-Auth Schnittstelle für Postfix (wird im nächsten Abschnitt beschrieben)
  
 ==== Mailversand - SMTP-Auth mit Dovecot-SASL ==== ==== Mailversand - SMTP-Auth mit Dovecot-SASL ====
-===== ISC DHCP LDAP Schema nach Samba 4 LDAP überführen ​=====+===== ISC DHCP mit ActiveDirectory ​=====
  
-Suchen ​und ersetzen der Attributnamen ​und Objektklassen:​+Um den DHCP-Server des ISC mit einem Active Directory als Backend zu verwenden, muss dieser so gepatcht werden, dass er andere LDAP-Attribut- ​und Objektklassen-Namen akzeptiert. Dies ist notwendig, da Microsoft für seinen DHCP-Server teils identische Namen für Attribute ​und Objektklassen ​verwendet. Ohne das Patchen führt der Versuch einen ISC DHCP-Server Datenbestand aus einem OpenLDAP Verzeichnis in ein Active Directory zu migrieren zu "​Objectclass Violations"​ die nicht zu beheben sind. 
 + 
 +==== LDAP Patch erzeugen ==== 
 + 
 +Den Patch zu erstellen ist etwas umständlich,​ da im openSUSE-Paket bereits Patches auf die von uns zu patchenden Dateien angewendet werden. D.h. um unseren Patch zu erzeugen müssen zunächst die anderen Patches auf den Quellcode angewendet werden. 
 + 
 +Zu patchen sind folgende Dateien: 
 + 
 +  * server/​ldap.c 
 +  * contrib/​ldap/​README.ldap 
 +  * contrib/​ldap/​dhcpd-conf-to-ldap 
 +  * contrib/​ldap/​dhcp.shema 
 + 
 +Im ersten Schritt müssen aus dem Repository "​network:​dhcp"​ (https://​build.opensuse.org/​package/​show/​network:​dhcp/​dhcp) des openSUSE Buildservice das Quellcode-Archiv (dhcp-4.x.y.tar.gz),​ sowie die beiden Patches "​0007-dhcp-4.2.6-ldap-mt01.patch"​ und "​0022-dhcp-4.2.x-contrib-conf-to-ldap-reorder.886094.patch"​ heruntergeladen werden. 
 + 
 +Das Quellcode-Archiv ist in ein Arbeitsverzeichnis zu extrahieren. Danach sind die beiden heruntergeladenen Patches darauf anzuwenden:
  
 <​code>​ <​code>​
-linux:~ # cat README.ldap | sed /dhcp[A-Z]/s/dhcp/iscDhcp/g > ad.README.ldap+heinzb@knurps:~/​baustelle/​dhcp-4.2.6> patch -p1 server/ldap.c 0007-dhcp-4.2.6-ldap-mt01.patch 
 +heinzb@knurps:​~/baustelle/dhcp-4.2.6> patch -p1 contrib/ldap/dhcpd-conf-to-ldap 0022-dhcp-4.2.x-contrib-conf-to-ldap-reorder.886094.patch
 </​code>​ </​code>​
 +
 +Treten dabei Fehler auf, sind diese in einer auf **.rej** endenden Datei im Verzeichnis der zu patchenden Datei zu finden. Sind die Fehler überschaubar,​ lassen sich die Änderungen auch manuell durchführen.
 +
 +Jetz sind per suchen und ersetzen der Attributnamen und Objektklassen mit **//sed//** neue Dateien mit den gewünschten Änderungen zu erzeugen:
 +
 +<​code>​
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ cat server/​ldap.c | sed /​dhcp[A-Z]/​s/​dhcp/​iscDhcp/​g > server/​ad.ldap.c
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ cat contrib/​ldap/​README.ldap | sed /​dhcp[A-Z]/​s/​dhcp/​iscDhcp/​g > contrib/​ldap/​ad.README.ldap
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ cat contrib/​ldap/​dhcpd-conf-to-ldap | sed /​dhcp[A-Z]/​s/​dhcp/​iscDhcp/​g > contrib/​ldap/​ad.dhcpd-conf-to-ldap
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ cat contrib/​ldap/​dhcp.schema | sed /​dhcp[A-Z]/​s/​dhcp/​iscDhcp/​g > contrib/​ldap/​ad.dhcp.schema
 +</​code>​
 +
 +Jetzt werden mit //​**diff**//​ einzelne Patches für jede der Dateien erzeugt:
 +<​code>​
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ diff -u server/​ldap.c server/​ad.ldap.c > ../​ldap.c.patch
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ diff -u contrib/​ldap/​README.ldap contrib/​ldap/​ad.README.ldap > ../​README.ldap.patch
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ diff -u contrib/​ldap/​dhcpd-conf-to-ldap contrib/​ldap/​ad.dhcpd-conf-to-ldap > ../​dhcpd-conf-to-ldap.patch
 +heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ diff -u contrib/​ldap/​dhcp.schema contrib/​ldap/​ad.dhcp.schema > ../​dhcp.schema.patch
 +</​code>​
 +
 +Jetzt müssen noch die Kopfzeilen der Einzelpatches angepasst werden. Aus:
 +
 +<​code>​
 +--- server/​ldap.c ​      ​2015-03-26 14:​24:​44.905456906 +0100
 ++++ server/​ad.ldap.c ​   2015-03-26 17:​12:​52.783318249 +0100
 +</​code>​
 +
 +wird:
 +
 +<​code>​
 +--- a/​server/​ldap.c ​      ​2015-03-26 14:​24:​44.905456906 +0100
 ++++ b/​server/​ldap.c ​   2015-03-26 17:​12:​52.783318249 +0100
 +</​code>​
 +
 +Danach werden alle Einzelpatches zum Gesamtpatch zusammengesetzt:​
 +
 +<​code>​
 +heinzb@knurps:​~/​baustelle>​ cat ldap.c.patch > 0099-AD-LDAP.patch ​
 +heinzb@knurps:​~/​baustelle>​ cat README.ldap.patch >> 0099-AD-LDAP.patch ​
 +heinzb@knurps:​~/​baustelle>​ cat dhcpd-conf-to-ldap.patch >> 0099-AD-LDAP.patch ​
 +heinzb@knurps:​~/​baustelle>​ cat dhcp.schema.patch >> 0099-AD-LDAP.patch
 +</​code>​
 +
 +Danach den Patch in unser Testing-Repositorie hochladen und die Spec-Datei des dhcp-Paketes anpassen:
 +
 +Ab Zeile 138 (ca.)
 +<​code>​
 +# invis-server.org Stefan Schaefer
 +Patch99: ​       0099-AD-LDAP.patch
 +</​code>​
 +
 +Ab Zeile: 282 (ca.)
 +<​code>​
 +%if %{with_ldap}
 +# Stefan Schaefer - invis-server.org
 +%patch99 -p1
 +%endif
 +%endif
 +## clean up after patching
 +find . -type f -name \*.orig\* -exec rm -f {} \;
 +find . -type f -name \*.rej\* -exec rm -f {} \;
 +</​code>​
 +
 +Die Zeilenangaben sind natürlich nicht genau, das sich das Spec-File mit jeder neuen Version ändern kann. Wichtig ist nur, dass unser Patch als letzter angewendete wird.
 +
 +==== Paketbenennung und Konfliktverhalten ====
 +
 +Um nicht mit den regulären DHCP-Paketen in den SUSE Repositories in Konkurrenz zu geraten, haben wir unsere Pakete umbenannt. Sie tragen jetzt die Vorsilbe "​invis":​
 +
 +  * invisdhcp
 +  * invisdhcp-server
 +  * invisdhcp-client
 +  * invisdhcp-relay
 +  * invisdhcp-devel
 +  * invisdhcp-doc
 +
 +Die Umbenennung erfolgt im Specfile. Weiterhin wurde in den Paketen die Direktive "​Conflict"​ im Specfile verwendet. Dadurch können nur entweder die ungepatchten oder die gepatchten Pakete auf einem System installiert werden. Auch dies wird im Specfile eingetragen:​
 +
 +**Namensdefinition**
 +ab Zeile 35:
 +<​code>​
 +Name:           ​invisdhcp
 +%define originname dhcp
 +....
 +Source0: ​       dhcp-%{isc_version}.tar.gz
 +Source1: ​       dhcp-%{isc_version}.tar.gz.asc
 +Source2: ​       %{originname}.keyring
 +</​code>​
 +
 +Die Variable %originname musste hinzugefügt werden, da der Originalname weiterhin beim Paketbau benötigt wird.
 +
 +**Conflict & Requires Direktiven**
 +ab Zeile 146
 +<​code>​
 +Conflicts: dhcp
 +
 +%package server
 +Summary: ​       ISC DHCP Server
 +Group: ​         Productivity/​Networking/​Boot/​Servers
 +Requires: ​      ​invisdhcp = %{version}
 +Requires: ​      ​net-tools
 +Conflicts:​ dhcp-server
 +PreReq: ​        ​%insserv_prereq %fillup_prereq /bin/cat /bin/mkdir /bin/cp /​usr/​sbin/​useradd
 +
 +%package client
 +Summary: ​       ISC DHCP Client
 +Group: ​         Productivity/​Networking/​Boot/​Clients
 +Requires: ​      /​sbin/​arping
 +Requires: ​      /​usr/​bin/​host
 +Requires: ​      ​invisdhcp = %{version}
 +Requires: ​      ​iproute2
 +Requires: ​      ​net-tools
 +Conflicts:​ dhcp-client
 +PreReq: ​        ​%insserv_prereq %fillup_prereq /bin/cat /bin/mkdir /bin/cp /bin/grep
 +
 +%package relay
 +Summary: ​       ISC DHCP Relay Agent
 +Group: ​         Productivity/​Networking/​Boot/​Servers
 +Requires: ​      ​invisdhcp = %{version}
 +Requires: ​      ​net-tools
 +Conflicts:​ dhcp-relay
 +PreReq: ​        ​%insserv_prereq %fillup_prereq /bin/cat /bin/mkdir /​bin/​cp ​
 +
 +%package devel
 +Summary: ​       Header Files and Libraries for dhcpctl API
 +Group: ​         Development/​Libraries/​C and C++
 +Requires: ​      ​invisdhcp = %{version}
 +Conflicts:​ dhcp-devel
 +Conflicts: ​     bind-devel
 +
 +%if %{with_doc_package}
 +
 +%package doc
 +Summary: ​       Documentation
 +Conflicts:​ dhcp-doc
 +Group: ​         Productivity/​Networking/​Boot/​Servers
 +%endif
 +</​code>​
 +
 +Wie gezeigt sind Anpassungen in allen Einzelpaketen erforderlich.
  • kb.txt
  • Zuletzt geändert: 2020/10/20 10:47
  • von flacco