Ticket #3753: xmail.svn.patch

File xmail.svn.patch, 12.2 KB (added by pqa <quentin@…>, 10 years ago)

Patch to update xmail to resolve issues described

  • files/xmail.config

     
     1# Configuration parameters for xmail 
     2# 
     3# To see what xmail command line parameters each parameter corresponds to, 
     4#       please see /etc/init.d/xmail 
     5# 
     6# The xmail configuration files are contained in /etc/MailRoot.tar.gz, and need 
     7#       to be installed in the MAIL_ROOT directory, set by default to 
     8#       /var/MailRoot below by: 
     9#       MAIL_ROOT=`grep "option.*mail_root.*'$" /etc/config/xmail | sed -e "s/'$//" -e "s/.*'//"` 
     10#       mkdir -p $MAIL_ROOT; cd $MAIL_ROOT; tar -xjf /etc/MailRoot.tar.bz2 
     11# NOTE: On OpenWRT /var is a temporary filesystem, so change mail_root below, 
     12#       but it is probably not a good idea to install on a device's internal 
     13#       flash due to the amount of writing of the flash that will ensue. 
     14# 
     15# To see what settings are appropriate, please refer to: 
     16#       http://www.xmailserver.org/Readme.html 
     17# which also documents the configuration files in mail_root 
     18# ( please note that the values commented out are not real values ) 
     19#  
     20 
     21config xmail 
     22        option  mail_root       '/var/MailRoot' 
     23#       option  debug           1 
     24#       option  log_rotate      '3600' 
     25#       option  split_level     'param-split_level' 
     26#       option  rx_buffer       'param-rx_buffer' 
     27#       option  tx_buffer       'param-tx_buffer' 
     28#       option  maildir_delivery        1 
     29#       option  mailbox_delivery        1 
     30#       option  dns_cache_dirs  'param-dns_cache_dirs' 
     31#       option  ipv4_only       1 
     32#       option  ipv6_only       1 
     33#       option  ipv4_then_ipv6  1 
     34#       option  ipv6_then_ipv4  1 
     35 
     36config pop3 
     37#       option  disable 1 
     38#       option  ipv6    1 
     39#       option  server_port     'param-server_port' 
     40#       option  session_timeout 'param-session_timeout' 
     41#       option  log     1 
     42#       option  delay_timeout   'param-delay_timeout' 
     43#       option  bad_login_hang  1 
     44#       option  local_address   'param-local_address' 
     45        option  num_threads     4 
     46 
     47config pop3s 
     48        option  disable 1 
     49#       option  ipv6    1 
     50#       option  server_port     'param-server_port' 
     51#       option  local_address   'param-local_address' 
     52 
     53config smtp 
     54#       option  disable 1 
     55#       option  ipv6    1 
     56#       option  server_port     'param-server_port' 
     57#       option  session_timeout 'param-session_timeout' 
     58#       option  log     1 
     59#       option  local_address   'param-local_address' 
     60        option  num_threads     4 
     61#       option  max_recipients  'param-max_recipients' 
     62#       option  expire_timeout  'param-expire_timeout' 
     63 
     64config smtps 
     65        option  disable 1 
     66#       option  ipv6    1 
     67#       option  server_port     'param-server_port' 
     68#       option  local_address   'param-local_address' 
     69 
     70config smail 
     71        option  num_threads     8 
     72#       option  next_try_timeout        'param-next_try_timeout' 
     73#       option  ratio   'param-ratio' 
     74#       option  retries 'param-retries' 
     75#       option  log     1 
     76#       option  filters_timeout 'param-filters_timeout' 
     77#       option  filter_log      1 
     78 
     79config psync 
     80        option  disable 1 
     81#       option  interval        'param-interval' 
     82#       option  num_threads     'param-num_threads' 
     83#       option  timeout 'param-timeout' 
     84#       option  log     1 
     85 
     86config finger 
     87        option  disable 1 
     88#       option  ipv6    1 
     89#       option  server_port     'param-server_port' 
     90#       option  log     1 
     91#       option  local_address   'param-local_address' 
     92 
     93config ctrl 
     94#       option  disable 1 
     95#       option  ipv6    1 
     96#       option  server_port     'param-server_port' 
     97#       option  session_timeout 'param-session_timeout' 
     98#       option  log     1 
     99#       option  local_address   'param-local_address' 
     100#       option  num_threads     'param-num_threads' 
     101 
     102config ctrls 
     103        option  disable 1 
     104#       option  ipv6    1 
     105#       option  server_port     'param-server_port' 
     106#       option  session_timeout 'param-session_timeout' 
     107 
     108config lmail 
     109        option  num_threads     4 
     110#       option  sleep_timeout   'param-sleep_timeout' 
     111#       option  log     1 
  • patches/030-xmail.patch

     
    1 --- a/xmail 
    2 +++ b/xmail 
    3 @@ -19,7 +19,7 @@ 
    4  test -f $DAEMON || exit 0 
     1--- xmail-1.25.orig/xmail       2008-01-03 23:27:45.000000000 +0000 
     2+++ xmail-1.25/xmail    2008-07-13 09:39:37.000000000 +0100 
     3@@ -1,96 +1,221 @@ 
     4-#!/bin/sh 
     5-# 
     6-# skeleton     example file to build /etc/init.d/ scripts. 
     7-#              This file should be used to construct scripts for /etc/init.d. 
     8-# 
     9-#              Written by Miquel van Smoorenburg <miquels@cistron.nl>. 
     10-#              Modified by Davide Libenzi <davidel@xmailserver.org> 
     11-# 
     12-# Version:     @(#)skeleton  1.8  03-Mar-1998  miquels@cistron.nl 
     13-# 
     14- 
     15-XMAIL_ROOT=/var/MailRoot 
     16-XMAIL_CMD_LINE="" 
     17-PATH=$XMAIL_ROOT/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
     18-DAEMON=$XMAIL_ROOT/bin/XMail 
     19+#!/bin/sh /etc/rc.common 
     20+# Copyright (C) 2008 OpenWrt.org 
     21+ 
     22+START=90 
     23+STOP=10 
     24+ 
     25+MAIL_ROOT= 
     26+DAEMON=/usr/bin/XMail 
     27 NAME=XMail 
     28-DESC="XMail Server" 
    529  
    6  set -e 
     30-test -f $DAEMON || exit 0 
     31+append_bool() { 
     32+       local section="$1" 
     33+       local option="$2" 
     34+       local value="$3" 
     35+       local _loctmp 
     36+       config_get_bool _loctmp "$section" "$option" 
     37+       [ "$_loctmp" -le 0 ] && return 0 
     38+       append args "$value" 
     39+} 
     40+ 
     41+append_parm() { 
     42+       local section="$1" 
     43+       local option="$2" 
     44+       local switch="$3" 
     45+       local _loctmp 
     46+       config_get _loctmp "$section" "$option" 
     47+       [ -z "$_loctmp" ] && return 0 
     48+       append args "$switch $_loctmp" 
     49+} 
     50  
     51-set -e 
    752-ulimit -c 20000 
    8 +ulimit -c 10000 
    9  ulimit -s 128 
     53-ulimit -s 128 
     54- 
     55-start_xmail() 
     56-{ 
     57-    MAIL_ROOT=$XMAIL_ROOT 
     58-    export MAIL_ROOT 
     59-    MAIL_CMD_LINE=$XMAIL_CMD_LINE 
     60-    export MAIL_CMD_LINE 
     61-    rm -f /var/run/$NAME.pid 
     62-    $DAEMON 
     63-    while [ ! -f /var/run/$NAME.pid ] 
     64-    do 
     65-        sleep 1 
     66-    done 
     67-} 
     68- 
     69-stop_xmail() 
     70-{ 
     71-    if [ -f /var/run/$NAME.pid ] 
     72-    then 
     73-        echo `date` > $XMAIL_ROOT/.shutdown 
     74-        kill -INT `cat /var/run/$NAME.pid` 
     75-        while [ -f $XMAIL_ROOT/.shutdown ] 
     76-        do 
     77-            sleep 1 
     78-        done 
     79-    fi 
     80-} 
     81- 
     82- 
     83-case "$1" in 
     84-  start) 
     85-      echo -n "Starting $DESC: " 
     86-      start_xmail 
     87-      echo "$NAME.[" `cat /var/run/$NAME.pid` "]" 
     88-       ;; 
     89-  stop) 
     90-      echo -n "Stopping $DESC: " 
     91-      stop_xmail 
     92-      echo "$NAME." 
     93-       ;; 
     94-  #reload) 
     95-       # 
     96-       #       If the daemon can reload its config files on the fly 
     97-       #       for example by sending it SIGHUP, do it here. 
     98-       # 
     99-       #       If the daemon responds to changes in its config file 
     100-       #       directly anyway, make this a do-nothing entry. 
     101-       # 
     102-       # echo "Reloading $DESC configuration files." 
     103-       # start-stop-daemon --stop --signal 1 --quiet --pidfile \ 
     104-       #       /var/run/$NAME.pid --exec $DAEMON 
     105-  #;; 
     106-  restart|force-reload) 
     107-       # 
     108-       #       If the "reload" option is implemented, move the "force-reload" 
     109-       #       option to the "reload" entry above. If not, "force-reload" is 
     110-       #       just the same as "restart". 
     111-       # 
     112-       echo -n "Restarting $DESC: " 
     113-       stop_xmail 
     114-       sleep 1 
     115-       start_xmail 
     116-        echo "$NAME.[" `cat /var/run/$NAME.pid` "]"     
     117-       ;; 
     118-  *) 
     119-       N=/etc/init.d/$NAME 
     120-       # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 
     121-       echo "Usage: $N {start|stop|restart|force-reload}" >&2 
     122-       exit 1 
     123-       ;; 
     124-esac 
     125+xmail() { 
     126+       local cfg="$1" 
     127+ 
     128+       append_parm "$cfg" mail_root "-Ms" 
     129+       append_bool "$cfg" debug "-Md" 
     130+       append_parm "$cfg" log_rotate "-Mr" 
     131+       append_parm "$cfg" split_level "-Mx" 
     132+       append_parm "$cfg" rx_buffer "-MR" 
     133+       append_parm "$cfg" tx_buffer "-MS" 
     134+       append_bool "$cfg" maildir_delivery "-MM" 
     135+       append_bool "$cfg" mailbox_delivery "-Mm" 
     136+       append_parm "$cfg" dns_cache_dirs "-MD" 
     137+       append_bool "$cfg" ipv4_only "-M4" 
     138+       append_bool "$cfg" ipv6_only "-M6" 
     139+       append_bool "$cfg" ipv4_then_ipv6 "-M5" 
     140+       append_bool "$cfg" ipv6_then_ipv4 "-M7" 
     141+ 
     142+       config_get mail_root $cfg mail_root 
     143+       [ -n "$mail_root" ] || return 0 
     144+       MAIL_ROOT=$mail_root 
     145+} 
     146+ 
     147+pop3() { 
     148+       local cfg="$1" 
     149+ 
     150+       append_bool "$cfg" disable "-P-" 
     151+       append_bool "$cfg" ipv6 "-P6" 
     152+       append_parm "$cfg" server_port "-Pp" 
     153+       append_parm "$cfg" session_timeout "-Pt" 
     154+       append_bool "$cfg" log "-Pl" 
     155+       append_parm "$cfg" delay_timeout "-Pw" 
     156+       append_bool "$cfg" bad_login_hang "-Ph" 
     157+       append_parm "$cfg" local_address "-PI" 
     158+       append_parm "$cfg" num_threads "-PX" 
     159+} 
    10160  
    11  start_xmail() 
     161-exit 0 
     162+pop3s() { 
     163+       local cfg="$1" 
     164+ 
     165+       append_bool "$cfg" disable "-B-" 
     166+       append_bool "$cfg" ipv6 "-B6" 
     167+       append_parm "$cfg" server_port "-Bp" 
     168+       append_parm "$cfg" local_address "-BI" 
     169+} 
     170+ 
     171+smtp() { 
     172+       local cfg="$1" 
     173+ 
     174+       append_bool "$cfg" disable "-S-" 
     175+       append_bool "$cfg" ipv6 "-S6" 
     176+       append_parm "$cfg" server_port "-Sp" 
     177+       append_parm "$cfg" session_timeout "-St" 
     178+       append_bool "$cfg" log "-Sl" 
     179+       append_parm "$cfg" local_address "-SI" 
     180+       append_parm "$cfg" num_threads "-SX" 
     181+       append_parm "$cfg" max_recipients "-Sr" 
     182+       append_parm "$cfg" expire_timeout "-Se" 
     183+} 
     184+ 
     185+smtps() { 
     186+       local cfg="$1" 
     187+ 
     188+       append_bool "$cfg" disable "-X-" 
     189+       append_bool "$cfg" ipv6 "-X6" 
     190+       append_parm "$cfg" server_port "-Xp" 
     191+       append_parm "$cfg" local_address "-XI" 
     192+} 
     193+ 
     194+smail() { 
     195+       local cfg="$1" 
     196+ 
     197+       append_parm "$cfg" num_threads "-Qn" 
     198+       append_parm "$cfg" next_try_timeout "-Qt" 
     199+       append_parm "$cfg" ratio "-Qi" 
     200+       append_parm "$cfg" retries "-Qr" 
     201+       append_bool "$cfg" log "-Ql" 
     202+       append_parm "$cfg" filters_timeout "-QT" 
     203+       append_bool "$cfg" filter_log "-Qg" 
     204+} 
     205+ 
     206+psync() { 
     207+       local cfg="$1" 
     208+ 
     209+       append_bool "$cfg" disable "-Y-" 
     210+       append_parm "$cfg" interval "-Yi" 
     211+       append_parm "$cfg" num_threads "-Yt" 
     212+       append_parm "$cfg" timeout "-Yi" 
     213+       append_bool "$cfg" log "-Yl" 
     214+} 
     215+ 
     216+finger() { 
     217+       local cfg="$1" 
     218+ 
     219+       append_bool "$cfg" disable "-F-" 
     220+       append_bool "$cfg" ipv6 "-F6" 
     221+       append_parm "$cfg" server_port "-Fp" 
     222+       append_bool "$cfg" log "-Fl" 
     223+       append_parm "$cfg" local_address "-FI" 
     224+} 
     225+ 
     226+ctrl() { 
     227+       local cfg="$1" 
     228+ 
     229+       append_bool "$cfg" disable "-C-" 
     230+       append_bool "$cfg" ipv6 "-C6" 
     231+       append_parm "$cfg" server_port "-Cp" 
     232+       append_parm "$cfg" session_timeout "-Ct" 
     233+       append_bool "$cfg" log "-Cl" 
     234+       append_parm "$cfg" local_address "-CI" 
     235+       append_parm "$cfg" num_threads "-CX" 
     236+} 
     237+ 
     238+ctrls() { 
     239+       local cfg="$1" 
     240+ 
     241+       append_bool "$cfg" disable "-W-" 
     242+       append_bool "$cfg" ipv6 "-W6" 
     243+       append_parm "$cfg" server_port "-Wp" 
     244+       append_parm "$cfg" session_timeout "-Wt" 
     245+} 
     246+ 
     247+lmail() { 
     248+       local cfg="$1" 
     249+ 
     250+       append_parm "$cfg" num_threads "-Ln" 
     251+       append_parm "$cfg" sleep_timeout "-Lt" 
     252+       append_bool "$cfg" log "-Ll" 
     253+} 
     254+        
     255+start() { 
     256+       test -f $DAEMON || exit 0 
     257+        
     258+       set -e 
     259+       ulimit -c 10000 
     260+       ulimit -s 128 
     261+ 
     262+       config_load xmail 
     263+ 
     264+       args="" 
     265+ 
     266+       config_foreach xmail xmail 
     267+       config_foreach pop3 pop3 
     268+       config_foreach pop3s pop3s 
     269+       config_foreach smtp smtp 
     270+       config_foreach smtps smtps 
     271+       config_foreach smail smail 
     272+       config_foreach psync psync 
     273+       config_foreach finger finger 
     274+       config_foreach ctrl ctrl 
     275+       config_foreach ctrls ctrls 
     276+       config_foreach lmail lmail 
     277+ 
     278+       [ -z "$MAIL_ROOT" ] && exit 0 
     279+       [ -d $MAIL_ROOT ] || exit 0 
     280+ 
     281+       export MAIL_ROOT 
     282+ 
     283+       rm -f /var/run/$NAME.pid 
     284+ 
     285+       $DAEMON $args 
     286+ 
     287+       MAX_WAIT=20 
     288+       while [ ! -f /var/run/$NAME.pid -a $MAX_WAIT -gt 0 ] 
     289+       do 
     290+               sleep 1 
     291+               MAX_WAIT=`expr $MAX_WAIT - 1` 
     292+       done 
     293+} 
     294+ 
     295+stop() { 
     296+       if [ -f /var/run/$NAME.pid ] 
     297+       then 
     298+               config_load xmail 
     299+               config_foreach xmail xmail 
     300+               [ -z "$MAIL_ROOT" ] || echo `date` > $MAIL_ROOT/.shutdown 
     301+               kill -INT `cat /var/run/$NAME.pid` 
     302+ 
     303+               MAX_WAIT=20 
     304+               while [ -f $MAIL_ROOT/.shutdown -a $MAX_WAIT -gt 0 ] 
     305+               do 
     306+                       sleep 1 
     307+                       MAX_WAIT=`expr $MAX_WAIT - 1` 
     308+               done 
     309+       fi 
     310+} 
     311+ 
     312+restart() { 
     313+       stop 
     314+       sleep 1 
     315+       start 
     316+} 
  • Makefile

     
    2121define Package/xmail 
    2222  SECTION:=mail 
    2323  CATEGORY:=Mail 
    24   DEPENDS:=+uclibcxx +libopenssl 
     24  DEPENDS:=+uclibcxx +libopenssl +libpthread 
    2525  TITLE:=advanced, fast and reliable ESMTP/POP3 mail server 
    2626  URL:=http://www.xmailserver.org/ 
    2727endef 
     
    4444                CPPFLAGS="$(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/uClibc++ -fno-builtin -fno-rtti -nostdinc++" \ 
    4545                LDFLAGS="$(TARGET_LDFLAGS) -nodefaultlibs -lcrypto -lssl -luClibc++ -ldl -lm -lpthread" \ 
    4646                all 
     47        tar -cjf $(PKG_BUILD_DIR)/MailRoot.tar.bz2 -C $(PKG_BUILD_DIR)/MailRoot --exclude bin . 
    4748endef 
    4849 
    4950define Package/xmail/install 
    5051        $(INSTALL_DIR) $(1)/usr/bin/ 
    5152        $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/* $(1)/usr/bin/ 
    52         $(INSTALL_DIR) $(1)/var/MailRoot/ 
    53         $(CP) $(PKG_BUILD_DIR)/MailRoot $(1)/var/ 
     53        $(INSTALL_DIR) $(1)/etc 
     54        $(INSTALL_DATA) $(PKG_BUILD_DIR)/MailRoot.tar.bz2 $(1)/etc/ 
     55        $(INSTALL_DIR) $(1)/etc/config 
     56        $(INSTALL_DATA) ./files/xmail.config $(1)/etc/config/xmail 
     57        $(INSTALL_DIR) $(1)/etc/init.d/ 
     58        $(INSTALL_BIN) $(PKG_BUILD_DIR)/xmail $(1)/etc/init.d/ 
    5459endef 
    5560 
    5661$(eval $(call BuildPackage,xmail))