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