Patch title: Release 85 bulk changes
Abstract:
File: /pliant/protocol/smtp/mail.page
Key:
    Removed line
    Added line
   
module "/pliant/language/unsafe.pli"
module "/pliant/language/context.pli"
module "/pliant/admin/md5.pli"
module "/pliant/admin/file.pli"
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/fullpliant/password.pli"
module "mail.pli"


para
  note "mail system global settings for this computer"
module "/pliant/language/unsafe.pli"
module "/pliant/language/context.pli"
module "/pliant/admin/md5.pli"
module "/pliant/admin/file.pli"
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/fullpliant/password.pli"
module "mail.pli"


para
  note "mail system global settings for this computer"
    if not allowed:"administrator"
      read_only_mode := true
    read_only not allowed:"administrator"
    title "This computer mails settings"
    header "General settings"
      table columns 3 border 0
        cell [SMTP service:]
        cell
          var Str smtp := this_computer "pliant" "mail" "smt
          select "" smtp
            option "No" "false"
            option "Yes" "true"
        cell [Should we run the SMTP service on this server 
        cell [POP3 service:]
        cell
          var Str pop3 := this_computer "pliant" "mail" "pop
          select "" pop3
            option "No" "false"
            option "Yes" "true"
        cell [Should we run the POP3 service on this server 
        cell [Mailboxes redirect daemon:]
        cell
          var Str redirect := this_computer "pliant" "mail" 
          select "" redirect
            option "No" "false"
            option "Yes" "true"
        cell [Should we run the mailboxes redirection daemon
        cell [Mailboxes path:]
        cell
          var Str path := this_computer "pliant" "mail" "pat
          if path=""
            path := "data:/pliant/mail/"
          input "" path length 30 noeol
        cell
          [Where the mailboxes are stored on this computer.]
          [Keep in mind that a Pliant path starting with] ; 
          [Futhermore, a Pliant path must end with a] ; fixe
    header "SMTP service"
      table columns 3 border 0
        cell [Name:]
        cell
          var Str name := this_computer "pliant" "mail" "smt
          input "" name length 20 noeol
        cell
          [The name this computer will give to others when t
          [If blank,] ; fixed (text " "+computer_fullname+" 
        cell [Log file:]
        cell
          var Str log := this_computer "pliant" "mail" "smtp
          input "" log length 30 noeol
        cell [If not empty, all dialogs with SMTP clients co
    header "Forwarding messages"
      table columns 3 border 0
        cell [Next server:]
        cell
          var Str route := this_computer "pliant" "mail" "fo
          input "" route length 20 noeol
        cell [If set, all mails will be forwarded to the spe
        cell [ISP SMTP server:]
        cell
          var Str isp := this_computer "pliant" "mail" "forw
          input "" isp length 20 noeol
        cell [If set, a web mail user will be abble to force
        cell [Threads:]
        cell
          var Str threads := this_computer "pliant" "mail" "
          input "" threads length 3 noeol
        cell [How many mails should we try to forward at onc
        cell [Sleep:]
        cell
          var Str sleep := this_computer "pliant" "mail" "fo
          input "" sleep length 4 noeol
        cell [When we tryed to forward all messages, how man
    header "Redirecting mailboxes"
      table columns 3 border 0
        cell [Threads:]
        cell
          var Str r_threads := this_computer "pliant" "mail"
          input "" r_threads length 3 noeol
        cell [How many mailboxes should we try to redirect a
        cell [Sleep:]
        cell
          var Str r_sleep := this_computer "pliant" "mail" "
          input "" r_sleep length 4 noeol
        cell [When we tryed to redirect all mailboxes, how m
    if allowed:"administrator"
      button "Update"
        this_computer "pliant" "mail" "smtp_service" := smtp
        this_computer "pliant" "mail" "pop3_service" := pop3
        this_computer "pliant" "mail" "redirect_service" := 
        this_computer "pliant" "mail" "path" := path
        this_computer "pliant" "mail" "smtp_name" := name
        this_computer "pliant" "mail" "smtp_log" := log
        this_computer "pliant" "mail" "forward_route" := rou
        this_computer "pliant" "mail" "forward_isp" := isp
        this_computer "pliant" "mail" "forward_threads" := t
        this_computer "pliant" "mail" "forward_sleep" := sle
        this_computer "pliant" "mail" "redirect_threads" := 
        this_computer "pliant" "mail" "redirect_sleep" := r_
        goto_backward


header "Mailboxes"
  table columns (shunt allowed:"administrator" 4 3)
    cell header
      [Mailbox ID]
    cell header
      [Description]
    if allowed:"administrator"
      cell header
        [Content]
    cell
      void
    each m mailbox
      cell
        fixed (text keyof:m) ; eol
        text m:name
      cell
        text m:abstract
      if allowed:"administrator"
        cell
          small
            var Array:FileInfo in_files := file_list m:in_pa
            var Array:FileInfo out_files := file_list m:out_
            if in_files:size>0
              var Int count := 0
              var DateTime now := datetime
              var DateTime older := now
              for (var Int i) 0 in_files:size-1
                if in_files:i:extension=".mail" and in_files
                  count += 1 ; older := in_files:i:datetime
              var Int days := now:date:days-older:date:days
              text string:count+" in mail"+(shunt count>1 "s
              fixed [ ] ; text string:days+" day"+(shunt day
              if out_files:size>0 eol
            if out_files:size>0
              var Int count := 0 ; var Intn total := 0
              for (var Int i) 0 out_files:size-1
                if out_files:i:extension=".mail"
                  count += 1 ; total += out_files:i:size
              text string:count+" out mail"+(shunt count>1 "
              fixed [ ] ; text (string total\2^20)+" MB"
      cell
        button "Edit"
    title "This computer mails settings"
    header "General settings"
      table columns 3 border 0
        cell [SMTP service:]
        cell
          var Str smtp := this_computer "pliant" "mail" "smt
          select "" smtp
            option "No" "false"
            option "Yes" "true"
        cell [Should we run the SMTP service on this server 
        cell [POP3 service:]
        cell
          var Str pop3 := this_computer "pliant" "mail" "pop
          select "" pop3
            option "No" "false"
            option "Yes" "true"
        cell [Should we run the POP3 service on this server 
        cell [Mailboxes redirect daemon:]
        cell
          var Str redirect := this_computer "pliant" "mail" 
          select "" redirect
            option "No" "false"
            option "Yes" "true"
        cell [Should we run the mailboxes redirection daemon
        cell [Mailboxes path:]
        cell
          var Str path := this_computer "pliant" "mail" "pat
          if path=""
            path := "data:/pliant/mail/"
          input "" path length 30 noeol
        cell
          [Where the mailboxes are stored on this computer.]
          [Keep in mind that a Pliant path starting with] ; 
          [Futhermore, a Pliant path must end with a] ; fixe
    header "SMTP service"
      table columns 3 border 0
        cell [Name:]
        cell
          var Str name := this_computer "pliant" "mail" "smt
          input "" name length 20 noeol
        cell
          [The name this computer will give to others when t
          [If blank,] ; fixed (text " "+computer_fullname+" 
        cell [Log file:]
        cell
          var Str log := this_computer "pliant" "mail" "smtp
          input "" log length 30 noeol
        cell [If not empty, all dialogs with SMTP clients co
    header "Forwarding messages"
      table columns 3 border 0
        cell [Next server:]
        cell
          var Str route := this_computer "pliant" "mail" "fo
          input "" route length 20 noeol
        cell [If set, all mails will be forwarded to the spe
        cell [ISP SMTP server:]
        cell
          var Str isp := this_computer "pliant" "mail" "forw
          input "" isp length 20 noeol
        cell [If set, a web mail user will be abble to force
        cell [Threads:]
        cell
          var Str threads := this_computer "pliant" "mail" "
          input "" threads length 3 noeol
        cell [How many mails should we try to forward at onc
        cell [Sleep:]
        cell
          var Str sleep := this_computer "pliant" "mail" "fo
          input "" sleep length 4 noeol
        cell [When we tryed to forward all messages, how man
    header "Redirecting mailboxes"
      table columns 3 border 0
        cell [Threads:]
        cell
          var Str r_threads := this_computer "pliant" "mail"
          input "" r_threads length 3 noeol
        cell [How many mailboxes should we try to redirect a
        cell [Sleep:]
        cell
          var Str r_sleep := this_computer "pliant" "mail" "
          input "" r_sleep length 4 noeol
        cell [When we tryed to redirect all mailboxes, how m
    if allowed:"administrator"
      button "Update"
        this_computer "pliant" "mail" "smtp_service" := smtp
        this_computer "pliant" "mail" "pop3_service" := pop3
        this_computer "pliant" "mail" "redirect_service" := 
        this_computer "pliant" "mail" "path" := path
        this_computer "pliant" "mail" "smtp_name" := name
        this_computer "pliant" "mail" "smtp_log" := log
        this_computer "pliant" "mail" "forward_route" := rou
        this_computer "pliant" "mail" "forward_isp" := isp
        this_computer "pliant" "mail" "forward_threads" := t
        this_computer "pliant" "mail" "forward_sleep" := sle
        this_computer "pliant" "mail" "redirect_threads" := 
        this_computer "pliant" "mail" "redirect_sleep" := r_
        goto_backward


header "Mailboxes"
  table columns (shunt allowed:"administrator" 4 3)
    cell header
      [Mailbox ID]
    cell header
      [Description]
    if allowed:"administrator"
      cell header
        [Content]
    cell
      void
    each m mailbox
      cell
        fixed (text keyof:m) ; eol
        text m:name
      cell
        text m:abstract
      if allowed:"administrator"
        cell
          small
            var Array:FileInfo in_files := file_list m:in_pa
            var Array:FileInfo out_files := file_list m:out_
            if in_files:size>0
              var Int count := 0
              var DateTime now := datetime
              var DateTime older := now
              for (var Int i) 0 in_files:size-1
                if in_files:i:extension=".mail" and in_files
                  count += 1 ; older := in_files:i:datetime
              var Int days := now:date:days-older:date:days
              text string:count+" in mail"+(shunt count>1 "s
              fixed [ ] ; text string:days+" day"+(shunt day
              if out_files:size>0 eol
            if out_files:size>0
              var Int count := 0 ; var Intn total := 0
              for (var Int i) 0 out_files:size-1
                if out_files:i:extension=".mail"
                  count += 1 ; total += out_files:i:size
              text string:count+" out mail"+(shunt count>1 "
              fixed [ ] ; text (string total\2^20)+" MB"
      cell
        button "Edit"
          if not allowed:"administrator"
            read_only_mode := true
          read_only not allowed:"administrator"
          title "Mailbox '"+keyof:m+"'"
          header "Basic informations"
            table columns 3 border 0
              cell
                [Mailbox ID:]
              cell
                fixed (text keyof:m)
              cell
                []
              cell
                [User name:]
              cell
                input "" m:name
              cell
                [The usual name of the guy owning the mailbo
              cell
                [Computer:]
              cell
                input "" m:computer
              cell
                [The full name of the computer handling the 
              cell
                [From:]
              cell
                select "" m:check_from
                  option "Must be correct" "true"
                  option "Not checked" "false"
              cell
                [You can ask to reject mails with an imprope
              cell
                [To/Cc:]
              cell
                select "" m:check_to
                  option "Must be correct" "true"
                  option "Not checked" "false"
              cell
                [You can ask to reject mails with a missing 
                [The problem here is that mails sent from ma
              cell
          title "Mailbox '"+keyof:m+"'"
          header "Basic informations"
            table columns 3 border 0
              cell
                [Mailbox ID:]
              cell
                fixed (text keyof:m)
              cell
                []
              cell
                [User name:]
              cell
                input "" m:name
              cell
                [The usual name of the guy owning the mailbo
              cell
                [Computer:]
              cell
                input "" m:computer
              cell
                [The full name of the computer handling the 
              cell
                [From:]
              cell
                select "" m:check_from
                  option "Must be correct" "true"
                  option "Not checked" "false"
              cell
                [You can ask to reject mails with an imprope
              cell
                [To/Cc:]
              cell
                select "" m:check_to
                  option "Must be correct" "true"
                  option "Not checked" "false"
              cell
                [You can ask to reject mails with a missing 
                [The problem here is that mails sent from ma
              cell
                [Auto answer:]
              cell
                text_input "" m:auto_answer columns 40 rows 3
              cell
                [If this field is not empty, anybody sending a mail here will automatically receive the specified answer.]
              cell
                [Archive:]
              cell
                select "" m:archive
                  option "yes" "true"
                  option "no" "false"
              cell
                [Should the server keep a copy of the mails 
            table columns 2 border 0
              cell [Description:]
              cell (text_input "" m:abstract rows 5 columns 
          header "Accessing mails using an external mailer (
            table columns 3 border 0
              cell
                [SMTP IP:]
              cell
                input "" m:smtp_ip
              cell
                [Only clients connecting from the specifyed 
                [If empty, no client will be allowed to post
                note "extra details"
                  title "IP field"
                  [This is used to restrict the computers th
                  [As an example, you may want to specify th
                  para
                    [An axample can be:] ; fixed [ 127.0.0.1
                    [and it means either 127.0.0.1 or 10.30.
              cell
                [POP3:]
              cell
                select "" m:pop3_level
                  option "Not allowed on this mailbox" "0"
                  option "Can be used only to detect new mes
                  option "Can read messages" "2"
                  option "Can read and remove messages" "3"
              cell
                []
              cell
                [POP3 IP:]
              cell
                input "" m:pop3_ip
              cell
                [If not empty, only clients connecting from 
                note "extra details"
                  title "IP field"
                  [This is used to restrict the computers th
                  [As an example, you may want to specify th
                  para
                    [An axample can be:] ; fixed [ 127.0.0.1
                    [and it means either 127.0.0.1 or 10.30.
              cell
                [POP3 password:]
              cell
                if allowed:"administrator"
                  input "" (var Str password) password
              cell
                [Type in the clear password that the POP3 cl
                [In the mailboxes database, only the MD5 dig
          header "Relay computer (optional)"
            [You will use a relay computer when the server h
            table columns 3 border 0
              cell
                [Relay computer:]
              cell
                input "" m:relay_computer
              cell
                [You will use a relay computer if the comput
                [In such a case, the MX field of the domain 
              cell
                [Archive:]
              cell
                select "" m:relay_archive
                  option "no" "false"
                  option "yes" "true"
              cell
                [Should the relay computer also keep a copy 
          header "Mailing list (optional)"
            select "This is a mailing list: " m:list
              option "no" "false"
              option "yes" "true"
            [Subscribers:]
            table columns 2
              cell header [Line ID]
              cell header [Mailbox]
              each s m:subscriber
                cell
                  text keyof:s
                cell
                  input "" s length 30
            if allowed:"administrator"
              input "Line ID: " (var Str sid) length 10 noeo
              button "Add a line" noeol
                m:subscriber create sid
                reload_page
              button "Remove a line"
                m:subscriber delete sid
                reload_page
          header "Advanced settings (not recommended)"
            table columns 3 border 0
              cell
                [Mailbox path:]
              cell
                input "" m:path
              cell
                [Where mails related to this mailbox are sto
                [You should leave this field blank most of t
          if allowed:"administrator"
            button "Update mailbox informations"
              if password<>""
                mail_secret_database:data:box create keyof:m
                mail_secret_database:data:box:(keyof m) pop3
              goto_backward
  if allowed:"administrator"
    input "Mailbox ID: " (var Str mid) length 30 noeol
    button "Create the new mailbox" noeol
      mailbox create mid
      reload_page
    button "Delete the mailbox"
      mailbox delete mid
      mail_secret_database:data:box delete mid
      reload_page

header "Redirections"
  table columns 4
    cell header
      [Line ID]
    cell header
      [User / Server]
    cell header
      [Status]
    cell void
    each r mail_database:data:redirect
      cell
        text keyof:r
      cell
        text r:user+" / "+r:pop3_server
      cell
        text (shunt r:error="" "ok" "trouble")
      cell
        button "edit"
                [Archive:]
              cell
                select "" m:archive
                  option "yes" "true"
                  option "no" "false"
              cell
                [Should the server keep a copy of the mails 
            table columns 2 border 0
              cell [Description:]
              cell (text_input "" m:abstract rows 5 columns 
          header "Accessing mails using an external mailer (
            table columns 3 border 0
              cell
                [SMTP IP:]
              cell
                input "" m:smtp_ip
              cell
                [Only clients connecting from the specifyed 
                [If empty, no client will be allowed to post
                note "extra details"
                  title "IP field"
                  [This is used to restrict the computers th
                  [As an example, you may want to specify th
                  para
                    [An axample can be:] ; fixed [ 127.0.0.1
                    [and it means either 127.0.0.1 or 10.30.
              cell
                [POP3:]
              cell
                select "" m:pop3_level
                  option "Not allowed on this mailbox" "0"
                  option "Can be used only to detect new mes
                  option "Can read messages" "2"
                  option "Can read and remove messages" "3"
              cell
                []
              cell
                [POP3 IP:]
              cell
                input "" m:pop3_ip
              cell
                [If not empty, only clients connecting from 
                note "extra details"
                  title "IP field"
                  [This is used to restrict the computers th
                  [As an example, you may want to specify th
                  para
                    [An axample can be:] ; fixed [ 127.0.0.1
                    [and it means either 127.0.0.1 or 10.30.
              cell
                [POP3 password:]
              cell
                if allowed:"administrator"
                  input "" (var Str password) password
              cell
                [Type in the clear password that the POP3 cl
                [In the mailboxes database, only the MD5 dig
          header "Relay computer (optional)"
            [You will use a relay computer when the server h
            table columns 3 border 0
              cell
                [Relay computer:]
              cell
                input "" m:relay_computer
              cell
                [You will use a relay computer if the comput
                [In such a case, the MX field of the domain 
              cell
                [Archive:]
              cell
                select "" m:relay_archive
                  option "no" "false"
                  option "yes" "true"
              cell
                [Should the relay computer also keep a copy 
          header "Mailing list (optional)"
            select "This is a mailing list: " m:list
              option "no" "false"
              option "yes" "true"
            [Subscribers:]
            table columns 2
              cell header [Line ID]
              cell header [Mailbox]
              each s m:subscriber
                cell
                  text keyof:s
                cell
                  input "" s length 30
            if allowed:"administrator"
              input "Line ID: " (var Str sid) length 10 noeo
              button "Add a line" noeol
                m:subscriber create sid
                reload_page
              button "Remove a line"
                m:subscriber delete sid
                reload_page
          header "Advanced settings (not recommended)"
            table columns 3 border 0
              cell
                [Mailbox path:]
              cell
                input "" m:path
              cell
                [Where mails related to this mailbox are sto
                [You should leave this field blank most of t
          if allowed:"administrator"
            button "Update mailbox informations"
              if password<>""
                mail_secret_database:data:box create keyof:m
                mail_secret_database:data:box:(keyof m) pop3
              goto_backward
  if allowed:"administrator"
    input "Mailbox ID: " (var Str mid) length 30 noeol
    button "Create the new mailbox" noeol
      mailbox create mid
      reload_page
    button "Delete the mailbox"
      mailbox delete mid
      mail_secret_database:data:box delete mid
      reload_page

header "Redirections"
  table columns 4
    cell header
      [Line ID]
    cell header
      [User / Server]
    cell header
      [Status]
    cell void
    each r mail_database:data:redirect
      cell
        text keyof:r
      cell
        text r:user+" / "+r:pop3_server
      cell
        text (shunt r:error="" "ok" "trouble")
      cell
        button "edit"
          if not allowed:"administrator"
            read_only_mode := true
          read_only not allowed:"administrator"
          title "Mail redirect definition"
          table columns 3 border 0
            cell header [pick mails from] ; cell void ; cell
            cell
              [POP3 server:]
            cell
              input "" r:pop3_server
            cell
              []
            cell
              [POP3 user:]
            cell
              input "" r:user
            cell
              []
            cell
              [POP3 password:]
            cell
              var Str pwd := password r:pop3_server r:user
              input "" (var Str pwd) password
            cell
              []
            cell header [put mails on] ; cell void ; cell vo
            cell
              [SMTP server:]
            cell
              input "" r:smtp_server
            cell
              []
            cell
              [Mailbox:]
            cell
              input "" r:mailbox length 30
            cell
              []
            cell header [status] ; cell void ; cell void
            cell
              [Status:]
            cell
              text (shunt r:error="" "ok" r:error)
            cell
              []
          if allowed:"administrator"
            button "Update redirect informations"
              if pwd<>""
                password create r:pop3_server
                password:(r:pop3_server) create r:user
                password:(r:pop3_server):(r:user) password :
              goto_backward
  if allowed:"administrator"
    input "Redirect ID: " (var Str rid) length 3 noeol
    button "Create the new redirection" noeol
      mail_database:data:redirect create rid
      reload_page
    button "Delete the redirection"
      mail_database:data:redirect delete rid
      reload_page


          title "Mail redirect definition"
          table columns 3 border 0
            cell header [pick mails from] ; cell void ; cell
            cell
              [POP3 server:]
            cell
              input "" r:pop3_server
            cell
              []
            cell
              [POP3 user:]
            cell
              input "" r:user
            cell
              []
            cell
              [POP3 password:]
            cell
              var Str pwd := password r:pop3_server r:user
              input "" (var Str pwd) password
            cell
              []
            cell header [put mails on] ; cell void ; cell vo
            cell
              [SMTP server:]
            cell
              input "" r:smtp_server
            cell
              []
            cell
              [Mailbox:]
            cell
              input "" r:mailbox length 30
            cell
              []
            cell header [status] ; cell void ; cell void
            cell
              [Status:]
            cell
              text (shunt r:error="" "ok" r:error)
            cell
              []
          if allowed:"administrator"
            button "Update redirect informations"
              if pwd<>""
                password create r:pop3_server
                password:(r:pop3_server) create r:user
                password:(r:pop3_server):(r:user) password :
              goto_backward
  if allowed:"administrator"
    input "Redirect ID: " (var Str rid) length 3 noeol
    button "Create the new redirection" noeol
      mail_database:data:redirect create rid
      reload_page
    button "Delete the redirection"
      mail_database:data:redirect delete rid
      reload_page