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 S8 - realname/logon S9 - localhost name E* - (optional) any mime headers in 'x-(yyy)-SU: (spc) (data)' format where yyy is the string in the xmime-key: parameter 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 'x-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) 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. response-mime-type:( mimetype of the response back) default: text/html xmime-key: (string) xmime-key0: (string) .. xmime-key9: (string) Save any mime headers including those starting 'x-(key)-(subkey):(data) These are saved in E0-9 eg xmime-key3:x-boat-anchor xmime-key5:x-boat-engine data = x-boat-anchor:long, blue x-boat-engine:steam gives E3:long, blue E5:steam Note you can also use the FipSeq filter for the same effect filter:E3 ZE X-BOAT-ANCHOR:* filter:E5 ZE X-BOAT-ENGINE:* in this case, add them to the FipHdr with 'extra-fiphdr:E3:\E3\nE5:\E5\n' 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) fiphdr-setup: (2 letter code) FipHdr field for Setup field fiphdr-subset: (2 letter code) FipHdr field for SubSet field fiphdr-service: (2 letter code) FipHdr field for Service field fiphdr-uid: (2 letter code) FipHdr field for Uid field fiphdr-action: (2 letter code) FipHdr field for Action or Variant field fiphdr-api-key: (2 letter code) FipHdr field for API-KEY fiphdr-api-code: (2 letter code) FipHdr field for API-CODE fiphdr-api-response: (2 letter code) FipHdr field for API-RESPONSE api-response can be raw, json, xml, html and may be used to vary the format of the response (if setup so !) 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) debug-file:(pathnme in FipSeq) put all incoming data into a debug file debug-file:/fip/data/\$e\$y\$i\$d_debug/\$h\$n\$b_xremote_\$z.fip 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 ;2h25 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 ;22-25 action/variant ;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.