Solaris
From Kolab Wiki
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
