X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=mail%2Fxmail%2Ffiles%2Fxmail.init;fp=mail%2Fxmail%2Ffiles%2Fxmail.init;h=2f5abd5ab58458199506096a54128fb96ed39c7b;hb=65beb189830632fee89cc964224fd282986f34fb;hp=0000000000000000000000000000000000000000;hpb=447f6138862c924c3047cb3c2419cd04bedebb77;p=packages.git diff --git a/mail/xmail/files/xmail.init b/mail/xmail/files/xmail.init new file mode 100644 index 000000000..2f5abd5ab --- /dev/null +++ b/mail/xmail/files/xmail.init @@ -0,0 +1,221 @@ +#!/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" + [ "$_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 +}