sffmail

sffmail             - to read from stdin
    sffmail -o queuename
    sffmail -h FipHdr information

Simple program to read in stream of data and stuff it on disk.

It is used in two main areas - capturing email inbound and capturing file sent
via the W4 module.

When used for receiving mail sent from an email server - usually kicked off by
'sendmail' - then an entry in '/etc/aliases' is required for EACH logon tracked
:

    fip: "| /fip/bin/sffmail -o mail_store -h RZ:fip"

It is a good idea to add a FipHdr field - like RZ in the above example -
containing the actual logon as mail from ListServers etc do not usually have a
single address.

For most recent versions of sendmail, you will need to reload aliases once you
have modified it using something like :
    /usr/lib/sendmail -bi
or  /usr/sbin/newaliases

and on rs6000   refresh -s sendmail

Please check your particular system what is required.

We can also 'sffmail' for receiving files from the browser using W4 using the
'-w' switch.

Input switches :
    -e : do NOT add all environment variables as FipHdr fields  default: yes
    -E : add all environment variables as FipHdr fields default: yes
        *note this option was changed in version 01s to ALWAYS put out the envs
    -o : output file path and queue         default: spool/xsmtp
    -h : Fip Header information         default: none
        -h "#DU:mailsort#SC:ascii#SN:\$e\$y\$i\$d\$z"
    -w : use with w4 incoming files         default: no
    -l : log incoming to fip LOG            default: no
    -m : For w4, message to send back if no message file
    default:<HTML><Head></HEAD><BODY>Thank you for \\SV from \\SA - reference
\\SN</BODY></HTML>
    -M : For w4 name of a file of FipSeq to send back
        default: /fip/web/template/recvfile.answer
        Note old versions (pre 01f) used a default of
            /fip/web/setup/w4.incoming.answer
        recvfile.answer uses a stylesheet /fip/web/pages/css/recvfilex.css
    -r : For w4 multiple files  - filename of the TOP
    -R : For w4 multiple files  - filename of the TAIL
    -d : folder into which we can put the raw files. default: none
        use this for debugging
    -u : default DU if none specified (mainly for W4 traffic). def:
w4remoteUnverified
    -z : name of parameter file in tables/mail  default: CHECK.MIME
    -v : version and exit

For those switches with parameters, the parameter MUST be separated by a space.

FipHdr fields filled in are :
For W4 -
    SP - REMOTE_ADDR of the sendert
    SN - Name given by sender
    ST - Content-type
    SW - Full Path of file sent on sender's box
    SV - filename on sender's box
    SA - Logon
    S1 - Publication of that Logon (if there is one)
    S2 - Section of that Logon (if there is one)
    S3 - UserType of that Logon (if there is one)
    S4 - HTTP Host - proxy server
    S5 - IPaddress of the sender
    S6 - Receiving system hostname
    S7 - Receiving system Protocol
    PLUS a multitude of date and time fields (the 'HX's)
    PLUS any field with a name="FIP-XX" in the template is added to the FipHdr
    PLUS any mime headers in 'xxx-fip-SU: (spc) (data)' format

    If there is no DU for ipwheel to match, a default is used -
"w4remoteUnverified" (from version 01p)
eg
    <input type="hidden" name="FIP-DU" value="remote2cci">
    <input type="hidden" name="FIP-SU" value="w4remote">
    <input type="radio" name="FIP-WB" value="holding" checked>
    <input type="input" name="FIP-WK" value="" size=15>
    <input type="input" name="FIP-WN" value="" size=30>
    <input type="input" name="FIP-WI" value="" size=5>

Note there is also an (optional) parameter file with a list of mime-types to
allow or disallow. The parameter file is in tables/mail/CHECK.MIME unless
specified otherwise using the '-z' input switch.

The syntax for the parameters are in the normal Fip standard and the keywords
are :
    ; comment
    round-robin: (number)              default: none
    round-robin-fiphdr: (2 letter FipHdr field) default: none
        Round-Robin the output files and add the RR number to the fipHdr.
        Both parameters are required - the Number is the MAXimum.
        eg to leave the output in folder1 to folder9
            round-robin:9
            round-robin-fiphdr:RR
        and a suitable output folder might be   /fip/spool/xchg\RR
        Note that the round-robin number is NOT added automatically to any output
folder - ie you MUST specify a FipHdr as in /fip/spool/2xml\RR

    save-data-path: (pathname for data)
        This puts the data of the incoming data in a file in this folder and creates
a FipHdr file that contains 2 FipHdrs containing the full path/filename
            SX: and FTP_EXTERNAL_FILE:
        (ipbalan uses SX and ipftp uses FTP_EXTERNAL_FILE)
            eq  save-data-path:/fip/data/jpegs/\$e\$y\$i\$d/
        Use this for big files that you do not want to copy around the Fip Spool
area.
        ** if specified, ALL non-standalone files will be split like this **

    default-allow-mime-types: yes/no/allow/disallow
        Make the default to either allow all (except those specifically disallowed)
or vice versa
        default is yes - ie allow everything in.
        yes or allow are the same
        no or disallow are the same
    allow-empty-mime-type: yes/no/allow/disallow
        default is yes to allow all files with NO mimetype specified to be received.
        yes or allow are the same
        no or disallow are the same

    allow-mime-type
    disallow-mime-type
        Specify the mimetype you want to accept or reject
        There can be up to 100 allow/disallow-mime-types
        eg  allow-mime-type:text/plain
        There are no defaults
        Note only the string entered is checked, so :
            allow-mime-type:text
        will allow ANY text variant - text/plain, text/html, texturally/wonderful.

Normally, if you want to control the types of files received, then :
either  1. make the default ALLOW and list the types to DISALLOW
        default-allow-mime-type:yes
        disallow-mime-type:application/msword
        disallow-mime-type:binary
or  2. make the default DISALLOW and list the types to ALLOW
        default-allow-mime-type:no
        allow-mime-type:text/plain
        allow-mime-type:text/rtf
        allow-mime-type:x-fip-quark

Example :
; DISallow all by default and explictly allow a couple
default-allow-mime-types:no

; nothing there - reject it !
allow-empty-mime-types:no

; list of those we want
allow-mime-type:text
allow-mime-type:image/jpeg
allow-mime-type:application/rtf
allow-mime-type:application/x-macbinary
allow-mime-type:application/mac-binhex40
allow-mime-type:application/octet-stream
allow-mime-type:application/zip
allow-mime-type:application/x-msexcel

The following parameters may also be specified and are the equivalent for the
same inputs in the data stream.
        extra-fiphdr:   Add these extra FipHdr fields to each inbound file
        w4-default-dest:    (Fip DU or destination in sys/USERS)
        Send all files from senders who have NOT logged on to this destination.
        default is 'w4remoteUnverified'

        filebefore
        fileafter   contents of these files will be added to the output data - before
or after the main data.

        The following 'w4-message*' parameters allow replacement of the standard
messages returned to the client.
        (if marked 'file', it is the name of a file in web/templates)

either      w4-message-file     file - complete HTML page template for a single
incoming file
or      w4-message      FipSeq - complete HTML page in FipSeq
or      w4-message-top      file - top response template
        w4-message-meta     file - first response - poss with FipHdrs and textarea text
        w4-message-item     file - template for a each FILE sent
        w4-message-missing  file - if there were NO files send/received (using ..-top
and ..-tail)
        w4-message-tail     file - tail response template

        w4-message-nothing  FipSeq - no files message (if no .-top)
        w4-message-no-files file template for 'No Files' (if no .-top)
        w4-message-invalid-mimetype
            default is ST:<font color=red>** File ignored - MimeType disallowed - \\ST,
please resend in acceptable format</font>
        w4-message-hr       FipSeq replacement for <hr> between files

        w4-log-accepted: (FipSeq)
            Fip Item log line for files accepted and forwarded on to other parts of Fip
            default is no string
        w4-log-rejected: (FipSeq)
            Fip Item log line for rejected files
            default is "** File ignored from \\SU - MimeType disallowed - \\ST"

        rawque: (FipSeq)
            Leave a copy of the incoming file in this folder
            eg  rawque:/fip/data/raw.data/\$e\$y\$i\$d_sffmail
            default: none

        package-uid-fiphdr: (2 letter FipHdr)
        package-que: (FipSeq folder name)
        package-queue: (FipSeq folder name)
        package-name: (FipSeq file name)
        balance-package: (balance group for package)

        fiphdr-fipid:(2 letter FipHdr field to hold the FipId)
            use this to save the FipId
            (it requires the Fipid to be in the HTTP_REFERER environment variable)

        hash-in-fiphdr: (FipSeq chr)            default:none
            A hash/pound (#) in a FipHdr field is mapped to this chr
            Normally hashes are end-of-field in a FipHdr. So it needs to be mapped to
something else and we changed it here on outbound.

        trigger-extra: (ExtraFipHDr for an extra trigger file)
            Use this FipHdr info to create an extra file AFTER all the others have been
processed.
            eg trigger-fiphdr:\nRF:trigger\n
            This requires an optional input variable on the form (usually hidden) :
            eg  <!-- AFTER all the data, metadata and files.. trigger -->
                <input type="hidden" name="SFFMAIL_TRIGGER" value="XX:##UID##">
            The supplementary file is triggered - maybe for tracking purposes - to a
different DU (using meta specified in the FH parameter)

Note that if defining Unix escape chrs in scripts, you will probably need to
escape the escapes ! eg : \n becomes \\n

Other env varis can be used to define where the system is :
    SFFMAIL_Z   name of a parameter file
            This is overridden by the '-z' input switch.
    SFF_HOME    where the home or top queue is.     default: /fip
            eg  setenv  SFF_HOME    /ripexpress/underware
    SFF_LOG     where the log files queue is        default: (SFF_HOME)/log
    SFF_SPOOL   where the data queues are       default: (SFF_HOME)/spool
    SFF_TMP     where the tmp data queues is        default: (SFF_HOME)/x
            THIS MUST BE ON THE SAME UNIX VOLUME as SFF_SPOOL queues.
            ie if spools are on /data99 which is hard disk /dev/sd0, you MUST also
            have the TMP queue on the same disk/partition

NOTE that for all BUT SFF_HOME, if the parameter starts with a '/' then it is a
hard, absolute path; if not then the spool area is under SFF_HOME.
    eg  setenv  SFF_SPOOL   /data7      will look under /data7 for queues
    while   setenv  SFF_SPOOL   data7       will look under /fip/data7

Version Control
;2h21   05sep04 added zippy and sum: and bugette in copying data..
    ;c 17oct06 allow alphanumeric Fipids
    ;d-g 11mar07 added FIP-MULTI-FILE
    ;h1-7 21dec10 64bit issue ;h2 6dec13 bugette - extra data before start of blob
;3 HR
    ;8-10 2jun15 added outname, outque, SX and RR
    ;11 WINNT again ;12 hash-in-fiphdr/isHash added; 13-15 added trigger and
extra-fiphdr better
    ;16-17 4oct15 added pkg for updating and new HR ;18-21 balance-package
;001z   27mar99 chj added w4 bits
    ;a 29may99 mods to Fiplogon
    ;b 21oct99 added H* fields
    ;c 01jan00 envs added
    ;d 01may00 log added
    ;e 17jan01 added -m/-M/-d
    ;f 20feb01 response template is now in /fip/web/templates
    ;g/h 21feb01 Allow big textarea called FIP-DATA as data
    ;j 25jul01 bugette - w4 new file overwrote SW (fullpathname)
            not XX (short-just filename)
    ;k 20sep01 RADIUS_* -> use RealName.
    ;l/m 24jan02 cleaned up multiple files for w4
    ;n/o 07feb02 added -r/-R
    ;p 09aug02 added default DU for w4 if none specified and -u
    ;r 20aug02 seqno increments for every file now - not JUST for multiples
    ;s 04sep02 allow mime headers -> FipHdrs if in xxx-fip-SU: format
    ;t 13dec02 added tracking of mime-types with accept/rejects (param file)
    ;u 04jun03 added extra logon info for w4
    ;v 21jul03 zapped trailing CR on some binary files
    ;w 24jul03 chg of param file
    ;y 17nov03 small adjustments incase the Fip-Data field is > 128k
    ;z 22jan04 bug tracking...

(copyright) 2017 and previous years FingerPost Ltd.