Solaris

From Kolab Wiki

Jump to: navigation, search


Contents


Vorwort

Diese Installations Anweisung zeigt wie man Kolab2 V2.2.3 Final auf einer Solaris 10 11/06 Sparc installieren kann. Die Anweisung kann auch in einer Zone durchgefuhert werden (whole root Zone) und nachtraeglich in eine spare root Zone uebertragen werden.

Obwohl diese Anweisung speziell fuer Solaris 10 11/06 Sparc geschrieben wurde koennen sehr viele Anweisungen und Hinweise auf Linux Distributionen angewendet werden dh. Nachdem die Installation von Kolab2 durchgefuehrt wurde sind die Anweisungen auf Solaris und Linux praktisch identisch.


Test- und Installationsmaschinen waren:

Sun Microsystem E450 Enterprise
4 X 440 MHz, 3.5 GB RAM, SCSI 9.1GB HD PCI System

Datenschutz

        *********************************************************************
        *                                                                   *
        *  THIS FILE MAY CONTAIN CONFIDENTIAL, PRIVILEGED OR OTHER LEGALLY  *
        *      PROTECTED INFORMATION. YOU ARE PROHIBITED FROM COPYING,      *
        *    DISTRIBUTING OR OTHERWISE USING IT WITHOUT PERMISSION FROM     *
        *                  COMCEPT NET GMBH SWITZERLAND.                    *
        *                                                                   *
        *********************************************************************

Vorraussetzungen

Folgende Solaris 10 11/06 Sparc Package muessen installiert sein (ausgehend von einer Core Installation):

       system      SUNWadmap                    System administration applications
       system      SUNWadmc                     System administration core libraries
       system      SUNWadmfr                    System & Network Administration Framework Configuration
       system      SUNWadmfw                    System & Network Administration Framework
       system      SUNWadmlib-sysid             System and Network identification libraries
       system      SUNWadmr                     System & Network Administration Root
       system      SUNWarc                      Lint Libraries (usr)
       system      SUNWatfsr                    AutoFS, (Root)
       system      SUNWatfsu                    AutoFS, (Usr)
       system      SUNWbcp                      SunOS 4.x Binary Compatibility
       system      SUNWbip                      Basic IP commands (Usr)
       system      SUNWbipr                     Basic IP commands (Root)
       system      SUNWbtool                    CCS tools bundled with SunOS
       system      SUNWbzip                     The bzip compression utility
       system      SUNWcakr                     Core Solaris Kernel Architecture (Root)
       system      SUNWcar                      Core Architecture, (Root)
       system      SUNWcfpl                     fp cfgadm plug-in library
       system      SUNWcfplr                    fp cfgadm plug-in library (root)
       system      SUNWchxge                    Chelsio N110 10GE NIC Driver
       system      SUNWckr                      Core Solaris Kernel (Root)
       system      SUNWcnetr                    Core Solaris Network Infrastructure (Root)
       system      SUNWcpp                      Solaris cpp
       system      SUNWcsd                      Core Solaris Devices
       system      SUNWcsl                      Core Solaris, (Shared Libs)
       system      SUNWcslr                     Core Solaris Libraries (Root)
       system      SUNWcsr                      Core Solaris, (Root)
       system      SUNWcsu                      Core Solaris, (Usr)
       system      SUNWdpl                      Developer Profiled Libraries
       system      SUNWerid                     Sun RIO 10/100 Mb Ethernet Drivers
       system      SUNWesu                      Extended System Utilities
       system      SUNWfcip                     Sun FCIP IP/ARP over FibreChannel Device Driver
       system      SUNWfcp                      Sun FCP SCSI Device Driver
       system      SUNWfctl                     Sun Fibre Channel Transport layer
       system      SUNWflexruntime              Flex Lexer (Runtime Libraries)
       system      SUNWgss                      GSSAPI V2
       system      SUNWgssc                     GSSAPI CONFIG V2
       system      SUNWgzip                     The GNU Zip (gzip) compression utility
       system      SUNWhea                      SunOS Header Files
       system      SUNWhmd                      SunSwift Adapter Drivers
       system      SUNWib                       Sun InfiniBand Framework
       system      SUNWinstall-patch-utils-root Install and Patch Utilities (root)
       system      SUNWipc                      Interprocess Communications
       system      SUNWipoib                    Sun IP over InfiniBand
       system      SUNWjss                      Network Security Services for Java (JSS)
       system      SUNWkey                      Keyboard configuration tables
       system      SUNWkvm                      Core Architecture, (Kvm)
       system      SUNWlexpt                    libexpat - XML parser library
       system      SUNWlibC                     Sun Workshop Compilers Bundled libC
       system      SUNWlibm                     Math & Microtasking Library Headers & Lint Files (Usr)
       system      SUNWlibmr                    Math Library Lint Files (Root)
       system      SUNWlibms                    Math & Microtasking Libraries (Usr)
       system      SUNWlibmsr                   Math & Microtasking Libraries (Root)
       system      SUNWlibsasl                  SASL v2
       system      SUNWloc                      System Localization
       application SUNWlur                      Live Upgrade (root)
       application SUNWluu                      Live Upgrade (usr)
       application SUNWluzone                   Live Upgrade (zones support)
       system      SUNWlxml                     The XML library
       system      SUNWmdb                      Modular Debugger
       system      SUNWmdr                      Solaris Volume Manager, (Root)
       system      SUNWmdu                      Solaris Volume Manager, (Usr)
       system      SUNWmpathadm                 Solaris Multipathing CLI
       system      SUNWmpathadmr                Solaris Multipathing CLI (Root)
       system      SUNWmpsvplr                  Sun MP API library for the scsi_vhci driver (Root)
       system      SUNWnfscr                    Network File System (NFS) client support (Root)
       system      SUNWnfscu                    Network File System (NFS) client support (Usr)
       system      SUNWntpr                     NTP, (Root)
       system      SUNWntpu                     NTP, (Usr)
       system      SUNWopenssl-libraries        OpenSSL Libraries (Usr)
       system      SUNWowbcp                    OpenWindows binary compatibility
       system      SUNWpd                       PCI Drivers
       system      SUNWperl584core              Perl 5.8.4 (core)
       system      SUNWperl584usr               Perl 5.8.4 (non-core)
       system      SUNWpkgcmdsr                 SVr4 package commands (root)
       system      SUNWpkgcmdsu                 SVr4 packaging commands (usr)
       system      SUNWpool                     Resource Pools
       system      SUNWpoolr                    Resource Pools (Root)
       system      SUNWpr                       Netscape Portable Runtime
       system      SUNWproduct-registry-root    Solaris Product Registry runtime support (root)
       system      SUNWqfed                     Sun Quad FastEthernet Adapter Driver
       system      SUNWrmodu                    Realmode Modules, (Usr)
       system      SUNWroute                    Network Routing daemons/commands (Usr)
       system      SUNWscbcp                    SPARCompilers Binary Compatibility Libraries
       system      SUNWscpr                     Source Compatibility, (Root)
       system      SUNWscpu                     Source Compatibility, (Usr)
       system      SUNWsmapi                    Storage Management APIs
       system      SUNWsprot                    Solaris Bundled tools
       system      SUNWsra                      Source Compatibility Archive Libraries
       system      SUNWsrh                      Source Compatibility Header Files
       system      SUNWsshcu                    SSH Common, (Usr)
       system      SUNWsshdr                    SSH Server, (Root)
       system      SUNWsshdu                    SSH Server, (Usr)
       system      SUNWsshr                     SSH Client and utilities, (Root)
       system      SUNWsshu                     SSH Client and utilities, (Usr)
       system      SUNWswmt                     Install and Patch Utilities
       system      SUNWtavor                    Sun Tavor HCA driver
       system      SUNWtecla                    Tecla command-line editing library
       system      SUNWter                      Terminal Information
       system      SUNWtls                      Network Security Services
       system      SUNWtoo                      Programming Tools
       system      SUNWudapltr                  Sun uDAPL for Tavor (Root)
       system      SUNWudapltu                  Sun uDAPL for Tavor (User)
       system      SUNWwbsup                    WAN boot support
       system      SUNWwsr2                     Solaris Product Registry & Web Start runtime support
       system      SUNWxwice                    X Window System Inter-Client Exchange (ICE) Components
       system      SUNWxwplt                    X Window System platform software
       system      SUNWzfskr                    ZFS Kernel (Root)
       system      SUNWzfsr                     ZFS (Root)
       system      SUNWzfsu                     ZFS (Usr)
       system      SUNWzip                      The Info-Zip (zip) compression utility
       system      SUNWzlib                     The Zip compression library
       system      SUNWzoner                    Solaris Zones (Root)
       system      SUNWzoneu                    Solaris Zones (Usr)


Es sollten moeglichst alle unnoetigen Boot-Prozesse und Deamons abgeschaltet werden. Wenn ein Solaris 10 System mit "core" aufgesetzt wird so zeigt sich nachdem ersten start des Systems das Service Management Facility (SMF) folgendermassen:

       # svcs
       
       STATE          STIME    FMRI
       legacy_run     13:26:59 lrc:/etc/rc2_d/S20sysetup
       legacy_run     13:26:59 lrc:/etc/rc2_d/S72autoinstall
       legacy_run     13:26:59 lrc:/etc/rc2_d/S73cachefs_daemon
       legacy_run     13:26:59 lrc:/etc/rc2_d/S81dodatadm_udaplt
       legacy_run     13:27:00 lrc:/etc/rc2_d/S89PRESERVE
       legacy_run     13:27:00 lrc:/etc/rc2_d/S98deallocate
       legacy_run     13:27:00 lrc:/etc/rc3_d/S16boot_server
       disabled       13:29:32 svc:/network/smtp:sendmail
       online         13:26:19 svc:/system/svc/restarter:default
       online         13:26:20 svc:/network/pfil:default
       online         13:26:21 svc:/network/loopback:default
       online         13:26:22 svc:/system/filesystem/root:default
       online         13:26:22 svc:/network/physical:default
       online         13:26:23 svc:/milestone/name-services:default
       online         13:26:23 svc:/system/boot-archive:default
       online         13:26:23 svc:/system/scheduler:default
       online         13:26:24 svc:/milestone/network:default
       online         13:26:24 svc:/system/identity:node
       online         13:26:28 svc:/system/filesystem/usr:default
       online         13:26:29 svc:/system/keymap:default
       online         13:26:31 svc:/system/device/local:default
       online         13:26:32 svc:/system/filesystem/minimal:default
       online         13:26:41 svc:/system/identity:domain
       online         13:26:41 svc:/system/rmtmpfiles:default
       online         13:26:41 svc:/system/picl:default
       online         13:26:42 svc:/system/sysevent:default
       online         13:26:42 svc:/system/name-service-cache:default
       online         13:26:42 svc:/system/device/fc-fabric:default
       online         13:26:42 svc:/milestone/devices:default
       online         13:26:42 svc:/system/coreadm:default
       online         13:26:43 svc:/system/cryptosvc:default
       online         13:26:46 svc:/system/manifest-import:default
       online         13:26:46 svc:/milestone/single-user:default
       online         13:26:47 svc:/network/initial:default
       online         13:26:48 svc:/network/service:default
       online         13:26:52 svc:/system/filesystem/local:default
       online         13:26:52 svc:/system/cron:default
       online         13:26:52 svc:/system/sysidtool:net
       online         13:26:53 svc:/network/rpc/bind:default
       online         13:26:53 svc:/system/sysidtool:system
       online         13:26:53 svc:/milestone/sysconfig:default
       online         13:26:54 svc:/system/sac:default
       online         13:26:54 svc:/system/utmp:default
       online         13:26:54 svc:/network/inetd:default
       online         13:26:56 svc:/system/filesystem/autofs:default
       online         13:26:57 svc:/network/rpc/gss:default
       online         13:26:57 svc:/network/security/ktkt_warn:default
       online         13:26:57 svc:/network/rpc-100235_1/rpc_ticotsord:default
       online         13:26:58 svc:/system/dumpadm:default
       online         13:26:58 svc:/system/system-log:default
       online         13:27:00 svc:/milestone/multi-user:default
       online         13:27:00 svc:/system/fmd:default
       online         13:27:00 svc:/milestone/multi-user-server:default
       online         13:53:50 svc:/system/console-login:default

NOTE
Bei Solaris 10 werden die Services anderst behandelt als unter Solaris 8 oder 9 dh. diese werden innerhalb von SMF (Service Management Facilitys) gesteuert. Nachfolgend einige Hinweise ueber diese SMF:

Um die Abhaengigkeiten eines Services zu checken benutze:

       # svcs -D [service]

Um einen Service "temporaer" zu stoppen benutze (Nach einem Neustart des Service wird der Service wiederum aktiviert da das "disable" nur "temporaerer" Natur ist):

       # svcadm disable -t [service]

Um einen Service zu starten benutze:

       # svcadm enable -t [service]

Um einen Service zu deaktivieren benutze:

       # svcadm disable [service]

Um einen Service zu aktivieren benutze:

       # svcadm enable [service]

Um einen Service zu restaren benutze:

       # svcadm refresh [service]

Um einen Service zu starten mit allen Abhaengigkeiten benutze:

       # svcadm enable -r [service]

Um Probleme anzeigen zu lassen benutze:

       # svcs -x

Um einen Service mit allen Abhaengikeiten anzeigen zu lassen benutze:

       # svcs -l [service]

Um alle Prozesse eines Service anzeigen zu lassen benutze:

       # svcs -p [service]

Um alle Service's anzeigen zu lassen benutze:

       # svcs -a [service]

Momentan befinden sich in den vers. Run Levels folgende Files:

       # ls -la /etc/rc0.d
       -rwxr--r--   6 root     sys          474 Jan 22  2005 K27boot.server
       # ls -la /etc/rc1.d
       -rwxr--r--   6 root     sys          474 Jan 22  2005 K27boot.server
       # ls -la /etc/rc2.d
       -rwxr--r--   6 root     sys          474 Jan 22  2005 K27boot.server
       -rw-r--r--   1 root     sys         1598 Jan 22  2005 README
       -rwxr--r--   2 root     sys          805 Nov  9 17:51 S20sysetup
       -rwxr-xr-x   2 root     other       1558 Jan 10  2005 S72autoinstall
       -rwxr--r--   2 root     sys         1262 Nov  9 17:51 S73cachefs.daemon
       -rwxr--r--   2 root     sys         1028 Jan 22  2005 S81dodatadm.udaplt
       -rwxr--r--   2 root     sys          256 Nov  9 17:51 S89PRESERVE
       -rwxr--r--   2 root     sys          733 Nov  9 17:51 S98deallocate
       # ls -la /etc/rc3.d
       -rw-r--r--   1 root     sys         1285 Jan 22  2005 README
       -rwxr--r--   6 root     sys          474 Jan 22  2005 S16boot.server
       # ls -la /etc/rc5.d
       lrwxrwxrwx   1 root     root          11 Jan 21 12:50 /etc/rc5 -> ../sbin/rc5
       # ls -la /etc/rc6.d
       lrwxrwxrwx   1 root     root          11 Jan 21 12:50 /etc/rc6 -> ../sbin/rc6
       # ls -la /etc/rcS.d
       -rwxr--r--   6 root     sys          474 Jan 22  2005 K27boot.server
       -rw-r--r--   1 root     sys         1807 Jan 22  2005 README

Ausschalten unnötiger Run Levels:

       # rm -f /etc/rc[013].d/*

Um "sendmail" auszuschalten muss dieser im "smf" deaktiviert werden:

       # svcadm disable -t /network/smtp:sendmail
       # svcadm disable /network/smtp:sendmail

Fuere eine Kontrolle durch:

       # svcs -x senmail
       
       svc:/network/smtp:sendmail (sendmail SMTP mail transfer agent)
        State: disabled since Sun Jan 21 13:29:32 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: sendmail(1M)
          See: /var/svc/log/network-smtp:sendmail.log
       Impact: This service is not running.

Um "ftp" auszuschalten muss dieser im "smf" deaktiviert werden"

       # svcadm disable -t /network/ftp:default
       # svcadm disable /network/ftp:default

Fuere eine Kontrolle durch:

       # svcs -x ftp
       
       svc:/network/ftp:default (FTP server)
        State: disabled since Sun Jan 21 13:26:56 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: in.ftpd(1M)
          See: ftpd(1M)
       Impact: This service is not running.

Um "telnet" auszuschalten muss dieser im "smf" deaktiviert werden"

       # svcadm disable -t /network/telnet:default
       # svcadm disable /network/telnet:default

Fuere eine Kontrolle durch:

       # svcs -x telnet
       
       svc:/network/telnet:default (Telnet server)
        State: disabled since Sun Jan 21 13:26:56 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: in.telnetd(1M)
          See: telnetd(1M)
       Impact: This service is not running.

Um "nfs" Dienste auszuschalten muessen diese im "smf" deaktiviert werden"

       # svcadm disable -t /network/nfs/status:default
       # svcadm disable /network/nfs/status:default
       # svcs -x status
       
       svc:/network/nfs/status:default (NFS status monitor)
        State: disabled since Sun Jan 21 13:26:22 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: statd(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/nfs/nlockmgr:default
       # svcadm disable /network/nfs/nlockmgr:default
       # svcs -x nlockmgr
       
       svc:/network/nfs/nlockmgr:default (NFS lock manager)
        State: disabled since Sun Jan 21 13:26:22 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: lockd(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/nfs/rquota:default
       # svcadm disable /network/nfs/rquota:default
       # svcs -x rquota
       
       svc:/network/nfs/rquota:default (remote quota server)
        State: disabled since Sun Jan 21 13:26:56 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: rquotad(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/nfs/client:default
       # svcadm disable /network/nfs/client:default
       # svcs -x client
       
       svc:/network/nfs/client:default (NFS client)
        State: disabled since Sun Jan 21 13:26:22 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: mount_nfs(1M)
       Impact: This service is not running.

Mit dieser Modifikation wird der Befehl "sys-unconfig" verhindert:

       # mv /etc/rc2.d/S72autoinstall /etc/rc2.d/NOS72autoinstall
       
       # svcadm disable -t /system/sysidtool:system
       # svcadm disable /system/sysidtool:system
       
       # svcadm disable -t /system/sysidtool:net
       # svcadm disable /system/sysidtool:net
       
       # svcs -x sysidtool
       
       svc:/system/sysidtool:system (sysidtool)
        State: disabled since Sun Jan 21 14:32:31 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: sysidtool(1M)
          See: /var/svc/log/system-sysidtool:system.log
       Impact: This service is not running.
       
       svc:/system/sysidtool:net (sysidtool)
        State: disabled since Sun Jan 21 14:32:40 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: sysidtool(1M)
          See: /var/svc/log/system-sysidtool:net.log
       Impact: This service is not running.

Durch folgende Modifikation wird der "NFS Mount" sowie "Export Funktionen" verhindert:

       # mv /etc/rc2.d/S73cachefs.daemon /etc/rc2.d/NOS73cachefs.daemon

Nachfolgend wird der "RPC Service" ausgeschaltet. Wenn man BrightStorEB installieren moechte so muss der "RPC Service" zur Verfuegung stehen. Also fuehre diese Modifikation nicht durch sofern BrightStorEB installiert wird:

       # svcadm disable -t /system/name-service-cache:default
       # svcadm disable /system/name-service-cache:default
       # svcs -x name-service-cache
       
       svc:/system/name-service-cache:default (name service cache)
        State: disabled since Sun Jan 21 14:35:36 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: nscd(1M)
          See: /var/svc/log/system-name-service-cache:default.log
       Impact: This service is not running.
       # svcadm disable -t /network/rpc/bind:default
       # svcadm disable /network/rpc/bind:default
       # svcs -x bind
       
       svc:/network/rpc/bind:default (RPC bindings)
        State: disabled since Sun Jan 21 14:36:20 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: rpcbind(1M)
          See: /var/svc/log/network-rpc-bind:default.log
       Impact: 2 dependent services are not running.  (Use -v for list.)
       # svcadm disable -t /network/rpc/gss:default
       # svcadm disable /network/rpc/gss:default
       # svcs -x gss
       
       svc:/network/rpc/gss:default (Generic Security Service)
        State: disabled since Sun Jan 21 14:36:47 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: gssd(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/rpc/mdcomm:default
       # svcadm disable /network/rpc/mdcomm:default
       # svcs -x mdcomm
       
       svc:/network/rpc/mdcomm:default (SVM multi-node communications)
        State: disabled since Sun Jan 21 13:26:55 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: rpc.mdcommd(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/rpc/meta:default
       # svcadm disable /network/rpc/meta:default
       # svcs -x meta
       
       svc:/network/rpc/meta:default (SVM remote metaset services)
        State: disabled since Sun Jan 21 13:26:55 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: rpc.metad(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/rpc/metamed:default
       # svcadm disable /network/rpc/metamed:default
       # svcs -x metamed
       
       svc:/network/rpc/metamed:default (SVM remote mediator services)
        State: disabled since Sun Jan 21 13:26:55 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: rpc.metamedd(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/rpc/metamh:default
       # svcadm disable /network/rpc/metamh:default
       # svcs -x metamh
       
       svc:/network/rpc/metamh:default (SVM remote multihost disk services)
        State: disabled since Sun Jan 21 13:26:55 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: rpc.metamhd(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/rpc/rstat:default
       # svcadm disable /network/rpc/rstat:default
       # svcs -x rstat
       
       svc:/network/rpc/rstat:default (kernel statistics server)
        State: disabled since Sun Jan 21 13:26:55 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: rpc.rstatd(1M)
          See: rstatd(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/rpc/rusers:default
       # svcadm disable /network/rpc/rusers:default
       # svcs -x rusers
       
       svc:/network/rpc/rusers:default (network user name service)
        State: disabled since Sun Jan 21 13:26:55 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: rpc.rusersd(1M)
          See: rusersd(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/security/ktkt_warn:default
       # svcadm disable /network/security/ktkt_warn:default
       # svcs -x ktkt_warn
       
       svc:/network/security/ktkt_warn:default (Kerberos V5 warning messages daemon)
        State: disabled since Sun Jan 21 14:40:16 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: ktkt_warnd(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/rpc-100235_1/rpc_ticotsord:default
       # svcadm disable /network/rpc-100235_1/rpc_ticotsord:default
       # svcs -x rpc_ticotsord
       
       svc:/network/rpc-100235_1/rpc_ticotsord:default (100235)
        State: disabled since Sun Jan 21 14:40:46 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
       Impact: This service is not running.
       # svcadm disable -t /system/filesystem/autofs:default
       # svcadm disable /system/filesystem/autofs:default
       # svcs -x autofs
       
       svc:/system/filesystem/autofs:default (automounter)
        State: disabled since Sun Jan 21 14:41:23 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: automount(1M)
          See: /var/svc/log/system-filesystem-autofs:default.log
       Impact: This service is not running.
       # svcadm disable -t /network/login:rlogin
       # svcadm disable /network/login:rlogin
       # svcs -x login
       
       svc:/network/login:rlogin (remote login)
        State: disabled since Sun Jan 21 13:26:56 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: in.rlogind(1M)
          See: rlogind(1M)
       Impact: This service is not running.
       
       svc:/network/login:klogin (remote login)
        State: disabled since Sun Jan 21 13:26:56 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: in.rlogind(1M)
          See: rlogind(1M)
       Impact: This service is not running.
       
       svc:/network/login:eklogin (remote login)
        State: disabled since Sun Jan 21 13:26:56 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: in.rlogind(1M)
          See: rlogind(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/shell:default
       # svcadm disable /network/shell:default
       # svcs -x shell
       
       svc:/network/shell:kshell (rsh)
        State: disabled since Sun Jan 21 13:26:57 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: in.rshd(1M)
          See: rshd(1M)
       Impact: This service is not running.
       
       svc:/network/shell:default (rsh)
        State: disabled since Sun Jan 21 13:26:57 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: in.rshd(1M)
          See: rshd(1M)
       Impact: This service is not running.
       # svcadm disable -t /network/finger:default
       # svcadm disable /network/finger:default
       # svcs -x finger
       
       svc:/network/finger:default (finger)
        State: disabled since Sun Jan 21 13:26:56 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05        
          See: in.fingerd(1M)
          See: fingerd(1M)
       Impact: This service is not running.
       # svcadm disable -t /system/fmd:default
       # svcadm disable /system/fmd:default
       # svcs -x fmd
       
       svc:/system/fmd:default (Solaris Fault Manager)
        State: disabled since Sun Jan 21 14:43:58 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: fmd(1M)
          See: /var/svc/log/system-fmd:default.log
       Impact: This service is not running.
       # svcadm disable -t /system/cryptosvc:default
       # svcadm disable /system/cryptosvc:default
       # svcs -x cryptosvc
       
       svc:/system/cryptosvc:default (cryptographic services)
        State: disabled since Sun Jan 21 14:44:22 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: cryptoadm(1M)
          See: kcfd(1M)
          See: /var/svc/log/system-cryptosvc:default.log
       Impact: This service is not running.
       # svcadm disable -t /network/pfil:default
       # svcadm disable /network/pfil:default
       # svcs -x pfil
       
       svc:/network/pfil:default (packet filter)
        State: disabled since Sun Jan 21 14:45:22 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: ipfilter(5)
          See: /etc/svc/volatile/network-pfil:default.log
          See: /var/svc/log/network-pfil:default.log
       Impact: This service is not running.

Nachfolgend wird die Funktion ausgeschaltet, dass wenn man mit einer "vi" Session arbeitet und es zum Unterbruch kommt, die Modifikationen im "vi" bis zu diesem Unterbruch, zwischengespeichert werden:

       # mv /etc/rc2.d/S89PRESERVE /etc/rc2.d/NOS89PRESERVE

PICL Framework wird gebraucht um Systemdiagnosen durchzufuehren und kann innerhalb vom "smf" ebenfalls deaktiviert werden:

       # svcadm disable -t /system/picl:default
       # svcadm disable /system/picl:default
       # svcs -x picl
       
       svc:/system/picl:default (platform information and control)
        State: disabled since Sun Jan 21 14:52:09 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: picld(1M)
          See: prtpicl(1M)
          See: /var/svc/log/system-picl:default.log
       Impact: This service is not running.

Nachfolgend wird der "inetd" Deamon abgeschaltet:

       # svcadm disable -t /network/inetd:default
       # svcadm disable /network/inetd:default
       # svcs -x inetd
       
       svc:/network/inetd:default (inetd)
        State: disabled since Sun Jan 21 14:53:00 2007
       Reason: Disabled by an administrator.
          See: http://sun.com/msg/SMF-8000-05
          See: inetd(1M)
          See: /var/svc/log/network-inetd:default.log
       Impact: This service is not running.

Da der "inetd" service deaktiviert worden ist kann auch das entsprechende Konfig File vomSystem entfernt werden dh. dieses zeigt momentan folgenden Inhalt:

       # ls -al /etc/inet/inetd.conf
       -r--r--r--   1 root     sys         1101 Jan 21 12:53 /etc/inet/inetd.conf
       # cat /etc/inet/inetd.conf
       
       --------------- /etc/inet/inetd.conf --------------- 
       
       #
       # Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
       # Use is subject to license terms.
       #
       #ident  "@(#)inetd.conf 1.56    04/10/21 SMI"
       #
       # Legacy configuration file for inetd(1M).  See inetd.conf(4).
       #
       # This file is no longer directly used to configure inetd.
       # The Solaris services which were formerly configured using this file
       # are now configured in the Service Management Facility (see smf(5))
       # using inetadm(1M).
       #
       # Any records remaining in this file after installation or upgrade,
       # or later created by installing additional software, must be converted
       # to smf(5) services and imported into the smf repository using
       # inetconv(1M), otherwise the service will not be available.  Once
       # a service has been converted using inetconv, further changes made to
       # its entry here are not reflected in the service.
       #
       #
       # CacheFS daemon.  Provided only as a basis for conversion by inetconv(1M).
       #
       100235/1 tli rpc/ticotsord wait root /usr/lib/fs/cachefs/cachefsd cachefsd"
       # TFTPD - tftp server (primarily used for booting)
       #tftp   dgram   udp6    wait    root    /usr/sbin/in.tftpd      in.tftpd -s /tftpboot
       
       --------------- /etc/inet/inetd.conf --------------- 
       
       # rm /etc/inet/inetd.conf
       # rm /etc/inetd.conf

NOTE
wird der "inetd" Daemon benoetigt muessen die entsprechenden Dienste innerhalb "smf" wieder aktiviert werden!

Nach der Modifikation der Dienste ergiebts sich folgendes Bild:

       # svcs
       
       STATE          STIME    FMRI
       legacy_run     15:25:27 lrc:/etc/rc2_d/S20sysetup
       legacy_run     15:25:27 lrc:/etc/rc2_d/S81dodatadm_udaplt
       legacy_run     15:25:27 lrc:/etc/rc2_d/S98deallocate
       online         15:24:59 svc:/system/svc/restarter:default
       online         15:25:01 svc:/network/loopback:default
       online         15:25:02 svc:/system/filesystem/root:default
       online         15:25:02 svc:/network/physical:default
       online         15:25:03 svc:/milestone/name-services:default
       online         15:25:03 svc:/system/boot-archive:default
       online         15:25:03 svc:/system/scheduler:default
       online         15:25:03 svc:/milestone/network:default
       online         15:25:04 svc:/system/identity:node
       online         15:25:05 svc:/system/filesystem/usr:default
       online         15:25:07 svc:/system/keymap:default
       online         15:25:20 svc:/system/device/local:default
       online         15:25:20 svc:/system/filesystem/minimal:default
       online         15:25:21 svc:/system/identity:domain
       online         15:25:21 svc:/system/sysevent:default
       online         15:25:21 svc:/system/rmtmpfiles:default
       online         15:25:21 svc:/system/device/fc-fabric:default
       online         15:25:21 svc:/milestone/devices:default
       online         15:25:21 svc:/system/coreadm:default
       online         15:25:22 svc:/network/initial:default
       online         15:25:23 svc:/network/service:default
       online         15:25:23 svc:/system/manifest-import:default
       online         15:25:23 svc:/milestone/single-user:default
       online         15:25:23 svc:/milestone/sysconfig:default
       online         15:25:23 svc:/system/utmp:default
       online         15:25:24 svc:/system/console-login:default
       online         15:25:25 svc:/system/filesystem/local:default
       online         15:25:25 svc:/system/sac:default
       online         15:25:25 svc:/system/cron:default
       online         15:25:26 svc:/system/system-log:default
       online         15:25:26 svc:/system/dumpadm:default
       online         15:25:27 svc:/milestone/multi-user:default
       online         15:25:27 svc:/milestone/multi-user-server:default
       # netstat -an
       
       TCP: IPv4
          Local Address        Remote Address    Swind Send-Q Rwind Recv-Q    State
       -------------------- -------------------- ----- ------ ----- ------ -----------
             *.*                  *.*                0      0 49152      0 IDLE
       
       TCP: IPv6
          Local Address                     Remote Address                 Swind Send-Q Rwind Recv-Q   State      If
       --------------------------------- --------------------------------- ----- ------ ----- ------ ----------- -----
             *.*                               *.*                             0      0 49152      0 IDLE        
       
       SCTP:
               Local Address                   Remote Address          Swind  Send-Q Rwind  Recv-Q StrsI/O  State
       ------------------------------- ------------------------------- ------ ------ ------ ------ ------- -----------
       0.0.0.0                         0.0.0.0                              0      0 102400      0  32/32  CLOSED   0  32/32  CLOSED

Nun starten wir den Server neu und zwar folgendermassen:

       # touch /reconfigure

oder

       # reboot -- -r
       
       # init 6

Folgende Package wurden entfernt basierend auf einer Core Installation:

       # pkgrm "Package Name"
       
       Package Name                 Package Description
       *************                *******************
       
       SUNWsndmr                    Sendmail (root)
       SUNWsndmu                    Sendmail (/usr)
       SUNWauda                     Audio Applications
       SUNWaudd                     Audio Drivers
       SUNWftpr                     FTP Server, (Root)
       SUNWftpu                     FTP Server, (Usr)
       SUNWged                      Sun Gigabit Ethernet Adapter Driver
       SUNWnisr                     Network Information System, (Root)
       SUNWnisu                     Network Information System, (Usr)
       SUNWced                      Sun GigaSwift Ethernet Adapter Driver
       SUNWdtcor                    Solaris Desktop /usr/dt filesystem anchor
       SUNWfcsm                     FCSM driver
       SUNWfcmdb                    Fibre Channel adb macros and mdb modules
       SUNWqlc                      Qlogic ISP 2200/2202 Fibre Channel Device Driver
       SUNWi15cs                    X11 ISO8859-15 Codeset Support
       SUNWi1cs                     X11 ISO8859-1 Codeset Support
       SUNWluxop                    Sun Enterprise Network Array firmware and utilities
       SUNWluxopr                   Sun Enterprise Network Array libraries
       SUNWnamow                    Northern America OW Support
       SUNWses                      SCSI Enclosure Services Device Driver
       SUNWsolnm                    Solaris Naming Enabler
       SUNWssad                     SPARCstorage Array Drivers
       SUNWudf                      Universal Disk Format 1.50, (Usr)
       SUNWudfr                     Universal Disk Format 1.50
       SUNWxge                      Xframe 10GE NIC Driver
       SUNWxwdv                     X Windows System Window Drivers
       SUNWxwmod                    X Window System kernel modules
     * SUNWqfed                     Sun Quad FastEthernet Adapter Driver
       SUNWnfsckr                   Network File System (NFS) client kernel support (Root)
     * SUNWnfscr                    Network File System (NFS) client support (Root)
     * SUNWnfscu                    Network File System (NFS) client support (Usr)
       SUNWnfsskr                   Network File System (NFS) server kernel support (Root)
       SUNWnfssr                    Network File System (NFS) server support (Root)
       SUNWnfssu                    Network File System (NFS) server support (Usr)
       SUNWpiclr                    PICL Framework (Root)
       SUNWpiclu                    PICL Libraries, and Plugin Modules (Usr)
       SUNWtftp                     Trivial File Transfer Server
       SUNWtftpr                    Trivial File Transfer Server (Root)
       SUNWtnamd                    Trivial Name Server (Usr)
       SUNWtnamr                    Trivial Name Server (Root)
       SUNWtnetc                    Telnet Command (client)
       SUNWtnetd                    Telnet Server Daemon (Usr)
       SUNWtnetr                    Telnet Server Daemon (Root)
       SUNWlldap                    LDAP Libraries
       SUNWkrbr                     Kerberos version 5 support (Root)
       SUNWkrbu                     Kerberos version 5 support (Usr)
       SUNWbsr                      Boot Server daemons (Root)
       SUNWbsu                      Boot Server daemons (Usr)
       SUNWrcmdc                    Remote Network Client Commands
       SUNWrcmdr                    Remote Network Server Commands (Root)
       SUNWrcmds                    Remote Network Server Commands (Usr)
     ! SUNWale                       Asian Language Environment Common Files
       SUNWcfcl                     Common Fibre Channel HBA API Library (Usr)
       SUNWcfclr                    Common Fibre Channel HBA API Library (Root)
       SUNWfchba                    Sun Fibre Channel Host Bus Adapter Library
       SUNWfchbar                   Sun Fibre Channel Host Bus Adapter Library (root)
       SUNWipfr                     IP Filter utilities, (Root)
       SUNWipfu                     IP Filter utilities, (Usr)
       SUNWdtrc                     DTrace Clients
       SUNWdtrp                     DTrace Providers
       SUNWeuluf                    UTF-8 L10N For Language Environment User Files
     * SUNWgss                      GSSAPI V2
     * SUNWgssc                     GSSAPI CONFIG V2
       SUNWjfca                     JNI Fibre Channel Adapter (FCA) Driver
       SUNWjfcau                    JNI Fibre Channel Adapter (FCA) (usr)
       SUNWqus                      QLogic Ultra3 Scsi, (Root)
       SUNWqusu                     QLogic Ultra3 Scsi, (Usr)
       SUNWudaplr                   Sun User Direct Access Programming Library (Root)
       SUNWudaplu                   Sun User Direct Access Programming Library (User)
       SUNWiscsir                   Sun iSCSI Device Driver (root)
       SUNWiscsiu                   Sun iSCSI Management Utilities (usr)
       SUNWfmd                      Fault Management Daemon and Utilities
       SUNWrpcib                    InfiniBand plugin to RPC over RDMA
       SUNWipmi                     ipmitool, (usr)
       SUNWidnl                     Internationalized Domain Name Support Library Files
       SUNWcnsr                     Common Network Services (Root): time, daytime, echo, discard, chargen
       SUNWcnsu                     Common Network Services (Usr): time, daytime, echo, discard, chargen
       SUNWadmap                    System administration applications
       SUNWadmlib-sysid             System and Network identification libraries
       SUNWuedg                     USB Digi Edgeport serial driver
       SUNWugen                     USB Generic Driver
       SUNWuksp                     USB Keyspan serial driver
       SUNWukspfw                   USA49WLC firmware for USB Keyspan serial driver
       SUNWuprl                     Prolific PL2303 USB-to-serial driver
       SUNWusb                      USB Device Drivers
       SUNWusbs                     USB generic serial module
       SUNWemlxs                    Emulex-Sun LightPulse Fibre Channel Adapter (FCA) driver (root)
       SUNWemlxu                    Emulex-Sun LightPulse Fibre Channel Adapter Utilties (usr)
       SUNWintgige                  Intel(R) PRO/1000 Server Adapter Driver
       SUNWrge                      Realtek Gigabit Ethernet Driver
       SUNWqlcu                     Qlogic Fibre Channel Adapter Utilities (usr)
       SUNWbdb                      BerkeleyDB-Base 4.2.52 (sun-private) Solaris Sparc 32-bit and 64-bit Architecture
       SUNWbdbj                     BerkeleyDB-Java(sun-private) 4.2.52 Solaris Sparc 32-bit and 64-bit Arch
       SUNWfcprt                    Fibre Channel HBA Port utility
       SUNWfmdr                     Fault Management Daemon and Utilities (Root)
       SUNWmpapi                    SNIA Multipath Management API Common Library
       SUNWmpapir                   SNIA Multipath Management API Common Library (Root)
       NOTE Das Packages "SUNWnfscr" braucht es unter Solaris 10 fuer die ssh Funktion die anhand eines zusaetzlichen 
       Packages installiert werden kann!
       NOTE Das Packages "SUNWgss & SUNWgssc" braucht es unter Solaris 10 fuer die ssh Funktion die anhand eines 
       zusaetzlichen Packages installiert werden kann!
       NOTE Das Packages "SUNWqfed" wird im Zusammenhang mit Quad Fast Ethernet NIC's benutzt und muss als Driver 
       fuer diese PCI NIC's installiert sein!
       NOTE Das Package "SUNWale" ist bei dem Release 11/06 nicht mehr in der Core  Installation vorhanden!

Installiere sofern notwendig die mit "*" gekennzeichnenden Packages:

NOTE
Es kann bei der Installation der Packages zu Fehlermeldungen oder Hinweisen kommen, dass "abhaengige" Packages fehlen und installiert werden sollen. Ignoriere diese Meldungen! Die Solaris Packes werden folgendermassen installiert:

       # cd [Pfad ins Verzeichnis des Packages]
       # pkgadd -d ./ [Package Name]
       Package Name     Package Description                                        CD
       *************    *******************                                        **
       
       SUNWtoo          Programming Tools                                          CD1
       SUNWipc          Interprozess Communication                                 CD1
     * SUNWsshcu        SSH Common, (Usr)                                          CD1
     * SUNWsshdr        SSH Server, (Root)                                         CD1
     * SUNWsshdu        SSH Server, (Root)                                         CD1
   *** SUNWadmc         System administration core libraries                       CD1
   *** SUNWmdb          Modular Debugger                                           CD1
  **** SUNWadmap        System administration applications                         CD1
  **** SUNWadmlib-sysid System and Network identification libraries                CD1
       SUNWbtool        CCS tools bundled with SunOS                               CD2
       SUNWbcp          SunOS 4.x Binary Compatibility                             CD2
       SUNWgzip         The GNU Zip (gzip) compression                             CD2
       SUNWzip          The Info-Zip (zip) compression utility                     CD2
     * SUNWsshu         SSH Client and utilities, (Usr)                            CD2
     * SUNWsshr         SSH Client and utilities, (Root)                           CD2
       SUNWbcp          SUN OS 4.X Binary Comp.                                    CD2
       SUNWscpr         Source Compatibility, (Root)                               CD2
       SUNWscpu         Source Compatibility, (Usr)                                CD2
       SUNWowbcp        OpenWindows binary compatibility                           CD2
       SUNWscbcp        SPARCompilers Binary Compatibility Lib                     CD2
       SUNWzip          The Info-Zip (zip) compression utility                     CD2
   *** SUNWadmfw        System & Network Administration Framework                  CD2
   *** SUNWadmfr        System & Network Administration Framework Configuration    CD2
   *** SUNWter          Terminal Information                                       CD2
  **** SUNWzoner        Solaris Zones (Root)                                       CD2
  **** SUNWzoneu        Solaris Zones (Usr)                                        CD2
  **** SUNWpool         Resource Pools                                             CD2
  **** SUNWpoolr        Resource Pools (Root)                                      CD2
  **** SUNWluu          Live Upgrade (usr)                                         CD2
  **** SUNWlur          Live Upgrade (root)                                        CD2
  **** SUNWluzone       Live Upgrade (zones support)                               CD2
****** SUNWntpr         NTP, (Root)                                                CD2
****** SUNWntpu         NTP, (Usr)                                                 CD2
       SUNWarc          Archiv libraries                                           CD5
       SUNWlibm         Math & Microtasking Library Headers & Lint Files (Usr)     CD5
       SUNWlibmr        Math Library Lint Files (Root)                             CD5
       SUNWhea          Sun OS Header Files                                        CD5
       SUNWsprot        Solaris Bundled tools                                      CD5
    ** SUNWdpl          Developer Profiled Libraries                               CD5
   *** SUNWsra          Source Compatibility Archive Libraries                     CD5
   *** SUNWsrh          Source Compatibility Header Files                          CD5
       -> Pfad fuer CD1                         = /cdrom/Solaris_10/Product/
       -> Pfad fuer CD2                         = /cdrom/Solaris_10/Product/
       -> Pfad fuer CD3                         = /cdrom/Solaris_10/Product/
       -> Pfad fuer CD4                         = /cdrom/Solaris_10/Product/
       -> Pfad fuer CD5                         = /cdrom/Solaris_10/Product/
       -> Pfad fuer CD Software Compagnion      = /cdrom/Solaris_sparc/Packages
      *      Diese Package's werden benoetigt um OpenSSH zu installieren!
      **     Dieses Package wird benoetigt wenn Bind kompiliert werden soll!
      ***    Diese Package's werden benoetigt wenn CheckPoint NGX installiert werden soll!
      ****   Diese Package's werden benoetigt wenn Zones installiert werden sollen!
      ****** Diese Package's werden benoetigt wenn NTP installiert werden soll!

Bevor man den Befehl "sh obmtool kolab | tee kolab-build.log" unter Solaris 10 ausfuehrt muss folgendes beachtet werden:

Da wir unter Solaris 10 die "Sunfreeware" Package als Kompilierung benutzen muss der Pfad fuer die LIBS manipuliert werden dh. "/usr/local/lib" muss ersichtlich sein fuer das System damit die noetigen librarys gefunden werden. Dies wird anhand des "crle" Kommandos durchgefuehrt:

       http://mirror.switch.ch/mirror/solaris-freeware/indexsparc10.html

NOTE
Folgende sunfreeware Package muessen installiert sein:

       SMCautoc        autoconf                    autoconf-2.60-sol10-sparc-local.gz
       SMCautom        automake                    automake-1.10-sol10-sparc-local.gz
       SMCbison        bison                       bison-2.3-sol10-sparc-local.gz
       SMCflex         flex                        flex-2.5.4a-sol10-sparc-local.gz
       SMCgcc          gcc                         gcc-3.4.6-sol10-sparc-local.gz
       SMCgrep         grep                        grep-2.5.1a-sol10-sparc-local.gz
       SMCliconv       libiconv                    libiconv-1.9.2-sol10-sparc-local.gz
       SMCmake         make                        make-3.81-sol10-sparc-local.gz
       SMCncurs        ncurses                     ncurses-5.6-sol10-sparc-local.gz
       SMCpcre         pcre                        pcre-6.7-sol10-sparc-local.gz
       SMCtexi         textinfo                    texinfo-4.8-sol10-sparc-local.gz

Um die momentane Konfiguration oder Pfad ausgeben benutze:

       # crle
       
       --------------- output of crle --------------- 
       
       Default configuration file (/var/ld/ld.config) not found
         Default Library Path (ELF):   /lib:/usr/lib  (system default)
         Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (system default)
       
       --------------- output of crle ---------------

Um "/usr/local/lib" aufzunehmen in den Pfad fuehre folgendes durch:

       # crle -l /lib:/usr/lib:/usr/local/lib

Um zu kontrollieren ob die Modifikation erfolgreich war fuehre wiederum "crle" aus:

       # crle
       
       --------------- output of crle --------------- 
       
       Default configuration file (/var/ld/ld.config) not found
         Default Library Path (ELF):   /lib:/usr/lib:/usr/local/lib  (system default)
         Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (system default)
       
       --------------- output of crle ---------------

ACHTUNG: Fehlmanipulationen innerhalb der Ausfuehrung des "crle" Kommandos koennen das System unbrauchbar machen!

Ebenfalls muss gewaehrleistet sein das folgender PATH angegeben ist:

       # env
       
       _=/usr/bin/env
       LANG=C
       HZ=
       PATH=/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/bin:/usr/ucb:/opt/sfw/bin:/usr/local/bin:/usr/ccs/bin
       HISTFILE=/root/.sh_history
       LOGNAME=root
       MAIL=/var/mail/root
       PS1=[root@dev $PWD]# 
       SHELL=/sbin/sh
       HISTSIZE=200
       HOME=/root
       TERM=vt100
       PWD=/kolabtmp
       TZ=MET
       ENV=/root/.kshrc

Das heisst das .profile sieht folgendermassen aus:

       # cat /root/.profile
       
       --------------- /root/.profile --------------- 
       
       #       This is the default standard profile provided to a user.
       #       They are expected to edit it to meet their own needs.
       
       MAIL=/usr/mail/${LOGNAME:?}
       
       ENV=$HOME/.kshrc
       
       PATH=/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/bin:/usr/ucb:/opt/sfw/bin:/usr/local/bin:/usr/ccs/bin
       
       TERM=vt100
       HISTFILE=/root/.sh_history
       HISTSIZE=200
       
       export ENV PATH TERM HISTFILE HISTSIZE
       
       --------------- /root/.profile --------------- 

NOTE
Nicht vergessen bei Aenderungen im ".profile" kurz auszuloggen und wieder einzuloggen!

Nun kontrolliere das folgender Link besteht:

       # ls -la /usr/bin/cc               
       lrwxrwxrwx   1 root     root          18 Feb 17 19:17 /usr/bin/cc -> /usr/local/bin/gcc

Wenn dies nicht der Fall ist erstelle diese:

       # ln -s /usr/local/bin/gcc /usr/bin/cc

Mit dem Latest Recommended Cluster April 2007 fuer Solaris 10 Sparc werden die Header Files korrigiert. Nach diesem Eingriff ins System kann zB postfix nicht mehr kompiliert werden. Um dieses Problem zu loesen muessen die Header Files betreffend gcc von sunfreeware wieder auf den neusten Stand gebracht werden. Um dies zu bewerkstelligen fuehre folgendes aus:

       Recommended Cluster April 2007 updates some headers SUNWhea SUNWcsu
       
       # cd /usr/local/lib/gcc/sparc-sun-solaris2.10/3.4.6/install-tools
       
       Fuege in der ersten Zeile des Files mkheaders.conf folgendes ein:
       
       # vi /opt/local/libexec/gcc/sparc-sun-solaris2.10/3.4.6/install-tools/mkheaders
       
       --------------- /root/.profile --------------- 
       
       SHELL=/bin/sh
       
       --------------- /root/.profile --------------- 
       
       Danach fuehre folgendes aus
       
       # /opt/local/libexec/gcc/sparc-sun-solaris2.10/3.4.6/install-tools/mkheaders
       
       Dies korrigiert einige Header Files resp. bringt diese auf den neusten Stand.

Kompilieren V2.2.3

Als Letzters erstellen wir das noetige Installations Verzeichnis von Kolab2 sprich Kolab2 wird Standardsgemaess in /kolab installiert. Wir wollen jedoch kola2 in /opt/kolab installieren. Aus diesem Grund linken wir das Verzeichnis /kolab nach /opt/kolab:

       # mkdir /opt/kolab
       # ln -s /opt/kolab/ /kolab 

Nun fehlt nur noch "wget" um die Source runterzuladen. Da wir "wget" spaeter benutzen kompilieren wir "wget" kurz selber:

       http://wget.sunsite.dk/ oder ftp://ftp.gnu.org/pub/gnu/wget/
       # mkdir /root/wget
       # cp wget-1.10.1.tar.gz /root/wget
       # cd /root/wget
       # gzip -dc wget-1.10.1.tar.gz | tar xvf -
       # cd /root/wget/wget-1.10.1
       # ./configure \
       --prefix=/opt/wget-1.10.1 \
       --exec-prefix=/opt/wget-1.10.1
       
       # make
       # make install

Nun kann die Kompilation vorbereitet werden:

       # cd /kolabtmp
       
       # /opt/wget-1.10.1/bin/wget -r -l1 -nd --no-parent http://ftp.gwdg.de/pub/linux/kolab/server/release/kolab-server-2.2.3/sources/
       
       # chmod -R 777 /kolabtmp
       # cd /kolabtmp

Nun kann die Kompilation nach den Vorbereitungen gestartet werden:

       # nohup sh -x install-kolab.sh 2>&1 | tee kolab-install.log &

NOTE
Wird der Befehl wie abgebildet abgesetzt wird ein Log File erstellt und es kann ohne Probleme ausgeloggt werden (nohup). Um das aktuelle Geschehen im Log nachzuverfolgen speziell wenn dazwischen ausgeloggt wird so benutze "tail" um das Log zu öffnen dh.

       # tail -f /kolabtmp/kolab-install-.log

NOTE
Während der Kompilation werden einige temporäre Files angelegt. Diese befinden sich im Verzeichnis "/tmp". Speziell auf das Verzeichnis "/tmp/install-kolab....[Random Number]" ist hinzuweisen dh. dieses Verzeichnis wird durch die Kompilation benutzt um die Source Packages etc. abzuarbeiten dh. wenn aus irgendeinem Grund die Kompilation unterbrochen wird muss im "install-kolab.sh" Script folgende Position manipuliert werden damit das bereits bestehende Verzeichnis für das Weiterfahren herangezogen wird. Wird dies nicht durchgeführt beginnt die gesammte Kompilation von Beginn an neu und es wird ein komplett neues Verzeichnis erstellt.

       # vi /kolabtmp/install-kolab.sh
       
       -------------------- /kolabtmp/install-kolab.sh --------------------
       
       #mktmpdir() {
       #  newtmp="${TMPDIR-/tmp}/install-kolab.$RANDOM.$RANDOM.$RANDOM.$$"
       #  (umask 022 && mkdir "$newtmp") || {
       #    echo "Could not create temporary directory! Exiting." 1>&2
       #    exit 1
       #  }
       #  echo "$newtmp"
       #}
       
       
       SRCDIR=`pwd`
       #WORKDIR=`mktmpdir`
       WORKDIR="/tmp/install-kolab....[Random Number]"
       echo "Changing to temporary working directory $WORKDIR ..."
       cd "$WORKDIR"
       populate_workdir
       
       -------------------- /kolabtmp/install-kolab.sh --------------------

Die Kompilation bricht ab da es unter Solaris 10 ein Problem gibt betreffend TLS/SSL Libraries. Der Grund ist der Apache "check" betreffend TLS/SSL Libraries. Diese werden nicht richtig erkannt. Das Problem steht im Zusammenhang mit openssl und zlib. Nachfolgend die Fehlermeldung die erscheint:

       -------------------- output install-kolab.sh --------------------
       
       ........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
         adding "-I$(top_srcdir)/modules/proxy/../generators" to INCLUDES
       checking whether to enable mod_ssl... checking dependencies
       checking for SSL/TLS toolkit base... /kolab
         adding "-R/kolab/lib" to LDFLAGS
       checking for OpenSSL version... checking openssl/opensslv.h usability... yes
       checking openssl/opensslv.h presence... yes
       checking for openssl/opensslv.h... yes
       checking openssl/ssl.h usability... yes
       checking openssl/ssl.h presence... yes
       checking for openssl/ssl.h... yes
       OK
         forcing SSL_LIBS to "-lssl -lcrypto"
       checking openssl/engine.h usability... yes
       checking openssl/engine.h presence... yes
       checking for openssl/engine.h... yes
       checking for SSLeay_version... yes
       checking for SSL_CTX_new... no
       checking for ENGINE_init... no
       checking for ENGINE_load_builtin_engines... no
       checking for SSL_set_cert_store... no
       configure: error: ... Error, SSL/TLS libraries were missing or unusable
       error: Bad exit status from /kolab/RPM/TMP/rpm-tmp.31770 (%build)
       
       
       RPM build errors:
           Bad exit status from /kolab/RPM/TMP/rpm-tmp.31770 (%build)
       + exit 1 
               
       -------------------- output install-kolab.sh --------------------

Die Loesung dieses Problems ist hoehere Versionen der entsprechenden Software einzusetzen dh. openssl und apache. Um diese von Beginn weg bei der Installation anzugeben muss die src.rpm von ftp.openpkg.org runtergeladen werden. Die Source findet man in:

       current/SRC/BASE/
               

Erstelle mit "ftp.openpkg.org" eine "anonymous" Verbindung und lade von dort folgende Files runter:

       apache-2.2.14-20091004.src.rpm
       openssl-0.9.8l-20091224.src.rpm
       

Kopiere die Files in das Verzeichnis /kolabtmp und versehe diese mit den entsprechenden Rechten:

       # cp *.src.rpm /kolabtmp
       # cd /kolabtmp
       # chmod 777 *.src.rpm
       

Die Kompilation wird zwar durch "install-kolab.sh" angestossen und in diesem File ist der Installations Ablauf abgebildet aber welches Package mit welcher Version und mit welchen Option installiert werden soll steht im File "00INDEX.rdf". Dieses muss nun manipuliert werden das Namen der Package uebereinstimmen sowie Versionen etc:

       # vi /kolabtmp/00INDEX.rdf
       -------------------- /kolabtmp/00INDEX.rdf -------------------
       
       <rdf:li>ftp://ftp.openssl.org/source/openssl-0.9.8k.tar.gz</rdf:li>
                 <rdf:li>rc.pod</rdf:li>
                 <rdf:li>rc.8</rdf:li>
                 <rdf:li>rpmpopt</rdf:li>
                 <rdf:li>aux.usrgrp.sh</rdf:li>
       
       
       
        <rdf:Description about="openssl-0.9.8k-20090326" href="openssl-0.9.8k-20090326.src.rpm">
             <Name>openssl</Name>
             <Version>0.9.8k</Version>
             <Release>20090326</Release>
             <Distribution>OpenPKG Community</Distribution>
             <Class>CORE</Class>
             <Group>SSL</Group>
             <License>BSD-style</License>
             <Packager>OpenPKG Foundation e.V.</Packager>
             <Summary>Cryptography and SSL/TLS Toolkit</Summary>
             <URL>http://www.openssl.org/</URL>
             <Vendor>The OpenSSL Project</Vendor>
             <BuildPreReq>
               <rdf:bag>
                 <resource>OpenPKG</resource>
                 <resource geq="20040130">openpkg</resource>
                 <resource>perl</resource>
                 <resource>make</resource>
                 <resource>gcc</resource>
               </rdf:bag>
             </BuildPreReq>
             <BuildPreReq cond="with_zlib">
               <rdf:bag>
                 <resource>zlib</resource>
               </rdf:bag>
             </BuildPreReq>
             <PreReq>
               <rdf:bag>
                 <resource>OpenPKG</resource>
                 <resource geq="20040130">openpkg</resource>
                 <resource>perl</resource>
               </rdf:bag>
             </PreReq>
             <PreReq cond="with_zlib">
               <rdf:bag>
                 <resource>zlib</resource>
               </rdf:bag>
             </PreReq>
             <Provides>
               <rdf:bag>
                 <resource equ="no">openssl::with_zlib</resource>
                 <resource equ="no">openssl::with_idea</resource>
                 <resource equ="no">openssl::with_threads</resource>
                 <resource equ="no">openssl::with_pic</resource>
               </rdf:bag>
             </Provides>
             <Source>
               <rdf:bag>
                 <rdf:li>ftp://ftp.openssl.org/source/openssl-0.9.8k.tar.gz</rdf:li>
               </rdf:bag>
             </Source>
             <Description>
       The OpenSSL Project is a collaborative effort to develop a robust,
       commercial-grade, full-featured, and Open Source toolkit implementing the
       Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1)
       protocols with full-strength cryptography world-wide. The project is
       managed by a worldwide community of volunteers that use the Internet to
       communicate, plan, and develop the OpenSSL tookit and its related
       documentation.
             </Description>
       
       
       
           <rdf:Description about="apache-2.2.11-20090201" href="apache-2.2.11-20090201.src.rpm">
             <Name>apache</Name>
             <Version>2.2.11</Version>
             <Release>20090201</Release>
             <Distribution>OpenPKG Community</Distribution>
             <Class>BASE</Class>
             <Group>Web</Group>
             <License>ASF</License>
             <Packager>OpenPKG Foundation e.V.</Packager>
             <Summary>Apache HTTP Server</Summary>
             <URL>http://httpd.apache.org/</URL>
             <Vendor>Apache Software Foundation</Vendor>
             <BuildPreReq>
               <rdf:bag>
                 <resource>OpenPKG</resource>
                 <resource geq="20060823">openpkg</resource>
                 <resource>perl</resource>
                 <resource>make</resource>
                 <resource>apr</resource>
                 <resource>pcre</resource>
               </rdf:bag>
             </BuildPreReq>
             <BuildPreReq cond="with_mod_deflate">
               <rdf:bag>
                 <resource>zlib</resource>
               </rdf:bag>
             </BuildPreReq>
             <BuildPreReq cond="with_mod_ldap">
               <rdf:bag>
                 <resource equ="yes">apr::with_ldap</resource>
               </rdf:bag>
             </BuildPreReq>
             <BuildPreReq cond="with_mod_ssl">
               <rdf:bag>
                 <resource geq="0.9.8">openssl</resource>
               </rdf:bag>
             </BuildPreReq>
             <BuildPreReq cond="with_mpm_worker with_mpm_event | with_mod_memcache |">
               <rdf:bag>
                 <resource equ="yes">apr::with_threads</resource>
               </rdf:bag>
             </BuildPreReq>
             <PreReq>
               <rdf:bag>
                 <resource>OpenPKG</resource>
                 <resource geq="20060823">openpkg</resource>
                 <resource>perl</resource>
                 <resource>apr</resource>
                 <resource>pcre</resource>
               </rdf:bag>
             </PreReq>
             <PreReq cond="with_mod_deflate">
               <rdf:bag>
                 <resource>zlib</resource>
               </rdf:bag>
             </PreReq>
             <PreReq cond="with_mod_ldap">
               <rdf:bag>
                 <resource equ="yes">apr::with_ldap</resource>
               </rdf:bag>
             </PreReq>
             <PreReq cond="with_mod_ssl">
               <rdf:bag>
                 <resource geq="0.9.8">openssl</resource>
               </rdf:bag>
             </PreReq>
             <PreReq cond="with_mpm_worker with_mpm_event | with_mod_memcache |">
               <rdf:bag>
                 <resource equ="yes">apr::with_threads</resource>
               </rdf:bag>
             </PreReq>
             <Provides>
               <rdf:bag>
                 <resource equ="yes">apache::with_mpm_prefork</resource>
                 <resource equ="no">apache::with_mpm_worker</resource>
                 <resource equ="no">apache::with_mpm_event</resource>
                 <resource equ="yes">apache::with_suexec</resource>
                 <resource equ="%25{l_nusr}">apache::with_suexec_caller</resource>
                 <resource equ="public_html">apache::with_suexec_userdir</resource>
                 <resource equ="no">apache::with_mod_deflate</resource>
                 <resource equ="no">apache::with_mod_ext_filter</resource>
                 <resource equ="no">apache::with_mod_substitute</resource>
                 <resource equ="no">apache::with_mod_ssl</resource>
                 <resource equ="no">apache::with_mod_dav</resource>
                 <resource equ="no">apache::with_mod_ldap</resource>
                 <resource equ="no">apache::with_mod_proxy</resource>
                 <resource equ="no">apache::with_mod_cache</resource>
                 <resource equ="no">apache::with_mod_diskcache</resource>
                 <resource equ="no">apache::with_mod_memcache</resource>
                 <resource equ="no">apache::with_mod_filecache</resource>
                 <resource equ="no">apache::with_mod_authn_alias</resource>
               </rdf:bag>
             </Provides>
             <Source>
               <rdf:bag>
                 <rdf:li>apache.sh</rdf:li>
                 <rdf:li>rc.apache</rdf:li>
                 <rdf:li>apache.base</rdf:li>
                 <rdf:li>apache.conf</rdf:li>
                 <rdf:li>http://www.apache.org/dist/httpd/httpd-2.2.11.tar.bz2</rdf:li>
               </rdf:bag>
             </Source>
             <Description>
       The Apache Project is a collaborative software development effort
       aimed at creating a robust, commercial-grade, featureful, and
       freely-available source code implementation of an HTTP (Web) server.
       The project is jointly managed by a group of volunteers located
       around the world, using the Internet and the Web to communicate,
       plan, and develop the server and its related documentation. These
       volunteers are known as the Apache Group. In addition, hundreds
       of users have contributed ideas, code, and documentation to the
       project.
             </Description>
       
               
       -------------------- /kolabtmp/00INDEX.rdf -------------------

Die Aenderungen sind durchgeführt jedoch vergesse nicht die folgende Anpassung ansonsten beginnt die Kompilation etc. abermals von Beginn und wir verliegen sämtliche bereits kompilierten Package:

       # vi /kolabtmp/install-kolab.sh
       
       -------------------- /kolabtmp/install-kolab.sh --------------------
       
       #mktmpdir() {
       #  newtmp="${TMPDIR-/tmp}/install-kolab.$RANDOM.$RANDOM.$RANDOM.$$"
       #  (umask 022 && mkdir "$newtmp") || {
       #    echo "Could not create temporary directory! Exiting." 1>&2
       #    exit 1
       #  }
       #  echo "$newtmp"
       #}
       
       
       SRCDIR=`pwd`
       #WORKDIR=`mktmpdir`
       WORKDIR="/tmp/install-kolab....[Random Number]"
       echo "Changing to temporary working directory $WORKDIR ..."
       cd "$WORKDIR"
       populate_workdir
       
       -------------------- /kolabtmp/install-kolab.sh --------------------

Das "WORKDIR" ist nun angepasst und wir beginnen die Kompiliaton/Installation erneut:

       # nohup sh -x install-kolab.sh 2>&1 | tee kolab-install.log &

Danach stoppt die Kompilierung an folgender Position:

       -------------------- output install-kolab.sh --------------------
       ........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       
       rpmtool:files: pass 1 (preparation and syntactical expansions)
       rpmtool:files: pass 2 (filesystem-based expansions)
       rpmtool:files: pass 3 (duplication removal and cleanup)
       + exit 0
       Processing files: apache-2.2.14-20091004
       Wrote: /kolab/RPM/PKG/apache-2.2.14-20091004.sparc64-solaris10-kolab.rpm
       Executing(%clean): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.26401
       + cd /kolab/RPM/TMP
       + cd httpd-2.2.14
       + rm -rf /kolab/RPM/TMP/apache-2.2.14-root
       + exit 0
       Executing(--clean): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.10472
       + cd /kolab/RPM/TMP
       + rm -rf httpd-2.2.14
       + exit 0
       error: Failed dependencies:
               x509 is needed by apache-2.2.14-20091004
       + exit 1
       
       -------------------- output install-kolab.sh --------------------

Die Installation des Apache Packages muss mit "force" durchgeführt werden dh. das Package wurde korrekt kompiliert konnte jedoch nicht installiert werden:

       # /kolab/bin/openpkg rpm --nodeps -Uvh /kolab/RPM/PKG/apache-2.2.14-20091004.sparc64-solaris10-kolab.rpm
       Preparing...                ########################################### [100%]
          1:apache                 ########################################### [100%]

Wir starten die Kompilation/Installation abermals:

       # nohup sh -x install-kolab.sh 2>&1 | tee kolab-install.log &
       
       -------------------- output install-kolab.sh --------------------
       ........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       checking for sys/types.h... (cached) yes
       checking for inttypes.h... (cached) yes
       checking for stdint.h... (cached) yes
       checking for string.h... (cached) yes
       checking for stdlib.h... (cached) yes
       checking for strtoll... yes
       checking for atoll... yes
       checking for strftime... (cached) yes
       checking for QDBM support... no
       checking for GDBM support... no
       checking for NDBM support... no
       checking for db4 major version... configure: error: Header contains different version
       error: Bad exit status from /kolab/RPM/TMP/rpm-tmp.24486 (%build)
       
       
       RPM build errors:
           Bad exit status from /kolab/RPM/TMP/rpm-tmp.24486 (%build)
       + exit 1 
       
       -------------------- output install-kolab.sh --------------------

DB4 kann durch "apache-php" nicht richtig erkannt werden betreffend "Header" Manipuliere das db4 spec File indem wir --disabled-shared auf:

       --enabled-shared=yes wechseln
       

sowie the compat Modus muss eingeschaltet werden

       https://www.intevation.de/roundup/kolab/issue1809
       # /kolab/bin/openpkg rpm -iv /tmp//tmp/install-kolab....[Random Number]/db-4.520070628_kolab1.src.rpm
       
       db-4.5.20.2-20070628_kolab1
               
       # vi /kolab/RPM/SRC/db/db.spec
       
       -------------------- /kolab/RPM/SRC/db/db.spec --------------------
       
       #   package options
       %option       with_compat nO
       %option       with_cxx    no
               
       
       
       %endif
               --disable-java \
               --with-mutex="$mutex" \
               --enable-shared=yes
       
       -------------------- /kolab/RPM/SRC/db/db.spec --------------------

Um ein "OpenPKG" Package manuell zu kompilieren muss die "OpenPKG" Variable geladen werden dh. diese bestimmt die Umgebung (PATH etc.) der "OpenPKG" Umgebung. Um das Ganze zu vereinfachen erweitern wir ".kshrc" (Kornshell) so, dass wenn ein bestimmter Befehl "opa /kolab" ausgeführt wird diese spezielle "OpenPKG" Variable geladen wird. Die gleiche Anpassung kann auch für ".bashrc" (Bash Shell) herangezogen werden.

       # vi /root/.kshrc 
       
       --------------- /root/.kshrc  --------------- 
                       
       # Loads KOLAB environment:
       # Execute "opa /kolab" before doing any maintainance
       # or configuration work on Kolab!                        
               export LANG=C
       opa () {
          root="$1"
          if [ ! -d $root ]; then
              echo "opa:ERROR: OpenPKG root directory $root not found"
              exit 1
          fi
          if [ ! -f "$root/etc/rc" ]; then
              echo "opa:ERROR: root directory does not contain OpenPKG hierarchy"
              exit 1
          fi
          eval `$root/etc/rc --eval all env`
       }
       
       --------------- /root/.kshrc  --------------- 
       
       # opa /kolab
       
       # /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/db/db.spec
       
       --------------- /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/db/db.spec --------------- 
       
       + cd /kolab/RPM/TMP
       + cd db-4.5.20
       + mutex=no
       + case "sparc64-solaris10" in
       + mutex=Sparc/gcc-assembly
       + cd build_unix
       + CC=/kolab/bin/cc
       + CFLAGS='-O2 -pipe'
       + GREP=grep
       + ../dist/configure --prefix=/kolab --disable-compat185 --disable-cxx --disable-java --with-mutex=Sparc/gcc-assembly --enable-shared=yes
       ........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       
       --------------- /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/db/db.spec --------------- 
       # /kolab/bin/openpkg rpm --force -Uvh /kolab/RPM/PKG/db-4.5.20.2-20070628_kolab1.sparc64-solaris10-kolab.rpm
       # ls -la /kolab/include/db*
       -r--r--r--   1 kolab      102110 Dec 30 07:07 /kolab/include/db.h
       
       # ls -la /kolab/lib/libdb*
       -rw-r--r--   1 kolab         797 Dec 30 07:12 /kolab/lib/libdb-4.5.la
       -rwxr-xr-x   1 kolab     1107337 Dec 30 07:12 /kolab/lib/libdb-4.5.so
       lrwxrwxrwx   1 kolab          12 Dec 30 07:17 /kolab/lib/libdb-4.so -> libdb-4.5.so
       -rw-r--r--   1 kolab     1451450 Dec 30 07:13 /kolab/lib/libdb.a
       lrwxrwxrwx   1 kolab          12 Dec 30 07:17 /kolab/lib/libdb.so -> libdb-4.5.so

Bevor wir nun die Kompilation/Installation abermals starte logge kurz aus auf der Shell und wieder ein da wir immer noch durch "opa /kolab" die Ummgebungs Variablen von "OpenPKG" resp. Kolab2 geladen haben. Nachdem aus- sowie einloggen starten wir die Kompilation/Installation:

       # nohup sh -x install-kolab.sh 2>&1 | tee kolab-install.log &
       
       -------------------- output install-kolab.sh --------------------
       
       ........................................................................
       .........................................................................
       .........................................................................
       .........................................................................        
       .........................................................................
       .........................................................................        
       checking for sys/types.h... (cached) yes
       checking for inttypes.h... (cached) yes
       checking for stdint.h... (cached) yes
       checking for string.h... (cached) yes
       checking for stdlib.h... (cached) yes
       checking for strtoll... yes
       checking for atoll... yes
       checking for strftime... (cached) yes
       checking for QDBM support... no
       checking for GDBM support... no
       checking for NDBM support... no
       checking for db4 minor version and patch level... ok
       checking for Berkeley DB4 support... yes
       checking for Berkeley DB3 support... no
       checking for Berkeley DB2 support... no        
       ........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       find: cannot follow symbolic link /usr/lib/llib-lnvpair: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lmd5: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lnsl: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lcmd: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lpam: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lresolv: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lxnet: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-ldl: No such file or directory
       install: pear.horde.org.xml was not found anywhere!
       error: Bad exit status from /kolab/RPM/TMP/rpm-tmp.11491 (%install)
       
       RPM build errors:
           Bad exit status from /kolab/RPM/TMP/rpm-tmp.11491 (%install)
       + exit 1 
       
       -------------------- output install-kolab.sh --------------------

PEAR-Horde-Channel kann nicht installiert werden da /usr/bin/install andere Optionen benutzt wie unter Linux /usr/bin/install (limited on Solaris 10):

       https://www.intevation.de/roundup/kolab/issue3315
       

Manipuliere PEAR-Horde-Channel.spec folgendermassen:

       # vi /kolab/RPM/SRC/PEAR-Horde-Channel/PEAR-Horde-Channel.spec
       
       -------------------- /kolab/RPM/SRC/PEAR-Horde-Channel/PEAR-Horde-Channel.spec --------------------
       
       %install
       rm -rf $RPM_BUILD_ROOT
       mkdir -p $RPM_BUILD_ROOT%{pear_xmldir}
       #install -m 644 %{SOURCE0} $RPM_BUILD_ROOT%{pear_xmldir}
       /kolab/lib/openpkg/shtool install -m 644 %{SOURCE0} $RPM_BUILD_ROOT%{pear_xmldir}/pear.horde.org.xml
       %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
       
       -------------------- /kolab/RPM/SRC/PEAR-Horde-Channel/PEAR-Horde-Channel.spec --------------------
       # opa /kolab
       
       # /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/PEAR-Horde-Channel/PEAR-Horde-Channel.spec
       
       -------------------- /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/PEAR-Horde-Channel/PEAR-Horde-Channel.spec --------------------
       
       Executing(%prep): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.17850
       + cd /kolab/RPM/TMP
       + set +x
       +----------------------------------Warning------------------------------------+
       | This OpenPKG package is of class JUNK.                                      |
       | This means it is still in DEVELOPMENT state.                                |
       | Hence it is still NOT ready even for general evaluation.                    |
       | Do not use it at all, except in development environments!                   |
       | It is definitely unstable and incompletely packaged.                        |
       +-----------------------------------------------------------------------------+
       + cd /kolab/RPM/TMP
       + rm -rf PEAR-Horde-Channel-1.0
       + /kolab/lib/openpkg/shtool mkdir -f -p -m 755 PEAR-Horde-Channel-1.0
       + cd PEAR-Horde-Channel-1.0
       + exit 0
       Executing(%build): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.17850
       + cd /kolab/RPM/TMP
       + cd PEAR-Horde-Channel-1.0
       + exit 0
       Executing(%install): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.1920
       + cd /kolab/RPM/TMP
       + cd PEAR-Horde-Channel-1.0
       + rm -rf /kolab/RPM/TMP/PEAR-Horde-Channel-1.0-root
       + mkdir -p /kolab/RPM/TMP/PEAR-Horde-Channel-1.0-root/kolab/var/pear
       + /kolab/lib/openpkg/shtool install -m 644 /kolab/RPM/SRC/PEAR-Horde-Channel/pear.horde.org.xml /kolab/RPM/TMP/PEAR-Horde-Channel-1.0-root/kolab/var/pear/pear.horde.org.xml
       + /kolab/lib/openpkg/rpmtool files -v -ofiles -r/kolab/RPM/TMP/PEAR-Horde-Channel-1.0-root '%defattr(-,kolab,kolab)' /kolab '%not %dir {/kolab,/kolab/*,/kolab/etc/rc.d,/kolab/man/*}'
       rpmtool:files: pass 1 (preparation and syntactical expansions)
       rpmtool:files: pass 2 (filesystem-based expansions)
       rpmtool:files: pass 3 (duplication removal and cleanup)
       + exit 0
       Processing files: PEAR-Horde-Channel-1.0-20090119
       Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
       Requires: php php::with_pear = yes
       Obsoletes: php-channel-horde
       Wrote: /kolab/RPM/PKG/PEAR-Horde-Channel-1.0-20090119.sparc64-solaris10-kolab.rpm
       Executing(%clean): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.18758
       + cd /kolab/RPM/TMP
       + cd PEAR-Horde-Channel-1.0
       + rm -rf /kolab/RPM/TMP/PEAR-Horde-Channel-1.0-root
       + exit 0
       
       -------------------- /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/PEAR-Horde-Channel/PEAR-Horde-Channel.spec --------------------
       # /kolab/bin/openpkg rpm -Uvh /kolab/RPM/PKG/PEAR-Horde-Channel-1.0-20090119.sparc64-solaris10-kolab.rpm 
       
       Preparing...                ########################################### [100%]
          1:PEAR-Horde-Channel     ########################################### [100%]
       Adding Channel "pear.horde.org" succeeded
       Update of Channel "pear.horde.org" succeeded

Bevor wir nun die Kompilation/Installation abermals starte logge kurz aus auf der Shell und wieder ein da wir immer noch durch "opa /kolab" die Ummgebungs Variablen von "OpenPKG" resp. Kolab2 geladen haben. Nachdem aus- sowie einloggen starten wir die Kompilation/Installation:

       # nohup sh -x install-kolab.sh 2>&1 | tee kolab-install.log &
       -------------------- output install-kolab.sh --------------------
       ........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       find: cannot follow symbolic link /usr/lib/llib-lelf.ln: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lpam.ln: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lcurses.ln: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lnvpair: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lmd5: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lnsl: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lcmd: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lpam: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lresolv: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lxnet: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-ldl: No such file or directory
       install: pear.phpunit.de.xml was not found anywhere!
       error: Bad exit status from /kolab/RPM/TMP/rpm-tmp.27072 (%install)
       
       
       RPM build errors:
           Bad exit status from /kolab/RPM/TMP/rpm-tmp.27072 (%install)
       + exit 1 
       
       -------------------- output install-kolab.sh --------------------

PEAR-PHPUnit-Channel kann nicht installiert werden da /usr/bin/install andere Optionen benutzt wie unter Linux /usr/bin/install (limited on Solaris 10):

       https://www.intevation.de/roundup/kolab/issue3315
       

Manipuliere PEAR-PHPUnit-Channel.spec folgendermassen:

       # vi /kolab/RPM/SRC/PEAR-PHPUnit-Channel/PEAR-PHPUnit-Channel.spec
       -------------------- /kolab/RPM/SRC/PEAR-PHPUnit-Channel/PEAR-PHPUnit-Channel.spec --------------------
       
       %install
       rm -rf $RPM_BUILD_ROOT
       mkdir -p $RPM_BUILD_ROOT%{pear_xmldir}
       /kolab/lib/openpkg/shtool install -m 644 %{SOURCE0} $RPM_BUILD_ROOT%{pear_xmldir}/pear.phpunit.de.xml
       %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
       
       -------------------- /kolab/RPM/SRC/PEAR-PHPUnit-Channel/PEAR-PHPUnit-Channel.spec --------------------
       # opa /kolab
       
       # /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/PEAR-PHPUnit-Channel/PEAR-PHPUnit-Channel.spec 
       
       -------------------- /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/PEAR-PHPUnit-Channel/PEAR-PHPUnit-Channel.spec --------------------
       
       Executing(%prep): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.857
       + cd /kolab/RPM/TMP
       + set +x
       +----------------------------------Warning------------------------------------+
       | This OpenPKG package is of class JUNK.                                      |
       | This means it is still in DEVELOPMENT state.                                |
       | Hence it is still NOT ready even for general evaluation.                    |
       | Do not use it at all, except in development environments!                   |
       | It is definitely unstable and incompletely packaged.                        |
       +-----------------------------------------------------------------------------+
       + cd /kolab/RPM/TMP
       + rm -rf PEAR-PHPUnit-Channel-1.0
       + /kolab/lib/openpkg/shtool mkdir -f -p -m 755 PEAR-PHPUnit-Channel-1.0
       + cd PEAR-PHPUnit-Channel-1.0
       + exit 0        
       Executing(%build): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.857
       + cd /kolab/RPM/TMP
       + cd PEAR-PHPUnit-Channel-1.0
       + exit 0
       Executing(%install): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.857
       + cd /kolab/RPM/TMP
       + cd PEAR-PHPUnit-Channel-1.0
       + rm -rf /kolab/RPM/TMP/PEAR-PHPUnit-Channel-1.0-root
       + mkdir -p /kolab/RPM/TMP/PEAR-PHPUnit-Channel-1.0-root/kolab/var/pear
       + /kolab/lib/openpkg/shtool install -m 644 /kolab/RPM/SRC/PEAR-PHPUnit-Channel/pear.phpunit.de.xml /kolab/RPM/TMP/PEAR-PHPUnit-Channel-1.0-root/kolab/var/pear/pear.phpunit.de.xml
       + /kolab/lib/openpkg/rpmtool files -v -ofiles -r/kolab/RPM/TMP/PEAR-PHPUnit-Channel-1.0-root '%defattr(-,kolab,kolab)' /kolab '%not %dir {/kolab,/kolab/*,/kolab/etc/rc.d,/kolab/man/*}'
       rpmtool:files: pass 1 (preparation and syntactical expansions)
       rpmtool:files: pass 2 (filesystem-based expansions)
       rpmtool:files: pass 3 (duplication removal and cleanup)
       + exit 0
       Processing files: PEAR-PHPUnit-Channel-1.0-20090119
       Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
       Requires: php php::with_pear = yes
       Wrote: /kolab/RPM/PKG/PEAR-PHPUnit-Channel-1.0-20090119.sparc64-solaris10-kolab.rpm
       Executing(%clean): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.17696
       + cd /kolab/RPM/TMP
       + cd PEAR-PHPUnit-Channel-1.0
       + rm -rf /kolab/RPM/TMP/PEAR-PHPUnit-Channel-1.0-root
       + exit 0
       
       -------------------- /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/PEAR-PHPUnit-Channel/PEAR-PHPUnit-Channel.spec --------------------
       # /kolab/bin/openpkg rpm -Uvh /kolab/RPM/PKG/PEAR-PHPUnit-Channel-1.0-20090119.sparc64-solaris10-kolab.rpm
       
       Preparing...                ########################################### [100%]
          1:PEAR-PHPUnit-Channel   ########################################### [100%]
       Adding Channel "pear.phpunit.de" succeeded
       Update of Channel "pear.phpunit.de" succeeded
       

Bevor wir nun die Kompilation/Installation abermals starte logge kurz aus auf der Shell und wieder ein da wir immer noch durch "opa /kolab" die Ummgebungs Variablen von "OpenPKG" resp. Kolab2 geladen haben. Nachdem aus- sowie einloggen starten wir die Kompilation/Installation:

       # nohup sh -x install-kolab.sh 2>&1 | tee kolab-install.log &

Nun sollte die Kompilation/Installation durchlaufen. Um nachträglich zu kontrollieren ob wirklich alle Packages korrekt Kompiliert/Installiert wurden kann die Kompilation/Installation nochmals gestartet werden. Da alle Packages Kompiliert/Installiert wurden werden diese aufgelistet:

       # nohup sh -x install-kolab.sh 2>&1 | tee kolab-install.log &
       
       -------------------- output install-kolab.sh --------------------
       
       ........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       
       :::: /tmp/install-kolab....201/openpkg-20071227-20071227_kolab2.src.rpm ::::
       :::: /tmp/install-kolab....201/openpkg-20071227-20071227_kolab2.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/make-3.81-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/make-3.81-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/binutils-2.18-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/binutils-2.18-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/gcc-4.2.2-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/gcc-4.2.2-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-5.10.0-20080103.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-5.10.0-20080103.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/openpkg-tools-1.4.6-20071231.src.rpm ::::
       :::: /tmp/install-kolab....201/openpkg-tools-1.4.6-20071231.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/openssl-0.9.8l-20091224.src.rpm ::::
       :::: /tmp/install-kolab....201/openssl-0.9.8l-20091224.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/db-4.5.20.2-20070628_kolab1.src.rpm ::::
       :::: /tmp/install-kolab....201/db-4.5.20.2-20070628_kolab1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/fsl-1.7.0-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/fsl-1.7.0-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/readline-5.2.12-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/readline-5.2.12-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/openldap-2.3.43-20081212.src.rpm ::::
       :::: /tmp/install-kolab....201/openldap-2.3.43-20081212.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/procmail-3.22-20090727.src.rpm ::::
       :::: /tmp/install-kolab....201/procmail-3.22-20090727.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/ncurses-5.6.20080112-20080113.src.rpm ::::
       :::: /tmp/install-kolab....201/ncurses-5.6.20080112-20080113.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/texinfo-4.11-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/texinfo-4.11-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/pcre-7.5-20080110.src.rpm ::::
       :::: /tmp/install-kolab....201/pcre-7.5-20080110.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/grep-2.5.3-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/grep-2.5.3-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/m4-1.4.9-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/m4-1.4.9-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/bison-2.3-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/bison-2.3-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/groff-1.19.2-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/groff-1.19.2-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/sasl-2.1.22-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/sasl-2.1.22-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-openpkg-5.10.0-20080109.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-openpkg-5.10.0-20080109.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-module-5.10.0-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-module-5.10.0-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-util-5.10.0-20080116.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-util-5.10.0-20080116.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-stats-5.10.0-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-stats-5.10.0-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-ds-5.10.0-20080104.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-ds-5.10.0-20080104.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-time-5.10.0-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-time-5.10.0-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/postfix-2.4.6-20080101_kolab.src.rpm ::::
       :::: /tmp/install-kolab....201/postfix-2.4.6-20080101_kolab.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/mm-1.4.2-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/mm-1.4.2-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/gawk-3.1.6-20080101.src.rpm ::::        
       :::: /tmp/install-kolab....201/gawk-3.1.6-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/sqlite-3.6.4-20081212.src.rpm ::::
       :::: /tmp/install-kolab....201/sqlite-3.6.4-20081212.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/mhash-0.9.9-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/mhash-0.9.9-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/libiconv-1.12-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/libiconv-1.12-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/imap-2006k-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/imap-2006k-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/autoconf-2.61-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/autoconf-2.61-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/automake-1.10-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/automake-1.10-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/gettext-0.17-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/gettext-0.17-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/zlib-1.2.3-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/zlib-1.2.3-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/libxml-2.6.31-20080111.src.rpm ::::
       :::: /tmp/install-kolab....201/libxml-2.6.31-20080111.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/flex-2.5.34-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/flex-2.5.34-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/libmcrypt-2.5.8-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/libmcrypt-2.5.8-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/sed-4.1.5-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/sed-4.1.5-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/expat-2.0.1-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/expat-2.0.1-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/apr-1.2.12-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/apr-1.2.12-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/apache-2.2.14-20091004.src.rpm ::::
       :::: /tmp/install-kolab....201/apache-2.2.14-20091004.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/png-1.2.24-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/png-1.2.24-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/libxslt-1.1.22-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/libxslt-1.1.22-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/freetype-2.3.5-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/freetype-2.3.5-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/jpeg-6b-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/jpeg-6b-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/gd-2.0.35-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/gd-2.0.35-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/apache-php-5.2.8-20081209_kolab2.src.rpm ::::
       :::: /tmp/install-kolab....201/apache-php-5.2.8-20081209_kolab2.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/config-20060923-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/config-20060923-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/imapd-2.3.13-20081020_kolab4.src.rpm ::::
       :::: /tmp/install-kolab....201/imapd-2.3.13-20081020_kolab4.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/php-5.2.8-20081209_kolab2.src.rpm ::::
       :::: /tmp/install-kolab....201/php-5.2.8-20081209_kolab2.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-term-5.10.0-20080116.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-term-5.10.0-20080116.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-sys-5.10.0-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-sys-5.10.0-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/diffutils-2.8.7-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/diffutils-2.8.7-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/bzip2-1.0.5-20080318.src.rpm ::::
       :::: /tmp/install-kolab....201/bzip2-1.0.5-20080318.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/gzip-1.3.12-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/gzip-1.3.12-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-mail-5.10.0-20080117.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-mail-5.10.0-20080117.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-ssl-5.10.0-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-ssl-5.10.0-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-conv-5.10.0-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-conv-5.10.0-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-crypto-5.10.0-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-crypto-5.10.0-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-locale-5.10.0-20080112.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-locale-5.10.0-20080112.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-text-5.10.0-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-text-5.10.0-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/lzo-2.02-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/lzo-2.02-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-comp-5.10.0-20080110.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-comp-5.10.0-20080110.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-parse-5.10.0-20080117.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-parse-5.10.0-20080117.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-xml-5.10.0-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-xml-5.10.0-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-net-5.10.0-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-net-5.10.0-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-www-5.10.0-20080103.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-www-5.10.0-20080103.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-ldap-5.10.0-20081028_kolab1.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-ldap-5.10.0-20081028_kolab1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-db-5.10.0-20080118.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-db-5.10.0-20080118.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-kolab-2.2.3-20091217.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-kolab-2.2.3-20091217.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/curl-7.17.1-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/curl-7.17.1-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/bc-1.06-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/bc-1.06-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/pkgconfig-0.23-20080117.src.rpm ::::
       :::: /tmp/install-kolab....201/pkgconfig-0.23-20080117.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/gmp-4.2.2-20080101_kolab.src.rpm ::::
       :::: /tmp/install-kolab....201/gmp-4.2.2-20080101_kolab.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/clamav-0.95.3-20091030.src.rpm ::::
       :::: /tmp/install-kolab....201/clamav-0.95.3-20091030.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-Horde-Channel-1.0-20090119.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-Horde-Channel-1.0-20090119.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Util-0.1.0-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Util-0.1.0-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_iCalendar-0.1.0-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_iCalendar-0.1.0-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_History-0.0.2-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_History-0.0.2-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-Mail_mimeDecode-1.5.0-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-Mail_mimeDecode-1.5.0-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_MIME-0.0.2-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_MIME-0.0.2-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Cache-0.0.2-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Cache-0.0.2-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-PHPUnit-Channel-1.0-20090119.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-PHPUnit-Channel-1.0-20090119.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PHPUnit-3.3.3-1.src.rpm ::::
       :::: /tmp/install-kolab....201/PHPUnit-3.3.3-1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_DOM-0.1.0-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_DOM-0.1.0-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Browser-0.0.2-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Browser-0.0.2-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_NLS-0.0.2-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_NLS-0.0.2-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Kolab_Format-1.0.0-20090402.src.rpm ::::
       :::: /tmp/install-kolab....201/Kolab_Format-1.0.0-20090402.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_CLI-0.0.2-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_CLI-0.0.2-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-Log-1.11.2-1.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-Log-1.11.2-1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Framework-0.0.2-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Framework-0.0.2-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Serialize-0.0.2-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Serialize-0.0.2-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_DataTree-0.0.3-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_DataTree-0.0.3-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Cipher-0.0.2-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Cipher-0.0.2-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Secret-0.0.2-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Secret-0.0.2-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Auth-0.1.1-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Auth-0.1.1-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Group-0.1.0-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Group-0.1.0-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_LDAP-0.0.2-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_LDAP-0.0.2-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-Net_Socket-1.0.9-1.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-Net_Socket-1.0.9-1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-Auth_SASL-1.0.2-1.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-Auth_SASL-1.0.2-1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-Net_LDAP2-2.0.0RC5-1.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-Net_LDAP2-2.0.0RC5-1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Kolab_Server-0.4.0-20091013.src.rpm ::::
       :::: /tmp/install-kolab....201/Kolab_Server-0.4.0-20091013.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Perms-0.1.0-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Perms-0.1.0-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_SessionObjects-0.0.2-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_SessionObjects-0.0.2-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Kolab_Storage-0.4.0-20090224.src.rpm ::::
       :::: /tmp/install-kolab....201/Kolab_Storage-0.4.0-20090224.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-Date-1.4.7-1.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-Date-1.4.7-1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Date-0.1.0-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Date-0.1.0-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Kolab_FreeBusy-0.1.2-20090406.src.rpm ::::
       :::: /tmp/install-kolab....201/Kolab_FreeBusy-0.1.2-20090406.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/file-4.23-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/file-4.23-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/perl-dns-5.10.0-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/perl-dns-5.10.0-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/spamassassin-3.2.4-20080107.src.rpm ::::
       :::: /tmp/install-kolab....201/spamassassin-3.2.4-20080107.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/amavisd-2.5.3-20080101.src.rpm ::::
       :::: /tmp/install-kolab....201/amavisd-2.5.3-20080101.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Notification-0.0.2-20090223.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Notification-0.0.2-20090223.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Prefs-0.0.3-20090223.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Prefs-0.0.3-20090223.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Horde_Argv-0.1.0-20081209.src.rpm ::::
       :::: /tmp/install-kolab....201/Horde_Argv-0.1.0-20081209.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-Mail-1.1.14-1.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-Mail-1.1.14-1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-Net_LMTP-1.0.1-1.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-Net_LMTP-1.0.1-1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-Net_SMTP-1.3.1-1.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-Net_SMTP-1.3.1-1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-Net_URL-1.0.15-1.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-Net_URL-1.0.15-1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/PEAR-HTTP_Request-1.4.3-1.src.rpm ::::
       :::: /tmp/install-kolab....201/PEAR-HTTP_Request-1.4.3-1.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/Kolab_Filter-0.1.4-20091203.src.rpm ::::
       :::: /tmp/install-kolab....201/Kolab_Filter-0.1.4-20091203.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/kolabd-2.2.3-20091217.src.rpm ::::
       :::: /tmp/install-kolab....201/kolabd-2.2.3-20091217.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/php-smarty-2.6.20-20081212.src.rpm ::::
       :::: /tmp/install-kolab....201/php-smarty-2.6.20-20081212.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/kolab-webadmin-2.2.3-20091217.src.rpm ::::
       :::: /tmp/install-kolab....201/kolab-webadmin-2.2.3-20091217.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/kolab-fbview-1.2.0-20081227.src.rpm ::::
       :::: /tmp/install-kolab....201/kolab-fbview-1.2.0-20081227.src.rpm = 0 ::::
       :::: /tmp/install-kolab....201/kolab-webclient-1.2.0-20091202.src.rpm ::::
       :::: /tmp/install-kolab....201/kolab-webclient-1.2.0-20091202.src.rpm = 0 ::::
       + exit 0 
       
       -------------------- output install-kolab.sh --------------------

Kompilieren V2.2.4

Als Letzters erstellen wir das noetige Installations Verzeichnis von Kolab2 sprich Kolab2 wird Standardsgemaess in /kolab installiert. Wir wollen jedoch kola2 in /opt/kolab installieren. Aus diesem Grund linken wir das Verzeichnis /kolab nach /opt/kolab:

       # mkdir /opt/kolab
       # ln -s /opt/kolab/ /kolab 

Nun fehlt nur noch "wget" um die Source runterzuladen. Da wir "wget" spaeter benutzen kompilieren wir "wget" kurz selber:

       http://wget.sunsite.dk/ oder ftp://ftp.gnu.org/pub/gnu/wget/
       # mkdir /root/wget
       # cp wget-1.10.1.tar.gz /root/wget
       # cd /root/wget
       # gzip -dc wget-1.10.1.tar.gz | tar xvf -
       # cd /root/wget/wget-1.10.1
       # ./configure \
       --prefix=/opt/wget-1.10.1 \
       --exec-prefix=/opt/wget-1.10.1
       
       # make
       # make install

Nun kann die Kompilation vorbereitet werden:

       # cd /kolabtmp
       
       # /opt/wget-1.10.1/bin/wget -r -l1 -nd --no-parent http://ftp.gwdg.de/pub/linux/kolab/server/release/kolab-server-2.2.4/sources/
       
       # chmod -R 777 /kolabtmp
       # cd /kolabtmp

Bei der Version 2.2.4 wurden wieder einige Verbesserungen und Aenderungen durchgeführt. Informationen betreffend diesen Aenderungen findet man im File:

       http://ftp.gwdg.de/pub/linux/kolab/server/release/kolab-server-2.2.4/sources/release-notes.txt

Nun könnte die Kompilation beginnen jedoch würde man die Kompilation starten käme es zu folgender Fehlermeldung:

       -------------------- output install-kolab.sh --------------------
       
       :::: /kolab/RPM/PKG/binutils-2.20-20091016.src.rpm ::::
       Installing /kolab/RPM/PKG/binutils-2.20-20091016.src.rpm
       Executing(%prep): env -i /kolab/lib/openpkg/bash --norc --noprofile  
       --posix -e /kolab/RPM/TMP/rpm-tmp.12299
       + cd /kolab/RPM/TMP
       + cd /kolab/RPM/TMP
       + rm -rf binutils-2.20
       + /kolab/lib/openpkg/bzip2 -dc /kolab/RPM/SRC/binutils/binutils-2.20.tar.bz2
       + /kolab/lib/openpkg/tar -xf -
       + STATUS=0
       + '[' 0 -ne 0 ']'
       + cd binutils-2.20
       + echo 'Patch #0 (binutils.patch):'
       Patch #0 (binutils.patch):
       ..................................................................
       ..................................................................
       ..................................................................
       ..................................................................
       ..................................................................
       ..................................................................
       ..................................................................
       checking build system type... sparc-sun-solaris2.10
       checking host system type... sparc-sun-solaris2.10
       checking for sparc-sun-solaris2.10-ranlib... ranlib
       checking for library containing strerror... none required
       checking how to run the C preprocessor... cc -E
       checking for grep that handles long lines and -e... configure: error:  
       no acceptable grep could be found in  
       /kolab/lib/openpkg/override:/kolab/bin:/kolab/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin:/kolab/lib/openpkg/fallback:/usr/xpg4/bin
       make[1]: *** [configure-intl] Error 1
       make: *** [all] Error 2
       error: Bad exit status from /kolab/RPM/TMP/rpm-tmp.29563 (%build)
       
       
       RPM build errors:
            Bad exit status from /kolab/RPM/TMP/rpm-tmp.29563 (%build)
       rc=1
       + echo /kolab/RPM/PKG now contains the installed packages.
       /kolab/RPM/PKG now contains the installed packages.
       + echo Previous contents were moved to /kolab/RPM/PKG....11180
       Previous contents were moved to /kolab/RPM/PKG....11180
       + exit 0
       
       -------------------- output install-kolab.sh --------------------

Diese Fehlermeldung stammt vom Package "binutils". Dieses überprüft während dem "/configure" Prozess ob alle Funktionen etc. vorhanden sind. In dieser Ueberprüfung wird das Solaris Binary "grep" überprüft ob es "long lines" unterstützt. Dies ist jedoch nicht der Fall und deshalb wird dieser Error ausgegeben. Diese "long lines" Unterstütztung ist/wäre mit "GNU grep" gegeben. Dieses wäre durch das zusätzliche Sunfreeware Package zwar installiert (SMCgrep ; /usr/local/bin/grep) jedoch ist /usr/local/bin nicht im Suchpfad des /confgigure Prozesses. Um dieses Problem zu lösen erstelle einen Link der das Solaris standard Binary dh. /usr/bin/grep auf das grep in /usr/local/bin verweist:

       # mv /usr/bin/grep /usr/bin/grep.orig
       # ln -s /usr/local/bin/grep /usr/bin/grep

Ueberprüfe ob der Link einwandfrei erstellt wurde:

       # ls -la /usr/bin/grep
       lrwxrwxrwx   1 root     root          19 Jul  3 12:51 /usr/bin/grep -> /usr/local/bin/grep
       
       NOTE Dieser Link sollte nach der erfolgreichen Kompilation entfernt und das orginal Binary 
            wiederhergestellt werden!

Nun kann die Kompilation nach den Vorbereitungen gestartet werden:

       # nohup sh -x install-kolab.sh 2>&1 | tee kolab-install.log &

NOTE
Wird der Befehl wie abgebildet abgesetzt wird ein Log File erstellt und es kann ohne Probleme ausgeloggt werden (nohup). Um das aktuelle Geschehen im Log nachzuverfolgen speziell wenn dazwischen ausgeloggt wird so benutze "tail" um das Log zu öffnen dh.

       # tail -f /kolabtmp/kolab-install-.log

NOTE
Während der Kompilation werden einige temporäre Files angelegt. Diese befinden sich im Verzeichnis "/tmp". Speziell auf das Verzeichnis "/tmp/install-kolab....[Random Number]" ist hinzuweisen dh. dieses Verzeichnis wird durch die Kompilation benutzt um die Source Packages etc. abzuarbeiten dh. wenn aus irgendeinem Grund die Kompilation unterbrochen wird muss im "install-kolab.sh" Script folgende Position manipuliert werden damit das bereits bestehende Verzeichnis für das Weiterfahren herangezogen wird. Wird dies nicht durchgeführt beginnt die gesammte Kompilation von Beginn an neu und es wird ein komplett neues Verzeichnis erstellt.

       # vi /kolabtmp/install-kolab.sh
       
       -------------------- /kolabtmp/install-kolab.sh --------------------
       
       #mktmpdir() {
       #  newtmp="${TMPDIR-/tmp}/install-kolab.$RANDOM.$RANDOM.$RANDOM.$$"
       #  (umask 022 && mkdir "$newtmp") || {
       #    echo "Could not create temporary directory! Exiting." 1>&2
       #    exit 1
       #  }
       #  echo "$newtmp"
       #}
       
       
       SRCDIR=`pwd`
       #WORKDIR=`mktmpdir`
       WORKDIR="/tmp/install-kolab....[Random Number]"
       echo "Changing to temporary working directory $WORKDIR ..."
       cd "$WORKDIR"
       populate_workdir
       
       -------------------- /kolabtmp/install-kolab.sh --------------------

Die Kompilation bricht ab da es ein Problem gibt betreffend dem Package PEAR-Horde-Channel:

       -------------------- output install-kolab.sh --------------------
       
       ........................................................................
       .........................................................................
       .........................................................................
       .........................................................................        
       .........................................................................
       .........................................................................        
       checking for sys/types.h... (cached) yes
       checking for inttypes.h... (cached) yes
       checking for stdint.h... (cached) yes
       checking for string.h... (cached) yes
       checking for stdlib.h... (cached) yes
       checking for strtoll... yes
       checking for atoll... yes
       checking for strftime... (cached) yes
       checking for QDBM support... no
       checking for GDBM support... no
       checking for NDBM support... no
       checking for db4 minor version and patch level... ok
       checking for Berkeley DB4 support... yes
       checking for Berkeley DB3 support... no
       checking for Berkeley DB2 support... no        
       ........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       find: cannot follow symbolic link /usr/lib/llib-lnvpair: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lmd5: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lnsl: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lcmd: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lpam: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lresolv: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lxnet: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-ldl: No such file or directory
       install: pear.horde.org.xml was not found anywhere!
       error: Bad exit status from /kolab/RPM/TMP/rpm-tmp.11491 (%install)
       
       RPM build errors:
           Bad exit status from /kolab/RPM/TMP/rpm-tmp.11491 (%install)
       + exit 1 
       
       -------------------- output install-kolab.sh --------------------

PEAR-Horde-Channel kann nicht installiert werden da /usr/bin/install andere Optionen benutzt wie unter Linux /usr/bin/install (limited on Solaris 10):

       https://www.intevation.de/roundup/kolab/issue3315
       

Manipuliere PEAR-Horde-Channel.spec folgendermassen:

       # vi /kolab/RPM/SRC/PEAR-Horde-Channel/PEAR-Horde-Channel.spec
       
       -------------------- /kolab/RPM/SRC/PEAR-Horde-Channel/PEAR-Horde-Channel.spec --------------------
       
       %install
       rm -rf $RPM_BUILD_ROOT
       mkdir -p $RPM_BUILD_ROOT%{pear_xmldir}
       #install -m 644 %{SOURCE0} $RPM_BUILD_ROOT%{pear_xmldir}
       /kolab/lib/openpkg/shtool install -m 644 %{SOURCE0} $RPM_BUILD_ROOT%{pear_xmldir}/pear.horde.org.xml
       %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
       
       -------------------- /kolab/RPM/SRC/PEAR-Horde-Channel/PEAR-Horde-Channel.spec --------------------
       # opa /kolab
       
       # /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/PEAR-Horde-Channel/PEAR-Horde-Channel.spec
       
       -------------------- /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/PEAR-Horde-Channel/PEAR-Horde-Channel.spec --------------------
       
       Executing(%prep): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.17850
       + cd /kolab/RPM/TMP
       + set +x
       +----------------------------------Warning------------------------------------+
       | This OpenPKG package is of class JUNK.                                      |
       | This means it is still in DEVELOPMENT state.                                |
       | Hence it is still NOT ready even for general evaluation.                    |
       | Do not use it at all, except in development environments!                   |
       | It is definitely unstable and incompletely packaged.                        |
       +-----------------------------------------------------------------------------+
       + cd /kolab/RPM/TMP
       + rm -rf PEAR-Horde-Channel-1.0
       + /kolab/lib/openpkg/shtool mkdir -f -p -m 755 PEAR-Horde-Channel-1.0
       + cd PEAR-Horde-Channel-1.0
       + exit 0
       Executing(%build): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.17850
       + cd /kolab/RPM/TMP
       + cd PEAR-Horde-Channel-1.0
       + exit 0
       Executing(%install): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.1920
       + cd /kolab/RPM/TMP
       + cd PEAR-Horde-Channel-1.0
       + rm -rf /kolab/RPM/TMP/PEAR-Horde-Channel-1.0-root
       + mkdir -p /kolab/RPM/TMP/PEAR-Horde-Channel-1.0-root/kolab/var/pear
       + /kolab/lib/openpkg/shtool install -m 644 /kolab/RPM/SRC/PEAR-Horde-Channel/pear.horde.org.xml /kolab/RPM/TMP/PEAR-Horde-Channel-1.0-root/kolab/var/pear/pear.horde.org.xml
       + /kolab/lib/openpkg/rpmtool files -v -ofiles -r/kolab/RPM/TMP/PEAR-Horde-Channel-1.0-root '%defattr(-,kolab,kolab)' /kolab '%not %dir {/kolab,/kolab/*,/kolab/etc/rc.d,/kolab/man/*}'
       rpmtool:files: pass 1 (preparation and syntactical expansions)
       rpmtool:files: pass 2 (filesystem-based expansions)
       rpmtool:files: pass 3 (duplication removal and cleanup)
       + exit 0
       Processing files: PEAR-Horde-Channel-1.0-20090119
       Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
       Requires: php php::with_pear = yes
       Obsoletes: php-channel-horde
       Wrote: /kolab/RPM/PKG/PEAR-Horde-Channel-1.0-20090119.sparc64-solaris10-kolab.rpm
       Executing(%clean): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.18758
       + cd /kolab/RPM/TMP
       + cd PEAR-Horde-Channel-1.0
       + rm -rf /kolab/RPM/TMP/PEAR-Horde-Channel-1.0-root
       + exit 0
       
       -------------------- /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/PEAR-Horde-Channel/PEAR-Horde-Channel.spec --------------------
       # /kolab/bin/openpkg rpm -Uvh /kolab/RPM/PKG/PEAR-Horde-Channel-1.0-20090119.sparc64-solaris10-kolab.rpm 
       
       Preparing...                ########################################### [100%]
          1:PEAR-Horde-Channel     ########################################### [100%]
       Adding Channel "pear.horde.org" succeeded
       Update of Channel "pear.horde.org" succeeded

Bevor wir nun die Kompilation/Installation abermals starte logge kurz aus auf der Shell und wieder ein da wir immer noch durch "opa /kolab" die Ummgebungs Variablen von "OpenPKG" resp. Kolab2 geladen haben. Nun kann die Kompiliaton/Installation erneut gestartet werden jedoch bricht diese abermals ab bei PEAR-PHPUnit-Channel:

       # nohup sh -x install-kolab.sh 2>&1 | tee kolab-install.log &
       -------------------- output install-kolab.sh --------------------
       ........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       find: cannot follow symbolic link /usr/lib/llib-lelf.ln: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lpam.ln: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lcurses.ln: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lnvpair: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lmd5: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lnsl: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lcmd: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lpam: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lresolv: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-lxnet: No such file or directory
       find: cannot follow symbolic link /usr/lib/llib-ldl: No such file or directory
       install: pear.phpunit.de.xml was not found anywhere!
       error: Bad exit status from /kolab/RPM/TMP/rpm-tmp.27072 (%install)
       
       
       RPM build errors:
           Bad exit status from /kolab/RPM/TMP/rpm-tmp.27072 (%install)
       + exit 1 
       
       -------------------- output install-kolab.sh --------------------

PEAR-PHPUnit-Channel kann nicht installiert werden da /usr/bin/install andere Optionen benutzt wie unter Linux /usr/bin/install (limited on Solaris 10):

       https://www.intevation.de/roundup/kolab/issue3315
       

Manipuliere PEAR-PHPUnit-Channel.spec folgendermassen:

       # vi /kolab/RPM/SRC/PEAR-PHPUnit-Channel/PEAR-PHPUnit-Channel.spec
       -------------------- /kolab/RPM/SRC/PEAR-PHPUnit-Channel/PEAR-PHPUnit-Channel.spec --------------------
       
       %install
       rm -rf $RPM_BUILD_ROOT
       mkdir -p $RPM_BUILD_ROOT%{pear_xmldir}
       /kolab/lib/openpkg/shtool install -m 644 %{SOURCE0} $RPM_BUILD_ROOT%{pear_xmldir}/pear.phpunit.de.xml
       %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
       
       -------------------- /kolab/RPM/SRC/PEAR-PHPUnit-Channel/PEAR-PHPUnit-Channel.spec --------------------
       # opa /kolab
       
       # /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/PEAR-PHPUnit-Channel/PEAR-PHPUnit-Channel.spec 
       
       -------------------- /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/PEAR-PHPUnit-Channel/PEAR-PHPUnit-Channel.spec --------------------
       
       Executing(%prep): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.857
       + cd /kolab/RPM/TMP
       + set +x
       +----------------------------------Warning------------------------------------+
       | This OpenPKG package is of class JUNK.                                      |
       | This means it is still in DEVELOPMENT state.                                |
       | Hence it is still NOT ready even for general evaluation.                    |
       | Do not use it at all, except in development environments!                   |
       | It is definitely unstable and incompletely packaged.                        |
       +-----------------------------------------------------------------------------+
       + cd /kolab/RPM/TMP
       + rm -rf PEAR-PHPUnit-Channel-1.0
       + /kolab/lib/openpkg/shtool mkdir -f -p -m 755 PEAR-PHPUnit-Channel-1.0
       + cd PEAR-PHPUnit-Channel-1.0
       + exit 0        
       Executing(%build): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.857
       + cd /kolab/RPM/TMP
       + cd PEAR-PHPUnit-Channel-1.0
       + exit 0
       Executing(%install): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.857
       + cd /kolab/RPM/TMP
       + cd PEAR-PHPUnit-Channel-1.0
       + rm -rf /kolab/RPM/TMP/PEAR-PHPUnit-Channel-1.0-root
       + mkdir -p /kolab/RPM/TMP/PEAR-PHPUnit-Channel-1.0-root/kolab/var/pear
       + /kolab/lib/openpkg/shtool install -m 644 /kolab/RPM/SRC/PEAR-PHPUnit-Channel/pear.phpunit.de.xml /kolab/RPM/TMP/PEAR-PHPUnit-Channel-1.0-root/kolab/var/pear/pear.phpunit.de.xml
       + /kolab/lib/openpkg/rpmtool files -v -ofiles -r/kolab/RPM/TMP/PEAR-PHPUnit-Channel-1.0-root '%defattr(-,kolab,kolab)' /kolab '%not %dir {/kolab,/kolab/*,/kolab/etc/rc.d,/kolab/man/*}'
       rpmtool:files: pass 1 (preparation and syntactical expansions)
       rpmtool:files: pass 2 (filesystem-based expansions)
       rpmtool:files: pass 3 (duplication removal and cleanup)
       + exit 0
       Processing files: PEAR-PHPUnit-Channel-1.0-20090119
       Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
       Requires: php php::with_pear = yes
       Wrote: /kolab/RPM/PKG/PEAR-PHPUnit-Channel-1.0-20090119.sparc64-solaris10-kolab.rpm
       Executing(%clean): env -i /kolab/lib/openpkg/bash --norc --noprofile --posix -e /kolab/RPM/TMP/rpm-tmp.17696
       + cd /kolab/RPM/TMP
       + cd PEAR-PHPUnit-Channel-1.0
       + rm -rf /kolab/RPM/TMP/PEAR-PHPUnit-Channel-1.0-root
       + exit 0
       
       -------------------- /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/PEAR-PHPUnit-Channel/PEAR-PHPUnit-Channel.spec --------------------
       # /kolab/bin/openpkg rpm -Uvh /kolab/RPM/PKG/PEAR-PHPUnit-Channel-1.0-20090119.sparc64-solaris10-kolab.rpm
       
       Preparing...                ########################################### [100%]
          1:PEAR-PHPUnit-Channel   ########################################### [100%]
       Adding Channel "pear.phpunit.de" succeeded
       Update of Channel "pear.phpunit.de" succeeded
       

Bevor wir nun die Kompilation/Installation abermals starte logge kurz aus auf der Shell und wieder ein da wir immer noch durch "opa /kolab" die Ummgebungs Variablen von "OpenPKG" resp. Kolab2 geladen haben. Nachdem aus- sowie einloggen starten wir die Kompilation/Installation:

       # nohup sh -x install-kolab.sh 2>&1 | tee kolab-install.log &

Nun sollte die Kompilation/Installation durchlaufen. Um nachträglich zu kontrollieren ob wirklich alle Packages korrekt Kompiliert/Installiert wurden kann die Kompilation/Installation nochmals gestartet werden. Da alle Packages Kompiliert/Installiert wurden werden diese aufgelistet:

       # nohup sh -x install-kolab.sh 2>&1 | tee kolab-install.log &
       
       -------------------- output install-kolab.sh --------------------
       
       ........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       .........................................................................
       
       :::: /kolab/RPM/PKG/openpkg-20071227-20071227_kolab2.src.rpm ::::
       :::: /kolab/RPM/PKG/openpkg-20071227-20071227_kolab2.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/make-3.81-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/make-3.81-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/binutils-2.20-20091016.src.rpm ::::
       :::: /kolab/RPM/PKG/binutils-2.20-20091016.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/gcc-4.2.2-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/gcc-4.2.2-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-5.10.0-20080103.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-5.10.0-20080103.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/openpkg-tools-1.4.6-20071231.src.rpm ::::
       :::: /kolab/RPM/PKG/openpkg-tools-1.4.6-20071231.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/openssl-1.0.0a-20100624.src.rpm ::::
       :::: /kolab/RPM/PKG/openssl-1.0.0a-20100624.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/db-4.5.20.2-20070628_kolab1.src.rpm ::::
       :::: /kolab/RPM/PKG/db-4.5.20.2-20070628_kolab1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/fsl-1.7.0-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/fsl-1.7.0-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/readline-5.2.12-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/readline-5.2.12-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/openldap-2.3.43-20081212.src.rpm ::::
       :::: /kolab/RPM/PKG/openldap-2.3.43-20081212.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/procmail-3.22-20090727.src.rpm ::::
       :::: /kolab/RPM/PKG/procmail-3.22-20090727.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/ncurses-5.6.20080112-20080113.src.rpm ::::
       :::: /kolab/RPM/PKG/ncurses-5.6.20080112-20080113.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/texinfo-4.11-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/texinfo-4.11-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/pcre-7.5-20080110.src.rpm ::::
       :::: /kolab/RPM/PKG/pcre-7.5-20080110.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/grep-2.5.3-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/grep-2.5.3-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/m4-1.4.9-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/m4-1.4.9-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/bison-2.3-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/bison-2.3-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/groff-1.19.2-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/groff-1.19.2-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/sasl-2.1.22-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/sasl-2.1.22-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-openpkg-5.10.0-20080109.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-openpkg-5.10.0-20080109.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-module-5.10.0-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-module-5.10.0-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-util-5.10.0-20080116.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-util-5.10.0-20080116.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-stats-5.10.0-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-stats-5.10.0-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-ds-5.10.0-20080104.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-ds-5.10.0-20080104.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-time-5.10.0-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-time-5.10.0-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/postfix-2.4.6-20080101_kolab.src.rpm ::::
       :::: /kolab/RPM/PKG/postfix-2.4.6-20080101_kolab.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/mm-1.4.2-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/mm-1.4.2-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/gawk-3.1.6-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/gawk-3.1.6-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/sqlite-3.6.4-20081212.src.rpm ::::
       :::: /kolab/RPM/PKG/sqlite-3.6.4-20081212.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/mhash-0.9.9-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/mhash-0.9.9-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/libiconv-1.12-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/libiconv-1.12-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/imap-2006k-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/imap-2006k-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/autoconf-2.61-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/autoconf-2.61-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/automake-1.10-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/automake-1.10-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/gettext-0.17-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/gettext-0.17-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/zlib-1.2.3-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/zlib-1.2.3-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/libxml-2.6.31-20080111.src.rpm ::::
       :::: /kolab/RPM/PKG/libxml-2.6.31-20080111.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/flex-2.5.34-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/flex-2.5.34-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/libmcrypt-2.5.8-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/libmcrypt-2.5.8-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/x509-0-20090125.src.rpm ::::
       :::: /kolab/RPM/PKG/x509-0-20090125.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/sed-4.1.5-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/sed-4.1.5-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/expat-2.0.1-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/expat-2.0.1-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/apr-1.2.12-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/apr-1.2.12-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/apache-2.2.15-20100406.src.rpm ::::
       :::: /kolab/RPM/PKG/apache-2.2.15-20100406.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/png-1.2.24-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/png-1.2.24-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/libxslt-1.1.22-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/libxslt-1.1.22-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/freetype-2.3.5-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/freetype-2.3.5-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/jpeg-6b-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/jpeg-6b-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/gd-2.0.35-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/gd-2.0.35-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/apache-php-5.2.13-20100624_kolab1.src.rpm ::::
       :::: /kolab/RPM/PKG/apache-php-5.2.13-20100624_kolab1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/config-20060923-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/config-20060923-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/imapd-2.3.13-20081020_kolab5.src.rpm ::::
       :::: /kolab/RPM/PKG/imapd-2.3.13-20081020_kolab5.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/php-5.2.13-20100624_kolab1.src.rpm ::::
       :::: /kolab/RPM/PKG/php-5.2.13-20100624_kolab1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-term-5.10.0-20080116.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-term-5.10.0-20080116.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-sys-5.10.0-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-sys-5.10.0-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/diffutils-2.8.7-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/diffutils-2.8.7-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/bzip2-1.0.5-20080318.src.rpm ::::
       :::: /kolab/RPM/PKG/bzip2-1.0.5-20080318.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/gzip-1.3.12-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/gzip-1.3.12-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-mail-5.10.0-20080117.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-mail-5.10.0-20080117.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-ssl-5.10.0-20080101_kolab1.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-ssl-5.10.0-20080101_kolab1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-conv-5.10.0-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-conv-5.10.0-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-crypto-5.10.0-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-crypto-5.10.0-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-locale-5.10.0-20080112.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-locale-5.10.0-20080112.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-text-5.10.0-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-text-5.10.0-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/lzo-2.02-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/lzo-2.02-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-comp-5.10.0-20080110.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-comp-5.10.0-20080110.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-parse-5.10.0-20080117.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-parse-5.10.0-20080117.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-xml-5.10.0-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-xml-5.10.0-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-net-5.10.0-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-net-5.10.0-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-www-5.10.0-20080103.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-www-5.10.0-20080103.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-ldap-5.10.0-20081028_kolab1.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-ldap-5.10.0-20081028_kolab1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-db-5.10.0-20080118.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-db-5.10.0-20080118.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-kolab-2.2.4-20100624.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-kolab-2.2.4-20100624.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/curl-7.17.1-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/curl-7.17.1-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/bc-1.06-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/bc-1.06-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/pkgconfig-0.23-20080117.src.rpm ::::
       :::: /kolab/RPM/PKG/pkgconfig-0.23-20080117.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/gmp-4.2.2-20080101_kolab.src.rpm ::::
       :::: /kolab/RPM/PKG/gmp-4.2.2-20080101_kolab.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/clamav-0.96.1-20100607.src.rpm ::::
       :::: /kolab/RPM/PKG/clamav-0.96.1-20100607.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-Horde-Channel-1.0-20090119.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-Horde-Channel-1.0-20090119.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Util-0.1.0-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Util-0.1.0-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_iCalendar-0.1.0-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_iCalendar-0.1.0-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_History-0.0.2-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_History-0.0.2-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-Mail_mimeDecode-1.5.0-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-Mail_mimeDecode-1.5.0-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_MIME-0.0.2-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_MIME-0.0.2-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Cache-0.0.2-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Cache-0.0.2-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-PHPUnit-Channel-1.0-20090119.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-PHPUnit-Channel-1.0-20090119.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PHPUnit-3.3.3-1.src.rpm ::::
       :::: /kolab/RPM/PKG/PHPUnit-3.3.3-1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_DOM-0.1.0-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_DOM-0.1.0-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Browser-0.0.2-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Browser-0.0.2-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_NLS-0.0.2-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_NLS-0.0.2-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Kolab_Format-1.0.0-20100623.src.rpm ::::
       :::: /kolab/RPM/PKG/Kolab_Format-1.0.0-20100623.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_CLI-0.0.2-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_CLI-0.0.2-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-Log-1.11.2-1.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-Log-1.11.2-1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Framework-0.0.2-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Framework-0.0.2-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Serialize-0.0.2-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Serialize-0.0.2-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_DataTree-0.0.3-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_DataTree-0.0.3-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Cipher-0.0.2-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Cipher-0.0.2-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Secret-0.0.2-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Secret-0.0.2-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Auth-0.1.1-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Auth-0.1.1-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Group-0.1.0-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Group-0.1.0-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_LDAP-0.0.2-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_LDAP-0.0.2-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-Net_Socket-1.0.9-1.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-Net_Socket-1.0.9-1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-Auth_SASL-1.0.2-1.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-Auth_SASL-1.0.2-1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-Net_LDAP2-2.0.0RC5-1.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-Net_LDAP2-2.0.0RC5-1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Kolab_Server-0.4.0-20091013.src.rpm ::::
       :::: /kolab/RPM/PKG/Kolab_Server-0.4.0-20091013.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Perms-0.1.0-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Perms-0.1.0-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_SessionObjects-0.0.2-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_SessionObjects-0.0.2-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Kolab_Storage-0.4.0-20090224.src.rpm ::::
       :::: /kolab/RPM/PKG/Kolab_Storage-0.4.0-20090224.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-Date-1.4.7-1.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-Date-1.4.7-1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Date-0.1.0-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Date-0.1.0-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Kolab_FreeBusy-0.1.2-20100624.src.rpm ::::
       :::: /kolab/RPM/PKG/Kolab_FreeBusy-0.1.2-20100624.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/file-4.23-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/file-4.23-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/perl-dns-5.10.0-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/perl-dns-5.10.0-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/spamassassin-3.2.4-20080107.src.rpm ::::
       :::: /kolab/RPM/PKG/spamassassin-3.2.4-20080107.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/amavisd-2.5.3-20080101.src.rpm ::::
       :::: /kolab/RPM/PKG/amavisd-2.5.3-20080101.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Notification-0.0.2-20090223.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Notification-0.0.2-20090223.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Prefs-0.0.3-20090223.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Prefs-0.0.3-20090223.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Horde_Argv-0.1.0-20081209.src.rpm ::::
       :::: /kolab/RPM/PKG/Horde_Argv-0.1.0-20081209.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-Mail-1.1.14-1.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-Mail-1.1.14-1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-Net_LMTP-1.0.1-1.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-Net_LMTP-1.0.1-1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-Net_SMTP-1.3.1-1.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-Net_SMTP-1.3.1-1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-Net_URL-1.0.15-1.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-Net_URL-1.0.15-1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/PEAR-HTTP_Request-1.4.3-1.src.rpm ::::
       :::: /kolab/RPM/PKG/PEAR-HTTP_Request-1.4.3-1.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/Kolab_Filter-0.1.4-20100624.src.rpm ::::
       :::: /kolab/RPM/PKG/Kolab_Filter-0.1.4-20100624.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/kolabd-2.2.4-20100624.src.rpm ::::
       :::: /kolab/RPM/PKG/kolabd-2.2.4-20100624.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/php-smarty-2.6.20-20081212.src.rpm ::::
       :::: /kolab/RPM/PKG/php-smarty-2.6.20-20081212.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/kolab-webadmin-2.2.4-20100624.src.rpm ::::
       :::: /kolab/RPM/PKG/kolab-webadmin-2.2.4-20100624.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/kolab-fbview-1.2.0-20081227.src.rpm ::::
       :::: /kolab/RPM/PKG/kolab-fbview-1.2.0-20081227.src.rpm = 0 ::::
       :::: /kolab/RPM/PKG/kolab-webclient-1.2.0-20100625.src.rpm ::::
       :::: /kolab/RPM/PKG/kolab-webclient-1.2.0-20100625.src.rpm = 0 ::::
       + exit 0 
               
       -------------------- output install-kolab.sh --------------------

Konfiguration und Installation

Nun kann die Installation resp. Konfiguration beginnen. Wenn das Kolab2 Package auf einem anderen Server vorbereitet wurde sprich Kompiliert wurde muss auf dem neuen Server auf der die Installation/Konfiguration ausgefuehrt werden soll folgende Voraussetzungen bieten (Dies gilt auch wenn die Installation/Konfiguration auf dem gleichen Server ausgefuehrt wird):

       # env
       _=/usr/local/bin/env
       LANG=C
       HZ=
       PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/bin:/usr/ucb:/opt/sfw/bin:/usr/ccs/bin
       HISTFILE=/root/.sh_history
       LOGNAME=root
       MAIL=/var/mail/root
       PS1=[root@KOLAB $PWD]# 
       SHELL=/sbin/sh
       HISTSIZE=200
       HOME=/root
       TERM=vt100
       PWD=/root
       TZ=MET
       ENV=/root/.kshrc
       # cat /root/.profile
       
       --------------- /root/.profile --------------- 
       
       #       This is the default standard profile provided to a user.
       #       They are expected to edit it to meet their own needs.
       
       MAIL=/usr/mail/${LOGNAME:?}
       
       ENV=$HOME/.kshrc
       PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/bin:/usr/ucb:/opt/sfw/bin:/usr/ccs/bin
       
       TERM=vt100
       HISTFILE=/root/.sh_history
       HISTSIZE=200
       
       export ENV PATH TERM HISTFILE HISTSIZE
       
       --------------- /root/.profile --------------- 

NOTE
Achte auf den PATH. Dieser muss zu Beginn "/usr/local/sbin & /usr/local/bin" enthalten!

Der Library Path muss "/usr/local/lib" enthalten sprich; Um die momentane Konfiguration oder Pfad ausgeben benutze:

       # crle
       
       --------------- output of crle --------------- 
       
       Default configuration file (/var/ld/ld.config) not found
         Default Library Path (ELF):   /lib:/usr/lib  (system default)
         Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (system default)
       
       --------------- output of crle ---------------

Um "/usr/local/lib" aufzunehmen in den Pfad fuehre folgendes durch:

       # crle -l /lib:/usr/lib:/usr/local/lib

Um zu kontrollieren ob die Modifikation erfolgreich war fuehre wiederum "crle" aus:

       # crle
       
       --------------- output of crle --------------- 
       
       Default configuration file (/var/ld/ld.config) not found
         Default Library Path (ELF):   /lib:/usr/lib:/usr/local/lib  (system default)
         Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (system default)
       
       --------------- output of crle ---------------

NOTE
Fehlmanipulationen innerhalb der Ausfuehrung des "crle" Kommandos koennen das System unbrauchbar machen! Nicht vergessen bei Aenderungen im ".profile" kurz auszuloggen und wieder einzuloggen!

Damit die Installation/Konfiguration erfolgreich ausgefuehrt werden kann muessen auf dem Server folgende "sunfreeware" Package installiert sein:

       http://mirror.switch.ch/mirror/solaris-freeware/indexsparc10.html

ACHTUNG
Egal ob das Package von Kolab2 auf dem Server Installiert/Konfiguriert wird auf dem die Kompilation stattgefunden hat oder auf einem neuen Server ausgefuehrt wird, die folgenden Packages duerfen "NICHT" installiert sein bei der Kompilation ansonsten schlaegt diese Fehl. Sprich diese Package duerfen erst nachtraeglich installiert werden und muessen immer entfernt werden sobald eine neue Grund Kompilation ausgefuehrt wird.

       Package die nicht bei einer Kompilation installiert sein duerfen:
       
       coreutils-6.4-sol10-sparc-local.gz
       diffutils-2.8.1-sol10-sparc-local.gz
       Package die installiert sein muessen bei einer Installation/Konfiguration:
       
       coreutils-6.4-sol10-sparc-local.gz
       diffutils-2.8.1-sol10-sparc-local.gz
       libgcc-3.4.6-sol10-sparc-local.gz
       libiconv-1.9.2-sol10-sparc-local.gz
       libtool-1.5-sol10-sparc-local.gz
       
       NOTE "libgcc" wird nur dann installiert wenn die Installation/Konfiguration 
       auf einem anderen Server stattfindet als die Kompilation durchgefuehrt wurde!
       # mkdir /root/packages
       # mv coreutils-6.4-sol10-sparc-local.gz /root/packages/
       # mv diffutils-2.8.1-sol10-sparc-local.gz /root/packages/
       # mv libgcc-3.4.6-sol10-sparc-local.gz /root/packages/
       # mv libiconv-1.9.2-sol10-sparc-local.gz /root/packages/
       # mv libtool-1.5-sol10-sparc-local.gz /root/packages/
       
       # cd /root/packages/
       # gzip -d coreutils-6.4-sol10-sparc-local.gz diffutils-2.8.1-sol10-sparc-local.gz libgcc-3.4.6-sol10-sparc-local.gz libiconv-1.9.2-sol10-sparc-local.gz libtool-1.5-sol10-sparc-local.gz
       
       # pkgadd -d coreutils-6.4-sol10-sparc-local
       # pkgadd -d diffutils-2.8.1-sol10-sparc-local
       # pkgadd -d libgcc-3.4.6-sol10-sparc-local
       # pkgadd -d libiconv-1.9.2-sol10-sparc-local
       # pkgadd -d libtool-1.5-sol10-sparc-local
       
       # pkginfo | grep SMC
       application SMCcoreu                     coreutils
       application SMCdiffu                     diffutils
       application SMClgcc346                   libgcc
       application SMClibtool                   libtool
       application SMCliconv                    libiconv

Nun logge aus und wieder ein um alles zu aktivieren. Folgende Ports duerfen auf dem Server nicht aktiv sein resp. "in use" sein:

       Ports 21,25,80,143,389,443,465,636,993,995,2000 :

Um dies zu ueberpruefen fuehre folgendes aus:

       # netstat -an | grep LISTEN
             *.111                *.*                0      0 49152      0 LISTEN
       10.10.10.18.22         *.*                0      0 49152      0 LISTEN

Sofern die Installation/Konfiguration auf einem anderen Server stattfindet als die Kompiliaton durchgefuehrt wurde muessen die Kolab2 User/Gruppe erfasst werden:

       # cat /etc/passwd | grep kolab
       
       kolab:x:19414:19414:/kolab OpenPKG (management):/kolab:/kolab/lib/openpkg/bash
       kolab-r:x:19415:19415:/kolab OpenPKG (restricted):/kolab:/kolab/lib/openpkg/bash
       kolab-n:x:19416:19416:/kolab OpenPKG (non-privileged):/kolab:/kolab/lib/openpkg/bash
       # cat /etc/group | grep kolab 
       
       kolab:*:19414:kolab
       kolab-r:*:19415:kolab-r
       kolab-n:*:19416:kolab-n
       # cat /etc/shadow | grep kolab
       
       kolab:*LK**:13571::::::
       kolab-r:*LK**:13571::::::
       kolab-n:*LK**:13571::::::

Ebenfalls muss das Homeverzeichnis angelegt werden sofern die Installation/Konfiguration auf einer anderen Maschine ausgefuehrt wird:

       # mkdir /opt/kolab
       # ln -s /opt/kolab/ /kolab
       # chown kolab:kolab /opt/kolab
       # chmod 755 /opt/kolab

Nun kann die vorbereitete und Kompilierte Source ins Verzeichnis "/opt/kolab oder /kolab" kopiert werden. Gehen wir davon aus das wir auf einem neuen Server sind und die Kompilierte Source gepackt haben auf dem ausgangs Server:

       Packen der kompilierten Source auf dem Kompilierungs-Server:
       
       # tar cvf /opt/kolab.tar /opt/kolab/*
       # gzip /opt/kolab.tar
       Transferiere die kompilierte Source auf den Server und entpacke dieses:
       
       # mv kolab.tar.gz /opt/
       # cd /opt/
       # gzip -dc kolab.tar.gz | tar xvf -
       # rm /opt/kolab.tar.gz
       # chown kolab:kolab /opt/kolab
       # chmod 755 /opt/kolab

Das Gleiche gilt fuer Cron Jobs dh. sofern die Installation/Konfiguration auf einem anderen Server stattfindet als die Kompilation muessen folgende Eintraeg in den "cron" unter User "root" Eingetragen werden:

       # vi /var/spool/cron/crontabs/root
       
       --------------- /var/spool/cron/crontabs/root ---------------
       
       # <OpenPKG prefix=/kolab pkg=openpkg>
       # chronological tasks of /kolab OpenPKG hierarchy
       0          0  1  *  *  [ -f /kolab/etc/rc ] && /kolab/etc/rc all monthly
       0          0  *  *  0  [ -f /kolab/etc/rc ] && /kolab/etc/rc all weekly
       0          0  *  *  *  [ -f /kolab/etc/rc ] && /kolab/etc/rc all daily
       0          *  *  *  *  [ -f /kolab/etc/rc ] && /kolab/etc/rc all hourly
       0,15,30,45 *  *  *  *  [ -f /kolab/etc/rc ] && /kolab/etc/rc all quarterly
       # </OpenPKG>
       
       --------------- /var/spool/cron/crontabs/root ---------------

Bevor nun die Installation/Konfiguration ausgefuehrt werden kann bedarf es einiger Aenderungen im "Template" von "postfix".

     default_database_type
     Der Eintrag "default_database_type" weist die Kolab2 Konfiguration an als Datenbank per Standard
     "has" zu benutzen.
     debug_peer_list
     Der Eintrag "debug_peer_list" erstellen wir provilaktisch im Fall von Problemen dh. um den Debug
     Modus in Postfix fuer das Lokale Interface 127.0.0.0/8 auszufuehren.
     message_size_limit
     Den Abschnitt "message_size_limit" gibt an was die maximale Grösse eines EMails sein kann. Diese
     Grösse sollte auf die gleiche Grösse wie auf dem incoming Gateway konfiguriert werden (sofern ein
     seperater incoming Gateway vorhanden ist). 
     Kolab Policy Server
       # vi /kolab/etc/kolab/templates/main.cf.template
       
       --------------- /kolab/etc/kolab/templates/main.cf.template ---------------
       
       default_database_type = hash
       
       #debug_peer_list = 127.0.0.0/8
       
       
       ## Kolab Policy Server
       #smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,
       #        reject_unauth_destination, reject_unlisted_recipient,
       #        check_policy_service unix:private/kolabpolicy
       #smtpd_sender_restrictions = permit_mynetworks,
       #        check_policy_service unix:private/kolabpolicy
       #kolabpolicy_time_limit = 3600
       #kolabpolicy_max_idle = 20
       
       
       ## Kolab Policy Server
       smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,
               reject_unauth_destination, reject_unlisted_recipient,
               check_policy_service inet:127.0.0.1:10028
       smtpd_sender_restrictions = permit_mynetworks,
               check_policy_service inet:127.0.0.1:10028
       127.0.0.1:10028_time_limit = 3600
       127.0.0.1:10028_max_idle = 20
       
       # postfix default is 10 240 000 Byte = 10.24 Megabyte,
       # we use 20 Megabyte = 20*2^20 Byte as Kolab default
       @@@if postfix-message-size-limit@@@
       message_size_limit = @@@postfix-message-size-limit@@@
       @@@else@@@
       message_size_limit = 20971520
       @@@endif@@@
       
       --------------- /kolab/etc/kolab/templates/main.cf.template ---------------

Um die "kolabpolicy" Konfiguration zu gewaehrleisten muss das "master.cf.template" ebenfalls abgeandert werden betreffend folgender position:

       # vi /kolab/etc/kolab/templates/master.cf.template
       
       --------------- /kolab/etc/kolab/templates/master.cf.template ---------------
       
       #kolabpolicy    unix  -       n       n       -       -       spawn user=kolab-n argv=/kolab/bin/kolab_smtpdpolicy
       
       127.0.0.1:10028  inet    n       n       n       -       0       spawn user=kolab-n argv=/kolab/bin/kolab_smtpdpolicy
       
       --------------- /kolab/etc/kolab/templates/master.cf.template ---------------

NOTE
Die Problematik betreffend "Unix-Domain Socket" ist im Kolab2 issue "ssue1779" beschrieben und weitere Informationen findet man auf folgender Postfix Seite:

       http://www.postfix.org/SMTPD_POLICY_README.html

Bei Apache muss das Conf File manipuliert werden speziell wenn die Installation in einer Zone stattgefunden hat ansonsten steht spaeter das WebInterface nicht zur Verfuegung da die Interfac's innerhalb einer Zone anderst reagieren als unter normalen Umstaenden:

       # vi /kolab/etc/kolab/templates/httpd.conf.template
       
       --------------- /kolab/etc/kolab/templates/httpd.conf.template ---------------
       
       @@@if bind_any@@@
       Listen @@@fqdnhostname@@@:80
       Listen @@@fqdnhostname@@@:443
       @@@else@@@
       Listen @@@bind_addr@@@:80
       Listen @@@bind_addr@@@:443
       @@@endif@@@
       
       
       ### Section 2: 'Main' server configuration
       
       ServerAdmin root@localhost
       ServerName @@@fqdnhostname@@@:80
       UseCanonicalName Off
       DocumentRoot "/kolab/var/kolab/www"
       
       --------------- /kolab/etc/kolab/templates/httpd.conf.template ---------------

Es ist ratsam die Services in "/etc/services" zu kompletieren betreffend Kolab2 Services sofern die aufgeführten Ports nicht bereits vorhanden sind:

       # vi /etc/services
       
       --------------- /etc/services ---------------
       
       # Kolab2 specific services
       #
       smtps           465/tcp                         # SMTP over SSL (TLS)
       pop3s           995/tcp                         # POP3 over SSL (TLS)
       imaps           993/tcp                         # IMPA over SSL (TLS)
       sieve           2000/tcp                        # Cyrus Sieve
       

--------------- /etc/services ---------------

Für OpenLDAP muss das Conf File ebenfalls manipuliert werden speziell wenn die Installation in einer Zone stattfindet denn ansonsten kommt es später zu Problemen dh. wird die Modifikation nicht durchgeführt läuft der OpenLDAP auf "ldap://0.0.0.0/ ldaps://0.0.0.0/" und wir wollen das der OpenLDAP auf localhost läuft:

       # vi /opt/kolab/etc/kolab/templates/rc.conf.template
       
       --------------- /opt/kolab/etc/kolab/templates/rc.conf.template --------------- 
       
       #openldap_url="ldap://@@@bind_addr@@@/ ldaps://@@@bind_addr@@@/"
       openldap_url="ldap:// ldaps://"
       
       sasl_authmech="ldap"
       
       spamassassin_enable="no"
       clamav_update="hourly"
       
       --------------- /opt/kolab/etc/kolab/templates/rc.conf.template ---------------

Nun fuehre die Installation/Konfiguration aus:

NOTE
Beachte bitte das sofern der "opa /kolab" Eintrag im ".kshrc" bereits besteht dieser nicht geladen ist dh. im ENV darf "/kolab" noch nicht aktiv sein ansonsten ist die Ausführung von "kolab_bootstrap -b" nicht erfolgreich.

       # cd /opt/kolab
       # /kolab/sbin/kolab_bootstrap -b
       
       --------------- /kolab/etc/kolab/kolab_bootstrap -b ---------------
       
       KOLAB BOOTSTRAP
       
       Check for running http webserver on port 80
       Check for running https webserver on port 443
       Check for running imap server on port 143
       Check for running imaps server on port 993
       Check for running pop3 server on port 110
       Check for running pop3s server on port 995
       Check for running smtp server on port 25
       Check for running smtps server on port 465
       Check for running amavis server on port 10024
       Check for running postfix reinjection from kolabfilter on port 10025
       Check for running postfix reinjection from amavis on port 10026
       Check for running kolab daemon on port 9999
       Check for running ldap server on port 389
       Check for running ldaps server on port 636
       Check for running sieve server on port 2000
       Check for running lmtp server on port 2003
       Excellent all required Ports are available!
       LDAP repository is empty - assuming fresh install
       Please enter Hostname including Domain Name (e.g. thishost.domain.tld) [kolab.mydomain.ch]: 
       Proceeding with Hostname kolab.mydomain.ch
       Do you want to set up (1) a master Kolab server or (2) a slave [1] (1/2): 1
       Proceeding with master server setup
       
       Please enter your Maildomain - if you do not know your mail domain use the fqdn from above [mydomain.ch]: 
       proceeding with Maildomain mydomain.ch
       Kolab primary email addresses will be of the type user@mydomain.ch 
       Generating default configuration:
       Top level DN for Kolab [dc=mydomain,dc=ch]: 
        base_dn : dc=mydomain,dc=ch
        bind_dn : cn=manager,cn=internal,dc=mydomain,dc=ch
       Please choose a manager password [XXXXXXXX]: XXXXXXXX
        bind_pw : XXXXXXXX
       done modifying /kolab/etc/kolab/kolab.conf
       
       IMPORTANT NOTE:
       use login=manager and passwd=XXXXXXXX when you log into the webinterface!
       
       Enter fully qualified hostname of slave kolab server e.g. thishost.domain.tld [empty when done]: 
       prepare LDAP database...
       temporarily starting slapd
       Waiting for OpenLDAP to start
       no dc=comcept-net,dc=ch object found, creating one
       mynetworkinterfaces: 127.0.0.0/8
       LDAP setup finished
       
       Create initial config files for postfix, apache, cyrus imap, saslauthd
       running /kolab/sbin/kolabconf -n
       OpenPKG: restart: amavisd.
       
       kill temporary slapd
       
       OpenPKG: stop: openldap.
       Kolab can create and manage a certificate authority that can be
       used to create SSL certificates for use within the Kolab environment.
       You can choose to skip this section if you already have certificates
       for the Kolab server.
       Do you want to create CA and certificates [y] (y/n): y
       Now we need to create a cerificate authority (CA) for Kolab and a server
       certificate. You will be prompted for a passphrase for the CA.
       ################################################################################
       /kolab/etc/kolab/kolab_ca.sh -newca kolab.mydomain.ch
       Enter organization name [Kolab]: MyDomain 
       Enter organizational unit [Test-CA]: MyDomain  KOLAB
       Using subject O=MyDomain ,OU=MyDomain  KOLAB,CN=kolab.mydomain.ch
       Using dn 
       CA certificate filename (or enter to create)
       
       Making CA certificate ...
       Generating a 1024 bit RSA private key
       .......................++++++
       ...++++++
       writing new private key to '/kolab/etc/kolab/ca/private/cakey.pem'
       Enter PEM pass phrase:
       Verifying - Enter PEM pass phrase:
       -----
       /kolab
       /kolab/etc/kolab/kolab_ca.sh -newkey kolab.mydomain.ch /kolab/etc/kolab/key.pem
       Using dn 
       Generating RSA private key, 1024 bit long modulus
       ...............................++++++
       ......++++++
       e is 65537 (0x10001)
       writing RSA key
       /kolab
       /kolab/etc/kolab/kolab_ca.sh -newreq kolab.mydomain.ch /kolab/etc/kolab/key.pem /kolab/etc/kolab/newreq.pem 
       Using dn 
       Request is in /kolab/etc/kolab/newreq.pem and private key is in /kolab/etc/kolab/key.pem
       /kolab
       /kolab/etc/kolab/kolab_ca.sh -sign /kolab/etc/kolab/newreq.pem /kolab/etc/kolab/cert.pem
       Using dn 
       Using configuration from /kolab/etc/kolab/kolab-ssl.cnf
       Enter pass phrase for /kolab/etc/kolab/ca/private/cakey.pem:
       Check that the request matches the signature
       Signature ok
       Certificate Details:
               Serial Number: 1 (0x1)
               Validity
                   Not Before: May 25 04:44:33 2007 GMT
                   Not After : May 22 04:44:33 2017 GMT
               Subject:
                   commonName                = kolab.mydomain.ch
               X509v3 extensions:
                   X509v3 Basic Constraints: 
                       CA:FALSE
                   Netscape Comment: 
                       OpenSSL Generated Certificate
                   X509v3 Subject Key Identifier: 
                       45:83:E5:B5:A0:28:C9:6C:6B:E3:A5:61:36:EE:27:FA:41:4A:61:4B
                   X509v3 Authority Key Identifier: 
                       DirName:/O=MyDomain /OU=MyDomain  KOLAB/CN=kolab.mydomain.ch
                       serial:C9:9E:73:9B:03:18:1C:D5
       
       Certificate is to be certified until May 22 04:44:33 2017 GMT (3650 days)
       Sign the certificate? [y/n]:y
       
       
       1 out of 1 certificate requests certified, commit? [y/n]y
       Write out database with 1 new entries
       Data Base Updated
       Signed certificate is in /kolab/etc/kolab/cert.pem
       /kolab
       chgrp kolab-r /kolab/etc/kolab/key.pem;
       chmod 0640 /kolab/etc/kolab/key.pem;
       chgrp kolab-r /kolab/etc/kolab/cert.pem;
       chmod 0640 /kolab/etc/kolab/cert.pem;
       ################################################################################
       CA and certificate creation complete.
       
       You can install kolabserver-ca.crt on your clients to allow them
       to verify the validity of your server certificates.
       
       kolab is now ready to run!
       please run '/kolab/bin/openpkg rc all start'
       Use login=manager and passwd=XXXXXXXX when you log into
       the webinterface https://kolab.mydomain.ch/admin !
       
       --------------- /kolab/etc/kolab/kolab_bootstrap -b ---------------

NOTE
Wenn das Client Cert benutzt wird in Zusammenhang mit Toltec kopiere das folgende File vom Server auf den Client und benenne dieses um:

       /kolab/etc/kolab/kolabserver-ca.crt          --> umbenennen in zB kolab.mydomain.ch.cer

Nachdem das Cert transferiert wurde auf den CLient kann dieses mit einem Doppelklick auf dem Client in den Container der "Vertrauenswuerdigen Zertifikate importiert werden.

Kolab2 Service's Starten und Stoppen

Wenn die Installation erfolgreich durchgelaufen ist und man das Startscript unter "/etc/init.d" sucht wird man nicht fuendig.

Unter Solaris 10 "sollte" Kolab2 den neuen Service "SFM" benutzen. Dieser Service basiert auf "xml" Files und das File fuer Kolab befindet sich unter:

       /var/svc/manifest/openpkg/kolab.xml

Dieses File stellt das Start Script dar fuer Kolab2 und ebenso die dazugehörenden Services:

       svc:/openpkg/kolab:default

NOTE
Wenn die Kompilation auf einem anderen Server stattfindet sprich das xml auf einem anderen Server in den Service "SFM" importiert werden muss kopiere das kolab.xml File auf den Server auf dem Kolab2 installiert wird und fuehre folgendes aus:

       # mkdir /var/svc/manifest/openpkg
       # chown root:root /var/svc/manifest/openpkg
       # chmod 755 /var/svc/manifest/openpkg

NOTE
Ist das "kolab.xml" File aus irgendwelchen Gründen nicht vorhanden erstelle dieses wie unten abgebildet und importiere es wie nachfolgend aufgeführt!

       # /usr/sbin/svccfg -v import /var/svc/manifest/openpkg/kolab.xml
       

Mit folgenden Kommando kann kontrolliert werden ob dies erfolgreich war:

       # svcs -x kolab

Der Inhalt von kolab.xml entspricht folgendem:

       --------------- kolab.xml ---------------
       
       <?xml version="1.0"?>
       <!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
       <service_bundle type='manifest' name='OpenPKG:kolab'>
           <service
               name='openpkg/kolab'
               type='service'
               version='1'>
               <single_instance />
               <dependency
                   name='filesystem'
                   type='service'
                   grouping='require_all'
                   restart_on='none'>
                   <service_fmri value='svc:/system/filesystem/local' />
               </dependency>
               <dependency
                   name='name-services'
                   type='service'
                   grouping='require_all'
                   restart_on='none'>
                   <service_fmri value='svc:/milestone/name-services' />
               </dependency>
               <dependency
                   name='multi-user-server'
                   type='service'
                   grouping='require_all'
                   restart_on='none'>
                   <service_fmri value='svc:/milestone/multi-user-server' />
               </dependency>
               <dependency
                   name='network'
                   type='service'
                   grouping='require_all'
                   restart_on='none'>
                   <service_fmri value='svc:/milestone/network' />
               </dependency>
               <exec_method
                   type='method'
                   name='start'
                   exec='/kolab/etc/rc all start'
                   timeout_seconds='180'>
                   <method_context>
                       <method_credential user='root' group='root' />
                   </method_context>
               </exec_method>
               <exec_method
                   type='method'
                   name='stop'
                   exec='/kolab/etc/rc all stop'
                   timeout_seconds='180'>
               </exec_method>
               <property_group name='startd' type='framework'>
                   <propval
                       name='ignore_error'
                       type='astring'
                       value='core,signal' />
               </property_group>
               <property_group name='general' type='framework'>
                   <propval
                       name='action_authorization'
                       type='astring'
                       value='solaris.smf.manage.openpkg.kolab' />
               </property_group>
               <instance name='default' enabled='false' />
               <stability value='Unstable' />
               <template>
                   <common_name>
                       <loctext xml:lang='C'>OpenPKG Instance /kolab</loctext>
                   </common_name>
               </template>
           </service>
       </service_bundle>
       
       --------------- kolab.xml ---------------

Der Service wird folgendermassen gestartet, gestoppt etc.:

       Um einen Service zu starten benutze:
       
       # svcadm  enable -t /openpkg/kolab
       Um einen Service zu deaktivieren benutze:
       
       # svcadm disable  /openpkg/kolab
       Um einen Service zu aktivieren benutze:
       
       # svcadm enable  /openpkg/kolab
       Um einen Service zu restaren benutze:
       
       # svcadm refresh  /openpkg/kolab
       Um einen Service zu starten mit allen Abhaengigkeiten benutze:
       
       # svcadm enable -r  /openpkg/kolab
       Um Probleme anzeigen zu lassen benutze:
       
       # svcs -x
       Um einen Service mit allen Abhaengikeiten anzeigen zu lassen benutze:
       
       # svcs -l  /openpkg/kolab

Kolab2 Layout veraendern

Auf der nachfolgenden URL kann sich der Admin sowie die User einloggen. Um dieses Layout dh. inkl. Logo zu veraendern ist das sytle.css File zustaendig:

       https://kolab.mydomain.ch/admin/

Die Manipulation im File style.css ist sehr einfach da dieses sehr strukturiert und selbsterklaerend daherkommt:

       # cp -p /kolab/var/kolab/www/admin/style.css /kolab/var/kolab/www/admin/style.css.orig

Kopiere ebenfalls ein event. Logo ins entsprechende Verzeichnis und vergebe die richtigen Rechte:

       # cp kolab_logo.jpg /kolab/var/kolab/www/admin/pics/kolab_logo.jpg
       # chown kolab:kolab /kolab/var/kolab/www/admin/pics/kolab_logo.jpg
       # chmod 644 /kolab/var/kolab/www/admin/pics/kolab_logo.jpg

Nun aendere gemaess den entsprechenden Wuenschen das style.css File ab:

       # vi /kolab/var/kolab/www/admin/style.css
       
       --------------- /kolab/var/kolab/www/admin/style.css --------------- 
       
       body {
         color: black;
         background-color: #F8FCF8;
         font-family: verdana,arial,helvetica,sans-serif;
         font-size: 95%;
         border: 0;
         margin: 0;
       
       #topbar {
         display:block;
         background-color: #F8FCF8;
         height: 70px;
         clear: both;
       
       #toplogo { 
         display:block; 
         background-image: url(pics/kolab_logo.jpg); 
         background-color: #F8FCF8; 
         width: 375px; 
         height: 91px; 
         margin-left: 1em;
         margin-top: 0.4em;
         float: left;
       
       #topuserinfo {
         display:block;
         background-color: #F8FCF8;
         font-size: 80%;
         padding: 0.1em;
         border-bottom: solid 1px black;
         text-align: right;
       
       --------------- /kolab/var/kolab/www/admin/style.css --------------- 
       
       # chown kolab:kolab /kolab/var/kolab/www/admin/style.css
       # chmod 644 /kolab/var/kolab/www/admin/style.css

Kolab2 OpenPKG Umgebung

Der naechste Schritt ist enorm wichtig dh. ab jetzt duerfen Manipulationen betreffend Kolab2 nur noch durchgefuehrt werden sofern die OpenPKG Umgebung geladen ist. Dieser Punkt ist enorm Wichtig und wenn man sich nicht daran haelt kommt es zu Konfigurationsfehlerne etc. Um die Umgebung einzurichten fuege im Home Verzeichnis von root folgendes dem File .kshrc hinzu:

       # vi /root/.kshrc 
       
       --------------- /root/.kshrc  --------------- 
       
       # Loads KOLAB environment:
       # Execute "opa /kolab" before doing any maintainance
       # or configuration work on Kolab!                        
       
       export LANG=C
       opa () {
          root="$1"
          if [ ! -d $root ]; then
              echo "opa:ERROR: OpenPKG root directory $root not found"
              exit 1
          fi
          if [ ! -f "$root/etc/rc" ]; then
              echo "opa:ERROR: root directory does not contain OpenPKG hierarchy"
              exit 1
          fi
          eval `$root/etc/rc --eval all env`
       }
       
       --------------- /root/.kshrc  --------------- 

Wenn ein User sich nun als User root anmeldet wird diese Umgebung nicht automatisch geladen sondern die OpenPKG Umgebung wird nur dann geladen wenn folgendes ausgefuehrt wird:

       # opa /kolab

Durch diesen Befehl wird das ENV und PATH etc. also die Umgebung von OpenPKG geladen. Diese Umgebung ist "bash" basierend dh. teilweise funktionieren die ksh Befehle nicht mehr oder anderst wie zB. "ps -ef" steht nicht mehr zur Verfuegung da -ef unter "bash" nicht gueltig ist dh. unter bash muss folgendes ausgefuehrt werden "ps -aux"! Um zu kontrollieren ob diese Umgebung geladen ist kann folgendes ausgefuehrt werden:

       # env
       
       --------------- output of env ---------------
       
       _=/usr/local/bin/env
       MANPATH=/kolab/man:/kolab/local/man::/usr/share/man
       LANG=C
       HZ=
       VISUAL=/kolab/bin/vim
       PATH=/kolab/bin:/kolab/sbin:/kolab/local/bin:/kolab/local/sbin:/usr/local/sbin:/usr/local/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ucb:/opt/sfw/bin:/usr/ccs/bin:/bin:/sbin:/usr/bin:/usr/sbin
       EDITOR=/kolab/bin/vim
       HISTFILE=/root/.sh_history
       INFOPATH=/kolab/info:/kolab/local/info:
       LOGNAME=root
       MAIL=/var/mail/root
       PS1=[root@KOLAB $PWD]# 
       SHELL=/sbin/sh
       HISTSIZE=200
       HOME=/root
       LD_LIBRARY_PATH=/kolab/lib:/kolab/local/lib::/lib:/usr/lib
       TERM=vt100
       PWD=/
       TZ=MET
       ENV=/root/.kshrc
       
       --------------- output of env ---------------

Nun steht die ganze "Kolab" Umgebung zur Verfuegung inkl. "manpages" etc.:

Imapd Konfig/Manipulationen

Nun wenn man sich das Log genauer anschaut so sieht man das eine Fehlermeldung erscheint sobald ein User auf die den Kolab2 verbindet:

       # cat /kolab/var/imapd/log/imapd.log | grep SQUAT
       KOLAB <debug> imap[12384]: SQUAT failed to open index file
       KOLAB <debug> imap[12384]: SQUAT failed

Um der Meldung gerecht zu werden koennen die Folder provilaktisch (keine Auswirkungen) idenxiert werden und zwar folgendermassen:

       # exit
       # su - root
       # su - kolab-r
       $ /kolab/bin/squatter -s

NOTE
Dieser Vorgang kann mehrere Minuten/Stunden dauern je nach groesse und Volumen!

Nach der Durchfuehrung von "squatter" erscheint im Log nur noch folgende Meldung:

       KOLAB <debug> imap[19321]: SQUAT returned 0 messages

Um das Ganze zu automatisierung dh. das taeglich dies durchgefuehrt wird fuehre folgendes aus:

       # touch /var/spool/cron/crontabs/kolab-r 
       # chown root:kolab-r /var/spool/cron/crontabs/kolab-r 
       # chmod 600 /var/spool/cron/crontabs/kolab-r 
       # vi /var/spool/cron/crontabs/kolab-r 
       
       --------------- crontab kolab-r ---------------
       
       30 00 * * * /kolab/bin/squatter -s 
       
       --------------- crontab kolab-r ---------------

BEACHTE
Im Cron duerfen nur User einen Job ausfuehren wenn diese zwei Vorraussetzungen mitbringen:

       --> User darf nicht im File "/usr/lib/cron/cron.deny" aufgefuehrt sein
       --> Nur User mit einem Passwort duerfen einen cron Joab ausfuehren 

Der User "kolab-r" ist per standard als "LK" im "/etc/shadow" aufgefuehrt dh. dieser User ist "Locked" sprich niemand kann sich einloggen da kein Passwort besteht. Diesem Umstand muss abgeholfen werden ansonsten erscheint im "/var/cron/log" beim Versuch den Cron Job des Users auszufuehen folgende Fehlermeldung:

       error exec bad user!

Vergebe nun ein Passwort fuer den User "kolab-r" damit dieser einen Cron Job ausfuehren kann:

       # passwd kolab-r

Nun kann der Cron Service neu gestartet werden:

       # svcadm restart cron

Amavisd Konfig/Manipulationen

Amavisd kann in einigen belangen modifiziert werden um effizienter arbeiten zu koennen oder leichter an Informationen herzukommen; Um dies zu konfigurieren ist es Wichtig das template File zu modifizieren und nicht das aktive konfig File im Verzeichnis "/kolab/etc/amavisd". Aenderungen die nicht im template File ausgefuehrt werden, werden nach dem ausfuehren des Kommandos "kolabconf" wiederum durch standard Informationen ueberschrieben:

       # cp -p /kolab/etc/kolab/templates/amavisd.conf.template /kolab/etc/kolab/templates/amavisd.conf.template.orig
       # vi /kolab/etc/kolab/templates/amavisd.conf.template

NOTE
Diese Aenderungen sind spezifisch dh. lese im amavisd.conf.template jeweils die Anweisungen der jeweiligen Sektionen!

       --------------- /kolab/etc/kolab/templates/amavisd.conf.template ---------------
       
       $final_virus_destiny      = D_BOUNCE;  # (defaults to D_BOUNCE)
       $final_banned_destiny     = D_BOUNCE;  # (defaults to D_BOUNCE)
       $final_spam_destiny       = D_DISCARD;  # (defaults to D_REJECT)
       $final_bad_header_destiny = D_PASS;  # (defaults to D_PASS), D_BOUNCE suggested
       
       $virus_admin = "virusalert\@$mydomain";
       
       $spam_admin = "spamalert\@$mydomain";
       
       $mailfrom_notify_admin     = "virusalert\@$mydomain";
       $mailfrom_notify_recip     = "virusalert\@$mydomain";
       $mailfrom_notify_spamadmin = "spam.police\@$mydomain";
       
       # Add X-Virus-Scanned header field to mail?
       $X_HEADER_TAG = 'X-Virus-Scanned';      # (default: undef)
       # Leave empty to add no header field    # (default: undef)
       $X_HEADER_LINE = "by amavisd-new at KOLAB $mydomain";
               
       $banned_filename_re = new_RE(
       #  qr'^UNDECIPHERABLE$',  # is or contains any undecipherable components
          qr'\.[^.]*\.(exe|vbs|pif|scr|bat|cmd|com|dll)$'i, # double extension
       #  qr'.\.(exe|vbs|pif|scr|bat|cmd|com)$'i,           # banned extension - basic
       #  qr'.\.(ade|adp|bas|bat|chm|cmd|com|cpl|crt|exe|hlp|hta|inf|ins|isp|js|
       #         jse|lnk|mdb|mde|msc|msi|msp|mst|pcd|pif|reg|scr|sct|shs|shb|vb|
       #         vbe|vbs|wsc|wsf|wsh)$'ix,                  # banned extension - long
       #  qr'.\.(mim|b64|bhx|hqx|xxe|uu|uue)$'i, # banned extension - WinZip vulnerab.
       #  qr'^\.(zip|lha|tnef|cab)$'i,                      # banned file(1) types
       #   qr'^\.exe$'i,                                     # banned file(1) types
       #   qr'^application/x-msdownload$'i,                  # banned MIME types
       #   qr'^application/x-msdos-program$'i,
       #  qr'^message/partial$'i, qr'^message/external-body$'i, # block rfc2046
       );
       # See http://support.microsoft.com/default.aspx?scid=kb;EN-US;q262631
       # and http://www.cknow.com/vtutor/vtextensions.htm
       
       
       read_hash(\%whitelist_sender, '/kolab/var/amavisd/whitelist');
       read_hash(\%blacklist_sender, '/kolab/var/amavisd/blacklist');
       read_hash(\%spam_lovers, '/kolab/var/amavisd/spam_lovers');
       
       $path = '/kolab/sbin:/kolab/bin:/usr/sbin:/sbin:/usr/bin:/bin';
       
       
       $file   = 'file';   # file(1) utility; use 3.41 or later to avoid vulnerability
       
       $gzip   = 'gzip';
       $bzip2  = 'bzip2';
       $lzop   = 'lzop';
       $uncompress = ['uncompress', 'gzip -d', 'zcat'];
       $unfreeze   = ['unfreeze', 'freeze -d', 'melt', 'fcat'];
       $arc        = ['nomarch', 'arc'];
       $unarj      = ['arj', 'unarj'];  # both can extract, arj is recommended
       $unrar      = ['rar', 'unrar'];  # both can extract, same options
       $zoo    = 'zoo';
       $lha    = 'lha';
       $cpio   = ['gcpio','cpio']; # gcpio is a GNU cpio on OpenBSD, which supports
                                   # the options needed; the rest of us use cpio
       
       
       $sa_local_tests_only = 0;   # (default: false)
       $sa_auto_whitelist = 1;    # turn on AWL (default: false)
       
       $sa_timeout = 30;           # timeout in seconds for a call to SpamAssassin
                                   # (default is 30 seconds, undef disables it)
       $sa_mail_body_size_limit = 150*1024; # don't waste time on SA if mail is larger
                                   # (less than 1% of spam is > 64k)
                                   # default: undef, no limitations
       
       $sa_tag_level_deflt  = 3.0; # add spam info headers if at, or above that level
       $sa_tag2_level_deflt = 6.3; # add 'spam detected' headers at that level
       $sa_kill_level_deflt = $sa_tag2_level_deflt; # triggers spam evasive actions
                                   # at or above that level: bounce/reject/drop,
                                   # quarantine, and adding mail address extension
       
       $sa_dsn_cutoff_level = 9;  # spam level beyond which a DSN is not sent
                                   # effectively turning D_BOUNCE into D_DISCARD;
                                   # undef disables this feature and is a default;
       
       
       $sa_spam_subject_tag = '***SPAM*** ';   # (defaults to undef, disabled)
       
       
       
       @mynetworks = qw( @@@postfix-mynetworks|join( )@@@ );
       
       #$policy_bank{'MYUSERS'} = {  # mail from authenticated users on this system
       #  # Bounce only to local users
       #  final_virus_destiny      => D_BOUNCE,
       #  final_banned_destiny     => D_BOUNCE,
       #  warnvirusrecip_maps => undef,        # (defaults to false (undef))
       #  warnbannedrecip_maps => undef,# (defaults to false (undef))
       #  warnvirussender => 1,
       #  warnbannedsender => 1,
       #  mynetworks => qw(0.0.0.0/0),
       #};
               
       --------------- /kolab/etc/kolab/templates/amavisd.conf.template ---------------

Dem Log Level kommt besondere Aufmerksamkeit zu dh. um Amavisd zu "troulbeshooten" oder auch effektiv tiefer in die SPAM Problematik reinzusehen ist es zu empfehlen den "log_level" raufzusetzen auf mind. 2. Bei Schwierigkeiten ist zu empfehlen diesen Wert auf 5 zu setzen. Per Standard kann dieser durchaus auf 0 oder die Position auskommentiert werden.

Die Position "$sa_local_tests_only" veranlasst SpamAssassin externe Tests (Internet Access) ebenfalls durchzufuehren. Ist diese Postion auf "1" (deaktiviert) gesetzt kann SpamAssassin zB die Razor tests nicht durchfuehren!

Nun muessen wir noch einige Files anlegen dh. diese Files steuern:

       Blacklist         /kolab/var/amavisd/blacklist
       Whitelist         /kolab/var/amavisd/whitelist
       spam_lovers       /kolab/var/amavisd/spam_lovers
       # vi /kolab/var/amavisd/blacklist
       
       --------------- /kolab/var/amavisd/blacklist ---------------
       
       *@beispiel.ch
       
       --------------- /kolab/var/amavisd/blacklist ---------------
       # vi /kolab/var/amavisd/spam_lovers
       
       --------------- /kolab/var/amavisd/spam_lovers ---------------
       
       --------------- /kolab/var/amavisd/spam_lovers ---------------
       # vi /kolab/var/amavisd/whitelist
       
       --------------- /kolab/var/amavisd/whitelist ---------------
       
       root@kolab.mydomain.ch
       
       --------------- /kolab/var/amavisd/whitelist ---------------
       
       # chown kolab-r:kolab-r /kolab/var/amavisd/whitelist /kolab/var/amavisd/spam_lovers /kolab/var/amavisd/blacklist
       # chmod 644 /kolab/var/amavisd/whitelist /kolab/var/amavisd/spam_lovers /kolab/var/amavisd/blacklist

Die folgende Aenderung ist nicht umbedingt notwendig kann jedoch einige Vorteile bringen dh. im File "/kolab/sbin/amavsid" kann konfiguriert werden wellche Module zum vornerein fuer "amavisd" geladen werden:

       Net::DNS::RR::NS Net::DNS::RR::A Net::Ping Net::DNS::RR::CNAME Net::DNS::RR::SOA
       Mail::SpamAssassin::PerMsgLearner bytes
       # vi /kolab/sbin/amavisd
       
       --------------- /kolab/sbin/amavisd ---------------
       
       #!/kolab/bin/perl -T
       
       
       
       # Fetch all required modules (or nicely report missing ones), and compile them
       # once-and-for-all at the parent process, so that forked children can inherit
       # and share already compiled code in memory. Children will still need to 'use'
       # modules if they want to inherit from their name space.
       #
       sub fetch_modules($$@) {
         my($reason, $required, @modules) = @_;
         my(@missing);
         for my $m (@modules) {
           local($_) = $m;
           $_ .= /^auto::/ ? '.al' : '.pm';
           s[::][/]g;
           eval { require $_ } or push(@missing, $m);
         }
         die "ERROR: MISSING $reason:\n" . join(, map { "  $_\n" } @missing)
           if $required && @missing;
       }
       
       BEGIN {
         fetch_modules('REQUIRED BASIC MODULES', 1, qw(
           Exporter POSIX Fcntl Socket Errno Carp Time::HiRes
           IO::Handle IO::File IO::Socket IO::Socket::UNIX IO::Socket::INET
           IO::§Wrap IO::Stringy Digest::MD5 Unix::Syslog File::Basename
           Mail::Field Mail::Address Mail::Header Mail::Internet Compress::Zlib
           MIME::Base64 MIME::QuotedPrint MIME::Words
           MIME::Head MIME::Body MIME::Entity MIME::Parser MIME::Decoder
           MIME::Decoder::Base64 MIME::Decoder::Binary MIME::Decoder::QuotedPrint
           MIME::Decoder::NBit MIME::Decoder::UU MIME::Decoder::Gzip64
           Net::Cmd Net::SMTP Net::Server Net::Server::PreForkSimple
           Net::DNS::RR::NS Net::DNS::RR::A Net::Ping Net::DNS::RR::CNAME Net::DNS::RR::SOA
           Mail::SpamAssassin::PerMsgLearner bytes
         ));
         # with earlier versions of Perl one may need to add additional modules
         # to the list, such as: auto::POSIX::setgid auto::POSIX::setuid ...
         fetch_modules('OPTIONAL BASIC MODULES', 0, qw(
           Carp::Heavy auto::POSIX::setgid auto::POSIX::setuid
           MIME::Decoder::BinHex
         ));
       }
       
       1;
       
       --------------- /kolab/sbin/amavisd ---------------

Jetzt muessen wir nur noch alles up to date bringen und Kolab2 neu starten:

       # opa /kolab
       # kolabconf -n
       # svcadm restart kolab


Es kann vorkommen das der Amavisd Prozess temporaere Dateien liegen laesst. Aus diesem Zweck fuegen wir auch dem "cron" von User "root" einen Eintrag hinzu der diese entfernt:

       # vi /var/spool/cron/crontabs/root 
       
       --------------- crontab root ---------------
       
       0 6 * * * /usr/bin/find /kolab/var/amavisd -type d -name 'amavis-20??????T*' -prune -mtime +1 -exec rm -rf {} \;
       
       --------------- crontab root ---------------

Mit der Zeit sammeln sich in der "quarantine" von Amavisd mails die betreffend Spam und Viren dorthin verschoben worden sind. Moechte man diese nach einer gewisser Zeit rausloeschen kann folgender Eintrag im "cron" von User "root" Eingetragen werden:

       # vi /var/spool/cron/crontabs/root 
       
       --------------- crontab root ---------------
       
       # delete qurantained Virus-eMails older than 30 days
       10 2 * * * find /kolab/var/amavisd/tmp/ -mtime +31 -exec rm -r {} \;
       15 2 * * * find /kolab/var/amavisd/virusmails/ -mtime +31 -exec rm {} \;
       
       --------------- crontab root ---------------
       # svcadm restart cron

Amavisd Konfig/Manipulationen Bypass Virus Checks

Um die Virenscanner Check Funktion in "amavisd" komplett abzuschalten siehe:

       Solaris#Clamav_Konfig.2FManipulationen_Bypass_Virus_Checks

Amavisd Konfig/Manipulationen "run_av: Exceeded allowed time "

ClamAV (clamd Deamon) wird bei jedem Mail über "amavisd" aufgerufen um das Mail betreffend Virus Check zu scannen (Attachement und Inhalt des Mails). In "amavisd" gibt es sogenannte Primary AV Scanner (av_scanners). Per Standard ist dies der "clamd" Deamon. Steht dieser nicht zur Verfügung wird versucht das Mail über die Backup Scanner (av_scanners_backup) zu prüfen. Per Standard ist dieser der Kommandozeilen basierende ClamAV scanner (/kolab/bin/clamscan). Nun im Zusammenhang mit der eingesetzten "amavisd" Version besteht ein problem mit der "amavisd" Option "child_timeout" dh. Diese Option steuert wieviele Zeit "amavisd" per Child verbrauchen darf. Dies bedeutet wieviel Zeit "amavisd" für eine Ueberprüfung eines Mails inkl. Spam, Antivirus zur Verfügung steht. Obwohl genügend Zeit zur Verfügung steht scheint im Fall, dass der Primary Scanner (clamd Deamon) nicht zur Verfügung steht, scheint "/kolab/bin/clamscan" nicht für die Ueberprüfung herangezogen zu werden da "child_timeout" ausgelöst wird. Danach stehen keine AV Scanner zur Verfügung und es wird folgendes durch "amavisd" ausgelöst:

        PRESERVING EVIDENCE in /kolab/var/amavisd/amavis-[Message ID]

Dies bedeutet, da das Mail nicht überprüft werden konnte sendet "amavisd" das Mail nicht weiter zur Uebermittlung. Dies geschieht aus Sicherheitsgründen da das Mail potenziell als unsicher eingestuft wird. Nun der Fehler liegt darin das "child_timeout" nicht korrekt verarbeitet wird. Diesem Umstand kann mit einem kleinen Patch in "amavsid" abgeholfen werden:

        # vi /kolab/bin/amavisd
        
        --------------- /kolab/bin/amavisd --------------- 
        
         19997      # error handling (most interesting error codes are EPIPE and ENOTCONN)
         19998      chomp $eval_stat; my($err) = "$!"; my($errn) = 0+$!;
         19999      die "ask_daemon_internal: Exceeded allowed time"  if time >= $deadline;
         20000      ++$retries <= $max_retries
         20001        or die "Too many retries to talk to $socketname ($eval_stat)";
       
        --------------- /kolab/bin/amavisd --------------- 
        
        NOTE Erweitere "amavisd" mit der Zeile "19999" dh. "die "ask_daemon_internal: Exceeded allowed time"  if time >= $deadline;"

Starte alle Deamons neu:

        # svcadm restart kolab

Wenn ein Test durchgeführt werden soll ob die Aenderung den gewünschten Erfolg bringt beende nachdem Neustart den "clamd" Deamon:

        # opa /kolab
        # openpkg rc clamav stop

Nun wenn ein Mail gesendet wird erscheint:

        (!!)Clam Antivirus-clamd av-scanner FAILED: run_av error: Too many retries to talk to /kolab/var/clamav/clamd.sock
            (Can't connect to UNIX socket /kolab/var/clamav/clamd.sock: 2)
        (!!)WARN: all primary virus scanners failed, considering backups

Nun wird zurückgegriffen auf den Backup Scanner der per Standard "/kolab/bin/clamscan" ist. Dies wird nicht im Log angzeigt (Log Level 2) jedoch muss die Bestätigung erscheinen, dass das Mail nachträglich übermittelt wird. Es darf ebenfalls nicht die folgende Nachricht erscheinen:

        PRESERVING EVIDENCE in /kolab/var/amavisd/amavis-[Message ID]

Wenn dies geschieht wurde nicht auf den Backup AV Scanner zurückgegriffen.

NOTE
Wenn "clamscan" der einzige Backup AV Scanner ist und die Datenbank von ClamAV korrupt wird kann auch der Backup AV Scanner "clamscan" nicht ausgeführt werden. Die einzige Lösung in so einem Fall wäre ein weiterer Backup AV Scanner damit dieser übernimmt wenn "clamd" und "clamscan" aufallen!

Clamav Konfig/Manipulationen

Clamv ist bereits vorinstalliert fuer Kolab2 jedoch kann die Konfiguration optimiert werden fuer unseren Zweck. Dafuer fuehre folgendes durch:

       # cp -p /kolab/etc/kolab/templates/clamd.conf.template /kolab/etc/kolab/templates/clamd.conf.template.orig

Kontrolliere ob folgende Position aktiv sind:

       # vi /kolab/etc/kolab/templates/clamd.conf.template
       
       --------------- /kolab/etc/kolab/templates/clamd.conf.template ---------------
       
       LogFile /kolab/var/clamav/clamd.log
       
       LogFileMaxSize 2M
       
       LogTime yes
       
       LogVerbose yes
       
       PidFile /kolab/var/clamav/clamd.pid
       
       DatabaseDirectory /kolab/share/clamav
       
       LocalSocket /kolab/var/clamav/clamd.sock
       
       FixStaleSocket yes
       
       MaxConnectionQueueLength 30
       
       MaxThreads 10
       
       ReadTimeout 300
       
       MaxDirectoryRecursion 20
       
       User kolab-r
       
       ScanPE yes
       
       ScanELF yes
       
       DetectBrokenExecutables yes
       
       ScanOLE2 yes
       
       ScanPDF yes
       
       ScanMail yes
       
       PhishingSignatures yes
       
       ScanHTML yes
       
       ScanArchive yes
       
       MaxScanSize 100M
       
       MaxFileSize 30M
       
       MaxRecursion 10
       
       MaxFiles 1500
       
       --------------- /kolab/etc/kolab/templates/clamd.conf.template ---------------

Damit die Virendefinition File auf den neusten Stand gebracht werden ist "freshclam" zustaendig. Dieser ist jedoch so konfiguriert das "nur" einmal pro Tag die Virendefinition auf den neusten Stand gebracht werden. Um dies alle zwei Stunden durchzufuehren aender folgende Position im Conf File von "freshclam":

       # cp -p /kolab/etc/kolab/templates/freshclam.conf.template /kolab/etc/kolab/templates/freshclam.conf.template.orig
       
       # vi /kolab/etc/kolab/templates/freshclam.conf.template
       
       --------------- /kolab/etc/kolab/templates/freshclam.conf.template ---------------
       
       DatabaseDirectory /kolab/share/clamav
       
       UpdateLogFile /kolab/var/clamav/freshclam.log
       
       #LogVerbose yes
       
       DNSDatabaseInfo current.cvd.clamav.net
       
       DatabaseMirror db.ch.clamav.net
       
       NotifyClamd /kolab/etc/clamav/clamd.conf
       
       --------------- /kolab/etc/kolab/templates/freshclam.conf.template ---------------
       
       # touch /kolab/var/clamav/freshclam.log
       # chown kolab-r:kolab-r /kolab/var/clamav/freshclam.log
       # chmod 640 /kolab/var/clamav/freshclam.log

Der Update Intervall von Clamav wird nicht über "freshclam" gesteuert wie im normal Fall sondern es wird folgendes Konfigurations File benutzt:

       # vi /kolab/etc/kolab/templates/rc.conf.template
       
       --------------- /kolab/etc/kolab/templates/rc.conf.template ---------------
       
       clamav_update="hourly"
       
       --------------- /kolab/etc/kolab/templates/rc.conf.template ---------------

Aktiviere nun alle Modifikationen so das diese unter Kolab2 aktiv werden:

       # opa /kolab
       # /kolab/sbin/kolabconf -n
       # svcadm restart kolab

Clamav Konfig/Manipulationen Bypass Virus Checks

Wenn aus irgendwelchen Gründen die Funktion Virusscanning innerhalab "amavsid" abgeschaltet werden soll kann folgendes durchgeführt werden:

       # vi /kolab/etc/kolab/templates/amavisd.conf.template
       
       --------------- /kolab/etc/kolab/templates/amavisd.conf.template ---------------
       
       # Here is a QUICK WAY to completely DISABLE some sections of code
       # that WE DO NOT WANT (it won't even be compiled-in).
       # For more refined controls leave the following two lines commented out,
       # and see further down what these two lookup lists really mean.
       #
       @bypass_virus_checks_maps = (1);  # controls running of anti-virus code
       # @bypass_spam_checks_maps  = (1);  # controls running of anti-spam code
       # $bypass_decode_parts = 1;         # controls running of decoders&dearchivers
       
       --------------- /kolab/etc/kolab/templates/amavisd.conf.template ---------------

Die Virendefinition Updates werden nicht wie im normal Fall in "freshclam.conf.template konfiguriert sondern im folgenden File:

       # vi /kolab/etc/kolab/templates/rc.conf.template
       
       --------------- /kolab/etc/kolab/templates/rc.conf.template ---------------
       
       #clamav_update="hourly"
       
       --------------- /kolab/etc/kolab/templates/rc.conf.template ---------------

Zusätzlich betreffend Virendefinitions deaktiviere die nötigen Positionen im folgenden File:

       # vi /kolab/etc/kolab/templates/freshclam.conf.template
       
       --------------- /kolab/etc/kolab/templates/freshclam.conf.template ---------------
       
       # Uncomment the following line and replace XY with your country
       # code. See http://www.iana.org/cctld/cctld-whois.htm for the full list.
       #DatabaseMirror db.ch.clamav.net
       
       # How many attempts to make before giving up.
       # Default: 3 (per mirror)
       MaxAttempts 0
       
       # By default it uses the hardcoded configuration file but you can force an
       # another one.
       #NotifyClamd /kolab/etc/clamav/clamd.conf
       
       --------------- /kolab/etc/kolab/templates/freshclam.conf.template ---------------

Damit Clamav kein "Selfcheck" aus

       # vi /kolab/etc/kolab/templates/clamd.conf.template
       
       --------------- /kolab/etc/kolab/templates/clamd.conf.template ---------------
       
       # Perform internal sanity check (database integrity and freshness).
       # Default: 1800 (30 min)
       #SelfCheck 1800
       
       --------------- /kolab/etc/kolab/templates/clamd.conf.template ---------------

Nun müssend die manipulierten Konfig Files für das Kolab2 System aktualisiert werden dh. führe folgendes aus:

       # opa /kolab
       # kolabconf -n
       # openpkg rc amavisd restart
       # openpkg rc clamav restart

Wenn der Virenscanner Clamav überhaupt nicht mehr in Benutzung ist kann der Deamon nun auch runtergefahren werden:

       # openpkg rc clamav stop

Damit Clamav auch nicht wiedereinbezogen wird bei Start von OpenPKG kann folgendes durchgeführt werden:

       # mv /kolab/etc/rc.d/rc.clamav /kolab/etc/rc.d/NO.clamav 

Nun sollte bei der Ausführung von OpenPKG Clamav nicht mehr gestartet werden.

Clamav Upgrade anhand Source Package

Wenn man Clamav auf den neusten Stand bringen möchte stellt sich die Frage wie das durchgeführt werden kann ohne OpenPKG Package. Mit folgender Variante kann man Clamav anhand des offiziellen Source Package auf den neusten Stand bringen. Als Erstes lade das offizielle Source Package von Clamav runter:

       # /opt/wget-1.10.1/bin/wget http://downloads.sourceforge.net/clamav/clamav-0.97.tar.gz

Nun um Clamav erfolgreich für OpenPKG zu kompilieren benötigen wir das "clamav.spec" File sowie das "rc.clamav" File. Diese Files sollten vom offiziellen Source Package von Kolab2 entnommen werden dh. Lade dieses von den Kolab2 Download Server runter (folgendes Beispiel zeigt ein Link für Clamav 0.95 für Kolab2 2.2.3):

       # /opt/wget-1.10.1/bin/wget http://ftp.belnet.be/packages/kolab/server/release/kolab-server-2.2.3/sources/clamav-0.95.3-20091030.src.rpm

Nun lade die Kolab2 ENV Umgebung und entpacke das Source Package von Clamav 0.95 für Kolab2 2.2.3:

       # /kolab/bin/openpkg rpm -iv ./clamav-0.95.3-20091030.src.rpm

Das Package wird in folgendes Verzeichnis entpackt:

       /kolab/RPM/SRC

Kopiere nun die zwei benötigten Files in ein Temporäres Directory:

       # cp -p /kolab/RPM/SRC/clamav/rc.clamav /root/
       # cp -p /kolab/RPM/SRC/clamav/clamav.spec /root/

Nun lösche das Verzeicnis des Source Packages das wir soeben entpackt haben denn dieses wird nicht mehr benötigt:

       # rm -rf /kolab/RPM/SRC/clamav

Erstelle nun dieses Verzeichnis erneut das wir soeben gelöscht haben und kopiere die offizielle Source sowie die beiden Files in dieses Verzeichnis:

       # mkdir /kolab/RPM/SRC/clamav
       # cp clamav-0.97.tar.gz /kolab/RPM/SRC/clamav/
       # mv /root/rc.clamav /kolab/RPM/SRC/clamav/
       # mv /root/clamav.spec /kolab/RPM/SRC/clamav/
       # chown -R kolab:kolab /kolab/RPM/SRC/clamav

Nun aender im folgenden File folgende Position ab dh. kommentiere diese Positionen aus:

       # vi /kolab/RPM/SRC/clamav/clamav.spec
       
       --------------- /kolab/RPM/SRC/clamav/clamav.spec ---------------
       
       Version:      0.97
       
       
       #   list of sources
       Source0:      http://switch.dl.sourceforge.net/clamav/clamav-%{version}.tar.gz
       Source1:      rc.clamav
       #Patch0:       clamav.patch
       
       
       
       %prep
           %setup -q
       #    %patch -p1
       
       --------------- /kolab/RPM/SRC/clamav/clamav.spec ---------------
       
       NOTE Versions spezifische Aenderungen im .spec File sind event. nötig dh. bei der Version Kolab2 V2.1.0 muss
            folgende Option im .spec File unter "configure" hinzugefügt werden da ansonsten der Vorgang abbricht!
            
            --disable-gcc-vcheck

Nun ist alles bereit für die Kompilierung/Installation. Starte nun diese:

       # cd /kolab/RPM/SRC/clamav
       # /opa /kolab
       # /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/clamav/clamav.spec

Nachdem die Kompilation durchgeführt wurde sichere die "templates" Files von Clamav damit diese noch vorhanden wären falls diese durch die Installation des Packages überschrieben werden:

       # cp -p /kolab/etc/kolab/templates/clamd.conf.template /kolab/etc/kolab/templates/clamd.conf.template-0.95.3
       # cp -p /kolab/etc/kolab/templates/freshclam.conf.template /kolab/etc/kolab/templates/freshclam.conf.template-0.95.3

Zur Sicherheit sichere das Konfig Verzeichnis von Clamav damit auch diese Files im Fall der Fälle noch zur Verfügung stehen würden:

       # tar cvf /kolab/etc/clamav.tar /kolab/etc/clamav/*
       # ls -la /kolab/etc/clamav.tar

Nun kann das Package installiert werden. Dieses befindet sich nach der Kompilierung in folgenden Verzeichnis:

       /kolab/RPM/PKG/clamav-0.97-20091030.sparc64-solaris10-kolab.rpm

Installiere dieses Package in die OpenPKG Umgebung:

       # opa /kolab
       # /kolab/bin/openpkg rpm -Uvh /kolab/RPM/PKG/clamav-0.97-20091030.sparc64-solaris10-kolab.rpm

Bei der Installation werden Warnungen ausgegeben resp. wenn vorhandene Konfigurations Files gefunden werden, so werden die alten Konig Files als ".rpmsave" gesichert. Entferne diese Files:

       # rm /kolab/etc/clamav/*.rpmsave

Kontrolliere die Templates Files im Verzeichnis "/kolab/etc/kolab/templates" indem Sinne ob festzustellen ob diese verändert wurden:

       # vi /kolab/etc/kolab/templates/clamd.conf.template
       # vi /kolab/etc/kolab/templates/freshclam.conf.template
       
       NOTE Berücksichtige die Release Notes der neuen Version dh. ob irgenwelche Variablen/Optionen nicht mehr bestehen
            oder dazugekommen sind. Ist dies der Fall, ändere das Template dementsprechend ab!

Damit die Konfiguration aktualisiert wird resp. die Konfig Files in "/kolab/etc/clamav" geschrieben werden führe "kolabconf" aus und zwar mit der Option "-n" damit die Services nicht neu gestartet werden:

       # opa /kolab
       # /kolab/sbin/kolabconf -n

Kontrolliere sofern notwendig ob die Konfig aktualisiert wurde resp. ob die Files von "/kolab/etc/clamav" den Templates entsprechen. Ist dies der Fall stoppe den Service von Clamav:

       # openpkg rc clamav stop

Führe nun das Update durch für die Viren Definition Files anhand folgenden Befehls:

       # /kolab/bin/freshclam

Danach kann der Service wieder gestartet werden dh. achte darauf auf das Log File in "/kolab/var/clamav" indem allfällige Errors etc. augezeigt werden:

       # openpkg rc clamav start
       
       # tail -f /kolab/var/clamav/clamd.log

Wenn Clamav ordnungsgemäss gestartet wurde achte im "amavisd" Log auf Eingehende Nachrichten und ob dort irgenwelche Meldungen erscheinen betreffend Clamav:

       # tail -f /kolab/var/amavisd/amavsid.log

NOTE
Es kann bei der Installation des Packages zu Problemen kommen im Zusammenhang mit der Abhängigkeit der eingesetzten OpenPKG Version:

       error: Failed build dependencies:
              openpkg >= 20060823 is needed by clamav-0.95-20061106

Wenn dieser Error erscheint manipuliere das "clamav.spec" File indem Sinne ab das die Abhängigkeit der OpenPKG Umgebung stimmt dh. zB:

       BuildPreReq:  OpenPKG, openpkg >= 20040130, gcc, bzip2
       PreReq:       OpenPKG, openpkg >= 20040130

SpamAssassin Konfig/Manipulationen

Als naechstes muessen wir das folgende File fuer SpamAssassin modifizieren dh. folgende Eintraeg hinzufuegen:

       # cp -p /kolab/etc/kolab/templates/local.cf.template /kolab/etc/kolab/templates/local.cf.template.orig
       # vi /kolab/etc/kolab/templates/local.cf.template
       
       --------------- /kolab/etc/kolab/templates/local.cf.template ---------------
       
       #   How many hits before a mail is considered spam.
       #required_score          5
       
       ##
       ##  /kolab/etc/spamassassin/local.cf -- site-wide defaults for SpamAssassin
       ##  (see 'perldoc Mail::SpamAssassin::Conf' for details of what can be tweaked)
       ##
       
       auto_whitelist_path        /kolab/var/amavisd/.spamassassin/auto-whitelist
       auto_whitelist_file_mode   0666
       
       rewrite_header Subject ****SPAM(_SCORE_)****
       
       ## lock_method flock
       #
       # If you are using a UNIX machine with all database files on local disks,
       # and no sharing of those databases across NFS filesystems, you can use a
       # more efficient, but non-NFS-safe, locking mechanism.   Do this by adding
       # the line "lock_method flock" to the /etc/mail/spamassassin/local.cf
       # file. This is strongly recommended if you're not using NFS, as it is
       # much faster than the NFS-safe locker.
       #
       lock_method flock
       
       ## report_safe { 0 | 1 | 2 } (default: 1)
       # 
       # if this option is set to 1, if an incoming message is
       # tagged as spam, instead of modifying the original message,
       # SpamAssassin will create a new report message and attach
       # the original message as a message/rfc822 MIME part (ensuring
       # the original message is completely preserved, not easily
       # opened, and easier to recover). 
       # 
       # If this option is set to 2, then original messages will
       # be attached with a content type of text/plain instead of
       # message/rfc822. This setting may be required for safety
       # reasons on certain broken mail clients that automatically
       # load attachments without any action by the user. This
       # setting may also make it somewhat more difficult to
       # extract or view the original message.
       # 
       report_safe 1
       
       ## use_bayes ( 0 | 1 ) (default 1)
       # 
       # Whether to use the naive-Bayesian-style classifier built
       # into SpamAssassin.
       # 
       use_bayes 1
       
       ## bayes_path /path/to/file (default: ~/.spamassassin/bayes)
       # 
       # Path for Bayesian probabilities databases. Several databases
       # will be created, with this as the base, with _toks, _seen etc.
       # appended to this filename; so the default setting results in
       # files called ~/.spamassassin/bayes_seen, ~/.spamassassin/bayes_toks
       # etc. By default, each user has their own, in their ~/.spamassassin
       # directory with mode 0700/0600, but for system-wide SpamAssassin
       # use, you may want to reduce disk space usage by sharing this
       # across all users. (However it should be noted that Bayesian
       # filtering appears to be more effective with an individual
       # database per user.)
       # 
       bayes_path /kolab/var/amavisd/.spamassassin/bayes
       
       ## add_header 
       # 
       # DCC processing creates a message header containing the
       # statistics for the message. This option sets whether SpamAssassin
       # will add the heading to messages it processes. The default is to
       # not add the header.
       # 
       #add_header all DCC _DCCB_: _DCCR_
       
       ## dns_available { yes | test[: name1 name2...] | no } (default: test)
       # 
       # By default, SpamAssassin will query some default hosts on the internet
       # to attempt to check if DNS is working on not. The problem is that it
       # can introduce some delay if your network connection is down, and in some
       # cases it can wrongly guess that DNS is unavailable because the test
       # connections failed. SpamAssassin includes a default set of 13 servers,
       # among which 3 are picked randomly. 
       # 
       # You can however specify your own list by specifying
       # 
       # dns_available test: server1.tld server2.tld server3.tld
       # 
       # Please note, the DNS test queries for MX records so if you specify
       # your own list of servers, please make sure to choose the one(s)
       # which has an associated MX record.
       #
       dns_available yes
       
       ## skip_rbl_checks { 0 | 1 } (default: 0)
       # 
       # By default, SpamAssassin will run RBL checks. If your ISP
       # already does this for you, set this to 1
       # 
       skip_rbl_checks 0
       
       ## header FROM_HAS_MIXED_NUMS      From =~ /\d+[a-z]+\d+\S*@/i
       # 
       header LOCAL_RCVD Received =~ /\S+\.domain\.com\s+\(.*\[.*\]\)/
       
       ## describe FROM_HAS_MIXED_NUMS    From: contains numbers mixed in with letters
       # 
       describe LOCAL_RCVD Received from local machine
       
       ## score SYMBOLIC_TEST_NAME n.nn [ n.nn n.nn n.nn ]
       # 
       # Assign scores (the number of points for a hit) to a given test.
       # Scores can be positive or negative real numbers or integers.
       # SYMBOLIC_TEST_NAME is the symbolic name used by SpamAssassin for that
       # test; for example, 'FROM_ENDS_IN_NUMS'. If only one valid score is
       # listed, then that score is always used for a test.
       # 
       # If four valid scores are listed, then the score that is used depends
       # on how SpamAssassin is being used. The first score is used when both
       # Bayes and network tests are disabled. The second score is used when
       # Bayes is disabled, but network tests are enabled. The third score is
       # used when Bayes is enabled and network tests are disabled. The fourth
       # score is used when Bayes is enabled and network tests are enabled.
       # 
       # Setting a rule's score to 0 will disable that rule from running.
       # 
       # Note that test names which begin with '__' are reserved for meta-match
       # sub-rules, and are not scored or listed in the 'tests hit' reports.
       # 
       # If no score is given for a test, the default score is 1.0, or 0.01 for
       # tests whose names begin with 'T_' (this is used to indicate a rule in
       # testing).
       # 
       # By convention, rule names are be all uppercase and have a length of no
       # more than 22 characters.
       # 
       score LOCAL_RCVD -50
       #score DCC_CHECK 4.000
       #score RAZOR2_CHECK 2.500
       #score SPF_FAIL 10.000
       #score SPF_HELO_FAIL 10.000
       score BAYES_99 4.300
       #score BAYES_90 3.500
       score BAYES_95 3.500
       score BAYES_80 3.000
       
       # Up to Spamassassin v3.1.X score BAYES_90 doese not anymore
       # exist. Use instead BAYES_95 or 99
       
       ## WHITE-LISTED SENDERS (the good guys):
       #
       #whitelist_from   *.good-domain.net                # This domain is safe
       #whitelist_from   *@goodguys.com                   # These guys are ok
       #whitelist_from   dudley.duright@mounties.ca       # He never spams us
       
       whitelist_from    spam.police@mydomain.ch
       whitelist_from    spamalert@mydomain.ch
       
       ## WHITE-LISTED RECEIVERS (no scanning for SPAM):
       #
       #all_spam_to  spam-lover@companymail1.com          # He likes it
       
       all_spam_to  spam@kolab.mydomain.ch
       all_spam_to  ham@kolab.mydomain.ch
       all_spam_to  spam.police@mydomain.ch
       all_spam_to  spamalert@mydomain.ch
       
       ## BLACK-LISTED SENDERS (the bad guys):
       #
       #blacklist_from   *@badguys.com                     # nasty outlaws
       #blacklist_from   *@casino-fun.*                    # we don't want any of this stuff
       
       blacklist_from    *@beispiel.ch
       
       ## Additional DNSBL Servers
       # 
       # BNBL (The BlueShore Network Black List) bl.blueshore.net
       #
       #header RCVD_IN_BNBL eval:check_rbl('bl', 'bl.blueshore.net.') 
       #describe RCVD_IN_BNBL Listed by BNBL 
       #tflags RCVD_IN_BNBL net 
       #score RCVD_IN_BNBL 2
       
       --------------- /kolab/etc/kolab/templates/local.cf.template ---------------

Um Spamassassin zu aktivieren muss folgende Position auf "yes" gesetzt werden:

       # vi /kolab/etc/kolab/templates/rc.conf.template 
       
       --------------- /kolab/etc/kolab/templates/rc.conf.template ---------------
       
       KOLAB_META_START
       TARGET=/kolab/etc/rc.conf
       PERMISSIONS=0644
       OWNERSHIP=kolab:kolab
       KOLAB_META_END
       # (c) 2004 Steffen Hansen <steffen@klaralvdalens-datakonsult.se> (Klaralvdalens Datakonsult AB)
       #
       # This program is Free Software under the GNU General Public License (>=v2).
       # Read the file COPYING that comes with this packages for details.
       
       # this file is automatically written by the Kolab config backend
       # manual additions are lost unless made to the template in the Kolab config directory
       
       #openldap_url="ldap://@@@bind_addr@@@/ ldaps://@@@bind_addr@@@/"
       openldap_url="ldap:// ldaps://"
       
       sasl_authmech="ldap"
       
       spamassassin_enable="yes"
       clamav_update="hourly"
       
       --------------- /kolab/etc/kolab/templates/rc.conf.template ---------------

In der von Kolab2 enthaltenen Version 3.2.4 von Spamassassin gibt es betreffend einem Rule Check und betreffend Jahreswechsel 2010 ein Problem. Dieses Problem ist beschrieben unter folgender URL:

       http://wiki.apache.org/spamassassin/Rules/FH_DATE_PAST_20XX

Sofern Spamassassin aktiviert wurde ist die Lösung denkbar einfach. Oeffne folgendes File und suche nachdem Eintrag "FH_DATE_PAST_20XX" und ändere diesen gemäss nachfolgendem Eintrag:

       # vi /opt/kolab/share/spamassassin/72_active.cf
       
       --------------- /opt/kolab/share/spamassassin/72_active.cf ---------------
       
       ##{ FH_DATE_PAST_20XX
       header   FH_DATE_PAST_20XX      Date =~ /20[2-9][0-9]/ [if-unset: 2006]^M
       describe FH_DATE_PAST_20XX      The date is grossly in the future.^M
       ##} FH_DATE_PAST_20XX
       
       --------------- /opt/kolab/share/spamassassin/72_active.cf ---------------

Nun muss nur noch alles aktiviert werden:

       # opa /kolab
       # kolabconf -n
       # svcadm restart kolab

SpamAssassin Konfig/Manipulationen "Bayanische Datenbank"

Um eine hoehere Trefferquote beim Spamfilter zu erreichen, muss die Bayanische Datenbank lernen was Spam ist und was nicht. Dieser Vorgang kann durchwegs automatisiert werden dh. Erstelle zwei "Shared Folder" mit folgenden Rechten:

       spam        Permission for UID/email/GID        anyone                 all
       ham         Permission for UID/email/GID        anyone                 all

Eine andere Moeglichkeit (bevorzugt) waere anhand Toltec einen oder verschiedenen Folder auf den Server zu Synchronisieren. Egal wie die Ordner erstellt werden oder wo. Wichtig ist einzig und alleine das die entsprechenden Nachrichten sprich Spam oder Ham in diese Ordner verschoben werden. Diese verschobenen Nachrichten muessen nun in die Bayanische Datenbank entsprechend eingelesen werden. So lernt die Datenbank was ist Spam und was Ham. Dieser Vorgang kann anhand eines Cron Jobs automatisiert werden.

In diesem Beispiel gehen wir davon aus das wir "Toltec" Synchronisierung zwischen "Outlook" und Kolab2 benutzen und das wir einen User in einer Domaine erfasst haben dh.:

       Domaine                                      mydomain.ch
       User                                         testuser
       Erstellter Ordner im Outlook für Spam        MYDOMAIN SPAM
       Erstellter Ordner im Outlook für Ham         MYDOMAIN HAM

Auf Kolab2 File Ebene würde man also den Ordner in der Domaine "mydomain.ch" sowie den durch den User "testuser" erstellte Ordner "MYDOMAIN SPAM" sowie "MYDOMAIN HAM" an folgenden Ort finden;$

       /kolab/var/imapd/spool/domain/m/mydomain.ch/t/user/testuser/MYDOMAIN\ HAM/
       
       /kolab/var/imapd/spool/domain/m/mydomain.ch/t/user/testuser/MYDOMAIN\ SPAM/
       # touch /var/spool/cron/crontabs/kolab-r
       # chown root:kolab-r /kolab/var/dcron/crontabs/kolab-r
       # chmod 600 /kolab/var/dcron/crontabs/kolab-r

Erstelle nun ein Verzeichnis für die Scripts sowie ein kleines Script:

       # mkdir -p /kolab/opt/scripts
       # chown -R kolab-r:kolab /kolab/opt
       # chmod 755 /kolab/opt
       # chmod 755 /kolab/opt/scripts
       # vi /kolab/opt/scripts/sa-learn.sh
       
       --------------- /kolab/opt/scripts/sa-learn.sh --------------- 
       
       #!/bin/sh
       
       # Learns Spam or Ham from the shared folders from Kolab
       
       #/kolab/bin/sa-learn --ham /kolab/var/imapd/spool/domain/*/shared\^ham/[1-9]*
       /kolab/bin/sa-learn --ham  /kolab/var/imapd/spool/domain/m/mydomain.ch/t/user/testuser/MYDOMAIN\ HAM/[1-9]*
       
       #/kolab/bin/sa-learn --spam /kolab/var/imapd/spool/domain/*/shared\^spam/[1-9]*
       /kolab/bin/sa-learn --spam /kolab/var/imapd/spool/domain/m/mydomain.ch/t/user/testuser/MYDOMAIN\ SPAM/[1-9]*
       
       --------------- /kolab/opt/scripts/sa-learn.sh --------------- 
       
       # chown kolab-r:kolab /kolab/opt/scripts/sa-learn.sh
       # chmod 700 /kolab/opt/scripts/sa-learn.sh

NOTE
Achte im Script auf die richtige Angabe des Kommandos und der Folder dh. --ham fuer Folder Ham und --spam fuer Folder Spam. Wenn die Folder "Shared Folder" sind muessen diese folgendermassen angegeben werden

       shared\^ham und shared\^spam

Nun muessen wir noch den Cron Job erfassen:

NOTE
Der "cron" Job MUSS als User "kolab-r" erfasst werden ansonsten kommt es zu Problemen mit den Rechten!

       # vi /var/spool/cron/crontabs/kolab-r
       
       --------------- crontab root ---------------
       
       30 1 * * * /kolab/opt/scripts/sa-learn.sh > /dev/null 2>&1
       
       --------------- crontab root ---------------

Nun kann der User "testuser" die Ordner "MYDOMAIN SPAM" sowie "MYDOMAIN HAM" freigeben für alle User und die können die erhaltenen Spam Mails in "MYDOMAIN SPAM" ablegen etc. In der Nacht werden dann die verschobenen Mails in diesen Ordner anhand des Scriptes "/kolab/opt/scripts/sa-learn.sh" abgearbeitet und in die "Bayanische Datenbank" eingelesen. Die verschobenen Nachrichten in die betreffenden Ordner werden oder sollten nicht gelöscht werden. Wenn eine Nachricht bereits eingelesen ist wird das durch den Import Vorgang erkannt.

So kann die Bayes Datenbank nun mit Spam Nachrichten gefuellt werden jedoch ist dabei zu beruecksichtigen das die Datenbank selber es greift sobald 200 Nachricht abgefuellt wurden. Bevor diese Anzahl nicht erreicht ist wir die Datenbank nicht benutzt um die Nachrichten zu ueberpruefen da die Datenbank zuwenig Referenzen hat dies durchzufuehren. Dieser Lernprozess kann "initial" beschleunigt werden. Auf der nachfolgenden Seite/Link gibt es Nachrichten die als Referenz zur Verfuegung gestellt werden um die Datenbank "initial" abzufuellen. Nachfolgend ein orginal Text betreffend dieser zur Verfuegung gestellten Nachrichten etc.:

       http://spamassassin.org/publiccorpus/
       
       --------------- http://spamassassin.org/publiccorpus/README.txt --------------- 
       
       Welcome to the SpamAssassin public mail corpus.  This is a selection of mail
       messages, suitable for use in testing spam filtering systems.  Pertinent
       points:
       
         - All headers are reproduced in full.  Some address obfuscation has taken
           place, and hostnames in some cases have been replaced with
           "spamassassin.taint.org" (which has a valid MX record).  In most cases
           though, the headers appear as they were received.
       
         - All of these messages were posted to public fora, were sent to me in the
           knowledge that they may be made public, were sent by me, or originated as
           newsletters from public news web sites.
       
         - relying on data from public networked blacklists like DNSBLs, Razor, DCC
           or Pyzor for identification of these messages is not recommended, as a
           previous downloader of this corpus might have reported them!
       
         - Copyright for the text in the messages remains with the original senders.
       
               
       OK, now onto the corpus description.  It's split into three parts, as follows:
       
         - spam: 500 spam messages, all received from non-spam-trap sources.
       
         - easy_ham: 2500 non-spam messages.  These are typically quite easy to
           differentiate from spam, since they frequently do not contain any spammish
           signatures (like HTML etc).
       
         - hard_ham: 250 non-spam messages which are closer in many respects to
           typical spam: use of HTML, unusual HTML markup, coloured text,
           "spammish-sounding" phrases etc.
       
         - easy_ham_2: 1400 non-spam messages.  A more recent addition to the set.
       
         - spam_2: 1397 spam messages.  Again, more recent.
       
       Total count: 6047 messages, with about a 31% spam ratio.
               
       The corpora are prefixed with the date they were assembled.  They are
       compressed using "bzip2".  The messages are named by a message number and
       their MD5 checksum.
       
       The "obsolete" dir contains old versions of the corpus, for reference,
       in case you need to correlate test results using these older versions
       against the source messages.  The messages in those corpora are generally
       included in the fresher corpora.
       
       This corpus lives at http://spamassassin.org/publiccorpus/ .  Mail
       jm - public - corpus AT jmason dot org if you have questions, or to donate
       mail.
       
       (Apr 23 2003 jm)
       
       --------------- http://spamassassin.org/publiccorpus/README.txt --------------- 

Somit sind das ueber 6000 Nachrichten die wir benutzen koennen als Basis für unsere Bayanische Datenbank. Also entpacke die bz2 Files in einen temporaeren Ordner und kopiere diese in unseren bereits erstellten "spam" Ordner:

       # mkdir /kolab/messages
       # cp *.bz2 /kolab/messages
       # cd /kolab/messages
       # bzip2 -dc 20030228_hard_ham.tar.bz2 | tar xvf -
       # bzip2 -dc 20030228_spam_2.tar.bz2 | tar xvf -
       # bzip2 -dc 20030228_spam.tar.bz2 | tar xvf -
       # bzip2 -dc 20030228_easy_ham.tar.bz2 | tar xvf -
       # bzip2 -dc 20030228_easy_ham_2.tar.bz2 | tar xvf -
       # rm *.tar.bz2
       # chown -R kolab-r:kolab-r /kolabtmp/messages/*
       
       # mkdir /kolab/messages-ham
       # mkdir /kolab/messages-spam
       # chown kolab-r:kolab-r /kolab/messages-ham
       # chown kolab-r:kolab-r /kolab/messages-spam
       
       # cp -p /kolab/messages/easy_ham/* /kolab/messages-ham
       # cp -p /kolab/messages/easy_ham_2/* /kolab/messages-ham
       # cp -p /kolab/messages/hard_ham/* /kolab/messages-ham
       # cp -p /kolab/messages/spam/* /kolab/messages-spam
       # cp -p /kolab/messages/spam_2/* /kolab/messages-spam

Nun lesen wir die Nachrichten ein:

       # opa /kolab
       # su - kolab-r
       
       # /kolab/bin/sa-learn --ham /kolab/messages-ham/*
       Learned from 4151 message(s) (4151 message(s) examined).
       
       # /kolab/bin/sa-learn --spam /kolab/messages-spam/*
       Parsing of undecoded UTF-8 will give garbage when decoding entities at /kolab/lib/perl/vendor_perl/5.8.7/Mail/SpamAssassin/HTML.pm line 182.
       Learned from 1882 message(s) (1898 message(s) examined).

NOTE Warnings betreffend UTF-8 koennen ignoriert werden!

Betreffend Bayes Datenbank ist folgendes zusatzlich zu beruecksichtigen:

       "SpamAssassin" lernt durch die Nachrichten mit denen die "bayes-learn" Datenbank
       gespiesen wird. Dies kann je nach "input" zu einem exponentialen Wachsen der Datenbank
       fuehren. Um dies zu kontrollieren fuehrt "SpamAssassin" eine sogenannte "expiration"
       durch dh. wenn folgende Kommandos ausgefuehrt werden fuehrt "SpamAssassin" eine
       "expiration" durch:
       
       sa-learn --sync
       sa-learn --force-expire
       bayes_expiry_scan_count
       
       Was ist Expiration
       "SpamAssassin" geht durch alle Nachrichten durch. Wenn die verschiedenen Nachrichten
       nicht gebraucht wurden seit dem letzten "bayes_expiry_scan_count" werden diese zur
       Loeschung markiert. Als naechstes wird kontrolliert ob diese Markierung der Inhalt der
       Datenbank unter dem Wert der Variable "bayes_expiry_min_db_size" (min. Datenbank Groesse)
       bringt, wird die Markierung zur Loeschung wieder entfernt. Dieser Vorgang bleibt so bis
       die Datenbank Groesse erreicht wird die in der Variable "bayes_expiry_min_db_size".
       Danach werden die Markierten Nachrichten geloescht. Die einzelnen Variablen werden im
       Konfigurationsfile von "SpamAssassin" angegeben oder es gelten folgende standard Werte:
       
       bayes_expiry_min_db_size 100000
       bayes_expiry_scan_count 5000
       
       Weitere Informationen zur "Bayes-Learner" findet man unter:
       
       http://spamassassin.apache.org/full/3.2.x/doc/sa-learn.html

NOTE
Wenn bereits eine Datenbank besteht und diese in die neue Installation übernommen werden soll benutze folgenden Befehl um ein Backup auszuführen sowie nachträglich ein Restore:

       # opa /kolab
       # su - kolab-r
       
       /kolab/bin/sa-learn --backup > sa-bayes-db.txt
       
       /kolab/bin/sa-learn --restore sa-bayes-db.txt

Wenn ein Restore ausgeführt werden soll der Bayanischen Datenbank muss das Verzeichnis "/kolab/.spamassassin" bereits bestehen. Dieses wird erst beim ersten Start und nach der Aktivierung von Spamassassin erstellt.

SpamAssassin Konfig/Manipulationen "Zusaetzliche Rulesets"

Nun um den Kampf gegen Spam effizienter zu gestalten koennen zusaetzliche Rulesets installiert werden. Diese Implementation solcher Rulesets ist denkbar einfach: Erstelle als Erstes ein Scripts fuer den download dieser Rulesets:

       # vi /kolab/opt/scripts/ruleset.sh
       
       --------------- /kolab/opt/scripts/ruleset.sh --------------- 
       
       #!/bin/sh
       #
       # wget [OPTION]... [URL]...
       # 
       # Startup:
       #   -b,  --background        go to background after startup.
       # 
       # Logging and input file:
       #   -o,  --output-file=FILE     log messages to FILE.
       #   -a,  --append-output=FILE   append messages to FILE.
       #   -d,  --debug                print debug output.
       #   -q,  --quiet                quiet (no output).
       #   -v,  --verbose              be verbose (this is the default).
       #   -nv, --non-verbose          turn off verboseness, without being quiet.
       # 
       # Download:
       #   -t,  --tries=NUMBER           set number of retries to NUMBER (0 unlimits).
       #   -N,  --timestamping           don't re-retrieve files unless newer than local.
       #   -S,  --server-response        print server response.
       # 
       # Directories:
       #   -P,  --directory-prefix=PREFIX   save files to PREFIX/...
       # 
       # HTTP options:
       #   -U,  --user-agent=AGENT    identify as AGENT instead of Wget/VERSION.
       # 
       
       /opt/wget-1.10.1/bin/wget -d -b \
       -o /kolab/var/amavisd/ruleset.log \
       -a /kolab/var/amavisd/ruleset.log \
       -nv \
       -t 3 \
       -N \
       -S \
       -P /kolab/etc/spamassassin \
       -U AGENT \
       --no-http-keep-alive \
       -A cf \
       http://maxime.ritter.eu.org/Spam/airmax.cf \
       http://www.rulesemporium.com/rules/evilnumbers.cf \
       http://www.rulesemporium.com/rules/70_sare_bayes_poison_nxm.cf \
       http://www.rulesemporium.com/rules/99_sare_adult.cf \
       http://www.rulesemporium.com/rules/99_sare_biz_market_learn_post25x.cf \
       http://www.rulesemporium.com/rules/99_sare_fraud_post25x.cf \
       http://www.rulesemporium.com/rules/70_sare_spoof.cf \
       http://www.rulesemporium.com/rules/70_sare_random.cf \
       http://www.deltaforce.net/hebrewspam/hebrewspam.cf \
       http://www.rulesemporium.com/rules/70_sare_unsub.cf \
       http://www.deltaforce.net/hebrewspam/israelieviluri.cf \
       http://www.rulesemporium.com/rules/72_sare_redirect_post3.0.0.cf \
       http://www.rulesemporium.com/rules/70_sare_evilnum0.cf \
       http://www.rulesemporium.com/rules/70_sare_html0.cf \
       http://www.rulesemporium.com/rules/70_sare_specific.cf \
       http://www.rulesemporium.com/rules/70_sare_oem.cf \
       http://www.rulesemporium.com/rules/70_sare_genlsubj0.cf \
       http://www.rulesemporium.com/rules/70_sare_uri0.cf \
       http://www.rulesemporium.com/rules/70_sare_stocks.cf \
       http://zmi.at/x/70_zmi_german.cf \
       http://www.rulesemporium.com/rules/70_sare_adult.cf \
       http://www.sa-blacklist.stearns.org/sa-blacklist/random.current.cf \
       http://airmex.nerim.net/rule-get/french_rules.cf \
       http://www.ccert.edu.cn/spam/sa/Chinese_rules.cf \
       http://www.timj.co.uk/linux/bogus-virus-warnings.cf \
       http://www.rulesemporium.com/rules/70_sare_header0.cf \
       http://www.rulesemporium.com/rules/72_sare_bml_post25x.cf \
       http://www.rulesemporium.com/rules/70_sare_genlsubj0.cf \
       http://www.rulesemporium.com/rules/70_sare_highrisk.cf \
       http://www.rulesemporium.com/rules/70_sare_obfu.cf
       
       /opt/wget-1.10.1/bin/wget -d -b \
       -o /kolab/var/amavisd/ruleset.log \
       a /kolab/var/amavisd/ruleset.log \
       -nv \
       -t 3 \
       -N \
       -S \
       -U AGENT \
       --no-http-keep-alive \
       /opt/wget-1.10.1/bin/wget --output-document=/kolab/etc/spamassassin/10_MBL.cf http://www.malware.com.br/cgi/submit?action=list_sa
       
       /usr/sbin/svcadm restart kolab
       
       --------------- /kolab/opt/scripts/ruleset.sh --------------- 

Sobald die Rulesets das erste Mal runtergeladen wurden muessen die entsprechenden Rechte vergeben werden:

       # chown kolab:kolab /kolab/etc/spamassassin/*.cf
       # chmod 644 /kolab/etc/spamassassin/*.cf
       # /usr/sbin/svcadm restart kolab

Das Verzeichnis "/kolab/opt" muss ueber folgende Rechte verfuegen:

       # chown kolab-r:kolab /kolab/opt
       # chmod 755 /kolab/opt

Das Verzeichnis "/kolab/opt/scripts" muss ueber folgende Rechte verfuegen:

       # chown kolab-r:kolab /kolab/opt/scripts
       # chmod 755 /kolab/opt/scripts

Das Script an und fuer sich verfuegt ueber folgende Rechte:

       # chown kolab-r:kolab /kolab/opt/scripts/ruleset.sh
       # chmod 700 /kolab/opt/scripts/ruleset.sh

Nun muessen wir noch den Cron Job erfassen:

       # vi /var/spool/cron/crontabs/root 
       
       --------------- crontab root ---------------
       
       30 5 * * * /kolab/opt/scripts/ruleset.sh
       
       --------------- crontab root ---------------
       # svcadm restart cron

SpamAssassin Konfig/Manipulationen "Razor2"

Weiter kann Spamassassin mit Razor2 erweitert werden. Dies ist sehr zu empfehlen da dies schnell durchgefuehrt ist und weil Razor2 hoch effizient arbeitet:

       # mkdir /root/razor2
       # cd /root/razor2
       # mv razor-agents-2.84.tar.gz /root/razor2
       # bzip2 -dc razor-agents-2.84.tar.bz2 | tar xvf -
       # cd razor-agents-2.84
       # opa /kolab
       # which perl
       /kolab/bin/perl
       # /kolab/bin/perl Makefile.PL
       # /kolab/bin/make
       # /kolab/bin/make test
       # /kolab/bin/make install

Nun als naechstes werden wir das Homeverzeichnis von "Razor2" erstellen. Das Kommando darf nur als User "kolab-r" ausgefuhert werden ansonsten kommt es spaeter zu Probleme mit Rechten etc.:

       # su - kolab-r
       $ pwd
       /kolab
       $ /kolab/bin/razor-admin -d -create -home=/kolab/var/amavisd/.razor
       $ exit
       

Nun kann man kontrollieren ob dieses Verzeichnis angelegt wurde und die entsprechenden Rechte vergeben wurde:

       #  ls -la /kolab/var/amavisd/.razor
       
       drwxr-xr-x   2 kolab-r  kolab-r        7 May 28 08:37 .
       drwxr-x---  12 kolab-r  kolab-r       25 May 28 08:37 ..
       -rw-r--r--   1 kolab-r  kolab-r      706 May 28 08:37 razor-agent.conf
       -rw-r--r--   1 kolab-r  kolab-r      714 May 28 08:37 server.folly.cloudmark.com.conf
       -rw-r--r--   1 kolab-r  kolab-r       38 May 28 08:37 servers.catalogue.lst
       -rw-r--r--   1 kolab-r  kolab-r       30 May 28 08:37 servers.discovery.lst
       -rw-r--r--   1 kolab-r  kolab-r       38 May 28 08:37 servers.nomination.lst

Als naechstes muessen wir uns mit dem "Razor-Netzwerk" authentifizieren. Dies kann auf vers. Weise geschehen dh. mit Username und Passwort oder mit einer E-Mail Adresse usw. Wir waehlen die Variante "Username/Passwort". Auch dieser Befeh muss als User "kolab-r" abgesetzt werden:

       # su - kolab-r
       $ pwd
       /kolab
       $ /kolab/bin/razor-admin -home=/kolab/var/amavisd/.razor -register -user=KOLAB@kolab.mydomain.ch -pass=XXXXXXX
       Register successful.  Identity stored in /kolab/.razor/identity-KOLAB@kolab.mydomain.ch
       $ exit 
       # ls -la /kolab/var/amavisd/.razor
       
       drwxr-xr-x  2 kolab-r kolab-r  11 May 28 08:41 .
       drwxr-x--- 11 kolab-r kolab-r  24 May 28 08:41 ..
       lrwxrwxrwx  1 kolab-r kolab-r  33 May 28 08:41 identity -> identity-KOLAB@kolab.mydomain.ch
       -rw-------  1 kolab-r kolab-r  84 May 28 08:41 identity-KOLAB@kolab.mydomain.ch
       -rw-r--r--  1 kolab-r kolab-r 706 May 28 08:37 razor-agent.conf
       -rw-r--r--  1 kolab-r kolab-r 515 May 28 08:41 razor-agent.log
       -rw-r--r--  1 kolab-r kolab-r 714 May 28 08:37 server.folly.cloudmark.com.conf
       -rw-r--r--  1 kolab-r kolab-r 741 May 28 08:41 server.joy.cloudmark.com.conf
       -rw-r--r--  1 kolab-r kolab-r  38 May 28 08:41 servers.catalogue.lst
       -rw-r--r--  1 kolab-r kolab-r  30 May 28 08:37 servers.discovery.lst
       -rw-r--r--  1 kolab-r kolab-r  38 May 28 08:41 servers.nomination.lst

Das Konfig File fuer Razor2 befindet sich in dessem Homeverzeichnis. Kontrolliere dieses und passe es an:

       # vi /kolab/var/amavisd/.razor/razor-agent.conf
       
       --------------- /kolab/var/amavisd/.razor/razor-agent.conf ---------------
       
       #
       # Razor2 config file
       #
       # Autogenerated by Razor-Agents v2.84
       # Mon May 28 08:37:04 2007
       # Created with all default values
       #
       # see razor-agent.conf(5) man page
       #
       
       razorhome              = /kolab/var/amavisd/.razor
       debuglevel             = 3
       identity               = identity
       ignorelist             = 0
       listfile_catalogue     = servers.catalogue.lst
       listfile_discovery     = servers.discovery.lst
       listfile_nomination    = servers.nomination.lst
       logfile                = razor-agent.log
       logic_method           = 4
       min_cf                 = ac
       razordiscovery         = discovery.razor.cloudmark.com
       rediscovery_wait       = 172800
       report_headers         = 1
       turn_off_discovery     = 0
       use_engines            = 4,8
       whitelist              = razor-whitelist
       
       --------------- /kolab/var/amavisd/.razor/razor-agent.conf ---------------

Um nun Razor2 Score zu setzen und Spamassassin editiere folgende Position im File "local.cf":

       # vi /kolab/etc/kolab/templates/local.cf.template
       
       --------------- /kolab/etc/kolab/templates/local.cf.template ---------------
       
       #
       # If no score is given for a test, the default score is 1.0, or 0.01 for
       # tests whose names begin with 'T_' (this is used to indicate a rule in
       # testing).
       #
       # By convention, rule names are be all uppercase and have a length of no
       # more than 22 characters.
       #
       score LOCAL_RCVD -50
       #score DCC_CHECK 4.000
       score RAZOR2_CHECK 2.500
       #score SPF_FAIL 10.000
       #score SPF_HELO_FAIL 10.000
       score BAYES_99 4.300
       #score BAYES_90 3.500
       score BAYES_95 3.500
       score BAYES_80 3.000
       
       --------------- /kolab/etc/kolab/templates/local.cf.template ---------------

Die effektive Aktivierung von Razor2 in Spamassassin wird im File "v310.pre" durchgefuehrt:

       # cp -p /kolab/etc/spamassassin/v310.pre  /kolab/etc/spamassassin/v310.pre.orig
       # vi /kolab/etc/spamassassin/v310.pre
       
       --------------- /kolab/etc/spamassassin/v310.pre ---------------
       
       # Razor2 - perform Razor2 message checks.
       #
       # Razor2 is disabled here because it is not available for unlimited free
       # use.  It is currently free for personal use, subject to capacity
       # constraints.  See the Cloudmark SpamNet Service Policy for more details.
       #
       loadplugin Mail::SpamAssassin::Plugin::Razor2
       use_razor2 1
       razor_config /export/amavis/.razor/razor-agent.conf
       razor_timeout 10
       
       --------------- /kolab/etc/spamassassin/v310.pre ---------------

Nun muss nur noch alles aktiviert werden:

       # opa /kolab
       # kolabconf -n
       # svcadm restart kolab

SpamAssassin Konfig/Manipulationen "Plug-In's"

Spamassassin arbeitet hauptsaechlich mit Perl Modulen. Diese Module muessen auf der einten Seite vorhanden sein sowie konfiguriert sein. Bei der Installation von Kolab2 fehlen einige Module die im Zusammanhang mit Spam wichtig sind. Um diese fehlenden Module zu installieren benuetzen wir den manuellen Vorgang dh. mit jedem Perl Module muss folgendes durchgefuehrt werden:

       # opa /kolab
       # mkdir /root/perl-packages
       # cd /root/perl-packages
       # which perl
       /kolab/bin/perl
       # mv [PerlModule.tar.gz] /root/perl-packages
       # cd /root/perl-packages
       # gzip -dc [PerlModule.tar.gz] | tar xvf -
       # cd /root/perl-packages/[PerlModule]
       # /kolab/bin/perl Makefile.PL
       # make
       # make test
       # make install

WICHTIG
Die Reihenfolge der Perl-Module muss strikte eingehalten werden! Es kann vorkommen das ein Test mit "make install" nicht 100% durchlaeuft jedoch dies ist schon fast normal und kann ignoriert werden. Es darf jedoch kein ERROR oder FATAL erscheinen etc. Die Perl Module sucht man am Besten über http://search.cpan.org/ .

       Archive-Tar-1.32.tar.gz
       Compress-Raw-Zlib-2.004.tar.gz
       IO-Compress-Zlib-2.004.tar.gz
       Compress-Zlib-2.004.tar.gz
       File-Which-0.05.tar.gz
       Archive-Zip-1.18.tar.gz
       MailTools-1.77.tar.gz
       IO-stringy-2.110.tar.gz
       IO-1.2301.tar.gz
       MIME-tools-5.420.tar.gz
       Digest-SHA1-2.11.tar.gz
       Digest-HMAC-1.01.tar.gz
       Net-DNS-0.59.tar.gz
       Net-Ping-2.31.tar.gz
       Net-Server-0.90.tar.gz (Keine hoehere Version verwenden Inkompatibilitaet mit amavisd-2.3.3)
       Convert-TNEF-0.17.tar.gz
       Convert-UUlib-1.09.tar.gz
       Time-HiRes-1.9707.tar.gz
       Digest-MD5-2.36.tar.gz
       Digest-Nilsimsa-0.06.tar.gz
       Getopt-Long-2.36.tar.gz
       Carp-Clan-5.9.tar.gz
       Bit-Vector-6.4.tar.gz
       Date-Calc-5.4.tar.gz
       Sys-Syslog-0.18.tar.gz
       Unix-Syslog-0.100.tar.gz
       Net-CIDR-Lite-0.20.tar.gz
       Sys-Hostname-Long-1.4.tar.gz
       Socket6-0.19.tar.gz
       Mail-SPF-Query-1.999.1.tar.gz
       IP-Country-2.23.tar.gz
       Net-Ident-1.20.tar.gz
       DBI-1.56.tar.gz
       Image-ExifTool-6.90.tar.gz
       String-Approx-3.26.tar.gz
       ExtUtils-CBuilder-0.19.tar.gz
       Module-Build-0.2808.tar.gz
       Encode-Detect-1.00.tar.gz
       Image-Info-1.25.tar.gz
       version-0.7203.tar.gz
       Net-DNS-Resolver-Programmable-v0.003.tar.gz
       NetAddr-IP-4.004.tar.gz
       Mail-SPF-v2.005.tar.gz

Nachdem wir nun alle Module installiert haben koennen wir auch gleich Spamassassin auf die neuste Version bringen:

       # opa /kolab
       # mkdir /root/perl-packages
       # cd /root/perl-packages
       # which perl
       /kolab/bin/perl
       # mv Mail-SpamAssassin-3.2.5.tar.gz /root/perl-packages
       # cd /root/perl-packages
       # gzip -dc Mail-SpamAssassin-3.2.5.tar.gz | tar xvf -
       # cd /root/perl-packages/Mail-SpamAssassin-3.2.5
       # /kolab/bin/perl Makefile.PL
       # make
       # make test
       # make install

Die Konfig File von Spamassassin werden nicht an den richtigen Ort installiert sprich diese befindet sich im folgenden Verzeichnis:

       /opt/kolab/etc/mail/spamassassin

Kopiere die Konfig Files von Spamassassin um ins richtige Verzeichnis und achte darauf das keine bestehenden Informationen ueberschrieben werden:

       # mv /opt/kolab/etc/mail/spamassassin/init.pre /kolab/etc/spamassassin/init.pre_3.20
       # mv /opt/kolab/etc/mail/spamassassin/local.cf /kolab/etc/spamassassin/local.cf_3.20
       # mv /opt/kolab/etc/mail/spamassassin/v310.pre /kolab/etc/spamassassin/v310.pre_3.20
       # mv /opt/kolab/etc/mail/spamassassin/v312.pre /kolab/etc/spamassassin/v312.pre_3.20
       # mv /opt/kolab/etc/mail/spamassassin/v320.pre /kolab/etc/spamassassin/
       # chown kolab:kolab /kolab/etc/spamassassin/*3.20
       # chown kolab:kolab /kolab/etc/spamassassin/v320.pre
       # rm -rf /opt/kolab/etc/mail/spamassassin
       # ln -s /kolab/etc/spamassassin/ /opt/kolab/etc/mail/spamassassin

Danach kontrolliere das folgende Plug-In's in folgenden Files aktiviert sind:

       # vi /kolab/etc/spamassassin/init.pre
       
       --------------- /kolab/etc/spamassassin/init.pre ---------------
       
       # RelayCountry - add metadata for Bayes learning, marking the countries
       # a message was relayed through
       #
       loadplugin Mail::SpamAssassin::Plugin::RelayCountry
       
       # URIDNSBL - look up URLs found in the message against several DNS
       # blocklists.
       #
       loadplugin Mail::SpamAssassin::Plugin::URIDNSBL
       
       # Hashcash - perform hashcash verification.
       #
       loadplugin Mail::SpamAssassin::Plugin::Hashcash
       
       # SPF - perform SPF verification.
       #
       loadplugin Mail::SpamAssassin::Plugin::SPF
       
       --------------- /kolab/etc/spamassassin/init.pre ---------------
       # vi /kolab/etc/spamassassin/v310.pre
       
       --------------- /kolab/etc/spamassassin/v310.pre---------------
       
       # Razor2 - perform Razor2 message checks.
       #
       # Razor2 is disabled here because it is not available for unlimited free
       # use.  It is currently free for personal use, subject to capacity
       # constraints.  See the Cloudmark SpamNet Service Policy for more details.
       #
       loadplugin Mail::SpamAssassin::Plugin::Razor2
       use_razor2 1
       razor_config /kolab/var/amavisd/.razor/razor-agent.conf
       razor_timeout 10
       
       # SpamCop - perform SpamCop message reporting
       #
       loadplugin Mail::SpamAssassin::Plugin::SpamCop
       
       # AntiVirus - some simple anti-virus checks, this is not a replacement
       # for an anti-virus filter like Clam AntiVirus
       #
       loadplugin Mail::SpamAssassin::Plugin::AntiVirus
       
       # AWL - do auto-whitelist checks
       #
       loadplugin Mail::SpamAssassin::Plugin::AWL
       
       # AutoLearnThreshold - threshold-based discriminator for Bayes auto-learning
       #
       loadplugin Mail::SpamAssassin::Plugin::AutoLearnThreshold
       
       # TextCat - language guesser
       #
       loadplugin Mail::SpamAssassin::Plugin::TextCat
       
       # WhitelistSubject - Whitelist/Blacklist certain subject regular expressions
       #
       loadplugin Mail::SpamAssassin::Plugin::WhiteListSubject
       
       --------------- /kolab/etc/spamassassin/v310.pre---------------
       # vi /kolab/etc/spamassassin/v320.pre
       
       --------------- /kolab/etc/spamassassin/v320.pre ---------------
       
       # Check - Provides main check functionality
       #
       loadplugin Mail::SpamAssassin::Plugin::Check
       
       # HTTPSMismatch - find URI mismatches between href and anchor text
       #
       loadplugin Mail::SpamAssassin::Plugin::HTTPSMismatch
       
       # URIDetail - test URIs using detailed URI information
       #
       loadplugin Mail::SpamAssassin::Plugin::URIDetail
       
       # Shortcircuit - stop evaluation early if high-accuracy rules fire
       # 
       loadplugin Mail::SpamAssassin::Plugin::Shortcircuit
       
       # Plugins which used to be EvalTests.pm
       # broken out into separate plugins
       loadplugin Mail::SpamAssassin::Plugin::Bayes
       loadplugin Mail::SpamAssassin::Plugin::BodyEval
       loadplugin Mail::SpamAssassin::Plugin::DNSEval
       loadplugin Mail::SpamAssassin::Plugin::HTMLEval
       loadplugin Mail::SpamAssassin::Plugin::HeaderEval
       loadplugin Mail::SpamAssassin::Plugin::MIMEEval
       loadplugin Mail::SpamAssassin::Plugin::RelayEval
       loadplugin Mail::SpamAssassin::Plugin::URIEval
       loadplugin Mail::SpamAssassin::Plugin::WLBLEval
       
       # VBounce - anti-bounce-message rules, see rules/20_vbounce.cf
       #
       loadplugin Mail::SpamAssassin::Plugin::VBounce
       
       # ImageInfo - rules to match metadata of image attachments
       #
       loadplugin Mail::SpamAssassin::Plugin::ImageInfo
       
       --------------- /kolab/etc/spamassassin/v320.pre ---------------

So nun muss nur noch kolab gestoppt sowie neu gestartet werden. Fuehre einen Stop/Start aus:

       # svcadm restart kolab

Will man ueberpruefen ob bei Spamassassin alles in Ordnung ist kann folgendes ausgefuert werden:

       # svcadm disable -t kolab
       

Aktiviere voruebergehend folgende Positionen in "amavisd.conf":

       # vi /kolab/etc/amavisd/amavisd.conf
       
       --------------- /kolab/etc/amavisd/amavisd.conf ---------------
       
       $log_level = 5;
       $sa_debug = 1;
       
       --------------- /kolab/etc/amavisd/amavisd.conf ---------------

Nun fuehre folgendes aus:

       # /kolab/sbin/amavisd -c /kolab/etc/amavisd/amavisd.conf debug

Wenn alles in Ordnung ist entferne die Modifikationen in "amavisd.conf" und starte kolab neu:

       # svcadm enable -r kolab
       # kolabconf -n
       # svcadm restart kolab

SpamAssassin Konfig/Manipulationen "DCC"

DCC ist wie Razor2 eine sehr effiziente Art und Weise um gegen Spam vorzugehen und ist sehr zu empfehlen. Um DCC im Client Modus zu installieren gehe folgendermassen vor:

       # opa /kolab
       
       # mkdir /roor/dcc
       # cd /roor/dcc
       # mv dcc-dccd.tar.Z /roor/dcc
       # gzip -dc dcc.tar.Z | tar xvf -
       # cd dcc-1.3.103

Nun konfigurieren wir die Source:

       # opa /kolab
       
       # ./configure \
       --homedir=/kolab/opt/dcc-dccd-1.3.103 \
       --bindir=/kolab/opt/dcc-dccd-1.3.103/bin \
       --mandir=/kolab/opt/dcc-dccd-1.3.103/man \
       --with-uid=kolab-r \
       --with-rundir=/kolab/var/amavisd \
       --disable-server \
       --disable-dccifd \
       --disable-dccm \
       --without-db-memory \
       --without-max-db-mem \
       --without-max-log-size \
       --without-DCC-MD5 \
       --without-cgibin \
       --without-sendmail \
       --disable-IPv6


NOTE
"disable-dccm" steht fuer "disable sendmail support" und da wir kein Sendmail installiert haben ist "dccm" ueberfluessig. Die Option "with-db-memory" steht fuer eine Optiomierung dh. wenn 30 bis 40% des installierten Memorys angegeben wird laeuft "DCC" markant besser und schneller. Diese Angabe ist aber ab Version 1.2.6 nicht mehr umbedingt noetig!

Jetzt gehen wir ans Kompilieren:

       # /kolab/bin/make
       # /kolab/bin/make install
       
       # chown -R kolab-r:kolab /kolab/opt/dcc-dccd-1.3.103

Nun nach der Installation ergiebt sich folgendes Bild:

       /kolab/opt/dcc-dccd-1.3.103/
                                   bin
                                   cgi-bin
                                   libexec
                                   log
                                   man/cat8
       

Es kann ein Test ausgefuehrt werden nach der Installation jedoch muss der Server nach aussen kommunizieren und zwar auf "Port 6277 Service udp".

       # /kolab/opt/dcc-dccd-1.3.103/bin/cdcc 'info' 
       
       --------------- Protokoll von cdcc 'info' ---------------
       
       # 09/10/03 01:24:11 MEST  /opt/dcc-dccd-1.3.103/map
       # Re-resolve names after 03:23:13  Check RTTs after 01:38:15
       # 160.05 ms threshold, 205.70 ms average    12 total, 11 working servers
       IPv6 off
       
       dcc1.dcc-servers.net,-      RTT+0 ms    anon
       #   38.144.80.31-                                          Servercave ID 1183
       #     100% of  1 requests ok  241.08+0 ms RTT          105 ms queue wait
       #   137.118.60.88-                                            neonova ID 1127
       #     100% of  1 requests ok  265.00+0 ms RTT          117 ms queue wait
       #   153.19.44.233-                                             WEiAPG ID 1072
       #     100% of  2 requests ok 4000.00+0 ms RTT         3846 ms queue wait
       #   194.85.132.210-                                     SPAMCHECK.NET ID 1168
       #     100% of  1 requests ok  437.24+0 ms RTT          344 ms queue wait
       # * 194.109.153.82-                                              NIET ID 1080
       #     100% of  1 requests ok  155.70+0 ms RTT          104 ms queue wait
       #   198.137.254.71-                                             Misty ID 1170
       #     100% of  1 requests ok  451.63+0 ms RTT          311 ms queue wait
       #   203.147.165.193-                                      MessageCare ID 1108
       #     100% of  1 requests ok  461.26+0 ms RTT           64 ms queue wait
       #   206.169.162.65-                                           servers ID 1049
       #     100% of  1 requests ok  358.61+0 ms RTT          131 ms queue wait
       #   212.95.66.23-                                                 SdV ID 1179
       #     100% of  1 requests ok  160.05+0 ms RTT          104 ms queue wait
       #   216.240.97.63-                                            dmv.com ID 1181
       #     100% of  1 requests ok  366.17+0 ms RTT          143 ms queue wait
       #   216.244.192.216-                                         SINECTIS ID 1114
       #     100% of  1 requests ok  427.07+0 ms RTT          106 ms queue wait
       
       dcc2.dcc-servers.net,-      RTT+0 ms    anon
       dcc3.dcc-servers.net,-      RTT+0 ms    anon
       dcc4.dcc-servers.net,-      RTT+0 ms    anon
       dcc5.dcc-servers.net,-      RTT+0 ms    anon
       
       127.0.0.1,-                 RTT-1000 ms  32768 3889040617y249
       #   127.0.0.1-                                      
       #      not answering
       
       ################
       # 09/10/03 01:24:11 MEST  GreyList /opt/dcc-dccd-1.3.103/map
       # Re-resolve names after 03:23:15  
       # 1 total, 0 working servers
       
       127.0.0.1,-                 Greylist 32768 3889040617y249
       #   127.0.0.1-                                      
       #      not answering
       
       --------------- Protokoll von cdcc 'info' ---------------

Nun muss noch gewaehrleitste werden das "Amavisd-New" das Programm "DCC" findet. Diese erreichen wir indem wir "DCC" in die "$path" Variable von "amavisd.conf.template" aufnehmen:

       # vi /kolab/etc/kolab/templates/amavisd.conf.template
       
       --------------- /kolab/etc/kolab/templates/amavisd.conf.template ---------------
       
       $path = '/kolab/sbin:/kolab/bin:/usr/sbin:/sbin:/usr/bin:/bin:/kolab/opt/dcc-dccd-1.3.103/bin';
       
       --------------- /kolab/etc/kolab/templates/amavisd.conf.template ---------------

DCC wird ab Spamassassin V3.1 nicht mehr im local.cf File aktiviert jedoch muessen wir hier einige Eintraege hinzufuegen die Spamassassin anweisen welche Scores, Headers gelten fuer DCC:

       # vi /kolab/etc/kolab/templates/local.cf.template
       
       --------------- /kolab/etc/kolab/templates/local.cf.template ---------------
       
       ## add_header 
       # 
       # DCC processing creates a message header containing the
       # statistics for the message. This option sets whether SpamAssassin
       # will add the heading to messages it processes. The default is to
       # not add the header.
       # 
       add_header all DCC _DCCB_: _DCCR_
       
       
       score LOCAL_RCVD -50
       score DCC_CHECK 4.000
       score RAZOR2_CHECK 2.500
       score SPF_FAIL 10.000
       score SPF_HELO_FAIL 10.000
       score BAYES_99 4.300
       #score BAYES_90 3.500
       score BAYES_95 3.500
       score BAYES_80 3.000
       
       --------------- /kolab/etc/kolab/templates/local.cf.template ---------------

Da wir DCC nicht als Deamon laufen lassen ist das Log Verzeichnis von DCC eigentlich umbedeutend jedoch ordnungshalber und fuer zukuenftige Zwecke legen wird dieses dennoch an:

       # mkdir /kolab/var/dcc
       # chown kolab-r:kolab /kolab/var/dcc
       # chmod 755 /kolab/var/dcc
       
       # vi /kolab/opt/dcc-dccd-1.3.103/dcc_conf
       
       --------------- /kolab/opt/dcc-dccd-1.3.103/dcc_conf ---------------
       
       DCCM_LOGDIR=/kolab/var/dcc
       
       --------------- /kolab/opt/dcc-dccd-1.3.103/dcc_conf ---------------

Um nun DCC im Spamassassin effektiv zu aktivieren aktiviere und fuege folgende Positionen dem File"v310.pre" hinzu:

       # vi /kolab/etc/spamassassin/v310.pre
       
       --------------- /kolab/opt/dcc-dccd-1.3.103/dcc_conf ---------------
       
       # DCC - perform DCC message checks.
       #
       # DCC is disabled here because it is not open source.  See the DCC
       # license for more details.
       #
       loadplugin Mail::SpamAssassin::Plugin::DCC
       use_dcc 1
       dcc_home /opt/dcc-dccd-1.3.103
       dcc_path /opt/dcc-dccd-1.3.103/bin/dccproc
       dcc_timeout 10
       
       --------------- /kolab/opt/dcc-dccd-1.3.103/dcc_conf ---------------

Das wars auch schon dh. DCC kann nun in der Umgebung aktiviert werden:

       # /kolab/sbin/kolabconf -n
       # svcadm restart kolab

Will man ueberpruefen ob bei Spamassassin alles in Ordnung ist kann folgendes ausgefuert werden:

       # svcadm disable -t kolab
       

Aktiviere voruebergehend folgende Positionen in "amavisd.conf":

       # vi /kolab/etc/amavisd/amavisd.conf
       
       --------------- /kolab/etc/amavisd/amavisd.conf ---------------
       
       $log_level = 5;
       $sa_debug = 1;
       
       --------------- /kolab/etc/amavisd/amavisd.conf ---------------

Nun fuehre folgendes aus:

       # /kolab/sbin/amavisd -c /kolab/etc/amavisd/amavisd.conf debug

Wenn alles in Ordnung ist entferne die Modifikationen in "amavisd.conf" und starte kolab neu:

       # svcadm enable -r kolab
       # kolabconf -n
       # svcadm restart kolab

Kolab2 SpamAssassin Upgrade

Es ist zu empfehlen immer die neuste Version von Spamassassin einzusetzen. Ebenfalls loesen die Perl Module die mit der neuen Version von Spamassassin mitkommen immer einige Probleme. Um ein Upgrade durchzufuehren gehe folgendermassen vor:

       # opa /kolab
       # mkdir /kolab/tmp
       # mv Mail-SpamAssassin-3.2.5.tar.gz /kolab/tmp
       # gzip -dc Mail-SpamAssassin-3.2.5.tar.gz | tar xvf -
       # cd Mail-SpamAssassin-3.2.5
       
       # which perl
       # /kolab/bin/perl
       # /kolab/bin/perl Makefile.PL
       # which make
       # /kolab/bin/make
       # /kolab/bin/make install

Wir gehen davon aus das keine zusaetzliche Funktionen dazuinstalliert werden etc. Ignoriere aus diesem Grund Meldung die daraufhinweisen das Module fehlen.

       # cd /kolab/etc/mail/spamassassin
       # mv init.pre init.pre.orig
       # mv local.pre local.pre.orig
       # mv v310.pre v310.pre.orig
       
       # mv ./*.orig /kolab/etc/spamassassin/
       # mv ./v312.pre /kolab/etc/spamassassin/
       # mv ./v320.pre /kolab/etc/spamassassin/
       
       # rm -rf /kolab/etc/mail/spamassassin
       
       # cd /kolab/etc/spamassassin
       # chown kolab:kolab /kolab/etc/spamassassin/*

NOTE
Module muessen nicht ausgeschaltet werden obwohl diese gar nicht vorhanden sind denn bei dieser Version von Spamassassin gibt es eine Eval funktion die erkennt ob ein Modul brauchbar ist oder nicht. Ist das Module nicht brauchbar wird es automatisch deaktiviert. Ebenfalls werden rules aus Perfomance Gruenden evaluiert und in den Cache geladen. Somit muss nicht bei jedem Mail die Rule aufgerufen werden etc. Es empfiehlt sich dennoch nachdem Upgrade Kolab2 zu stoppen und mit dem Amavisd Debug modus zu pruefen ob alles richtig geladen wird. Um den Debug Modus im Amavisd zu aktivieren muss voruebergehend im File "amavisd.conf" die Position "sa_debug = 1" aktiviert werden. Danach kann der Debug Modus auf der Kommandozeile ausgefuehrt werden. "sa_debug = 1" muss umbedingt nachtraeglich wiederum deaktivert werden da sonst enorm geloggt wird:

       # /kolab/sbin/amavisd -c /kolab/etc/amavisd/amavisd.conf

Horde Konfig/Manipulationen

Horde Konfig/Manipulationen Apache2

Wie schon erwaehnt wurde Kolab2 so Kompiliert das Horde bereits als "final release" enthalten ist. Es gibt jedoch einige Modifikationen die in Zusammenhang mit Horde verbessert werden koennen.

Im "httpd.conf.template" werden die max. Server die gestartet werden angegeben. Diese koennen zur Performance Verbesserung manipuliert werden:

       # cp -p /kolab/etc/kolab/templates/httpd.conf.template /kolab/etc/kolab/templates/httpd.conf.template.orig
       
       # vi /kolab/etc/kolab/templates/httpd.conf.template
       
       --------------- /kolab/etc/kolab/templates/httpd.conf.template ---------------
       
       <IfModule mpm_prefork_module>
       # prefork MPM
       # StartServers ......... number of server processes to start
       # MinSpareServers ...... minimum number of server processes which are kept spare
       # MaxSpareServers ...... maximum number of server processes which are kept spare
       # MaxClients ........... maximum number of server processes allowed to start
       # MaxRequestsPerChild .. maximum number of requests a server process serves
       PidFile              /kolab/var/apache/run/apache.pid
       StartServers         5
       MinSpareServers      5
       MaxSpareServers     10
       MaxClients         150
       MaxRequestsPerChild  0
       </IfModule>
       
       <IfModule mpm_worker_module>
       # pthread MPM
       # StartServers ......... initial  number of server processes to start
       # MaxClients ........... maximum  number of server processes allowed to start
       # MinSpareThreads ...... minimum  number of worker threads which are kept spare
       # MaxSpareThreads ...... maximum  number of worker threads which are kept spare
       # ThreadsPerChild ...... constant number of worker threads in each server process
       # MaxRequestsPerChild .. maximum  number of requests a server process serves
       StartServers         2
       MaxClients         150
       MinSpareThreads     25
       MaxSpareThreads     75 
       ThreadsPerChild     25
       MaxRequestsPerChild  0
       ServerLimit         16
       </IfModule>
       
       <IfModule mpm_perchild_module>
       # perchild MPM
       # NumServers ........... constant number of server processes
       # StartThreads ......... initial  number of worker threads in each server process
       # MinSpareThreads ...... minimum  number of worker threads which are kept spare
       # MaxSpareThreads ...... maximum  number of worker threads which are kept spare
       # MaxThreadsPerChild ... maximum  number of worker threads in each server process
       # MaxRequestsPerChild .. maximum  number of connections per server process (then it dies)
       NumServers           5
       StartThreads         5
       MinSpareThreads      5
       MaxSpareThreads     10
       MaxThreadsPerChild  20
       MaxRequestsPerChild  0
       </IfModule>
       
       --------------- /kolab/etc/kolab/templates/httpd.conf.template ---------------

Apache resp. Horde arbeitet mit Caching (Modus file). Dieser Mechanismus hinterlässt alte Caching Files im Ordner "/tmp", "/kolab/var/kolab/www/client/tmp" sowie "/kolab/var/kolab/www/fbview/tmp":

       # ls -al /tmp/ | grep cache_*
       
       -rw-------   1 apache   apache       144 Jan  5 10:29 cache_bdff23tbi7v719pnfd4dfcpqe0
       -rw-------   1 apache   apache        88 Jan  4 20:25 cache_e7rb5pens90d6mdhun2jftl280
       -rw-------   1 apache   apache       144 Jan  4 17:23 cache_jg288o78n6pek2o3ssimunv6t6
       -rw-------   1 apache   apache       144 Jan  5 17:28 cache_n5gnplj4c5ikal1s5qulrtjae3
       -rw-------   1 apache   apache       144 Jan  6 12:32 cache_om20uq39gcmgj5jg0t0t2hudv5
       # ls -la /kolab/var/kolab/www/client/tmp/*
       
       drwxr-xr-x  2 kolab-n kolab-n     4 Jan 23 17:38 .
       drwxr-xr-x 28 kolab   kolab      35 Dec 31 08:50 ..
       -rw-r--r--  1 kolab-n kolab-n    13 Dec 31 08:31 .htaccess
       -rw-------  1 kolab-n kolab-n  3797 Dec 31 13:48 impattxRaW3y
       -rw-------  1 kolab-n kolab-n   113 Jan 24 09:14 kolab_cache53e4259e4bbec4a006266e3b9a240651
       -rw-------  1 kolab-n kolab-n 89068 Jan 23 17:38 sess_7ed22e42c5d6ee0953c84edbe4b13d7c
       -rw-------  1 kolab-n kolab-n 86310 Jan 24 09:14 sess_a6b2f96ed89f7233ff3b01c44f55d884
       # ls -la /kolab/var/kolab/www/fbview/tmp/*
       
       drwxr-xr-x  2 kolab-n kolab-n     6 Feb 13 11:10 .
       drwxr-xr-x 21 kolab   kolab      28 Dec 31 08:30 ..
       -rw-r--r--  1 kolab-n kolab-n    13 Dec 31 08:21 .htaccess
       -rw-------  1 kolab-n kolab-n     0 Feb 13 11:07 horde_cache_gc
       -rw-------  1 kolab-n kolab-n   113 Feb 13 11:00 kolab_cache91de94238939c2b213a1cb1253d8ad2f
       -rw-------  1 kolab-n kolab-n 64040 Feb 13 11:10 sess_ef105e3ff20b1fe60db378faf3491705


Diese können/sollten regelmässig rauselöscht werden dh. man bindet diese Funktion in den Crontab ein indem man alle Files die älter sind als zB. 5 Tage rauslöscht:

NOTE
Es ist nicht zu empfehlen den Cache öfters rauszulöschen denn dahinter steckt ein Caching Mechanismus der Horde den nötigen Speed verleit!

       # vi /var/spool/cron/crontabs/root
       
       --------------- /var/spool/cron/crontabs/root ---------------
       
       0 4 * * * /usr/bin/find /tmp -name 'cache_*' -mtime +5 -exec rm {} \; > /dev/null 2>&1
       0 4 * * * /usr/bin/find /kolab/var/kolab/www/client/tmp -name 'horde_cache*' -mtime +5 -exec rm {} \; > /dev/null 2>&1
       0 4 * * * /usr/bin/find /kolab/var/kolab/www/client/tmp -name 'sess_*' -mtime +5 -exec rm {} \; > /dev/null 2>&1
       0 4 * * * /usr/bin/find /kolab/var/kolab/www/client/tmp -name 'kolab_cache*' -mtime +5 -exec rm {} \; > /dev/null 2>&1
       0 4 * * * /usr/bin/find /kolab/var/kolab/www/client/tmp -name 'impatt*' -mtime +5 -exec rm {} \; > /dev/null 2>&1
       0 4 * * * /usr/bin/find /kolab/var/kolab/www/fbview/tmp -name 'sess_*' -mtime +5 -exec rm {} \; > /dev/null 2>&1
       0 4 * * * /usr/bin/find /kolab/var/kolab/www/fbview/tmp -name 'kolab_cache*' -mtime +5 -exec rm {} \; > /dev/null 2>&1
       0 4 * * * /usr/bin/find /kolab/var/kolab/www/fbview/tmp -name 'horde_cache*' -mtime +5 -exec rm {} \; > /dev/null 2>&1
       
       --------------- /var/spool/cron/crontabs/root ---------------

Dieser Einträge suchen in den entsprechenden Verzeichnis nach den entsprechenden File zB "cache_*" und löscht diese aus aus den entsprechenden Verzeichnisse wenn diese älter sind als 5 Tage. Starte den Cronjob neu:

       # svcadm restart cron

Im File "httpd.conf.template" ist per Standard definiert das "reverse lookups" eingeschaltet ist dh. bei jeder Anfrage eines Client versucht Apache2 die IP des Clients aufzulösen um den Hostnamen des Client herauszufinden. Dies ist DNS technisch nicht optimal sowie beeinträchtigt dies die Performance im Horde selber. Um dies zu deaktiveren setze die Variable "HostnameLookups" im File "httpd.conf.template" auf "Off":

       # vi /kolab/etc/kolab/templates/httpd.conf.template
       
       --------------- /var/spool/cron/crontabs/root ---------------
       
       HostnameLookups Off
       
       --------------- /var/spool/cron/crontabs/root ---------------

Um alle Aenderungen im Template zu aktiveren führen folgendes durch:

       # opa /kolab
       # kolabconf -n
       # svcadm restart kolab

NOTE
Wenn innerhalb des Internet Explorers die Seite des Admin als Favorit abgespeichert wird so wird nachträglich in den Favoriten die abgespeicherte Seite mit einem Icon präsentiert. Möchte man sein eigenes Icon hinterlegen so muss folgendes durchgeführt werden:

       # mv favicon.ico /kolab/var/kolab/www/
       # mv /kolab/var/kolab/www/favicon.png /kolab/var/kolab/www/favicon.orig
       # mv /kolab/var/kolab/www/favicon.ico /kolab/var/kolab/www/favicon.png
       # chown kolab:kolab /kolab/var/kolab/www/favicon.png
       # chmod 644 /kolab/var/kolab/www/favicon.png

Damit die Aenderung aktiv wird speicher die Seite nochmals in den Favoriten des IE ab.



von IE das korrekt Icon erscheint beim der Speicherung als Favorit muss das entsprechende "favicon.ico"

Horde Konfig/Manipulationen PHP

PHP loggt im Zusammenhang mit Horde im E_NOTICE Mode dh. da das PHP Log auf "priority" E_ALL steht wird alles geloggt. Das macht Sinn zu Beginn um alles zu überprüfen. Jedoch danach sollte man den Log Level E_NOTICE ausschliessen da dieser nur unnötig das Log File füllt. Um diesen Log Level von PHP zu manipulieren müssen die Aenderungen in Template File von php.ini angegeben werden dh. per Standard ist folgendes definiert:

       # more /kolab/etc/kolab/templates/php.ini.template
       
       error_reporting    = E_ALL
       error_log          = /kolab/var/apache/log/php/php-errors.log

Um nun die E_NOTICE Meldungen auszuschliessen modifiziere das "error_reporting" folgendermassen:

       # vi /kolab/etc/kolab/templates/php.ini.template
       --------------- /kolab/etc/kolab/templates/php.ini.template --------------- 
       
       error_reporting    = E_ALL & ~E_NOTICE
       error_log          = /kolab/var/apache/log/php/php-errors.log
       
       --------------- /kolab/etc/kolab/templates/php.ini.template --------------- 

NOTE
Das bedeutet, er zeigt alle Fehler, aber ohne die E_NOTICE. Es stehen folgende ERROR Levels zur Verfügung:

       E_ALL             - All errors and warnings (doesn't include E_STRICT)
       E_ERROR           - fatal run-time errors
       E_WARNING         - run-time warnings (non-fatal errors)
       E_PARSE           - compile-time parse errors
       E_NOTICE          - run-time notices (these are warnings which often result from a bug in your code, 
                           but it's possible that it was intentional (e.g., using an uninitialized variable 
                           and relying on the fact it's automatically initialized to an empty string)
       E_STRICT          - run-time notices, enable to have PHP suggest changes to your code which will ensure 
                           the best interoperability and forward compatibility of your code
       E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
       E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's initial startup
       E_COMPILE_ERROR   - fatal compile-time errors
       E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
       E_USER_ERROR      - user-generated error message
       E_USER_WARNING    - user-generated warning message
       E_USER_NOTICE     - user-generated notice message

Es sollte auf jedenfall darauf geachtet werden das die folgende Position auf "Off" steht ansonsten werden Fehlermeldungen von PHP dem User auf dem Bildschirm angezeigt und dies ist zu verhindern ansonsten Angreifer event. die nötigen Informationen durch gezielte Angriffe erhalten können:

       display_errors     = off    ; Errors will NOT be displayed

Damit die Aenderung aktiv wird führe folgendes aus:

       # opa /kolab
       # kolabconf -n
       # svcadm restart kolab

Horde Konfig/Manipulationen Mail Attachement

Wenn man in Horde ein Mail erstellt und in dieses Mail ein Attachement zB. ein zip File anhängt ist die Limite per Standard auf 2 MB gesetzt. Wenn man diese Limite erhöhen möchte müssen im php.ini die Werte "post_max_size" sowie "upload_max_filesize" angepasst werden. Die Grösse des Wertes stehen in Zusammenhang mit dem Wert "memory_limit". Dies bedeutet wird ein Attachement angehängt wird dieses direkt ins Memory geladen. Somit muss die grösse des Wertes "memory_limit" um einiges grösser sein als der Wert der unter "post_max_size" sowie "upload_max_filesize" da ansonsten nur ein User ein Attachement hinzufügen kann. Der Wert für "memory_limit" sollte jedoch auch nicht zu gross sein da ansonsten die Gefahr läuft das Memory zu überladen/blockieren. Der Standard Wert von Kolab liegt bei 64 MB. In unserem Beispile wird der Wert des Attachements auf 8 MB gesetzt ( 8 X 8 MB = 64 MB). Dazu muss das Template File unter Kolab für php.ini modifziert werden:

        # vi /kolab/etc/kolab/templates/php.ini.template
       --------------- /kolab/etc/kolab/templates/php.ini.template --------------- 
       
       memory_limit        = 64M    ; Maximum amount of memory a script may consume
       post_max_size       = 8M     ; Maximum amount of POST data accepted
       upload_max_filesize = 8M     ; Maximum amount of UPLOAD data accepted
       
       --------------- /kolab/etc/kolab/templates/php.ini.template --------------- 

Damit die Modifizierung wirksam wird muss folgendes ausgeführt werden:

       # opa /kolab
       # kolabonf -n
       # svcadm restart kolab

NOTE
Der Wert der Attachements steht ebenfalls im Zusammenhang mit dem maximalen Wert eines Mails das in Postfix Template konfiguriert wird dh. "message_size_limit" (/kolab/etc/kolab/templates/main.cf.template). Ist dieser Wert kleiner als die Werte "post_max_size" sowie "upload_max_filesize" kann das Mail nicht mehr übermittelt werden.

Horde Konfig/Manipulationen Login Seite

Nachfolgend noch einige Angaben betreffend Layout Veraenderung der Login Seite von Horde!

     Das Logo das auf der Login Seite von Horde aufgefuehrt ist befindet sich im folgenden Verzeichnis:
       # cp -p /opt/kolab/var/kolab/www/client/themes/silver/graphics/horde-power1.png \
       /opt/kolab/var/kolab/www/client/themes/silver/graphics/horde-power1.png.orig
       
       # cp -p /opt/kolab/var/kolab/www/client/themes/tango-blue/graphics/horde-power1.png  \
       /opt/kolab/var/kolab/www/client/themes/tango-blue/graphics/horde-power1.png.orig
       
       # cp -p /opt/kolab/var/kolab/www/client/themes/graphics/horde-power1.png \
       /opt/kolab/var/kolab/www/client/themes/graphics/horde-power1.png.orig
       
       
       # cp -p /opt/kolab/var/kolab/www/fbview/themes/graphics/horde-power1.png  \
       /opt/kolab/var/kolab/www/fbview/themes/graphics/horde-power1.png.orig
       
       # cp -p /opt/kolab/var/kolab/www/fbview/themes/tango-blue/graphics/horde-power1.png  \
       /opt/kolab/var/kolab/www/fbview/themes/tango-blue/graphics/horde-power1.png.orig
       
       # cp -p /opt/kolab/var/kolab/www/fbview/themes/silver/graphics/horde-power1.png  \
       /opt/kolab/var/kolab/www/fbview/themes/silver/graphics/horde-power1.png.orig

Um auf der Login Seite den Text "Welcome to Horde" abzuaender muss folgende Position im folgenden File manipuliert werden:

       # vi /kolab/var/kolab/www/client/config/registry.php
       
       --------------- /kolab/var/kolab/www/client/config/registry.php --------------- 
       
           'name' => _("MYDOMAIN"),
       
       --------------- /kolab/var/kolab/www/client/config/registry.php --------------- 

NOTE
In der Zukunft sollte diese Konfiguration im folgenden File durchgeführt werden und nachträglich mit "kolabconf -n" aktiviert werden:

       /opt/kolab/etc/kolab/templates/webclient-config_registry.php.template

Veraendere nur die Position "Horde" zB zu "MYDOMAIN". Die Angaben "Welcome to" ist nicht Bestandteil dieser Position und sollte auch nicht abgeandert werden denn diese wird je nach "default" Sprache des Browsers automatisch in der richtigen Sprache dargestellt.

Auf der Login Seite von Horde stehen dem User per Standard 3 verschiedene "Modus" zur Verfügung:

       Traditionell
       Dynamisch
       Minimalistisch

Der Modus "Traditionell" ist auf jedenfall zu empfehlen da "Dynamisch" nur mit bestimmten Browsern (IE 8) benützt werden kann und der Modus "Minimalistisch" gedacht ist für Mobile Devices. Möchte man aus irgendwelchen Gründen zB den Modus "Dynamisch" nicht mehr zur Verfügung stellen muss das folgende File manipuliert werden:

       # vi /kolab/var/kolab/www/client/imp/login.php
       
       --------------- /kolab/var/kolab/www/client/imp/login.php --------------- 
       /* If DIMP/MIMP are available, show selection of alternate views. */
       $views = array();
       if (!empty($conf['user']['select_view'])) {
           $apps = $registry->listApps(null, true);
           $view_cookie = isset($_COOKIE['default_imp_view'])
               ? $_COOKIE['default_imp_view']
               : ($browser->isMobile() && isset($apps['mimp']) ? 'mimp'
                  : isset($conf['user']['default_view']) ? $conf['user']['default_view'] : 'imp');
           if (isset($apps['dimp']) || isset($apps['mimp'])) {
               $views[] = array('sel' => $view_cookie == 'imp',
                                'val' => 'imp', 'name' => _("Traditional"));
       //        if (isset($apps['dimp'])) {
       //            $views[] = array('sel' => $view_cookie == 'dimp',
       //                             'val' => 'dimp', 'name' => _("Dynamic"));
       //
       //        }
               if (isset($apps['mimp'])) {
                   $views[] = array('sel' => $view_cookie == 'mimp',
                                    'val' => 'mimp', 'name' => _("Minimalist"));
               }
           }
       }
       
       --------------- /kolab/var/kolab/www/client/imp/login.php ---------------

Möchte man die Bezeichnungen der einzelnen Login Felder unbenennen zB anstelle "Username" möchte man "E-Mail Adresse" muessen folgende Files manipuliert werden dh. suche dort in den Files die Positionen "Username" und ersetze diese Positionen mit "E-Mail Adresse":

       # vi /kolab/var/kolab/www/client/templates/login/login.inc
       
       --------------- /kolab/var/kolab/www/client/templates/login/login.inc ---------------
       
       <tr>
           <td class="light rightAlign"><?php echo Horde::label('horde_user', _("E-Mail Adresse")) ?> </td>
       
       --------------- /kolab/var/kolab/www/client/templates/login/login.inc ---------------
       # vi /kolab/var/kolab/www/client/imp/templates/login/login.html
       
       --------------- /kolab/var/kolab/www/client/imp/templates/login/login.html ---------------
       
           <tr>
            <td class="light rightAlign"><label for="imapuser"><gettext>E-Mail Adresse</gettext></label></td>
       
       --------------- /kolab/var/kolab/www/client/imp/templates/login/login.html ---------------

Nach diesen Manipulationen kann es vorkommen das die Veränderung für gewisse User nicht sofort zur Verfügung steht und es zu Problemen kommt im Zusammenhang mit dem Cache des Kolab2 Servers. Um diese zu umgehen kann folgendes durchgeführt werden:

       # svcadm disable -t kolab
       
       # rm -rf /tmp/cache_*
       # rm -rf /kolab/var/kolab/www/client/tmp/impatt*
       # rm -rf /kolab/var/kolab/www/client/tmp/sess_*
       # rm -rf /kolab/var/kolab/www/client/tmp/kolab_cache*
       
       # svcadm enable -r kolab

Nun kann über die übliche Login Seite von Horde die Veränderung kontrolliert werden.

Horde Konfig/Manipulationen Standard Werte

Standard Werte der Seiten nach einem User Login koennen im folgenden File manipuliert werden:

       # vi /kolab/var/kolab/www/client/config/prefs.php
       
       --------------- /kolab/var/kolab/www/client/config/prefs.php --------------- 
       
       // user language
       $_prefs['language'] = array(
           'value' => 'de_DE',
           'locked' => false,
           'shared' => true,
           'type' => 'select',
           'escaped' => true,
           'desc' => _("Select your preferred language:")
       
       
       // UI theme
       $_prefs['theme'] = array(
           'value' => 'bluewhite',
           'locked' => false,
           'shared' => true,
           'type' => 'select',
           'desc' => _("Select your color scheme.")
       
       
       $_prefs['sidebar_width'] = array(
           'value' => 220,
           'locked' => false,
           'shared' => false,
           'type' => 'number',
           'desc' => sprintf(_("Width of the %s menu on the left (takes effect on next log-in):"), $GLOBALS['
       registry']->get('name', 'horde'))
       );
       
       
       $_prefs['menu_refresh_time'] = array(
           'value' => 300,
           'locked' => false,
           'shared' => true,
           'type' => 'enum',
           'enum' => array(0 => _("Never"),
                           30 => _("Every 30 seconds"),
                           60 => _("Every minute"),
                           120 => _("Every 2 minutes"),
                           300 => _("Every 5 minutes")),
           'desc' => _("Refresh Dynamic Menu Elements:")
       
       // Login/Maintenance Tasks preferences
       
       // To disable maintenance entirely, set 'value' = false and
       // 'locked' = true for all of these. To just turn it off by default,
       // set 'value' false for do_maintenance.
       // perform maintenance operations?
       $_prefs['do_maintenance'] = array(
           'value' => false,
           'locked' => true,
           'shared' => true,
           'type' => 'checkbox',
           'desc' => _("Perform maintenance operations on login?"),
           'help' => 'prefs-do_maintenance');
       
       --------------- /kolab/var/kolab/www/client/config/prefs.php --------------- 

NOTE
In der Zukunft sollte diese Konfiguration im folgenden File durchgeführt werden und nachträglich mit "kolabconf -n" aktiviert werden:

       /opt/kolab/etc/kolab/templates/webclient-config_prefs.php.template

Horde Konfig/Manipulationen zusätzliche Themes

Horde beinhaltet verschiedenen Layouts auch Themes genannt. Es gibt die Moeglichkeit diese auch manuell nachzuinstallieren dh. zB WPS-Sober. Um dies durchzufuehre fuehre folgendes durch:

       Downloade WPS-Sober von folgender Seite:
       
       http://www.w8.se/horde
       
       Danach transferiere das File "wps_sober.tar.gz" auf den Server auf dem Kolab2 mit Horde 
       installiert ist. Nun gehe folgendermassen vor:
       
       # gzip -dc wps_sober.tar.gz | tar xvf -
       # chown -R kolab-n:kolab-n wps_sober
       # rm wps_sober/README.txt
       # rm wps_sober/nuvola_graphics.txt
       # rm wps_sober/license.txt
       
       # cp -Rp wps_sober/* /kolab/var/kolab/www/client/themes/
       
       Aus irgendwelchen Gruenden fehlen im Horde WebInterface einige Icons unter Administration 
       sowie erscheint ein Logo von WPS-Sober. Um die fehlenden Logos bereitzustellen sowie das 
       WPS-Sober Logo zu entfernen gehe folgendermassen vor:
       
       # cp -p /kolab/var/kolab/www/client/themes/wps_sober/graphics/design_by.gif \
       /kolab/var/kolab/www/client/themes/wps_sober/graphics/design_by.gif.orig
       
       # echo > /kolab/var/kolab/www/client/themes/wps_sober/graphics/design_by.gif
       
       # cp -p /kolab/var/kolab/www/client/imp/themes/wps_sober/graphics/empty_trash.png \
       /kolab/var/kolab/www/horde/imp/themes/wps_sober/graphics/empty_spam.png
       
       # cp -p /kolab/var/kolab/www/client/themes/wps_sober/graphics/alerts/warning.png \
       /kolab/var/kolab/www/horde/themes/wps_sober/graphics/alerts/alarm.png
       
       # cp -p /kolab/var/kolab/www/client/themes/wps_sober/graphics/data.png \
       /kolab/var/kolab/www/horde/themes/wps_sober/graphics/datatree.png
       
       # cp -p /kolab/var/kolab/www/client/imp/themes/wps_sober/graphics/addressbook-blue.png \
       /kolab/var/kolab/www/horde/imp/themes/wps_sober/graphics/addressbook_browse.png
       
       # touch /kolab/var/kolab/www/client/imp/themes/wps_sober/graphics/loading.gif
       # chown kolab-n:kolab-n /kolab/var/kolab/www/client/imp/themes/wps_sober/graphics/loading.gif

Nun kann das Theme WPS-Sober im Horde Interface unter "Einstellungen > Allgmeine Einstellungen" im Menuepunkt "Anzeige-Einstellungen" geandert werden dh. "++ WPS - sober ++" erscheint nun innerhalb der Farbschemas. Dieses Theme wurde von Univention hergestellt und ist am WPS-Sober angelehnt beinhaltet jedoch einige zusaetzliche Modifikationen. Um das Theme nachzuinstallierenfuehre folgendes durch:

       Downloade Univention von folgender Seite:
       
       http://download.univention.de/download/themes/horde/
       
       Danach transferiere das File "univention.tar.gz" auf den Server auf dem Kolab2 mit Horde 
       installiert ist. 
       
       Nun gehe folgendermassen vor:
       
       # gzip -dc univention.tar.gz | tar xvf -
       # chown -R kolab-n:kolab-n univention
       # rm univention/README.txt
       # rm univention/nuvola_graphics.txt
       # rm univention/license.txt
       
       # cp -Rp univention/* /kolab/var/kolab/www/horde/
       
       Auch bei diesem Theme fehlen aus irgendwelchen Gruenden im Horde WebInterface einige Icons 
       unter Administration. Um die fehlenden Logos bereitzustellen gehe folgendermassen vor:
       
       # cp -p /kolab/var/kolab/www/client/themes/univention/graphics/data.png \
       /kolab/var/kolab/www/client/themes/univention/graphics/datatree.png
       # cp -p /kolab/var/kolab/www/client/themes/univention/graphics/alerts/warning.png \
       /kolab/var/kolab/www/client/themes/univention/graphics/alerts/alarm.png
       
       # cp -p /kolab/var/kolab/www/client/imp/themes/univention/graphics/empty_trash.png \
       /kolab/var/kolab/www/horde/imp/themes/univention/graphics/empty_spam.png
       
       # touch /kolab/var/kolab/www/client/imp/themes/univention/graphics/loading.gif
       # chown kolab-n:kolab-n /kolab/var/kolab/www/client/imp/themes/univention/graphics/loading.gif
       
       # touch /kolab/var/kolab/www/client/mnemo/themes/univention/graphics/az.png
       # chown kolab-n:kolab-n /kolab/var/kolab/www/client/mnemo/themes/univention/graphics/az.png

Nun kann das Theme Univention im Horde Interface unter "Einstellungen > Allgmeine Einstellungen" im Menuepunkt "Anzeige-Einstellungen" geandert werden dh. "++ Univention ++" erscheint nun innerhalb der Farbschemas.

Horde Konfig/Manipulationen IMP

IMP ist der Bestandteil von Horde der für die Email verarbeitung zuständig ist. Wenn in der Standard Konfig über Horde oder eben IMP ein Email gesendet wird so erscheint in der Fussnote des Emails beim Empfänger des Emails folgendes:

       ----------------------------------------------------------------
       This message was sent using IMP, the Internet Messaging Program.

Möchte man diese Nachricht manipuliere oder verhindern muss das folgende File manipuliert werden:

       /opt/kolab/var/kolab/www/client/imp/config/trailer.txt

Dieses File beinhaltet die oben abgebildete Fussnote. Das File sollte nicht gelöscht werden. Das File darf keine PHP oder Script Anweisungen enthalten und ist als reines Text File zu betrachten. Für die Manipulation führe folgendes durch:

       # cp -p /opt/kolab/var/kolab/www/client/imp/config/trailer.txt /opt/kolab/var/kolab/www/client/imp/config/trailer.txt.orig
       # vi /opt/kolab/var/kolab/www/client/imp/config/trailer.txt
       
       --------------- /opt/kolab/var/kolab/www/client/imp/config/trailer.txt --------------- 
       
       
       
       --------------- /opt/kolab/var/kolab/www/client/imp/config/trailer.txt ---------------

Die Aenderung wird sofort aktiv dh. keine Server etc. müssen neu gestartet werden.

Horde Konfig/Manipulationen Logging Mode

Das Logging von Horde wird im folgenden File manipuliert:

       # more /kolab/var/kolab/www/client/config/conf.php

In diesem File ist per Standard folgendes definiert:

       $conf['log']['priority'] = PEAR_LOG_DEBUG;
       $conf['log']['ident'] = 'HORDE';
       $conf['log']['params'] = array();
       $conf['log']['name'] = dirname(__FILE__) . '/../log/horde.log';
       $conf['log']['params']['append'] = true;
       $conf['log']['type'] = 'file';
       $conf['log']['enabled'] = true;

Um die Priorität des Logging herabzusetzen muss die folgende Position abgeändert werden:

       $conf['log']['priority'] = PEAR_LOG_DEBUG;

Dabei stehen folgende "priority" zur Verfügung:

       LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG

NOTE
Die "priority" ist so zu verstehen, dass jeder Log Level in dieser oben abgebildeter Reihenfolge den zuvor erwähnten Log Level beinhaltet dh LOG_ALERT beinhaltet ebenfalls LOG_EMERG und LOG_DEBUG alle Log Levels!

Das Log kann auch durch folgende Position durch Angabe von "false" ausgeschaltet werden:

       $conf['log']['enabled'] = false;

Somit könnte die Log Konfiguration folgendermassen aussehen:

       // $conf['log']['priority'] = PEAR_LOG_DEBUG;
       $conf['log']['priority'] = PEAR_LOG_ERR;
       $conf['log']['ident'] = 'HORDE';
       $conf['log']['params'] = array();
       $conf['log']['name'] = dirname(__FILE__) . '/../log/horde.log';
       $conf['log']['params']['append'] = true;
       $conf['log']['type'] = 'file';
       // $conf['log']['enabled'] = true;
       $conf['log']['enabled'] = false;

Obwohl man die Log Option generell für Horde auf "false" setzt wird dennoch geloggt im Horde Client Bereich dh. möchte man das Log für den Client komplett auschalten muss folgende Positionen auf "false" gesetzt werden:

       # vi /kolab/var/kolab/www/client/lib/core.php
       
       --------------- /kolab/var/kolab/www/client/lib/core.php --------------- 
       
       /* If the Horde Framework packages are not installed in PHP's global
        * include_path, you must add an ini_set() call here to add their location to
        * the include_path. */
       ini_set('include_path', dirname(__FILE__) . PATH_SEPARATOR . dirname(__FILE__) . '/../pear');
       // ini_set('log_errors', true);
       ini_set('log_errors', false);
       ini_set('display_errors', '0');
       ini_set('error_log', dirname(__FILE__) . '/../log/php-errors.log');
       
       --------------- /kolab/var/kolab/www/client/lib/core.php ---------------

Das Freebusy Log File sowie das Kolabfilter Log File stehen ebenfalls im Zusammenhang mit Horde und die Logging Optionen können folgendermassen manipuliert werden:

       # vi /kolab/etc/kolab/templates/resmgr.conf.template
       
       --------------- /kolab/etc/kolab/templates/resmgr.conf.template ---------------
       
       /* Horde::Log configuration
        *
        * PEAR_LOG_INFO is the suggested setting for tracking what happens to
        * your mails in the filters.
        */
       // $conf['log']['enabled']          = true;
       $conf['log']['enabled']          = false;
       // $conf['log']['priority']         = PEAR_LOG_DEBUG; // Leave this on DEBUG for now. We just restructured the package...
       $conf['log']['priority']         = PEAR_LOG_ERR;
       $conf['log']['type']             = 'file';
       $conf['log']['name']             = '/kolab/var/kolab-filter/log/filter.log';
       $conf['log']['ident']            = 'Kolab Filter';
       $conf['log']['params']['append'] = true;
       
       --------------- /kolab/etc/kolab/templates/resmgr.conf.template ---------------

NOTE
Es ist nicht zu empfehlen das Kolabfilter Log File komplett auszuschalten!

       # vi /kolab/etc/kolab/templates/freebusy.conf.template
       
       --------------- /kolab/etc/kolab/templates/freebusy.conf.template ---------------
       
       /* Horde::Log configuration */
       // $conf['log']['enabled']          = true;
       $conf['log']['enabled']          = false;
       // $conf['log']['priority']         = PEAR_LOG_DEBUG; // Leave this on DEBUG for now. We just restructured the package...
       $conf['log']['priority']         = PEAR_LOG_ERR;
       $conf['log']['type']             = 'file';
       $conf['log']['name']             = '/kolab/var/kolab-freebusy/log/freebusy.log';
       $conf['log']['ident']            = 'Kolab Free/Busy';
       $conf['log']['params']['append'] = true;
       
       --------------- /kolab/etc/kolab/templates/freebusy.conf.template ---------------

Da es sich bei diesen Files um sogenannte "templates" Files handelt muss die Konfig aktualisiert werden:

       # opa /kolab
       # kolabconf -n
       # svcadm restart kolab

NOTE
Um den Logging Mode des Apache zu manipulieren setzen den Log Level in folgenden File entsprechend für mehr Logging höher oder weniger Logging tiefer:

       # vi /kolab/etc/kolab/kolab.globals
       
       --------------- /kolab/etc/kolab/kolab.globals ---------------
       
       log_level : 2
       
       --------------- /kolab/etc/kolab/kolab.globals ---------------

Danach muss Kolab neu gestartet werden:

       # svcadm restart kolab

Horde Konfig/Manipulationen SyncML

In Kolab2 Server (ab V2.2.2) wurde SyncML integriert dh. dieser Web basierende Client ist Bestandteil von Horde und bietet die Möglichkeit eine Synchronisation mit Mobile Devices durchzuführen. Eine Liste der Unterstützten Devices und weiteren Informationen findet man auf folgender Seite:

       http://wiki.kolab.org/index.php/Web_Client_SyncML

NOTE
Der erwähnte "Double Sync Patch" auf der obenerwähnten Seite ist bereits integriert in der V2.2.3!

Hier eine kurze Uebersicht über die getesteten und unterstützten Mobile Devices (Stand 13. Februar 2010):

Device / Software Connector License How To Supported Features
Microsoft Outlook 2007 Funambol Outlook Client (Version 7.2.1) AGPLv3 (How Sync Outlook 2007 via the Funambol SyncML Client) Calender, Contacts, Tasks, Notes
Mozilla Thunderbird Funambol Thunderbird Client (Version 0.9.1) GPLv2 (How Sync Thunderbird via the Funambol SyncML Client) Calendar, Contacts, Tasks
Nokia E71 Internal Synchronisation Application (How to sync Nokia E71) Calendar (incl. Tasks), Contacts, Notes; beware! and beware!
Nokia E90 Internal Syncronisations (How Sync Nokia E90) Calendar (for the moment)
Blackberry 8310 alias Curve Funambol Blackberry Client (Version 7.2) (How Sync Blackberry 8310) Calendar, Contacts
IPhone SyncML plug-in from Synthesis synthesis.ch The iPhone can synchronise calendars, contacts and todo's with Kolab 2.2.3. Didn't try shared resources yet.
IPhone kolabiphone by Stefan Zimmermann sourceforge.net The iPhone can directly use contacts on the Kolab 2.x server. Reads Kolab.xml

Horde Konfig/Manipulationen Problem Meldung

Im Horde Interface gibt es einen Button der mit "Probleme!" gekennzeichnet ist. Wenn der User diesen Button anklickt hat er die Möglichkeit dem System Administrator einen Problembericht zu senden (Kurznachricht). An wer die Nachricht gesendet wird wird über folgende Position im folgenden Konfig File gesteuert:

       # vi /kolab/var/kolab/www/client/config/conf.php
       
       --------------- /kolab/var/kolab/www/client/config/conf.php --------------- 
       
       $conf['problems']['email'] = 'postmaster@comcept.ch';
       $conf['problems']['maildomain'] = 'comcept.ch';
       $conf['problems']['tickets'] = false;
       $conf['problems']['attachments'] = true;
       
       --------------- /kolab/var/kolab/www/client/config/conf.php --------------- 

NOTE
Die oben abgebildete Konfiguration steht per Standard auf:

       --------------- /kolab/var/kolab/www/client/config/conf.php --------------- 
       
       $conf['problems']['email'] = 'webmaster@example.com';
       $conf['problems']['maildomain'] = 'example.com;
       $conf['problems']['tickets'] = false;
       $conf['problems']['attachments'] = true;
       
       --------------- /kolab/var/kolab/www/client/config/conf.php --------------- 

Wird die Position nicht verändert und man belässt die Position im Standard werden die Nachrichten an folgenden Empfänger gesendet:

       postmaster@[Kolab2 Domaine]

Um alles zu Aktualisieren starte Kolab2 neu:

       # svcadm restart kolab

Horde Konfig/Manipulationen Maintenance

Es gibt bei Horde einen sogenanten "Maitenance" Mode dh. wenn der User sich einloggt wird diese Funktion ausgeführt um des Users "Trash" sowie "Sent" Folder zu löschen resp. aufzuräumen. Diese Funktion kann gesteuert werden über folgende Position:

       # vi /kolab/var/kolab/www/client/config/prefs.php
       
       --------------- /kolab/var/kolab/www/client/config/prefs.php ---------------
       
       // Login/Maintenance Tasks preferences
       
       // To disable maintenance entirely, set 'value' = false and
       // 'locked' = true for all of these. To just turn it off by default,
       // set 'value' false for do_maintenance.
       // perform maintenance operations?
       $_prefs['do_maintenance'] = array(
           'value' => true,
           'locked' => false,
           'shared' => true,
           'type' => 'checkbox',
           'desc' => _("Perform maintenance operations on login?"),
           'help' => 'prefs-do_maintenance');
       
       // last time maintenance was run.
       // value is a UNIX timestamp of the last time maintenance ran for the user.
       $_prefs['last_maintenance'] = array(
           'value' => 0,
           'locked' => false,
           'shared' => true,
           'type' => 'implicit'
       );
       
       // confirm when doing maintenance operations? If false, they will
       // be performed with no input from/check with the user.
       $_prefs['confirm_maintenance'] = array(
           'value' => true,
           'locked' => false,
           'shared' => true,
           'type' => 'checkbox',
           'desc' => _("Ask for confirmation before doing maintenance operations?"),
           'help' => 'prefs-confirm_maintenance');
       
       // End Login/Maintenance preferences
       
       --------------- /kolab/var/kolab/www/client/config/prefs.php ---------------

Der "Maintenace" Mode ist per Standard eingeschaltet. Will man nun diese Funktion generell abschalten jedoch den Usern die Möglichkeit geben diese Funktion dennoch zu nutzen muss der Wert "value" auf "0" gesetzt werden:

       # vi /kolab/var/kolab/www/client/config/prefs.php
       
       --------------- /kolab/var/kolab/www/client/config/prefs.php ---------------
       
       // Login/Maintenance Tasks preferences
       
       // To disable maintenance entirely, set 'value' = false and
       // 'locked' = true for all of these. To just turn it off by default,
       // set 'value' false for do_maintenance.
       // perform maintenance operations?
       $_prefs['do_maintenance'] = array(
           'value' => 0,
           'locked' => false,
           'shared' => true,
           'type' => 'checkbox',
           'desc' => _("Perform maintenance operations on login?"),
           'help' => 'prefs-do_maintenance');
       
       // last time maintenance was run.
       // value is a UNIX timestamp of the last time maintenance ran for the user.
       $_prefs['last_maintenance'] = array(
           'value' => 0,
           'locked' => false,
           'shared' => true,
           'type' => 'implicit'
       );
       
       // confirm when doing maintenance operations? If false, they will
       // be performed with no input from/check with the user.
       $_prefs['confirm_maintenance'] = array(
           'value' => true,
           'locked' => false,
           'shared' => true,
           'type' => 'checkbox',
           'desc' => _("Ask for confirmation before doing maintenance operations?"),
           'help' => 'prefs-confirm_maintenance');
       
       // End Login/Maintenance preferences
       
       --------------- /kolab/var/kolab/www/client/config/prefs.php ---------------

Um die Funktion der "Maintenance" komplett abzuschalten so dass die User keine Möglichkeit mehr haben diese wieder zu deaktivieren setze den Wert "value" auf "0" sowie den Wert "locked" auf "true":

       # vi /kolab/var/kolab/www/client/config/prefs.php
       
       --------------- /kolab/var/kolab/www/client/config/prefs.php ---------------
       
       // Login/Maintenance Tasks preferences
       
       // To disable maintenance entirely, set 'value' = false and
       // 'locked' = true for all of these. To just turn it off by default,
       // set 'value' false for do_maintenance.
       // perform maintenance operations?
       $_prefs['do_maintenance'] = array(
           'value' => 0,
           'locked' => true,
           'shared' => true,
           'type' => 'checkbox',
           'desc' => _("Perform maintenance operations on login?"),
           'help' => 'prefs-do_maintenance');
       
       // last time maintenance was run.
       // value is a UNIX timestamp of the last time maintenance ran for the user.
       $_prefs['last_maintenance'] = array(
           'value' => 0,
           'locked' => false,
           'shared' => true,
           'type' => 'implicit'
       );
       
       // confirm when doing maintenance operations? If false, they will
       // be performed with no input from/check with the user.
       $_prefs['confirm_maintenance'] = array(
           'value' => true,
           'locked' => false,
           'shared' => true,
           'type' => 'checkbox',
           'desc' => _("Ask for confirmation before doing maintenance operations?"),
           'help' => 'prefs-confirm_maintenance');
       
       // End Login/Maintenance preferences
       
       --------------- /kolab/var/kolab/www/client/config/prefs.php ---------------

Starte die Services von Kolab2 neu:

       # svcadm restart kolab

Horde Konfig/Manipulationen Global Addressbook

Das "Global Addressbook" steht jedem User in Horde unter den Addressbüchern zur verfügung. Dies bedeutet der User hat die Möglichkeit unter folgenden Punkt das Adressbuch in Horde zu wählen:

       Einstellungen > Adressbuch > Adressbücher

Dort steht folgendes zur Verfügung:

       Global Adressbuch
       Kontakte

Wird das "Globale Adressbuch" gewählt so sieht der user unter diesem "Globalen Adressbuch" sämtliche erfassten User. Dieses "Globale Adressbuch" wird aus dem lokalen LDAP Verzeichnis als "read-only" Source herausgelesen. Wenn mehrere Domainen auf dem Kolab Server gehostet werden so werden auch diesen zusätzlichen Domainen/User unter dem "Globalen Adressbuch" angzeigt.

Wird "Kontake" gewählt und der User benutzt den Kolab Server NICHT im Zusammenhang mit einem Outlook Plug-In wie Toltec gilt dieses Adressbuch "Kontakt" als lokales Adressbuch uns steht nur dementsprechend dem zugehörigen User zur Verfügung. Wird ein Outlook Plug-In wie Toltec benutzt so werden unter "Kontakte" die Kontakte aufgeführt die vom Outlook anhand des Plug-In's Toltec auf dem Server synchronisiert werden. Das Adressbuch "Kontakte" gilt als "read-write" Source egal ob es das lokale Adressbuch oder die "Kontakte" aus Outlook benutzt werden.

Nun möchte man das "Global Adressbuch" nicht mehr zur Verfügung stellen da mehrere Domainen auf dem Kolab gehostet werden und die einzelnen Domainen nichts miteinander zu tun haben kann dieses "Global Adressbuch" komplett entfernt werden. Dazu muss folgendes File auf folgender Position (kolab_global) modifiziert werden:

       # vi /kolab/var/kolab/www/client/turba/config/sources.php
       
       --------------- /kolab/var/kolab/www/client/turba/config/sources.php ---------------
       
               /* A global address book for a Kolab Server. This is typically a
                * read-only public directory, stored in the default Kolab LDAP server.
                * The user accessing this should have read permissions to the shared
                * directory in LDAP. */
       /*        $cfgSources['kolab_global'] = array( */
                    array(
                   'title' => _("Global Address Book"),
                   'type' => 'ldap',
                   'params' => array(
                       'server' => $_kolab_server,
                       'port' => $GLOBALS['conf']['kolab']['ldap']['port'],
                       'tls' => false,
                       'root' => $GLOBALS['conf']['kolab']['ldap']['basedn'],
                       'sizelimit' => 200,
                       'dn' => array('cn'),
                       'objectclass' => array(
                           'inetOrgPerson'
       
       --------------- /kolab/var/kolab/www/client/turba/config/sources.php ---------------

Danach sollte die Aenderung sofort wirksam sein und allen Accounts steht beim nächsten Login nur noch das lokale Adressbuch "Kontakt" zur Verfügung.

Freebusy Konfig/Manipulationen

Freebusy Konfig/Manipulationen Login Seite

Freebusy besitzt ein "fbview" WebInterface, dass ueber "Kolab Mgmt > Service" aktiviert oder deaktivert werden kann. Um auf der Login Seite den Text "Welcome to Horde" abzuaender muss folgende Position im folgenden File manipuliert werden:

       # vi /kolab/var/kolab/www/fbview/config/registry.php
       
       --------------- /kolab/var/kolab/www/fbview/config/registry.php --------------- 
       
           'name' => _("MYDOMAIN"),
       
       --------------- /kolab/var/kolab/www/fbview/config/registry.php --------------- 

Veraendere nur die Position "Horde" zB zu "MYDOMAIN". Die Angaben "Welcome to" ist nicht Bestandteil dieser Position und sollte auch nicht abgeandert werden denn diese wird je nach "default" Sprache des Browsers automatisch in der richtigen Sprache dargestellt.

Freebusy Konfig/Manipulationen Standard Werte

Standard Werte der Seiten nach einem User Login koennen im folgenden File manipuliert werden:

       # vi /kolab/var/kolab/www/fbview/config/prefs.php
       
       --------------- /kolab/var/kolab/www/fbview/config/prefs.php --------------- 
       
       // user language
       $_prefs['language'] = array(
           'value' => 'de_DE',
           'locked' => false,
           'shared' => true,
           'type' => 'select',
           'escaped' => true,
           'desc' => _("Select your preferred language:")
       
       // what day should be displayed as the first day of the week?
       $_prefs['first_week_day'] = array(
           'value' => '1',
           'locked' => false,
           'shared' => true,
           'type' => 'enum',
           'desc' => _("Which day would you like to be displayed as the first day of the week?"),
           'enum' => array('0' => _("Sunday"),
                           '1' => _("Monday"))
       
       
       // UI theme
       $_prefs['theme'] = array(
           'value' => 'bluewhite',
           'locked' => false,
           'shared' => true,
           'type' => 'select',
           'desc' => _("Select your color scheme.")
       
       
               
       $_prefs['sidebar_width'] = array(
           'value' => 220,
           'locked' => false,
           'shared' => false,
           'type' => 'number',
           'desc' => sprintf(_("Width of the %s menu on the left:"), $GLOBALS['registry']->get('name', 'horde'))
       );
       
       $_prefs['menu_refresh_time'] = array(
           'value' => 300,
           'locked' => false,
           'shared' => true,
           'type' => 'enum',
           'enum' => array(0 => _("Never"),
                           30 => _("Every 30 seconds"),
                           60 => _("Every minute"),
                           120 => _("Every 2 minutes"),
                           300 => _("Every 5 minutes")),
           'desc' => _("Refresh Dynamic Menu Elements:")
       );
       
       
       
       // Login/Maintenance Tasks preferences
       
       // To disable maintenance entirely, set 'value' = false and
       // 'locked' = true for all of these. To just turn it off by default,
       // set 'value' false for do_maintenance.
       // perform maintenance operations?
       $_prefs['do_maintenance'] = array(
           'value' => false,
           'locked' => true,
           'shared' => true,
           'type' => 'checkbox',
           'desc' => _("Perform maintenance operations on login?"),
           'help' => 'prefs-do_maintenance');
       
       --------------- /kolab/var/kolab/www/fbview/config/prefs.php ---------------

Freebusy Konfig/Manipulationen Logging Mode

Im Abschnitt Solaris#Horde_Konfig.2FManipulationen_Logging_Mode wurde das Logging generell von Horde deaktiviert. Jedoch der Freebusy Client Log ist dennoch aktiv. Um dieses komplett zu deaktivieren setze im nachfolgenden File "log_errors" auf "false":

       # vi /kolab/var/kolab/www/fbview/lib/core.php
       
       --------------- /kolab/var/kolab/www/fbview/lib/core.php --------------- 
       
       /* If the Horde Framework packages are not installed in PHP's global
        * include_path, you must add an ini_set() call here to add their location to
        * the include_path. */
       ini_set('include_path', dirname(__FILE__) . PATH_SEPARATOR . dirname(__FILE__) . '/../pear');
       // ini_set('log_errors', true);
       ini_set('log_errors', false);
       ini_set('display_errors', '0');
       ini_set('error_log', dirname(__FILE__) . '/../log/php-errors.log');
       
       --------------- /kolab/var/kolab/www/fbview/lib/core.php ---------------

Die generelle Logging Funktion von Freebusy wird über dessen "template" File gesteuert (Siehe auch Solaris#Horde_Konfig.2FManipulationen_Logging_Mode ). Um das Logging zu beeinflussen steht folgendes File zur Verfügung:

      # vi /kolab/etc/kolab/templates/freebusy.conf.template
      
      --------------- /kolab/etc/kolab/templates/freebusy.conf.template ---------------
      
      /* Horde::Log configuration */
      // $conf['log']['enabled']          = true;
      $conf['log']['enabled']          = false;
      // $conf['log']['priority']         = PEAR_LOG_DEBUG; // Leave this on DEBUG for now. We just restructured the package...
      $conf['log']['priority']         = PEAR_LOG_ERR;
      $conf['log']['type']             = 'file';
      $conf['log']['name']             = '/kolab/var/kolab-freebusy/log/freebusy.log';
      $conf['log']['ident']            = 'Kolab Free/Busy';
      $conf['log']['params']['append'] = true;
      
      --------------- /kolab/etc/kolab/templates/freebusy.conf.template ---------------

Da es sich bei diesen Files um sogenannte "templates" Files handelt muss die Konfig aktualisiert werden wenn das File manipuliert wird:

      # opa /kolab
      # kolabconf -n
      # svcadm restart kolab

OpenLDAP Konfig/Manipulationen

OpenLDAP Konfig/Manipulationen Zusätzliche Threads

Der OpenLDAP wird per Standard mit 2 Threads ausgeführt. Dies sollte im normal Fall auch genügen. Bei Solaris können jedoch Nachrichten auftreten betreffend OpenLDAP "Can't contact LDAP server" dh. es können Timouts auftreten die zwar keine Auswirkungen haben jedoch die Performance beeinträchtigen. Wenn man die Threads erhöht "kann" (muss aber nicht...) man dieses Problem lösen. Setze die Threads von 2 auf "4":

      # vi /kolab/etc/rc.d/rc.sasl
      
      --------------- /kolab/etc/rc.d/rc.sasl ---------------
      
      #!/kolab/bin/openpkg rc
      ##
      ##  rc.sasl -- Run-Commands
      ##
      
      %config
          sasl_enable="$openpkg_rc_def"
          sasl_authmech="shadow"
          sasl_threads="4"
          sasl_log_prolog="true"
          sasl_log_epilog="true"
          sasl_log_numfiles="10"
          sasl_log_minsize="1M"
          sasl_log_complevel="9"
      
      --------------- /kolab/etc/rc.d/rc.sasl ---------------

Um die Aenderungen zu aktiveren führen folgendes durch:

      # svcadm restart kolab

Dadurch wird ein Stop/Start ausgeführt und man sieht nachträglich in der Prozess Uebersicht 4 Threads und nicht mehr "2":

      # ps -ef | grep saslauthd
          root 29573 29568   0 04:30:47 ?           0:00 /kolab/sbin/saslauthd -a ldap -n 4
          root 29568 19562   0 04:30:47 ?           0:00 /kolab/sbin/saslauthd -a ldap -n 4
          root 29574 29568   0 04:30:47 ?           0:00 /kolab/sbin/saslauthd -a ldap -n 4
          root 29576 29568   0 04:30:47 ?           0:00 /kolab/sbin/saslauthd -a ldap -n 4

OpenLDAP Konfig/Manipulationen Logging Mode

Das Log von OpenLDAP ist auf "none" gesetzt. Will man erreichen das dieses Logging komplett ausgeschaltet wird das nur noch Start sowie Stop geloggt werden setzt man im entsprechenden Template den Loglevel auf "0":

      # vi /kolab/etc/kolab/templates/slapd.conf.template
      
      --------------- /kolab/etc/kolab/templates/slapd.conf.template --------------- 
      
      #loglevel       none
      loglevel        0
      
      --------------- /kolab/etc/kolab/templates/slapd.conf.template --------------- 

Um alle Aenderungen im Template zu aktiveren führen folgendes durch:

      # opa /kolab
      # kolabconf -n
      # svcadm restart kolab

OpenLDAP Konfig/Manipulationen PHP Warning "Invalid DN syntax in"

Wenn man sich die Logs von Kolab genauer anschaut fällt einem folgende Warnung auf:

       --------------- /kolab/var/apache/log/php/php-errors.log ---------------
       
       PHP Warning:  ldap_search() [<a href='function.ldap-search'>function.ldap-search</a>]: Search: Invalid DN syntax in /opt/kolab/var/kolab/php/admin/include/ldap.class.php on line 204
       PHP Warning:  ldap_get_entries(): supplied argument is not a valid ldap result resource in /opt/kolab/var/kolab/php/admin/include/ldap.class.php on line 424
       
       --------------- /kolab/var/apache/log/php/php-errors.log ---------------

Diese Warnung stammt vom PHP Log und wird ausgelöst durch einen nicht korrekten Search String für "LDAP escaping" durch den User admin dh. diese Fehlermeldung erscheint jedesmal wenn der Admin einen User erfasst, löscht, modifiziert etc. Das Problem wurde durch einen kleinen Patch gelöst:

       http://kolab.org/pipermail/kolab-commits/2010q1/011956.html

Um den Patch anzuwenden modifiziere folgendes File in folgendem Bereich:

       # cp -p /kolab/var/kolab/php/admin/include/ldap.class.php  /kolab/var/kolab/php/admin/include/ldap.class.php.orig
       
       # vi /kolab/var/kolab/php/admin/include/ldap.class.php
       
       --------------- /kolab/var/kolab/php/admin/include/ldap.class.php ---------------
       
       
          411    // Count the number of occurences of an email address
          412    // in users' mail and alias attributes and in dist. lists.
          413    // This can be used to check for uniqueness etc.
          412    // in users' mail and alias attributes and in dist. lists.
          413    // This can be used to check for uniqueness etc.
          414    function countMail( $base, $mail , $excludedn=false ) {
          415          // First count users
          416          $filter = '(|(|(mail='.$this->escape($mail).')
          417                         (alias='.$this->escape($mail).')
          418                       )
          419                       (uid='.$this->escape($mail).')
          420                     )';
          421  //      $res = $this->search( $this->dn_escape($base), $filter, array( 'dn' ) );
          422          $res = $this->search( $base, $filter, array( 'dn' ) );
          423          $count = 0;
          424
          425          $entries = ldap_get_entries( $this->connection, $res );
          426          if( $excludedn ) {
          427            for ( $i = 0; $i < count( $entries ); $i++ ) {
          428  //              if( is_null( $entries[$i] ) ) continue;
          429                  if( !isset($entries[$i]) || is_null( $entries[$i] ) ) continue;
          430                  if( KolabLDAP::unescape_dn_value($entries[$i]['dn']) == KolabLDAP::unescape_dn_value($excludedn) ) continue;
          431                  debug("found ".$entries[$i]['dn'] );
          432                  $count++;
       
       --------------- /kolab/var/kolab/php/admin/include/ldap.class.php ---------------

Danach erscheint die Warnung nicht mehr wenn über den Admin ein User erfasst, modifiziert etc. wird.

OpenLDAP Konfig/Manipulationen "tmpfs File System" /dev/shm

Schaut man sich das File "/kolab/etc/kolab/templates/DB_CONFIG.slapd.template" fällt einem auf das dort folgender Eintrag existiert:

       set_tmp_dir /dev/shm

Will man diesen Device überprüfen /dev/shm existiert dieser natürlich nicht auf Solaris denn dieser Eintrag ist Linux spezifisch. Dieser Eintrag gibt an wo das sogenannte "real-time shared memory operations" durchgeführt werden soll. Diese Operations werden angesteuert durch Anweisungen in der Programmierung wie shm_open() oder shm_unlink() usw. Dieser Device oder File System wird auch "tmpfs" genannt. Für Solaris stehen folgende "tmpfs" zur Verfügung:

       /tmp
       /var/run
       /etc/svc/volatile

Das schnellste "tmpfs" ist das "/tmp". Somit werden wir dieses benutzen um die genannte Position umzukonfigurieren:

       # vi /kolab/etc/kolab/templates/DB_CONFIG.slapd.template
       --------------- /kolab/etc/kolab/templates/DB_CONFIG.slapd.template --------------- 
       
       set_cachesize   0       26214400        1
       #set_tmp_dir /dev/shm
       set_tmp_dir /tmp
       
       --------------- /kolab/etc/kolab/templates/DB_CONFIG.slapd.template --------------- 

Danach muss die Kolab Konfig (template) aktualisiert werden sowie Kolab neu gestartet werden:

       # opa /kolab
       # kolabconf -n
       # svcadm restart kolab

OpenLDAP Konfig/Manipulationen typo in "LDAP.pm"

In folgenden File hat sich ein Schreibfehler eingeschlichen dh. anstelle von "()" wurde "{}" benutzt (Kolab issue issue4275). Dies kann mit wenig Aufwand korrigiert werden:

       # cp -p  /opt/kolab/lib/perl/vendor_perl/5.10.0/Kolab/LDAP.pm /opt/kolab/lib/perl/vendor_perl/5.10.0/Kolab/LDAP.pm.orig
       # vi /opt/kolab/lib/perl/vendor_perl/5.10.0/Kolab/LDAP.pm
       
       --------------- /opt/kolab/lib/perl/vendor_perl/5.10.0/Kolab/LDAP.pm ---------------
       
           my $quota = $object->get_value($Kolab::config{$p . '_field_quota'});
           defined($quota) or ($quota = 0);
           my $oldquota = quotaFetch($guid);
           if( $quota != $oldquota ) {
               Kolab::Cyrus::setQuota($cyrus, $uid, $quota*1024, ($p eq 'sf' ? 1 : 0));
               if( $quota == 0 ) {
       #            quotaDelete{$guid};
                   quotaDelete($guid);
               } else {
                   quotaStore($guid, $quota);
               }
           }
           Kolab::log('L', "createObject() done", KOLAB_DEBUG );
       }
       
       --------------- /opt/kolab/lib/perl/vendor_perl/5.10.0/Kolab/LDAP.pm ---------------

Danach starte Kolab neu:

       # svcadm restart kolab

Kolab2 Logs auf einem Blick

Kolab2 ist nicht immer einfach zu troubleshooten dh. speziell weil die logs in verschiedenen Verzeichnisse anzutreffen sind. Gut waere wenn man diese Logs in einem Script vereint und dannn anhand dieses Scriptes Einblick erhaelt auf alle Geschehnisse. Folgendes Script kann dazu benuetzt werden:

       # vi /kolab/opt/scripts/monitor_log.sh
       
       --------------- /kolab/opt/scripts/monitor_log.sh ---------------
       
       #!/bin/sh
          
       tail -f /kolab/var/amavisd/amavisd.log \
       /kolab/var/apache/log/apache-access.log \
       /kolab/var/apache/log/apache-error.log \
       /kolab/var/apache/log/php/php-errors.log \
       /kolab/var/kolab/www/client/log/horde.log \
       /kolab/var/kolab/www/client/log/php-errors.log \
       /kolab/var/clamav/clamd.log \
       /kolab/var/clamav/freshclam.log \
       /kolab/var/postfix/log/postfix.log \
       /kolab/var/imapd/log/master.log \
       /kolab/var/imapd/log/imapd.log \
       /kolab/var/imapd/log/cyr_db.log \
       /kolab/var/imapd/log/cyrmaster.log \
       /kolab/var/imapd/log/pop3d.log \
       /kolab/var/imapd/log/sieve.log \
       /kolab/var/imapd/log/misc.log \
       /kolab/var/imapd/log/lmtpd.log \
       /kolab/var/imapd/log/notifyd.log \
       /kolab/var/kolab-filter/log/filter.log \
       /kolab/var/kolab-filter/log/fatal.log \
       /kolab/var/openldap/openldap.log \
       /kolab/var/sasl/log/saslauthd.log \
       /kolab/var/spamassassin/spamassassin.log \
       /kolab/var/fsl/fsl.log
       
       --------------- /kolab/opt/scripts/monitor_log.sh ---------------

Um das Script zu benuetzen fuehre folgendes aus:

       # /kolab/opt/scripts/monitor_log.sh 

Mit Ctrl + C kann das Script beendet werden.

NOTE
Viele Logs stehen erst nach einem erstmaligen Start von Kolab2 zur Verfügung dh. das unten angegebene Script um die Logs zurückzustellen sollte erst dann benutzt werden wenn die Logs bereits bestehen ansonsten werden dieses Files durch den Befehl "echo" angelegt und haben die falschen Rechte!

Hie und da kommt man in die Situation indem man die Logs gerne zuruecksetzen moechte um wieder frisch einen neue troublesooting Session zu beginnen. Um dies zu bewerkstelligen kann folgendes Script benuetzt werden:

       # vi /kolab/opt/scripts/echo_log.sh
       
       --------------- /kolab/opt/scripts/echo_log.sh ---------------
       
       #!/bin/sh
       
       echo > /kolab/var/amavisd/amavisd.log
               
       echo > /kolab/var/apache/log/apache-access.log
       echo > /kolab/var/apache/log/apache-error.log
       
       echo > /kolab/var/apache/log/php/php-errors.log
       
       echo > /kolab/var/kolab/www/client/log/horde.log
       echo > /kolab/var/kolab/www/client/log/php-errors.log
       
       echo > /kolab/var/clamav/clamd.log
       echo > /kolab/var/clamav/freshclam.log
       
       echo > /kolab/var/postfix/log/postfix.log
       
       echo > /kolab/var/imapd/log/master.log
       echo > /kolab/var/imapd/log/imapd.log
       echo > /kolab/var/imapd/log/cyr_db.log
       echo > /kolab/var/imapd/log/cyrmaster.log
       echo > /kolab/var/imapd/log/pop3d.log
       echo > /kolab/var/imapd/log/sieve.log
       echo > /kolab/var/imapd/log/misc.log
       echo > /kolab/var/imapd/log/lmtpd.log
       echo > /kolab/var/imapd/log/notifyd.log
       
       echo > /kolab/var/kolab-filter/log/filter.log
       echo > /kolab/var/kolab-filter/log/fatal.log
       
       echo > /kolab/var/openldap/openldap.log
       
       echo > /kolab/var/sasl/log/saslauthd.log
       
       echo > /kolab/var/spamassassin/spamassassin.log                
       
       echo > /kolab/var/fsl/fsl.log
       
       --------------- /kolab/opt/scripts/echo_log.sh ---------------

Um das Script auszufuehren fuehre folgendes aus:

       # /kolab/opt/scripts/echo_log.sh 

Durch dieses Script werden nun alle Logs mit "null" ueberschrieben und somit zuerueckgesetzt. Saemtlicher Inhalt der Logs geht verloren!

Kolab2 Postfix Auswertung

Das Postfix Log wird jede Nacht automatisch ausgewertet. Dieses File kann per Mail zugestellt werden dh. wir nehmen fuer diesen Zweck einen "smtpclient" zur Hilfe. Dieser muss jedoch zuerst installiert werden:

       http://www.engelschall.com/sw/smtpclient/

Erstelle auf dem Server ein temporaeres Verzeichnis zB "smtp" und kopiert die Source in das Verzeichnis:

       # cd /
       # mkdir /smtp
       # cp smtpclient-1.0.0.tar.gz /smtp
       # cd /smtp
       # gzip -dc smtpclient-1.0.0.tar.gz | tar xvf -
       # cd /root/smtp/smtpclient-1.0.0
       
       # ./configure \
       --prefix=/opt/smtpclient-1.0.0 \
       --exec-prefix=/opt/smtpclient-1.0.0 \
       --oldincludedir=/opt/smtpclient-1.0.0/usr/include
       
       # make
       # make install
       
       # chown root:root /opt/smtpclient-1.0.0/bin/smtpclient
       # chmod 700 /opt/smtpclient-1.0.0/bin/smtpclient

Nun werden die verschiedenen Files installiert und es ergiebt sich folgende Konstallation:

       /opt/smtpclient-1.0.0/bin
                            /man

Um diesen Client auszufuehren stehen folgende Syntax und Optionen zur Verfuegung:

       # /opt/smtpclient-1.0.0/bin/smtpclient --help
       
       Usage: smtp [options] recipients ...
       
       Message Header Options:
         -s, --subject=STR      subject line of message
         -f, --from=ADDR        address of the sender
         -r, --reply-to=ADDR    address of the sender for replies
         -e, --errors-to=ADDR   address to send delivery errors to
         -c, --carbon-copy=ADDR address to send copy of message to
       
       Processing Options:
         -S, --smtp-host=HOST   host where MTA can be contacted via SMTP
         -P, --smtp-port=NUM    port where MTA can be contacted via SMTP
         -M, --mime-encode      use MIME-style translation to quoted-printable
         -L, --use-syslog       log errors to syslog facility instead of stderr
       
       Giving Feedback:
         -v, --verbose          enable verbose logging messages
         -V, --version          display version string
         -h, --help             display this page

Der "smtpclient" ist nun installiert. Das ausgewertete Log File befindet sich im folgenden Verzeichnis:

       /kolab/var/postfix/log/postfix.sum

Diese Auswertung wird jeweils um Mittarnacht durchgefuehrt. Somit erstellen wir ein Script und einen Cron Job um dieses per Mail Uebermitteln zu lassen:

       # vi /kolab/opt/scripts/postfix_log_summaries.sh
       
       --------------- /kolab/opt/scripts/postfix_log_summaries.sh --------------- 
       
       #!/bin/sh
       #
       # Delivers postfix.sum and will mail the report to
       # a specified email address.
       #
       /usr/bin/cat /kolab/var/postfix/log/postfix.sum | \
       /opt/smtpclient-1.0.0/bin/smtpclient \
       -s "Postfix Log Summaries KOLAB" \
       -f root \
       -S localhost \
       -P 25 \
       -L \
       postmaster@mydomain.ch
       
       --------------- /kolab/opt/scripts/postfix_log_summaries.sh ---------------

Das Verzeichnis "/kolab/opt" muss ueber folgende Rechte verfuegen:

       # chown kolab-r:kolab /kolab/opt
       # chmod 755 /kolab/opt

Das Verzeichnis "/kolab/opt/scripts" muss ueber folgende Rechte verfuegen:

       # chown kolab-r:kolab /kolab/opt/scripts
       # chmod 755 /kolab/opt/scripts

Das Script an und fuer sich verfuegt ueber folgende Rechte:

       # chown kolab-r:kolab /kolab/opt/scripts/postfix_log_summaries.sh
       # chmod 700 /kolab/opt/scripts/postfix_log_summaries.sh

Nun muessen wir noch den Cron Job erfassen:

       # vi /var/spool/cron/crontabs/root 
       
       --------------- crontab root ---------------
       
       0 1 * * * /kolab/opt/scripts/postfix_log_summaries.sh
       
       --------------- crontab root ---------------
       
       # svcadm restart cron

Kolab2 OpenPKG Package Upgrade/Install

Es kann vorkommen das es noetig wird eine Package von der OpenPKG Umgebung auf den neusten Stand zu bringen. Wenn dies durchgefuehrt wird sollten dessen Auswirkungen gut Ueberlegt werden denn ein Package kann ein Update eines anderen Packages nachsichziehen!

Als Erstes besorgt man sich die RPM Source dh. diese muss mit der installierten OpenPKG Version uebereinstimmen. Eine RPM Source die auf www.kolab.org zur Verfuegung gestellt wird ist immer zu bevorzugen. RPM Sourcen werden ebenfalls von der OpenPKG Comunity auf ftp.openpkg.org zur Verfuegung gestellt. Zugriff und Download auf und von diesem Server kann anhand eines "anonymous" Login durchgeführt werden. Hier einige OpenPKG Kommandos um die Package/Umgebung zu ueberpruefen:

WICHTIG
Wird das "openpkg" Kommando durchgeführt vergewissere dich das du in der Kolab2 Umgebung/Env arbeitest dh. führe auf jedenfall "opa /kolab" aus!

       # opa /kolab
       Listet alle OpenPKG Package auf:
       
       # /kolab/bin/openpkg rpm -qa
       Zeigt Detail Informationen eines bestimmten OpenPKG Package:
       
       # /kolab/bin/openpkg rpm -qi [Package Name]
       Zeigt die installierten Files innerhalb eines bestimmten OpenPKG Package:
       
       # /kolab/bin/openpkg rpm -qlv [Package Name]
       Zeigt die Version eines bestimmten OpenPKG Package:
       
       # /kolab/bin/openpkg rpm -q [package]
       Deinstalliert ein bestimmtes OpenPKG Package:
       
       # /kolab/bin/openpkg rpm -e [package]

Wenn man nun sich sicher ist das man ein bestimmtes OpenPKG Package installieren will geht man folgendermassen vor. Wie gesagt als Erstes besorgt man sich die Source die uebereinstimmen muss mit der installierten OpenPKG Version. Danach installiert man die Source:

       # opa /kolab
       # /kolab/bin/openpkg rpm -iv ./[Package Name/Version].src.rpm

Das Package wird durch diesen Befehl in die OpenPKG Umgebung geladen resp. entpackt. Die Source befindet sich nun im Verzeichnis:

       /kolab/RPM/SRC/[Package Name]/

Die Package werden anhand eines bestimmten Config Files kompiliert und installiert. Jedes OpenPKG Package hat so ein Config File sprich .spec. Dieses befindet sich im jeweiligen entpackten "SRC" verzeichnis des Packages. Es kann vorkommen das man diese .spec Files manipulieren muss um das Package zu kompilieren und nachtraglich: zu installieren:

       /kolab/RPM/SRC/[Package Name]/[Package].spec

Im Normallfall sollte jedoch das .spec File nicht manipuliert werden. Nun als naechster Schritt fueren wir die Konfiguration sowie Kompilation durch:

       # /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/[Package Name]/[Package].spec

Sofern die Konfiguration/Kompilation durchgelaufen ist kann das Package nun installiert werden:

       # /kolab/bin/openpkg rpm -Uvh /kolab/RPM/PKG/[Package Name/Version.Arch/Platform]-kolab.rpm

Es kann vorkommen das aus bestimmten Gruenden ein Package mit "--force" installiert werden muss. Dies ist jedoch mit Vorsicht auszufuehren! Die Installation ist nun durchgefuehrt. Um event. neue Konfig Files in Kolab2 etc. zu integrieren oder aktivieren muss Kolab2 auf den neusten Stand gebracht werden sprich die Konfig Files muessen aktiviert werden. Wenn ein OpenPKG Package bei der Installation ein Konfig File findet das bereits vorhanden ist, wird dieses nicht einfach ueberschrieben sondern umbenannt in *.rpmsave. Werden solche Files bei der Aktivierung durch "kolabconf -n" gefunden wird keine Aktivierung durchgefuehrt sondern es wird eine Warnung ausgegeben. Ich empfehle nach einer Package Installation kurz zu ueberpruefen ob solche Files/Sicherungen vorhanden sind:

       # find / -name *.rpmsave -print

Wenn die Suche solche Files findet muss entschieden werden ob Informationen dieses Files in das neue File einfliessen muessen oder nicht. Auf jedenfall muessen solche File umbenannt werden. Um den Ueberblick ueber die Versionen nicht zu verlieren empfehle ich diese mit Versions Angaben zu umbennen:

       # mv [Programm Name.conf.template].rpmsave mv [Programm Name.conf.template].[Version]

So nun koenne die Konfig Files aktiviert werden:

       # kolabconf -n

Wenn alles in Ordnung ist kann die temporaere Source der RPM Source die fuer die Konfiguration und Kompilation durch das Source RPM benutzt wurde geloescht werden:

       # rm -rf /kolab/RPM/TMP/[Package Name]*

Security Issues

Kolab Security Issue 27 20100115

       Kolab Security Issue 27 20100115
       
       Package:              Kolab Server, Kolab Web Admin
       Vulnerability:        Users can not change their password
       Kolab Specific:       yes
       Dependent Packages:   none
       
       Summary
       
       The Kolab Web Admin interface allows Kolab users to manipulate some of their user data using a web browser.  
       Most importantly it enables users to change their passwords.
       
       In the kolab-webadmin package shipped with Kolab Server release 2.2.3, the web admin interface fails to save 
       changed user data (an LDAP error is issued).
       
       Affected Versions
       
       This affects version 2.2.3-20091217 of kolab-webadmin.
       Kolab Server 2.2.3 is affected.
       
       Fix
       
       Update your kolab-webadmin package:
       
       OpenPKG packages for Kolab Server 2.2.3 are available from
       
       https://files.kolab.org/server/security-updates/20100115/
       
       Installation
       
       # cd /kolab/
       # mv kolab-webadmin-2.2.3-20100115.src.rpm /kolab/
       # opa /kolab
       # /kolab/bin/openpkg rpm -iv ./kolab-webadmin-2.2.3-20100115.src.rpm
       # /kolab/bin/openpkg rpmbuild -bb /kolab/RPM/SRC/kolab-webadmin/kolab-webadmin.spec 
       # /kolab/bin/openpkg rpm -Uvh /kolab/RPM/PKG/kolab-webadmin-2.2.3-20100115.sparc64-solaris10-kolab.rpm
       
       # rm -rf kolab-webadmin-2.2.3
       # rm -rf /RPM/TMP/kolab-webadmin-2.2.3-20100115.src.rpm
       # rm -rf /RPM/SRC/kolab-webadmin

NOTE
Durch die Installation des Packages "kolab-webadmn" wird die Layout Modifikation überschrieben. Kontrolliere die folgende Anweisung und führe diese abermals durch:

       Solaris#Kolab2_Layout_veraendern
Personal tools