For a default installation, you can just read through the end of the "QUICK INSTALLATION" section here. But you'll probably want to scan this entire file anyway, as there's more to know than just building the program. There may also be an INSTALL.xxx file for details about installing any application 'xxx' as well as a USING.xxx file with notes on using it. You can install mvmf utilities system-wide or you can install them under a user account. If you install under a user account, you'll have to use configure to specify your installation directories. PREREQUISITE Before building mvmf, you must first get and install the "mml" library. This is a collection of some of my support routines that I use in various projects. You can find it (or a pointer to it) on the mvmf site where you got this. Use the most recent mml package; future mvmf packages may specifically enforce a required mml version but at present do not. As noted in the mml package directions, you can install the mml headers and library in a central place, or you can leave it in the source tree where other packages such as this can attempt to find it (or be instructed to find it). QUICK INSTALLATION Presumably you have unpacked the mvmf package, resulting in a source directory such as "mvmf-yyyymmdd" . cd to that directory. The supplied configure script will attempt to figure out how to compile mvmf on your platform. (See more notes about "configure" below.) Type: ./configure or sh configure Once this finishes, type make to compile the programs. Then to install programs and sample data, make install WHAT IS INSTALLED When you type "make install" things are installed in the following places. The names of these places are generic here, according to the terms used by the configure script. To change these locations, use the configure script. (See "MORE ABOUT CONFIGURE" to understand/alter these). You may, especially if this is the first time, have to install some data files by hand: see "POST-INSTALL CONFIGURATION" bindir area for general programs. mvmda and tools are installed here. Change "bindir" to customize this location. datadir/mvmf referred to as "mvmf_libdir", system-wide configuration files and data used by users and user programs are placed here. Change "datadir" to customize this location. sysconfdir/mvmf referred to as "mvmf_sysdir", system-level configuration files and programs are placed here. Change "sysconfdir" to customize this location. mandir Where some man pages are installed. MORE ABOUT CONFIGURE The configure script has a lot of generic options (not all of which apply to this package). You can always type ./configure --help to get some more information about how to run it. A separate file, INSTALL.generic, is also included. That is a canned document that describes the configure script itself. Refer to it for information about how to specify installation directories. A file "BUILD.MV" is included, that runs the configure script for my own installation preferences. You could use that to intuit what some of the options do. Or read on.. Configure options that are specific to mvmf: --enable-c-statement-terms or --disable-c-statement-terms default: disabled Allows some C-like statements in MFL to be used as terms in an expression. These include do, for, if, pv$, and while. This usage can result in some odd-looking syntax, so is off by default. (Besides, you can always wrap them inside a compound block.) For example: string s; s = if (0) { "true"; } else {"false"; }; looks somewhat ok, but without the brackets it is s = if (1) "true"; else "false"; ; Note that C-like statements sizeof and sieve are always enabled as terms, whereas return, continue, and break are always disabled. --enable-cusps or --disable-cusps default: disabled Whether to build all CUSPs (in directory "cusp") by default. There are configuration options to enable or disable each individually; furthermore you can always cd to the "cusp" directory and make them explicitly. --enable-cusp-clamdif or --disable-cusp-clamdif default: maybe Whether to build the "clamdif" CUSP, which provides an interface to the clamav 'clamd' daemon for MFL. The default of "maybe" will track the setting of "--enable-cusps". --enable-mvmda-builtin-sysrc or --disable-mvmda-builtin-sysrc default: no mvmda requires an mfl script to guide its operation. That script is generically thought of as a system-wide rc file. If no such file is found, mvmda will ordinarily refuse to run. Enable this option to compile an internal canned mfl script to be used if the system-wide rc file is not found. One potential benefit of enabling this is that when combined with the --enable-mvmda-builtin-sysrc-forceable option, a user can get some sort of standard behaviour out of mvmda regardless of what system-wide mfl script is installed. However, the built-in mfl script is not very robust. (Perhaps that's good?) --enable-mvmda-builtin-sysrc-forceable or --disable-mvmda-builtin-sysrc-forceable default: no If you enable this, it affects the ways that the built-in mfl script (see --enable-mvmda-builtin-sysrc) is activated. First, this enables the '-b' flag in mvmda, which allows the user to force the built-in mfl script to be run whether or not there is a system-wide rc available (i.e., with -b, the system-wide script isn't checked for at all). Second, this *forces* the use of the '-b' flag to run the internal mfl script if the system-wide rc file can't be found. Enabling this option also turns on --enable-mvmda-builtin-sysrc --enable-mvmcas or --disable-mvmcas default: disabled Another toy project that is being tested is 'mvmcas' which is the "mail client assessment server." In order to use this, pthreads support must be available and must be enabled in the mml package as well. This option controls whether mvmcas is built by the default top-level "make". You can always cd to the mvmcas directory and type "make" there even if you disable this. --enable-mvmcas-in-mvmtr or --disable-mvmcas-in-mvmtr default: disabled Enables or disables compiling code in mvmtr that supports communications with mvmcas (the mail client assessment server). Even if you do compile mvmcas support into mvmtr, you have to explicitly enable it at run-time, so enabling it does no real harm. Nevertheless, it is off by default. --enable-mvmtr or --disable-mvmtr default: disabled mvmf includes a mvmtr, the MTA receiver (an SMTP daemon). At present this can only be used as a qmail-smtpd replacement (and, thus, requires that qmail be present). This program uses its own control files, but may be compiled to also consult the same files that stock qmail-smtpd 1.03 uses. See the "--enable-mvmtr-qmail-compatibility" option. This option controls whether mvmtr is built by the default top-level "make". You can always cd to the mvmtr directory and type "make" there even if you disable this. --enable-mvmtr-qmail-compatibility or --disable-mvmtr-qmail-compatibility default: disabled Whether to enable basic compatibility with qmail-smtpd controls in mvmtr. mvmtr is written initially as a replacement for qmail-smtpd, but using its own control structure (as getting away from the qmail style controls is one of its minor goals). But if you enable this option, mvmtr will use the same control files that stock qmail-smtpd 1.03 uses, thus making it easier to try mvmtr (or migrate to it). See the file 'QMAIL-COMPATIBILITY' in the mvmtr source directory for a discussion. --enable-non-vendor-dnsbl-capability default:disabled MFL has a Sieve extension to allow testing against DNSBL blocklists. This extension was long enabled via the capability string "dnsbl" (i.e., 'require "dnsbl";'). This was an error, as non-official Sieve extensions should be enabled via vendor-specific capability strings. The capability name has been changed to "vnd.mvmf.dnsbl" . This switch enables the old "dnsbl" capability name to still be used. Not recommended except for support of legacy scripts. --enable-preprocessor-via-atsign default:enabled MFL's preprocessor was originally enabled via a hashmark (pound sign) as the first character on a line, just like in C. This conflicted with Sieve's use of '#' as a comment-to-end-of-line character. MFL has been changed to use '@' as the preprocessor introducer by default, but you can use this option to disable it. You can enable both or either '@' and '#' but at least one of them has to be enabled. --enable-preprocessor-via-hashmark default:disabled MFL's preprocessor was originally enabled via a hashmark (pound sign) as the first character on a line, just like in C. This conflicted with Sieve's use of '#' as a comment-to-end-of-line character. MFL has been changed to use '@' as the preprocessor introducer by default, but you can use this option to keep '#' enabled. Not recommended except to support legacy scripts. You can enable both or either '@' and '#' but at least one of them has to be enabled. --enable-preprocessor-invalid-warnings default: enabled MFL's preprocessor gives a warning if an unrecognized preprocessor directive is used. But if you are using '#' as a preprocessor introducer character, and you also use '#' style comments in scripts, those comments can result in preprocessor warnings. You can use this switch to disable those warnings, which will effectively treat bad preprocessor directives as comments. --enable-sieve or --disable-sieve default: enabled The MFL script language includes a Sieve submode. The disabling of Sieve is intended for other uses of the MFL language; I don't know why you'd disable it for mvmf nor do I know if it will work if you do. --enable-stools or --disable-stools default: enabled The "stools" subdirectory contains some simple tools. See the README in the stools subdirectory. This option controls whether they are built by the default top-level "make". You can always cd to the stools directory and type "make" there even if you disable this. --enable-vacation or --disable-vacation default: enabled MFL has an implemention of the "vacation" Sieve statement. You may want to disable it if you don't want to allow it. Also, "vacation" requires the availability of a "ndbm" database code library; if mvmf won't build on your system because of this, you may have to disable the vacation statement (and, hopefully, give me enough feedback so that I can make it work in your environment). NB: use of "vacation" requires (and will create) a data directory that can be used by mvmda. By default, this is ~/.mvmda . --with-mml-include-dir=path As noted, mvmf requires the "mml" headers. The configure script will attempt to find them in some likely places, but you can use this option to specify the path instead. The path must be an absolute path, and must identify the directory containing the "mml" header directory. (i.e., don't give the path to the directory containing the headers themselves; give the path to where the "mml" directory is found.) --with-mml-library-dir=path mvmf also requires the "mml" object library. If the configure script has found (or has been told) the mml-include-path, chances are it can find the directory containing this object library. But if it can't, you can specify it with this option. --with-sendmail[=yes|no|path] or --without-sendmail Some mvmf package functions require a tool with which to originate mail. A sendmail-compatible program will do nicely here. If some specific MTA such as qmail is being used, this may not be necessary, but it's always handy to have this available. If you give --with-sendmail with no argument, or with "yes", the configure script will try to find sendmail in likely places. If you specify an explicit program location, that will be used. The default is "maybe" -- meaning that if sendmail is found, it will be noted, but failure to find it will not cause a configuration error. (A run-time error, maybe...) --with-qmail[=yes|no|path] or --without-qmail Specifies that qmail is or is not present on the system and should be used for queueing and originating mail. If you give --with-qmail with no argument, or with "yes", the configure script will try to find the qmail directory. Alternatively you can give an explicit path to the qmail directory. This should be the directory that is the top of the qmail tree, containing the "bin" and "queue" and "control" subdirectories, and so forth. By default, the configure script will try to find qmail in a couple of likely places. If it can't, it will assume qmail is not present. POST-INSTALL CONFIGURATION You will probably have to tweak some of the installed files, especially if installing any of these programs for the first time. (Also refer to the "WHAT IS INSTALLED" section above) ==== mvmf_libdir area ==== Some mvmf tools (including mvmda, dnsblc) make use of data in the mvmf_libdir directory. See also the README in the 'files' area. At the top level is a file "dnsbl.conf" which configures various DNSBL sources that can be accessed. A "dnsbl.conf.sample" file is provided (and installed) - it may be sufficient for you to simply copy this to "dnsbl.conf" . Please be aware of the terms and conditions of use of any DNSBL that you use. Some of the DNSBLs in the sample conf file may need to be uncommented after you investigate their terms. You may need to create and/or fill things into application-specific directories here. For example, 'mvmda' will look for things inside an 'mvmda' directory. Look for any INSTALL.xxx files for specific installation notes about an application xxx (e.g. INSTALL.mvmda for mvmda). MFL scripts (MFL is the scripting language used by mvmda et al) have an @include facility much like #include in C's "cpp" program. If you want to make system-wide include files available, create an "include" subdirectory in the proper place, and place the include files in it. This directory must be in the include directory search path when a "@include " construct is used. See each MFL-using application for how that search path is defined. ==== mvmf_sysdir ==== See the README in the 'files' area. NOT AUTOMATED Some options are not [yet] tweakable by the configure process. These are likely to be only of interest to advanced administrators and hackers anyway. If that's you, you might want to glance at these include files in the include/ directory: errwarn.h -- to change the syslog facility used. mfl.h -- A few basic things at the top that you probably won't want to change anyway. msgstore.h -- some *DOTLOCK* names; parameters for dotlocking. mvmda.h -- the names of some .rc files There are some test shell scripts in the mvmda/T directory. Look there and see if the instructions are clear enough to let you operate them. There are some files of potential interest in the files/ subdirectory. SEE ALSO INSTALL.mvmda for post-installation configuration of mvmda. USING.mvmda for notes on using mvmda -mm- 20040101/20070108 mem@geezer.org or mem@mvmf.org