Kerio Mailserver (Gentoo)

Aus Byte-Welt Wiki
Version vom 15. September 2007, 15:15 Uhr von 79.213.221.30 (Diskussion) (Die Seite wurde neu angelegt: Da der Mailserver von Kerio nicht als ebuild für Gentoo vorhanden ist, müssen einige Programme von Hand installiert werden. Neben den [[...)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springenZur Suche springen

Da der Mailserver von Kerio nicht als ebuild für Gentoo vorhanden ist, müssen einige Programme von Hand installiert werden. Neben den Paket für den rpm-Paketmanager muss auch das Programm killproc für die Befehle checkproc und startproc installieren werdenmüssen einige zusätzliche Pakete installiert werden.

emerge -av rpm killproc

<code=ini>

  1. /etc/rc.status
  2. vim: syntax=sh
  3. Definition of boot script return messages
  4. The bootscripts should use the variables rc_done and rc_failed to
  5. report whether they failed or succeeded. See /etc/init.d/skeleton for
  6. an example how the shell functions rc_status and rc_reset are used.
  7. These functions make use of the variables rc_done and rc_failed;
  8. rc_done_up and rc_failed_up are the same as rc_done and rc_failed
  9. but contain a terminal code to move up one line before the output
  10. of the actual string. (This is particularly useful when the script
  11. starts a daemon which produces user output with a newline character)
  12. The variable rc_reset is used by the master resource control script
  13. /etc/init.d/rc to turn off all attributes and switch to the standard
  14. character set.
  15. \033 ascii ESCape
  16. \033[<NUM>G move to column <NUM> (linux console, xterm, not vt100)
  17. \033[<NUM>C move <NUM> columns forward but only upto last column
  18. \033[<NUM>D move <NUM> columns backward but only upto first column
  19. \033[<NUM>A move <NUM> rows up
  20. \033[<NUM>B move <NUM> rows down
  21. \033[1m switch on bold
  22. \033[31m switch on red
  23. \033[32m switch on green
  24. \033[33m switch on yellow
  25. \033[m switch off color/bold
  26. \017 exit alternate mode (xterm, vt100, linux console)
  27. \033[10m exit alternate mode (linux console)
  28. \015 carriage return (without newline)
  1. Do _not_ be fooled by non POSIX locale

LC_ALL=POSIX export LC_ALL

  1. Seek for terminal size and, if needed, set default size

if test -z "$LINES" -o -z "$COLUMNS" ; then

   eval `exec 3<&1; stty size <&3 2>/dev/null | (read L C; \
         echo LINES=${L:-24} COLUMNS=${C:-80})`

fi test $LINES -eq 0 && LINES=24 test $COLUMNS -eq 0 && COLUMNS=80 export LINES COLUMNS

  1. Make sure we have /sbin and /usr/sbin in PATH

case ":$PATH:" in

   *:/sbin:*)
       ;;
   *)
       PATH=/sbin:/usr/sbin:/usr/local/sbin:$PATH
       export PATH
       ;;

esac

if test -t 1 -a "$TERM" != "raw" -a "$TERM" != "dumb" && stty size <&1 > /dev/null 2>&1 ; then

        esc=`echo -en "\033"`
       extd="${esc}[1m"
       warn="${esc}[1;31m"
       done="${esc}[1;32m"
       attn="${esc}[1;33m"
       norm=`echo -en "${esc}[m\017"`
       stat=`echo -en "\015${esc}[${COLUMNS}C${esc}[10D"`
    rc_done="${stat}${done}done${norm}"
 rc_running="${stat}${done}running${norm}"
  rc_failed="${stat}${warn}failed${norm}"
  rc_missed="${stat}${warn}missing${norm}"
 rc_skipped="${stat}${attn}skipped${norm}"
    rc_dead="${stat}${warn}dead${norm}"
  rc_unused="${stat}${extd}unused${norm}"
 rc_unknown="${stat}${attn}unknown${norm}"
 rc_done_up="${esc}[1A${rc_done}"

rc_failed_up="${esc}[1A${rc_failed}"

   rc_reset="${norm}${esc}[?25h"
    rc_save="${esc}7${esc}[?25l"
 rc_restore="${esc}8${esc}[?25h"
   function rc_cuu () { test $1 -eq 0 && return; echo -en "\033[${1}A"; }
   function rc_cud () { test $1 -eq 0 && return; echo -en "\033[${1}B"; }
   function rc_timer_on () {
       # Draw seconds of running timout to column.
       # Two arguments: timeout in seconds and offset
       local n=$1
       local c=$2
       (trap "exit 0" TERM
        while test $((n--)) -gt 0; do
           sleep 1;
           if test $n -gt 9 ; then
               echo -en "\015${esc}[${c}C(${n}s) "
           else
               echo -en "\015${esc}[${c}C( ${n}s) "
           fi
       done) & _rc_timer_pid=$!
   }
   function rc_timer_off () {
       if test -n "$_rc_timer_pid" ; then
           kill -TERM $_rc_timer_pid > /dev/null 2>&1
       fi
       unset _rc_timer_pid
   }

else

        esc=""
       extd=""
       warn=""
       done=""
       attn=""
       norm=""
       stat=""
    rc_done="..done"
 rc_running="..running"
  rc_failed="..failed"
  rc_missed="..missing"
 rc_skipped="..skipped"
    rc_dead="..dead"
  rc_unused="..unused"
 rc_unknown="..unknown"
 rc_done_up="${rc_done}"

rc_failed_up="${rc_failed}"

   rc_reset=""
    rc_save=""
 rc_restore=""
   function rc_cuu () { return; }
   function rc_cud () { return; }
   function rc_timer_on  () { return; }
   function rc_timer_off () { return; }

fi

_rc_service=${0##*/[SK][0-9][0-9]} _rc_status=0 _rc_status_all=0 _rc_todo=$1 function rc_check () {

   _rc_status_ret=$?
   test $_rc_status_ret -eq 0 || _rc_status=$_rc_status_ret
   test $_rc_status     -eq 0 || _rc_status_all=$_rc_status
   return $_rc_check_ret

} function rc_reset () {

   _rc_status=0
   _rc_status_all=0
   rc_check
   return 0

}

if test "$_rc_todo" = "status" ; then function rc_status () {

   rc_check
   _rc_status_ret=$_rc_status
   local i
   for i ; do
       case "$i" in
       -v|-v[1-9]|-v[1-9][0-9])
           local vrt=""
           local out=1
           local opt="en"
           test -n "${i#-v}" && vrt="$vrt${esc}[${i#-v}A" || opt="e"
           case "$_rc_status" in
           0)  vrt="$vrt$rc_running";          ;; # service running
           1)  vrt="$vrt$rc_dead"   ; out=2    ;; # service dead (but has pid file)
           2)  vrt="$vrt$rc_dead"   ; out=2    ;; # service dead (but has lock file)
           3)  vrt="$vrt$rc_unused" ;          ;; # service not running
           4)  vrt="$vrt$rc_unknown";          ;; # status is unknown
           esac
           echo -$opt "$rc_save$vrt$rc_restore" 1>&$out
           # reset _rc_status to 0 after verbose case
           _rc_status=0 ;;
       -r) rc_reset ;;
       -s) echo -e "$rc_skipped" ; rc_failed 3 ;;
       -u) echo -e "$rc_unused"  ; rc_failed 3 ;;
       *)  echo "rc_status: Usage: [-v[<num>] [-r]|-s|-u]" 1>&2 ; return 0 ;;
       esac
   done
   return $_rc_status_ret

} elif test -n "$_rc_todo" ; then function rc_status () {

   rc_check
   test "$_rc_status" -gt 7 && rc_failed 1
   _rc_status_ret=$_rc_status
   case "$_rc_todo" in
   stop)
       # program is not running which
       # is success if we stop service
       test "$_rc_status" -eq 7 && rc_failed 0 ;;
   esac
   local i
   for i ; do
       case "$i" in
       -v|-v[1-9]|-v[1-9][0-9])
           local vrt=""
           local out=1
           local opt="en"
           test -n "${i#-v}" && vrt="$vrt${esc}[${i#-v}A" || opt="e"
           case "$_rc_status" in
           0)  vrt="$vrt$rc_done"   ;          ;; # success
           1)  vrt="$vrt$rc_failed" ; out=2    ;; # generic or unspecified error
           2)  vrt="$vrt$rc_failed" ; out=2    ;; # invalid or excess args
           3)  vrt="$vrt$rc_missed" ; out=2    ;; # unimplemented feature
           4)  vrt="$vrt$rc_failed" ; out=2    ;; # insufficient privilege
           5)  vrt="$vrt$rc_skipped"; out=2    ;; # program is not installed
           6)  vrt="$vrt$rc_unused" ; out=2    ;; # program is not configured
           7)  vrt="$vrt$rc_failed" ; out=2    ;; # program is not running
           *)  vrt="$vrt$rc_failed" ; out=2    ;; # unknown (maybe used in future)
           esac
           echo -$opt "$rc_save$vrt$rc_restore" 1>&$out
           # reset _rc_status to 0 after verbose case
           _rc_status=0 ;;
       -r) rc_reset ;;
       -s) echo -e "$rc_skipped" 1>&2 ; rc_failed 5 ;;
       -u) echo -e "$rc_unused"  1>&2 ; rc_failed 6 ;;
       *)  echo "rc_status: Usage: [-v[<num>] [-r]|-s|-u]" 1>&2 ; return 0 ;;
       esac
   done
   return $_rc_status_ret

} else function rc_status () {

   rc_check
   _rc_status_ret=$_rc_status
   local i
   for i ; do
       case "$i" in
       -v|-v[1-9]|-v[1-9][0-9])
           local vrt=""
           local out=1
           local opt="en"
           test -n "${i#-v}" && vrt="$vrt${esc}[${i#-v}A" || opt="e"
           case "$_rc_status" in
           0)  vrt="$vrt$rc_done"  ;           ;; # success
           *)  vrt="$vrt$rc_failed"; out=2     ;; # failed
           esac
           echo -$opt "$rc_save$vrt$rc_restore" 1>&$out
           # reset _rc_status to 0 after verbose case
           _rc_status=0 ;;
       -r) rc_reset ;;
       -s) echo -e "$rc_skipped"  ; return 0 ;;
       -u) echo -e "$rc_unused"   ; return 0 ;;
       *)  echo "rc_status: Usage: [-v[<num>] [-r]|-s|-u]" 1>&2 ; return 0 ;;
       esac
   done
   return $_rc_status_ret

} fi

function rc_failed () {

   rc_reset
   case "$1" in
   [0-7]) _rc_status=$1 ;;
   "")    _rc_status=1
   esac
   rc_check
   return $_rc_status

}

function rc_exit () {

   exit $_rc_status_all

}

function rc_confirm() {

   local timeout="30"
   local answer=""
   local ret=0
   case "$1" in
   -t) timeout=$2; shift 2 ;;
   esac
   local message="$@, (Y)es/(N)o/(C)ontinue? [y] "
   : ${REDIRECT:=/dev/tty}
   while true ; do
       read -t ${timeout} -n 1 -p "${message}" answer < $REDIRECT > $REDIRECT 2>&1
       case "$answer" in
       [yY]|"") ret=0; break ;;
       [nN])    ret=1; break ;;
       [cC])    ret=2; break ;;
       *)       echo; continue
       esac
   done
   echo
   return $ret

}

function rc_active () {

   local x
   for x in /etc/init.d/*.d/S[0-9][0-9]${1} ; do
       test -e $x || break
       return 0
   done
   return 1

}

function rc_splash() {

   return 0

} </code=ini>