I found some example configuration someware here i the mailing lisy but throw some strange error ..
here is the configuration files
1. Conf file for the main ser server
#
# $Id: ser.cfg,v 1.21 2003/06/04 13:47:36 jiri Exp $
#
# simple quick-start config script
#
 
# ----------- global configuration parameters ------------------------
 
debug=3         # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
 

# Uncomment these lines to enter debugging mode
/*
debug=7
fork=no
log_stderror=yes
*/
 
check_via=no # (cmd. line: -v)
dns=no           # (cmd. line: -r)
rev_dns=no      # (cmd. line: -R)
listen=80.72.85.178
port=5060
children=4
fifo="/tmp/ser_fifo"
alias=testinfo.intersoftpro.com 127.0.0.1 80.72.85.178
 
# ------------------ module loading ----------------------------------
 
# Uncomment this if you want to use SQL database
loadmodule "/usr/local/lib/ser/modules/mysql.so"
 
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
 
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
 
# load the voicemail module
#loadmodule "/usr/local/lib/ser/modules/vm.so"
 
# load the enum module
loadmodule "/usr/local/lib/ser/modules/enum.so"
 
# load the group module, to verify if a user forwards to voicemail
loadmodule "/usr/local/lib/ser/modules/group.so"
 
# load the nathelper module
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
 
# ----------------- setting module-specific parameters ---------------
 
# -- registrar parameter
# special NAT flag indicates that a registered client is behind NAT
modparam("registrar", "nat_flag", 6)
 
# -- usrloc params --
 
#modparam("usrloc", "db_mode",   0)
 
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
modparam("usrloc", "db_mode", 2)
modparam("usrloc", "db_url", "mysql://ser:heslo@localhost/ser")
 
# -- auth params --
# Uncomment if you are using auth module
#
modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this config),
# uncomment also the following parameter)
#
modparam("auth_db", "password_column", "password")
modparam("auth_db", "db_url", "mysql://ser:heslo@localhost/ser")
 
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
 
# -- voicemail params --
#modparam("voicemail", "db_url","mysql://ser:heslo@localhost/ser")
 
# -- voicemail params --
modparam("group", "db_url","mysql://serro:heslo@localhost/ser")
 
# -- nathelper params --
modparam("nathelper", "natping_interval", 60)
modparam("nathelper", "ping_nated_only", 1)
 
modparam("tm", "fr_inv_timer", 30 )
#modparam("tm", "fr_inv_timer", 8 )
 
# -------------------------  request routing logic -------------------
 
# main routing logic
 
route{
 log(1, "-------------------------------------------\n");
 log(1, "entering main loop\n");
 
 if (nat_uac_test("2")) {
  log(1, "src address different than via header->NAT detected\n");
  log(1, "force_rport and fix_nated_contact and setflag(5)\n");
  #try NAT traversal, works only if the client is symmetrical
  force_rport();
  fix_nated_contact();
  append_hf("P-hint: fixed NAT contact for request\r\n");
  # flag 5 indicates that incoming request is from NATed client
  setflag(5);
 };
 
 if (method=="REGISTER")
  log(1, "REGISTER message received\n");
 
 if (method=="INVITE")
  log(1, "INVITE message received\n");
 
 if (method=="ACK")
  log(1, "ACK message received\n");
 
 if (method=="BYE")
  log(1, "BYE message received\n");
 
        if (method=="CANCEL")
                log(1, "CANCEL message received\n");
 
 if (method=="SUBSCRIBE")
  log(1, "SUBSCRIBE message received\n");
 
 if (method=="NOTIFY")
  log(1, "NOTIFY message received\n");
 
 if (method=="OPTIONS")
  log(1, "OPTIONS message received\n");
 
 if (method=="INFO")
  log(1, "INFO message received\n");
 
 if (method=="MESSAGE")
  log(1, "MESSAGE message received\n");
 
 if (method=="REFER")
  log(1, "REFER message received\n");
 
 # initial sanity checks -- messages with
 # max_forwards==0, or excessively long requests
 if (!mf_process_maxfwd_header("10")) {
  sl_send_reply("483","Too Many Hops");
  break;
 };
 
 if (msg:len > max_len) {
 #if (len_gt( max_len )) {
  sl_send_reply("513", "Message too big");
  break;
 };
 
 # loose-route processing
 if (loose_route()) {
  log(1, "loose_route processing\n");
  t_relay();
  break;
 };
 
 # create transaction state; abort if error occured
# if ( !t_newtran()) {
#  sl_reply_error();
#  break;
# };
 
 # if the request is for other domain use UsrLoc
 # (in case, it does not work, use the following command
 # with proper names and addresses in it)
 if (uri==myself) {
 
  if (method=="REGISTER") {
   log(1, "analyzing REGISTER request\n");
# Uncomment this if you want to use digest authentication
   if (!www_authorize("80.72.85.178", "subscriber")) {
    www_challenge("80.72.85.178", "0");
    break;
   };
   
   if (isflagset(5)) {
    #register from nated client, save nat_flag=6
    #in location table
    setflag(6);
   };
   if (!save("location")) {
    log(1, "save location error\n");
    sl_reply_error();
   };
   break;
  };
 
  lookup("aliases");
 
  # check if number beginns with 00, then convert it into a +
  if (uri=~"^sip:359[0-9]*@") {
   log(1, "00 International number detected\n");
   # strip booth leading "0"
   strip(2);
   prefix("+");
  };
  # check if request uri begins with an internation phone number, if yes, try enum to resolve
  if (uri=~"^sip:\+[0-9]*@") {
   log(1, "+ International number detected\n");
   if (!enum_query("voice")) {
    log(1, "ENUM query failed, try enum without voice prefix\n");
    if (enum_query("")) {
     log(1, "ENUM without voice prefix also failed\n");
    };
   };
 
   if (uri != myself) {
    log(1, "ENUM lookup revealed an external address, relaying...");
    route(1);
    break;
   };
  };
 
  #mark transaction for voicemail
  if (is_user_in("Request-URI", "voicemail\n")) {
   log(1, "requested user is in voicemail group");
   setflag(4);
  };
 
  # native SIP destinations are handled using our USRLOC DB
  if (!lookup("location")) {
   # handle user which was not found
   log(1, "requested user not found\n");
   route(4);
   break;
  };
 };
 
 #add failure route which should be performed if response code >=300
 if  (method=="INVITE" && isflagset(4)) {
  log(1, "invite for voicemail user->initiate failureroute[1]\n");
  t_on_failure("1");
 };
 
 # forward to current uri now; use stateful forwarding; that
 # works reliably even if we forward from TCP to UDP
 
 route(1);
}
 
route[1]{
 log(1, "-------------------------------------------\n");
 log(1, "entering route[1] - relaying SIP message\n");
 if ((isflagset(5)) || (isflagset(6))) {
  log(1, "at least one of the participants is NATed->record_route\n");
  record_route();
  log(1, "     -->setting up reply processing ->onreply_route[1]");
  t_on_reply("1");
  if (method=="INVITE") {
   log(1, "     INVITE request-->force_rtp_proxy, set NATED-INVITE flag(7)");
   force_rtp_proxy();
   append_hf("P-hint: request forced to rtp proxy\r\n");
   setflag(7);
  };
 };
 
 log(1, "relaying message ...\n");
 if (!t_relay()) {
  log(1, "t_relay error occured\n");
  sl_reply_error();
 };
 
}
 
# all incoming replies for t_onrepli-ed transactions enter here
onreply_route[1] {
 log(1, "-------------------------------------------\n");
 log(1, "onreply_route[1] entered\n");
 
 if (isflagset(6)) {
  log(1, "transaction was sent to a NATED client -> fix nated contact\n");
  fix_nated_contact();
  append_hf("P-hint: fixed NAT contact for response\r\n");
 }
 
 if ( (status=~"100") ) {
  log(1, "status 100 received\n");
 };
 
 if ( (status=~"180") ) {
  log(1, "status 180 received\n");
 };
 
 if ( (status=~"202") ) {
  log(1, "status 202 received\n");
 };
 
 if ( (status=~"200" || status=~"183") ) {
  log(1, "status 2xx or 183");
  if ( isflagset(7) ) {
   log(1, "marked(7) as NATED-INVITE -> force_rtp_proxy \n");
   force_rtp_proxy();
   append_hf("P-hint: response forced to rtp proxy\r\n");
  };
 };
 
route[4]{
 log(1, "-------------------------------------------\n");
 log(1, "entering route[4] = requested user not online\n");
 # non-Voip -- just send "off-line"
 if (!(method == "INVITE" || method == "ACK" || method == "CANCEL" || method == "REFER" || method == "BYE")) {
  log(1, "no invite,ack,cancel,refer->return 404\n");
  sl_send_reply("404", "Not Found");
  break;
 };
 
 # not voicemail subscriber and no echo/conference call
        if ( isflagset(4)) {
                log(1, "flag(4) active\n");
        };
        if (uri =~ "conference") {
                log(1, "conference call\n");
        };
        if (uri =~ "echo") {
                log(1, "echo call\n");
        };
 if ( !( isflagset(4) || (uri =~ "conference") || (uri =~ "echo") ) ) {
  log(1, "no voicemail subscriber->return 404");
  sl_send_reply("404", "Not Found and no voicemail turned on");
  break;
 };
 
        if ( isflagset(5) ) {
                log(1, "caller is NATed->record_route\n");
                record_route();
                log(1, "     -->setting up reply processing ->onreply_route[1]");
                t_on_reply("1");
                if (method=="INVITE") {
                        log(1, "     INVITE request-->force_rtp_proxy");
                        force_rtp_proxy();
                };
        };
 
 # forward to voicemail now
 #rewritehostport("machtnix.ict.tuwien.ac.at:5060");
 log(1, "forward to voicemail\n");
 t_relay_to_udp("80.72.85.178", "5090");
 
 #klaus
 #forward(machtnix.ict.tuwien.ac.at, 5060)
}
 

   
failure_route[1] {
  /* XX: note: unsafe if preloaded routes without username used */
 log(1, "-------------------------------------------\n");
 log(1, "failureroute[1] entered\");
 revert_uri();
 #rewritehostport("machtnix.ict.tuwien.ac.at:5060");
# append_branch();
 t_relay_to_udp("machtnix.ict.tuwien.ac.at", "5060");
}
2. Configuration for the second instance of the ser server (for voice mail (
#
# $Id: ser.cfg,v 1.21 2003/06/04 13:47:36 jiri Exp $
#
# simple quick-start config script
#
 
# ----------- global configuration parameters ------------------------
 
debug=3         # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
 

#Uncomment these lines to enter debugging mode
/*
debug=7
fork=no
log_stderror=yes
*/
 
check_via=no # (cmd. line: -v)
dns=no           # (cmd. line: -r)
rev_dns=no      # (cmd. line: -R)
listen=80.72.85.178
port=5090
children=4
fifo="/tmp/ser_fifo"
alias=testinfo.intersoftpro.com 127.0.0.1 80.72.85.178
 
# ------------------ module loading ----------------------------------
 
# Uncomment this if you want to use SQL database
loadmodule "/usr/local/lib/ser/modules/mysql.so"
 
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
 
# load the voicemail module
loadmodule "/usr/local/lib/ser/modules/vm.so"
 
# ----------------- setting module-specific parameters ---------------
 
modparam("voicemail", "db_url","mysql://ser:heslo@localhost/ser")
 
# -------------------------  request routing logic -------------------
 
# main routing logic
 
route{
        log(1, "entering main loop\n"); 
        if (method=="REGISTER")
                log(1, "REGISTER message received\n");
 
        if (method=="INVITE")
                log(1, "INVITE message received\n");
 
        if (method=="ACK")
                log(1, "ACK message received\n");
 
        if (method=="BYE")
                log(1, "BYE message received\n");
 
        if (method=="CANCEL")
                log(1, "CANCEL message received\n");
 
        if (method=="SUBSCRIBE")
                log(1, "SUBSCRIBE message received\n");
 
        if (method=="NOTIFY")
                log(1, "NOTIFY message received\n");
 
        if (method=="OPTIONS")
                log(1, "OPTIONS message received\n");
 
        if (method=="INFO")
                log(1, "INFO message received\n");
 
        if (method=="MESSAGE")
                log(1, "MESSAGE message received\n");
 
        if (method=="REFER")
                log(1, "REFER message received\n");
 
# lookup("aliases");
 
 # initial sanity checks -- messages with
 # max_forwards==0, or excessively long requests
 if (!mf_process_maxfwd_header("10")) {
  sl_send_reply("483","Too Many Hops");
  break;
 };
 
# check changed from 0.8.11 to 0.8.12
# if (len_gt( max_len )) {
 if (msg:len > max_len) {
  sl_send_reply("513", "Message too big");
  break;
 };
 
# if (!uri==myself) {
#  sl_send_reply("404", "not reponsible for host in request-uri");
#  break;
# };
 
 
 
 # Voicemail specific configuration - begin
 
 if(method=="ACK" || method=="INVITE" || method=="BYE" || method=="REFER" || method=="CANCEL"){
                log(1, "Entering voicemail processing\n");
 
                log(1, "check if new transaction ... \n");
  if(t_newtran()){
                 log(1, "... yes, new transaction\n");
   t_reply("100","voicemail ser - Trying -- just wait a minute !");
   t_reply("100","voicemail ser - Trying 2 -- just wait a minute !");
   if(method=="INVITE" || method=="REFER"){
     log("**************** vm start - begin ******************\n");
     if( uri =~ "conference" ){
                    log(1, "incoming conference call\n");
      if(!vm("/tmp/am_fifo","conference")){
       log("could not contact conference server\n");
       t_reply("500","could not contact conference server");
      };
     }
     else if( uri =~ "echo" ){
                    log(1, "incoming echo call\n");
      if(!vm("/tmp/am_fifo","echo")){
       log("could not contact echo\n");
       t_reply("500","could not contact echo");
      };
     }
     else {
                    log(1, "incoming voicemail call\n");
      if(!vm("/tmp/am_fifo","voicemail")){
       log("could not contact voicemail\n");
       t_reply("500","could not contact voicemail");
      };
     };
     log("**************** vm start - end ******************\n");
     break;
   };
 
   if(method=="BYE" || method=="CANCEL"){
     log("**************** vm end/refer - begin ******************\n");
     if(!vm("/tmp/am_fifo","bye")){
      log("could not contact the media server\n");
      t_reply("500","could not contact the media server");
     };
     log("**************** vm end/refer - end ********************\n");
     break;
   };
  }
  else {
       log("could not create new transaction\n");
       sl_send_reply("500","could not create new transaction");
  };
 };
 
  # Voicemail specific configuration - end
 
 sl_send_reply("501", "method not understood here");
 log(1, "method not understood here\n");
 
}
3. Configuration for sems server
# $Id: sems.conf.sample,v 1.11.2.1 2004/01/27 15:08:28 rco Exp $
#
# sems.conf.sample
#
# Sip Express Media Server (sems)
#
# sample configuration file
#
#
# whitespaces (spaces and tabs) are ignored
# comments start with a "#" and may be used inline
#
# example: option=value1, value2  # i like this option
#
 
##################################
# global parameters              #
##################################
 
# optional parameter: fork={yes|no}
#
# - specifies if sems should run in daemon mode (background)
#   (fork=no is the same as -E)
fork=yes
 
# optional parameter: stderr={yes|no}
#
# - debug mode: do not fork and log to stderr
#   (stderr=yes is the same as -E)
stderr=no
 
# optional parameter: loglevel={0|1|2|3}
#
# - sets log level (error=0, warning=1, info=2, debug=3)
#   (same as -D)
loglevel=1
 
# optional parameter: fifo_name=<filename>
#
# - path and file name of our fifo file (same as -i)
fifo_name=/tmp/am_fifo
 
# optional parameter: ser_fifo_name=<filename>
#
# - path and file name of Ser's fifo file (same as -o)
ser_fifo_name=/tmp/ser_fifo
 
# optional parameter: plugin_path=<path>
#
# - sets the path to the plug-ins
# - may be absolute or relative to CWD
plugin_path=/usr/local/lib/sems/plug-in/
 
# optional parameter: smtp_server=<hostname>
#
# - sets address of smtp server
smtp_server=localhost
 
# optional parameter: smtp_port=<port>
#
# - sets port of smtp server
smtp_port=25
 

##################################
# module specific parameters     #
##################################
 
# sample voicemail configuration (inline)
config.voicemail=inline
 
# optional parameter: announce_path=<path>
#
# - sets the path where announce files are searched for
# - the file to be played is determined the following way:
#   <announce_path>/<domainname>/<username>.wav
#   if this file is not available <announce_path>/<default_anounce> is used
announce_path=/usr/local/lib/sems/audio/
 
# parameter: default_announce=<filename>
#
# - sets the name of the default announce WAV file
default_announce=default_en.wav
 
# parameter: max_record_time=<seconds>
#
# - maximum record time
max_record_time=30
 
# parameter: accept_delay=<x>                
#
# - delays accepting of the call for x seconds       
# - default value is 0    
accept_delay=20
 
# end of configuration section
# for voicemail module
config.voicemail=end
 

# sample announcement configuration (inline)
config.announcement=inline
 
# optional parameter: announce_path=<path>
#
# - sets the path where announce files are searched for
announce_path=/usr/local/lib/sems/audio/
 
# parameter: default_announce=<filename>
#
# - sets the name of the default announce WAV file
default_announce=default_en.wav
 
# end of configuration section for announcement module
config.announcement=end
 

# sample isdngw module configuration (external file)
# config.isdngw=/etc/isdngw.conf
 
# sample ivr module configuration (inline)
config.ivr=inline
 
#parameter: python_script_path=<full path>
python_script_path=/etc/ivr
 
#parameter: python_script_file=<filename>
python_script_file=example.py
 
# end of configuration section for ivr module
config.ivr=end
 

# sample conference configuration (inline)
config.conference=inline
 
# parameter: default_announce=<filename>
#
# - sets the full pathed name of the default announce WAV file.
#   Will be played to lonely users.
default_announce=/usr/local/lib/sems/audio/first_participant.wav
 
# end of configuration section for conference module
config.conference=end
 
# example configuration for number reader
config.number_reader=inline
 
number_path=/usr/local/lib/sems/audio/
 
prolog_file=welcome_to_number_reader.wav
 
epilog_file=thanks_calling_number_reader.wav
 
# end of number_reader configuration
config.number_reader=end
 
# add more module configurations here (inline or external):
#
# config.mymodule=<filename>
#  or
# config.mymodule=inline
# ..
# config.mymodule=end
 
Error is in second instance of the ser server
 0(19586) **************** vm start - end ******************
 0(19586) DEBUG:destroy_avp_list: destroing list (nil)
 0(19586) receive_msg: cleaning up
 2(19588) ERROR: fifo_server: command t_reply is not available
 2(19588) ERROR: fifo_server: command must begin with :: ringing
 2(19588) ERROR: fifo_server: command must begin with :: 00004C89728793F0
 2(19588) ERROR: fifo_server: command must have at least 3 chars
 2(19588) INFO: fifo_server: command empty
 2(19588) ERROR: fifo_server: command t_reply is not available
 2(19588) ERROR: fifo_server: command must have at least 3 chars
 2(19588) ERROR: fifo_server: command must begin with :: 00004C89728793F0
 2(19588) ERROR: fifo_server: command must begin with :: Content-Type: application/sdp
 2(19588) ERROR: fifo_server: command must begin with :: v=0
 2(19588) ERROR: fifo_server: command must begin with :: s=session
 2(19588) ERROR: fifo_server: command must begin with :: t=0 0
 2(19588) ERROR: fifo_server: command must begin with :: a=rtpmap:0 /
 2(19588) INFO: fifo_server: command empty
 2(19588) ERROR: fifo_server: command t_reply is not available
 2(19588) ERROR: fifo_server: command must begin with :: could not send response.
 2(19588) ERROR: fifo_server: command must begin with :: 00004C89728793F0
 2(19588) ERROR: fifo_server: command must have at least 3 chars
 2(19588) INFO: fifo_server: command empty
 1(19587) DEBUG: timer routine:0,tl=0x402ecf9c next=(nil)
 1(19587) DEBUG: FR_handler:stop retr. and send CANCEL (0x402ece60)
 1(19587) ->>>>>>>>> T_code=100, new_code=408
actualy i think that i miss some modiule to load but i am not sure and dont have any fogest idea what to do ..
 
10x in advance
Ps:
sry about my bad english