d33a2ce113
git-svn-id: svn://svn.openwrt.org/openwrt/packages@33058 3c298f89-4303-0410-b956-a3cf2f4a3e73
222 lines
4.4 KiB
Bash
222 lines
4.4 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2008 OpenWrt.org
|
|
|
|
START=90
|
|
STOP=10
|
|
|
|
MAIL_ROOT=
|
|
DAEMON=/usr/bin/XMail
|
|
NAME=XMail
|
|
|
|
append_bool() {
|
|
local section="$1"
|
|
local option="$2"
|
|
local value="$3"
|
|
local _loctmp
|
|
config_get_bool _loctmp "$section" "$option" 0
|
|
[ "$_loctmp" -le 0 ] && return 0
|
|
append args "$value"
|
|
}
|
|
|
|
append_parm() {
|
|
local section="$1"
|
|
local option="$2"
|
|
local switch="$3"
|
|
local _loctmp
|
|
config_get _loctmp "$section" "$option"
|
|
[ -z "$_loctmp" ] && return 0
|
|
append args "$switch $_loctmp"
|
|
}
|
|
|
|
xmail() {
|
|
local cfg="$1"
|
|
|
|
append_parm "$cfg" mail_root "-Ms"
|
|
append_bool "$cfg" debug "-Md"
|
|
append_parm "$cfg" log_rotate "-Mr"
|
|
append_parm "$cfg" split_level "-Mx"
|
|
append_parm "$cfg" rx_buffer "-MR"
|
|
append_parm "$cfg" tx_buffer "-MS"
|
|
append_bool "$cfg" maildir_delivery "-MM"
|
|
append_bool "$cfg" mailbox_delivery "-Mm"
|
|
append_parm "$cfg" dns_cache_dirs "-MD"
|
|
append_bool "$cfg" ipv4_only "-M4"
|
|
append_bool "$cfg" ipv6_only "-M6"
|
|
append_bool "$cfg" ipv4_then_ipv6 "-M5"
|
|
append_bool "$cfg" ipv6_then_ipv4 "-M7"
|
|
|
|
config_get mail_root $cfg mail_root
|
|
[ -n "$mail_root" ] || return 0
|
|
MAIL_ROOT=$mail_root
|
|
}
|
|
|
|
pop3() {
|
|
local cfg="$1"
|
|
|
|
append_bool "$cfg" disable "-P-"
|
|
append_bool "$cfg" ipv6 "-P6"
|
|
append_parm "$cfg" server_port "-Pp"
|
|
append_parm "$cfg" session_timeout "-Pt"
|
|
append_bool "$cfg" log "-Pl"
|
|
append_parm "$cfg" delay_timeout "-Pw"
|
|
append_bool "$cfg" bad_login_hang "-Ph"
|
|
append_parm "$cfg" local_address "-PI"
|
|
append_parm "$cfg" num_threads "-PX"
|
|
}
|
|
|
|
pop3s() {
|
|
local cfg="$1"
|
|
|
|
append_bool "$cfg" disable "-B-"
|
|
append_bool "$cfg" ipv6 "-B6"
|
|
append_parm "$cfg" server_port "-Bp"
|
|
append_parm "$cfg" local_address "-BI"
|
|
}
|
|
|
|
smtp() {
|
|
local cfg="$1"
|
|
|
|
append_bool "$cfg" disable "-S-"
|
|
append_bool "$cfg" ipv6 "-S6"
|
|
append_parm "$cfg" server_port "-Sp"
|
|
append_parm "$cfg" session_timeout "-St"
|
|
append_bool "$cfg" log "-Sl"
|
|
append_parm "$cfg" local_address "-SI"
|
|
append_parm "$cfg" num_threads "-SX"
|
|
append_parm "$cfg" max_recipients "-Sr"
|
|
append_parm "$cfg" expire_timeout "-Se"
|
|
}
|
|
|
|
smtps() {
|
|
local cfg="$1"
|
|
|
|
append_bool "$cfg" disable "-X-"
|
|
append_bool "$cfg" ipv6 "-X6"
|
|
append_parm "$cfg" server_port "-Xp"
|
|
append_parm "$cfg" local_address "-XI"
|
|
}
|
|
|
|
smail() {
|
|
local cfg="$1"
|
|
|
|
append_parm "$cfg" num_threads "-Qn"
|
|
append_parm "$cfg" next_try_timeout "-Qt"
|
|
append_parm "$cfg" ratio "-Qi"
|
|
append_parm "$cfg" retries "-Qr"
|
|
append_bool "$cfg" log "-Ql"
|
|
append_parm "$cfg" filters_timeout "-QT"
|
|
append_bool "$cfg" filter_log "-Qg"
|
|
}
|
|
|
|
psync() {
|
|
local cfg="$1"
|
|
|
|
append_bool "$cfg" disable "-Y-"
|
|
append_parm "$cfg" interval "-Yi"
|
|
append_parm "$cfg" num_threads "-Yt"
|
|
append_parm "$cfg" timeout "-Yi"
|
|
append_bool "$cfg" log "-Yl"
|
|
}
|
|
|
|
finger() {
|
|
local cfg="$1"
|
|
|
|
append_bool "$cfg" disable "-F-"
|
|
append_bool "$cfg" ipv6 "-F6"
|
|
append_parm "$cfg" server_port "-Fp"
|
|
append_bool "$cfg" log "-Fl"
|
|
append_parm "$cfg" local_address "-FI"
|
|
}
|
|
|
|
ctrl() {
|
|
local cfg="$1"
|
|
|
|
append_bool "$cfg" disable "-C-"
|
|
append_bool "$cfg" ipv6 "-C6"
|
|
append_parm "$cfg" server_port "-Cp"
|
|
append_parm "$cfg" session_timeout "-Ct"
|
|
append_bool "$cfg" log "-Cl"
|
|
append_parm "$cfg" local_address "-CI"
|
|
append_parm "$cfg" num_threads "-CX"
|
|
}
|
|
|
|
ctrls() {
|
|
local cfg="$1"
|
|
|
|
append_bool "$cfg" disable "-W-"
|
|
append_bool "$cfg" ipv6 "-W6"
|
|
append_parm "$cfg" server_port "-Wp"
|
|
append_parm "$cfg" session_timeout "-Wt"
|
|
}
|
|
|
|
lmail() {
|
|
local cfg="$1"
|
|
|
|
append_parm "$cfg" num_threads "-Ln"
|
|
append_parm "$cfg" sleep_timeout "-Lt"
|
|
append_bool "$cfg" log "-Ll"
|
|
}
|
|
|
|
start() {
|
|
test -f $DAEMON || exit 0
|
|
|
|
set -e
|
|
ulimit -c 10000
|
|
ulimit -s 128
|
|
|
|
config_load xmail
|
|
|
|
args=""
|
|
|
|
config_foreach xmail xmail
|
|
config_foreach pop3 pop3
|
|
config_foreach pop3s pop3s
|
|
config_foreach smtp smtp
|
|
config_foreach smtps smtps
|
|
config_foreach smail smail
|
|
config_foreach psync psync
|
|
config_foreach finger finger
|
|
config_foreach ctrl ctrl
|
|
config_foreach ctrls ctrls
|
|
config_foreach lmail lmail
|
|
|
|
[ -z "$MAIL_ROOT" ] && exit 0
|
|
[ -d $MAIL_ROOT ] || exit 0
|
|
|
|
export MAIL_ROOT
|
|
|
|
rm -f /var/run/$NAME.pid
|
|
|
|
$DAEMON $args
|
|
|
|
MAX_WAIT=20
|
|
while [ ! -f /var/run/$NAME.pid -a $MAX_WAIT -gt 0 ]
|
|
do
|
|
sleep 1
|
|
MAX_WAIT=`expr $MAX_WAIT - 1`
|
|
done
|
|
}
|
|
|
|
stop() {
|
|
if [ -f /var/run/$NAME.pid ]
|
|
then
|
|
config_load xmail
|
|
config_foreach xmail xmail
|
|
[ -z "$MAIL_ROOT" ] || echo `date` > $MAIL_ROOT/.shutdown
|
|
kill -INT `cat /var/run/$NAME.pid`
|
|
|
|
MAX_WAIT=20
|
|
while [ -f $MAIL_ROOT/.shutdown -a $MAX_WAIT -gt 0 ]
|
|
do
|
|
sleep 1
|
|
MAX_WAIT=`expr $MAX_WAIT - 1`
|
|
done
|
|
fi
|
|
}
|
|
|
|
restart() {
|
|
stop
|
|
sleep 1
|
|
start
|
|
}
|