This is a simple program I wrote just to reduce my long distance costs. With very little effort (and an ANSI compiler) this will compile and run on just about any machine with any architecture. You might need to exert a little thought to decide where to put the "config" file but, the rest should be straight forward enough. All this program does is take an input file (or you may type in the relevant information from the keyboard directly into mkms should you indicate that option on the command line) and create a simple *IX bourne-shell script that mails out all the messages to the various addresses at once. You do this on your personal machine and archive the files and the script together (or not) and upload the archive (or all the files and script) to your mailing account and then extract the files from the archive (or not if you uploaded individual files) and lastly execute the script (for a script named "mail.sh" you would do something like ". ./mail.sh" after doing a "chmod 700 mail.sh") It seems complex at first but really it is simple once you have tried it. A simple step-by-step list of what you need to do: 1) write files to mail out 2) create input file 3) run mkms on input file ("mkms -i -o") 4) (optional) archive all the files and script 5) upload archive (or individul files and script) to mailing address. 6) (optional dependant on #4) extract files from archive 7) execute script That's all there is to it.... There are three example files included in the archive - res.test, ftp.test and .mkmsrc. The res.test is a sample mail input file, ftp.test is a sample ftp index file and .mkmsrc is just an example of the "config" file. This "config" file is where the user places his/her "aliases". Add lines to the config file in the manner: alias real_address (the alias must be a single string with no embedded spaces as must be the real_address. Both must be separated by a single space ONLY) So that if you want to use "airk" in the input instead of having to type out "uairk@mcl.mcl.ucsb.edu" each time you use that address to mail to your entry in your config file (.mkmsrc) would be: airk uairk@mcl.mcl.ucsb.edu The config file should be in the upmost level of your home directory since mkms looks at "$HOME/.mkmsrc" to find it. Of course you can compile it differently. The input looks like: address file subject Where "address" is the real address or alias (from the config file) of the receiving address. "file" is the file you are sending to "address" and "subject" is the subject header you want to appear with that file when the user at "address" opens his/her electronic mail box. An example might be: airk a_message_to.airk What's new with you? So here airk (an alias for uairk@mcl.mcl.ucsb.edu) is a receiving address. To that address the file "a_message_to.airk" is sent with the subject header "What's new with you". It could also be done as: uairk@mcl.mcl.ucsb.edu a_message_to.airk What's new with you? Where the alias was not used. A note on ftp sites and usage for ncftp: If I were to go to ftp.cdrom.com to retrieve the file /pub/aminet/util/misc/mkms.tar.gz I could do this: ncftp ftp.cdrom.com:/pub/aminet/util/misc/mkms.tar.gz and ncftp would facilitate the retrieval for me. The way mkms works with this is by letting you create an index file like the sample included with this distribution. The command line then would be: mkms -F -i ftp.test -S ftp.cdrom.com:/pub/aminet -o ftp.sh (note that since mkms uses getopt() you need to indicate the input and output files as well as the ftp site name following their respective command line flags) which would have mkms read in the ftp index file and create a script to retrieve each of the files in the index using the path ftp.cdrom.com:/pub/aminet If you look at the example index you should see how this works. It is probably wise to create entries in your .mkmsrc file for ftp sites you visit often. See the example .mkmsrc file. An yet another side note: The .mkmsrc file also takes comments. Comments have a '#' in the first column. Those lines beginning with a '#', space, or tab will be ignored. Not that comments should be necessary but, someone might find use for them. You should see the manpage (mkms.1) for details on the other various options and the bug... One other thing: I make extensive use of the clib function "strsep". It is therefore impossible to compile mkms without the ability to use strsep. If your compiler's C function library does not contain strsep() just comment out the line in the Makefile that defines SRCS and uncomment the one that includes strsep.c (ie - remove the '#' from the one with strsep.c and put a '#' in front of the line for SRCS that does not have strsep.c) If your compiler's clib DOES have strsep() then make sure that the line that includes strsep.c is commented out and the line that does not include strsep.c is uncommented. To find out if you have strsep() compiler's clib - just do: grep -i strsep /usr/include/string.h (that's where strsep() should be if it exists) If you get no response on that inquiry it's likely you do not have it. Again, strsep.c is property of BSD and I am including it here under the copyright license that is a part of the file strsep.c. I should probably rewrite mkms to look for the config file someplace else besides '$HOME' since some people like to change that variable (I have no idea why) but, I wrote it for myself mostly since my Long Distance costs were getting outta hand (there's no local access to the internet here) and I needed a quick and cheap solution to the problem. I can be contacted at: eraugust@igate1.hac.com if there are serious problems with mkms. disclaimer: This is freeware - therefore you may do with it what you wish since I am tossing it into the public domain. If you do make changes to the sources, mark them as changes so that others know the original author did not create those changes. MKMS however is intended to be FREEware and hence it should stay that way. It may not be sold for any price. Being as mkms is free software and in the public domain I make no claims as to what it will or will not do nor do I, the author, accept any responsibility for any damages to man, machine, data, or animal due to the use or misuse of this software. This software and all documents from the original must be included in any further distribution of this package. This software (mkms.c, Makefile, mkms.1 ftp.test, mail.test, .mkmsrc) is Copyright (c)1994,1996 by Eric R. Augustine.