-*- Text -*- For some brief instructions on getting a list started, see README.QUICKSTART. If you are upgrading an existing Majordomo 2 (Mj2) installation, always read README.UPGRADE for instructions on dealing with inter-version changes. If you are upgrading an existing Majordomo 1 installation, see README.CONVERSION. For specific instructions on using Mj2 with various MTAs (Mail Transfer Agents) see README.SENDMAIL, README.QMAIL, README.EXIM, or README.POSTFIX. (If instructions for your MTA are not available, please assist us in writing the documentation for it.) See README.DIRECTORIES if you'd like to know the complete layout of a running Mj2 system. See README.INTERNALS and README.CALLING for some information about the design of the Mj2 software. See README.QUEUEING for an explanation of how Mj2 processes incoming e-mail messages. See README.DEBUGGING for some tips on diagnosing problems. Nearly all Majordomo 1.94.4 functionality is supported (including archives and digests). There is still much work to be done, and bugs remain to be found. See the TODO document for a list of features that have not yet been implemented. Similarities with Version 1.94.x -------------------------------- A major design goal of Majordomo 2 is to provide something that looks exactly like Majordomo 1.94.4 to the users. All existing instructions for end users of Majordomo-managed lists should still be applicable, excepting places where changes in previous behavior were required to fix bugs or plug security holes. (Note that the changes in the confirmation process both fix bugs and improve security and also make things much easier on the users.) The situation is much the same for list owners, but the approval and config procedures have changed. There is some backwards compatibility here, though, and more may be forthcoming. There are, of course, many more variables that can be set. Differences from Version 1.94.x ------------------------------- Everything has changed. Majordomo 1 was flea-bitten, full of warnings and didn't have a hope of running under -w, use strict, or taint checks. Jason found it simpler to write it all anew than to try to fix the old code and make it do what I wanted. He tried for a long time, half-rewriting it at least twice. Mj2 communicates with an MTA using the standard SMTP protocol; there is no reliance on being able to call something that looks like Sendmail. It can also speak the protocol used by qmail-queue to inject mail directly. Majordomo keeps a database of subscribers, and so can keep lots of extra state information. Because of this, digests can be incorporated into the main list, along with vacation mode and other improvements. Majordomo has a completely different file layout, with one directory per virtual domain containing one directory per list. The interfaces are completely separate from the core. There are interfaces for email, shell, and WWW access. The other changes are too many to list. See the extensive help documents for more information about the current features of Mj2. The Perl Interpreter -------------------- You need a complete and proper Perl installation in order to run Majordomo. Some vendors ship Perl but do not configure it correctly. Majordomo will try to detect trouble during the installation process but it will not do anything to fix it. Mj2 requires Perl 5.004_01 or later to run. This is due to bugs in 5.004, and the fact that lesser versions are both lacking in features and security. Most of the testing is done using Perl 5.5.2, 5.6.1, and 5.8.1. Currently a Perl built with threading support will fail to run Mj2 code properly due to bugs in the Perl threading support (which is in a development state). Please use only non-threaded builds for the time being. Perl Modules ------------ Mj2 requires that numerous other Perl modules be install on your system. All of the Perl modules are available from CPAN, the Comprehensive Perl Archive Network. The easiest way to install a new module is to use the CPAN module. This module is included with most recent versions of Perl. For example, to install the Date::Format module, run the following shell command: perl -MCPAN -e 'CPAN::Shell->install("Date::Format")' (In most cases, it is necessary to run this command as root.) During the installation process, if some of the required modules are missing, you will be given a list of commands to execute to install the missing modules. If the CPAN module is not installed at your site, you can search it at the following location: <URL:http://search.cpan.org/> The following modules are optional: Time::HiRes Installing this module will cause activity and debugging logs to record with higher precision the amount of time taken by a command or subroutine (e.g., 2.393 seconds instead of 2.000 seconds). Term::ReadLine::Perl or Term::ReadLine::Gnu Either of these modules will give the mj_shell program extra features when you use it interactively (see below). Text::Reflow When an HTML or enriched-text message part is changed into plain text, Mj2 will use this module to format the text attractively. Otherwise, it will use a simpler and cruder algorithm. DB_File The DB_File module will allow Majordomo to store its data in Berkeley DB databases. Berkeley DB databases are much faster than the plain text databases that Majordomo also supports. To use this module, it must be installed before you configure and install Mj2. DBI DBD::Pg DBD::mysql In addition to plain text and Berkeley DB databases, Mj2 has experimental support for PostgreSQL and MySQL databases. Use at your own risk. To use this module, it must be installed before you configure and install Mj2. Mail::DMARC Used to implement DMARC checks. If not installed, the dmarc_action, dmarc_modes and dmarc_timeout list options have no effect. SetUID Scripts -------------- Majordomo 2 includes its own setuid wrapper generation, so setuid shell scripts are not required. (Some versions of Unix do not support them; Perl can work around this on some Unices but it must be configured to do so. If needed, the wrappers are compiled using the information from the Perl configuration, in particular the configured location of the system C compiler. If this information is incorrect, then the wrappers will not build. If the wrappers are not required, neither is a C compiler. Note that even if you have an MTA that does not require the Majordomo1 wrapper there are still Majordomo 2 programs that need to be setuid, namely the shell and web-confirm interfaces. These are setuid majordomo only, not setuid root. Installation ------------ Much blood has been shed to make installation as painless as possible. It's still painful because it's not finished. Try to imagine how easy it will be when it's finished. To install: * Unpack (you did that if you're reading this). Make certain that root is able to read all of the distribution files. (This means that you cannot unpack the distribution with no global read permissions on a disk that root cannot manipulate, such as an NFS-mounted directory with no root privilege.) * Run the following shell command: perl Makefile.PL Your system will be checked for prerequisite modules and such. If any are not found, you must install them before installation can continue. Some sample instructions that may work for many properly configured perl installations are provided for missing modules. You will be asked several questions related to your site, and several questions for each virtual domain that you choose to support. When the configuration process finishes, you will be asked to run 'make' and 'make install'. 'make' will prepare the files for installation, and can be done without special privileges. 'make install' must be done as root, as it will need permission to make directories and change ownership of files. The final installation step is complex; Majordomo is used to configure itself. This can result in copious amounts of information so the verbosity can be controlled. By default Majordomo will completely configure itself and will present to you a brief progress summary and some important configuration steps, but you can request additional information. This works by specifying variables on the 'make install' command line. You can specify the following variables: QUIET - show even less information VERBOSE - print everything that's happening They are specified like this: make install VERBOSE=1 In addition, there are two other flags for use by developers: ASK - ask questions about whether or not things should be done SKIP - skip all non-essential configuration steps, including the installation of configuration templates and regeneration of the list configuration and MTA alias files. If you are making changes to the code or are frequently updating from CVS and you want to skip parts of the installation process, you can use SKIP to skip it all or ASK to have the process prompt you. Also note that MakeMaker understands the VERBINST flag to quiet its part of the installation; you must set it to zero (i.e. 'make install VERBINST=0') to use it. Finally, you can get the quickest possible installation by skipping the installation of the manual pages and any setup by using "make pure_all" and "make pure_install VERBINST=0 SKIP=1" (the latter, of course, as root). Finally Majordomo 2 will be installed, and some configuration information will be suggested. Be aware that this configuration information may not be correct for all sites; especially sites running virtual domains. Virtual domain users and users of other MTAs, please let us know how to configure things for you. Using a Response File --------------------- You can prepare a response file that has the answer to each configuration question. This is currently very fragile as it is still in the preliminary stages. Any change in the questions will cause a response file to break, so use this approach with caution. Adding a New Domain ------------------- It is possible to configure Majordomo after installation to support additional virtual domains. To do so, run the shell command make domain (usually as the root user) in the top-level source directory. Changing the Site Configuration ------------------------------- It is also possible to change the sitewide configuration (such as the site master password and queueing options) without reinstalling the software. To do so, run the shell command make siteconfig (usually as the root user) in the top-level source directory. Testing after Installation -------------------------- After the software has been installed, it may be necessary to restart your MTA software to recognizes Mj2's mail aliases. To test the server, send the following command: help overview in the body of a message to the server address. The overview document that you receive from the server briefly introduces Mj2's extensive help system. Interacting with Majordomo -------------------------- Majordomo should respond to commands which are e-mailed to the server address. As in Majordomo version 1, commands must be in the body of an e-mail message. See the "admin_commands" and "commands" help files for more information. New with Majordomo 2 is the shell interface; it can be used to interact with the server via the command line. This is in general much easier for people with shell access to the computer where Mj2 is running. Nearly everything that can be done from the email interface can be done from the shell interface, along with a few other things like interactive editing of configuration settings and documents. The mj_shell program also works interactively; just run it without any Majordomo commands and it will prompt you. If the Term::ReadLine::Perl or Term::ReadLine::Gnu module is installed on your system, mj_shell will also support command completion for commands and list names, and command history. See the "mj_shell" help file for more information. If you have chosen WWW support during the installation process, three WWW interfaces will be available: mj_wwwadm, mj_wwwusr, and mj_confirm. See the "mj_wwwadm" help file for more information. Reporting Problems ------------------ Please report bugs to mj2-dev@lists.mj2.org and CC a copy to tibbs@math.uh.edu (just in case). Please be sure to include information on what version of Majordomo 2 you're running (including the time you checked it out of CVS if you did so), the version of Perl you're using and the OS you're running. We may also need to know the versions of any relevant modules and the configuration options you chose. To participate in the Majordomo 2 developers' mailing list, write to majordomo@lists.mj2.org and in the body of the message, put this command: sub mj2-dev All Mj2-related questions and comments are welcome on mj2-dev, if they are phrased politely.