Blame SOURCES/mailman.INSTALL.REDHAT.in

a3d59b
This file contains instructions for how to complete the installation
a3d59b
of mailman after you have installed the Red Hat mailman RPM. There are
a3d59b
certain items you will need to manually configure as the RPM is not
a3d59b
capable of doing every installation and confirguration task.
a3d59b
a3d59b
First, you should note that the RPM has installed mailman in the
a3d59b
following directory:
a3d59b
@prefix@
a3d59b
You may want to examine this directory to find additional mailman
a3d59b
documentation, or other mailman files.
a3d59b
a3d59b
IMPORTANT NOTE FOR USERS UPGRADING FROM A PREVIOUS RED HAT MAILMAN
a3d59b
INSTALLATION OR THOSE FAMILAR WITH "STANDARD MAILMAN INSTALLATIONS"
a3d59b
a3d59b
    Earlier Red Hat mailman rpms installed all of the mailman files under
a3d59b
    /var/mailman. This did not conform to the Filesystem Hierarchy
a3d59b
    Standard (FHS) and created security violations when SELinux is
a3d59b
    enabled. As of mailman-2.1.5-21 the following directory and file
a3d59b
    changes occurred:
a3d59b
a3d59b
    variable data (e.g. lists) is in @VAR_PREFIX@, library code,
a3d59b
    executables, and scripts are located in @prefix@, lock files are in
a3d59b
    @LOCK_DIR@, the pid file is in @PID_DIR@, qfiles are in @QUEUE_DIR@,
a3d59b
    and configuration files have been moved to the new @CONFIG_DIR@.
a3d59b
a3d59b
    If you previously had mailman installed and have edited files in
a3d59b
    /var/mailman (e.g. configuration) you will need to move those changes
a3d59b
    to their new locations.
a3d59b
a3d59b
    A script has been provided to aid in the task of migrating your
a3d59b
    mailman datafiles, it is contrib/migrate-fhs, run with -h for help
a3d59b
    information.
a3d59b
a3d59b
    The mapping of old locations to new locations is as follows:
a3d59b
a3d59b
    Directory Mapping:
a3d59b
    /var/mailman				--> /var/lib/mailman
a3d59b
    /var/mailman/Mailman			--> /usr/lib/mailman/Mailman
a3d59b
    /var/mailman/archives			--> /var/lib/mailman/archives
a3d59b
    /var/mailman/bin				--> /usr/lib/mailman/bin
a3d59b
    /var/mailman/cgi-bin			--> /usr/lib/mailman/cgi-bin
a3d59b
    /var/mailman/cron				--> /usr/lib/mailman/cron
a3d59b
    /var/mailman/data				--> /var/lib/mailman/data
a3d59b
    /var/mailman/lists				--> /var/lib/mailman/lists
a3d59b
    /var/mailman/locks				--> /var/lock/mailman
a3d59b
    /var/mailman/logs				--> /var/log/mailman
a3d59b
    /var/mailman/mail				--> /usr/lib/mailman/mail
a3d59b
    /var/mailman/messages			--> /usr/lib/mailman/messages
a3d59b
    /var/mailman/pythonlib			--> /usr/lib/mailman/pythonlib
a3d59b
    /var/mailman/qfiles				--> /var/spool/mailman
a3d59b
    /var/spool/mailman/qfiles			--> /var/spool/mailman
a3d59b
    /var/mailman/scripts			--> /usr/lib/mailman/scripts
a3d59b
    /var/mailman/spam				--> /var/lib/mailman/spam
a3d59b
    /var/mailman/templates			--> /usr/lib/mailman/templates
a3d59b
    /var/mailman/tests				--> /usr/lib/mailman/tests
a3d59b
a3d59b
    File Mapping:
a3d59b
    /var/mailman/data/adm.pw			--> /etc/mailman/adm.pw
a3d59b
    /var/mailman/data/creator.pw		--> /etc/mailman/creator.pw
a3d59b
    /var/mailman/data/aliases			--> /etc/mailman/aliases
a3d59b
    /var/mailman/data/virtual-mailman		--> /etc/mailman/virtual-mailman
a3d59b
    /var/mailman/data/sitelist.cfg		--> /etc/mailman/sitelist.cfg
a3d59b
    /var/mailman/data/master-qrunner.pid	--> /var/run/mailman/master-qrunner.pid
a3d59b
a3d59b
    Discussion of directory and file relocation:
a3d59b
a3d59b
    Two new directories were created and three existing directories which
a3d59b
    were hardcoded are now configurable.
a3d59b
a3d59b
    PID_DIR is used to hold the process id and is new because FHS wants
a3d59b
    pid files to be located in /var/run. The FHS says when there is only a
a3d59b
    single pid file it should be located in /var/run/<name>.pid, and when
a3d59b
    there are multiple pid's files they should be located together in a
a3d59b
    subdirectory, /var/run/<name>/. Currently mailman only has a single
a3d59b
    pid file, but it does have multiple processes (qrunners). Also SELinux
a3d59b
    security policy is easier to write if processes are segregated into
a3d59b
    individual subdirectories. Therefore we elected to place the mailman
a3d59b
    pid file in its own subdirectory, there is some debate if this is 100%
a3d59b
    FHS compliant because there is only currently a single pid file, but
a3d59b
    this gives us greater future flexibility and is in the spirit of FHS.
a3d59b
a3d59b
    CONFIG_DIR is used to hold the site configuration files. FHS wants
a3d59b
    configuration files stored in /etc/mailman. Previously configuration
a3d59b
    files were mixed in with data files in DATA_DIR and with the run-time
a3d59b
    code (e.g. Mailman/mm_cfg.py). CONFIG_DIR continues to exist but is
a3d59b
    now restricted to data files (e.g. python pickle files). The password
a3d59b
    files, alias files, and .cfg (e.g. sitelist.cfg) files have been moved
a3d59b
    to CONFIG_DIR. mm_cfg.py which is the primary mailman configuration
a3d59b
    file was presented a bit of a dilemma. In theory it should be located
a3d59b
    in /etc/mailman, however it is executable code which argues it should
a3d59b
    be located with the other executable files, it has traditionally lived
a3d59b
    in $PREFIX/Mailman and experienced mailman admins will expect to find
a3d59b
    it there. Modifying all the mm_cfg import statements and paths.py was
a3d59b
    believed to be too invasive a change, and technically its part of the
a3d59b
    "Mailman" package and moving it would take it out of the package
a3d59b
    (although currently I don't think that presents any known
a3d59b
    issues). Instead a compromise approach was adopted, mm_cfg.py is
a3d59b
    symbolically linked into the /etc/mailman directory pointing to
a3d59b
    $PREFIX/Mailman/mm_cfg.py. Thus mm_cfg.py "appears" in the
a3d59b
    configuration directory but retains its traditional location, this was
a3d59b
    deemed a reasonable compromise for the mailman 2.1.x timeframe.
a3d59b
a3d59b
    sitelist.cfg has a symbolic link in its old location in the DATA_DIR
a3d59b
    pointing to its new location in the CONFIG_DIR.
a3d59b
a3d59b
    New Directories (can be specified as parameter to configure):
a3d59b
a3d59b
    CONFIG_DIR:	default=$VAR_PREFIX/data		FHS=/etc/mailman
a3d59b
    PID_DIR		default=$VAR_PREFIX/data	FHS=/var/run/mailman
a3d59b
a3d59b
    Existing directories that can now be specified as parameter to configure:
a3d59b
a3d59b
    LOCK_DIR:	default=$VAR_PREFIX/locks	FHS=/var/lock/mailman
a3d59b
    LOG_DIR:	default=$VAR_PREFIX/logs	FHS=/var/log/mailman
a3d59b
    QUEUE_DIR	default=$VAR_PREFIX/qfiles	FHS=/var/spool/mailman
a3d59b
a3d59b
You can find addition documentation in the
a3d59b
@DOC_DIR@/README.* files and/or
a3d59b
@prefix@/README.* files.
a3d59b
a3d59b
Mailman is an open source project and full documentation, current
a3d59b
sources, patches, etc. can be found at the following official mailman
a3d59b
web sites:
a3d59b
a3d59b
http://www.gnu.org/software/mailman/mailman.html
a3d59b
http://www.list.org
a3d59b
a3d59b
1. Final installation instructions:
a3d59b
a3d59b
    Congratulations!  You've installed the Mailman software.  To get
a3d59b
    everything running you need to hook Mailman up to both your web
a3d59b
    server and your mail system.
a3d59b
a3d59b
    - If you plan on running your MTA and web server on different
a3d59b
      machines, sharing Mailman installations via NFS, be sure that
a3d59b
      the clocks on those two machines are synchronized closely.  You
a3d59b
      might take a look at the file Mailman/LockFile.py; the constant
a3d59b
      CLOCK_SLOP helps the locking mechanism compensate for clock skew
a3d59b
      in this type of environment.
a3d59b
a3d59b
    - Configure your web server. The RPM has made the assumption you
a3d59b
      are running the apache web server (httpd). The RPM has installed
a3d59b
      a mailman config file (@HTTPD_CONF_FILE@) in @HTTPD_CONF_DIR@.
a3d59b
      You should edit the file to set your domain, see the
a3d59b
      instructions in the config file.
a3d59b
a3d59b
      Now restart your web server so the new settings take effect:
a3d59b
a3d59b
      % /sbin/service httpd restart
a3d59b
a3d59b
    - Create the site password using:
a3d59b
a3d59b
      % @prefix@/bin/mmsitepass <your-site-password>
a3d59b
a3d59b
      This password can be used anywhere that individual user or
a3d59b
      mailing list administrator passwords are required, giving the
a3d59b
      mailman site administrator the ability to adjust these things
a3d59b
      when necessary.
a3d59b
a3d59b
      You may also want to create a password for the site-wide "list
a3d59b
      creator" role (someone other than the site administrator who as
a3d59b
      privileges to create and remove lists through the web).  Use the
a3d59b
      -c option to mmsitepass to set this.
a3d59b
a3d59b
    - Set the values for DEFAULT_EMAIL_HOST and DEFAULT_URL_HOST in
a3d59b
      @prefix@/Mailman/mm_cfg.py file if the fqdn of the host you are
a3d59b
      running mailman on is not the email and url host you need to use.
a3d59b
a3d59b
    - Update Mailman list files to new verson by running:
a3d59b
      @prefix@/bin/update
a3d59b
a3d59b
      Users upgrading from previous releases of this package may need
a3d59b
      to move their data or adjust the configuration files to point to
a3d59b
      the locations where their data is.
a3d59b
a3d59b
    - Create a "site-wide" mailing list (Note: this must be done
a3d59b
      before starting the mailman daemon). This is the one that
a3d59b
      password reminders will appear to come from.  Usually this
a3d59b
      should be the "mailman" mailing list, but if you need to change
a3d59b
      this, be sure to change the MAILMAN_SITE_LIST variable in
a3d59b
      mm_cfg.py (see below).
a3d59b
a3d59b
      % @prefix@/bin/newlist mailman
a3d59b
a3d59b
      Follow the prompts, and see the README file for more
a3d59b
      information.
a3d59b
a3d59b
    - Start the Mailman qrunner daemon
a3d59b
a3d59b
      As of mailman version 2.1 mailman requires a service (daemon) to be
a3d59b
      run for mailman to operate. RedHat does not ship RPM's that enable
a3d59b
      services as part of package installation. You will need to enable
a3d59b
      the mailman service if you want mailman to run.
a3d59b
a3d59b
      To enable the mailman service after package installation you may run
a3d59b
      the "serviceconf" GUI tool, or you may do the following on the
a3d59b
      command line as root.
a3d59b
a3d59b
      /sbin/service mailman start
a3d59b
a3d59b
      To have the mailman service automatically start at certain run
a3d59b
      levels (replace the runlevel below with your desired run levels, for
a3d59b
      example to start mailman at run levels 3 and 5 runlevel would be 35:
a3d59b
a3d59b
      /sbin/chkconfig --level runlevel mailman on
a3d59b
a3d59b
    - You should then subscribe yourself to the mailman list.
a3d59b
a3d59b
a3d59b
2. Customize Mailman
a3d59b
a3d59b
    You should do these steps using the account you installed Mailman
a3d59b
    under in section 2 above.
a3d59b
a3d59b
    - The file @prefix@/Mailman/Defaults.py contains a number of
a3d59b
      defaults for your installation.  If any of these are incorrect,
a3d59b
      override them in @prefix@/Mailman/mm_cfg.py.
a3d59b
a3d59b
      DO NOT EDIT Defaults.py!
a3d59b
a3d59b
      Note: If you have upgraded your mailman installation RPM will
a3d59b
      save a copy of your previous version of mm_cfg.py in
a3d59b
      mm_cfg.py.rpmsave.
a3d59b
a3d59b
      See the comments in Defaults.py for details.  Once a list is
a3d59b
      created, editing many of these variables will have no effect.
a3d59b
      At that point, you'll need to configure your lists through the
a3d59b
      web admin interface or through the command line script
a3d59b
      @prefix@/bin/withlist or @prefix@/bin/config_list.
a3d59b
a3d59b
      Note: Do *not* change HOME_DIR or MAILMAN_DIR.  These are set
a3d59b
      automatically by the configure script when the RPM was created.
a3d59b
a3d59b
    - Create the site password using:
a3d59b
a3d59b
      % @prefix@/bin/mmsitepass <your-site-password>
a3d59b
a3d59b
      This password can be used anywhere that individual user or
a3d59b
      mailing list administrator passwords are required, giving the
a3d59b
      mailman site administrator the ability to adjust these things
a3d59b
      when necessary.
a3d59b
a3d59b
      You may also want to create a password for the site-wide "list
a3d59b
      creator" role (someone other than the site administrator who as
a3d59b
      privileges to create and remove lists through the web).  Use the
a3d59b
      -c option to mmsitepass to set this.
a3d59b
a3d59b
a3d59b
3. Troubleshooting
a3d59b
a3d59b
    If you encounter problems with running Mailman, first check the
a3d59b
    "Common Problems" section, below.  If your problem is not covered
a3d59b
    there, check both the FAQ file and the online FAQ Wizard.
a3d59b
    Check for errors in the mailman log files which can be found in
a3d59b
a3d59b
    @LOG_DIR@
a3d59b
a3d59b
    Mailman logs errors to this file:
a3d59b
a3d59b
    @LOG_DIR@/error
a3d59b
a3d59b
    If you encounter an error, send an error report to
a3d59b
    mailman-users@python.org.  Include a description of what you're
a3d59b
    doing to cause the problem, and the relevant lines from your
a3d59b
    syslog.  Also include information on your operating system, which
a3d59b
    version of Python you're using, and which version of Mailman
a3d59b
    you're installing.
a3d59b
a3d59b
a3d59b
4. Common Problems
a3d59b
a3d59b
    Problem:  All Mailman web pages give a 404 File not found error.
a3d59b
a3d59b
    Solution: Your web server has not been set up properly for handling
a3d59b
              Mailman's cgi commands.  Make sure you've:
a3d59b
a3d59b
              1) Configured the web server to give permissions to
a3d59b
                 @prefix@/cgi-bin
a3d59b
              2) Restarted the web server properly.
a3d59b
a3d59b
              Consult your web server's documentation for instructions
a3d59b
              on how to do these things.
a3d59b
a3d59b
a3d59b
    Problem:  All Mailman web pages give an "Internal Server Error".
a3d59b
a3d59b
    Solution: The likely problem is that you are using the wrong GID or
a3d59b
              UID for CGI scripts.  Check your syslog.  If you see, for
a3d59b
              example, a line like:
a3d59b
a3d59b
                  Attempt to exec script with invalid gid 51, expected 99
a3d59b
a3d59b
              You need to reinstall Mailman, and specify $CGI_GID to be 51,
a3d59b
              as described in the installation instructions.
a3d59b
a3d59b
a3d59b
    Problem:  I send mail to the list, and get back mail saying the
a3d59b
              list is not found!
a3d59b
a3d59b
    Solution: You probably didn't add the necessary aliases to the system
a3d59b
              alias database, given to you when you ran the newlist
a3d59b
              command.  If you did add them, you likely did not update
a3d59b
              the alias database, or your system requires you to run
a3d59b
              newaliases explicitly.  Refer to section 5 above for
a3d59b
              more information.
a3d59b
a3d59b
a3d59b
    Problem:  I send mail to the list, and get back mail saying,
a3d59b
              "unknown mailer error".
a3d59b
a3d59b
    Solution: The likely problem is that you are using the wrong GID or
a3d59b
              UID for mail.  Check your syslog.  If you see, for
a3d59b
              example, a line like:
a3d59b
a3d59b
                  Attempt to exec script with invalid gid 51, expected 99
a3d59b
a3d59b
              You need to reinstall Mailman, and specify $MAIL_GID to
a3d59b
              be 51, as described in the installation
a3d59b
              instructions. see notes on Postfix below, as by default
a3d59b
              it will create these problems on installation.
a3d59b
a3d59b
a3d59b
    Problem:  I use Postfix for my MTA and the mail wrapper programs
a3d59b
              are logging complaints about the wrong GID.
a3d59b
a3d59b
    Solution: Create a separate aliases file for Postfix in its
a3d59b
              main.cf config file under the variable "alias_maps". Put
a3d59b
              the file somewhere in Mailman's home directory, or
a3d59b
              somewhere else where the user mailman has write access
a3d59b
              to it; *as user mailman* call Postfix's "postalias" on the
a3d59b
              alias file.
a3d59b
a3d59b
              % postalias <the alias file>
a3d59b
a3d59b
              Also as user mailman, run
a3d59b
a3d59b
              % python -c'import os; print os.getgid()'
a3d59b
a3d59b
              This should print out the group id that Mailman should
a3d59b
              be configured to expect when the mail wrapper programs
a3d59b
              are run.  Call it "thegid".  Rebuild Mailman with
a3d59b
a3d59b
              % ./configure --with-mail-gid=thegid
a3d59b
a3d59b
              See also the "Using the Postfix mail server" section of
a3d59b
              the mailman installation manual for more information on
a3d59b
              connecting Postfix and Mailman.  The manual is available
a3d59b
              in several formats at /usr/share/doc/mailman-*/admin/www.
a3d59b
a3d59b
a3d59b
    Problem:  I send mail to the list, and get back mail saying,
a3d59b
              "sh: mailman not available for sendmail programs"
a3d59b
a3d59b
    Solution: Your system uses sendmail restricted shell (smrsh).  You
a3d59b
              need to configure smrsh by creating a symbolic link from
a3d59b
              the mail wrapper (@prefix@/mail/mailman) to the directory
a3d59b
              identifying executables allowed to run under smrsh.
a3d59b
a3d59b
              Some common names for this directory are
a3d59b
              /var/admin/sm.bin, /usr/admin/sm.bin or /etc/smrsh.
a3d59b
a3d59b
              Note that on Debian Linux, the system makes
a3d59b
              /usr/lib/sm.bin, which is wrong, you will need to create
a3d59b
              the directory /usr/admin/sm.bin and add the link there.
a3d59b
              Note further any aliases newaliases spits out will need
a3d59b
              to be adjusted to point to the secure link to the
a3d59b
              wrapper.
a3d59b
a3d59b
a3d59b
    Problem:  I messed up when I called configure.  How do I clean
a3d59b
              things up and re-install?
a3d59b
a3d59b
    Solution: % make clean
a3d59b
              % ./configure --with-the-right-options
a3d59b
              % make install
a3d59b
a3d59b
a3d59b
-------------------- Other Useful Information -----------------
a3d59b
a3d59b
RPM Preserves User Modified Files
a3d59b
---------------------------------
a3d59b
a3d59b
The rpm during installation will preserve changes you have made to
a3d59b
configuration files and templates from a previous installation. This
a3d59b
is almost always what is desired. However you may want to check for
a3d59b
the existence of files with either the .rpmsave or the .rpmnew
a3d59b
extension and verify if any of these backup files created during the
a3d59b
RPM install exist and if you are indeed using the version of the file
a3d59b
you desire.
a3d59b
a3d59b
Note: The installation directory for non-data files changed from
a3d59b
@VAR_PREFIX@ to @prefix@ in mailman-2.1.5-20. Configuration files and
a3d59b
templates that were user modified in a previous installation will need
a3d59b
to manually move those changes from the earlier @VAR_PREFIX@ to the
a3d59b
new @prefix@ installation directory.
a3d59b
a3d59b
Here are a few commands that will aid you in this process:
a3d59b
a3d59b
List any rpm backup files in the mailman installation directory:
a3d59b
a3d59b
% find @prefix@ @VAR_PREFIX@ -name '*.rpm*'
a3d59b
a3d59b
List any configuration files NOT in the mailman installation directory
a3d59b
you might miss with the above command which also have the potental for
a3d59b
backup copies. Given this short list you'll have to look for a
a3d59b
matching backup file.
a3d59b
a3d59b
% rpm -qc mailman | egrep -v '@prefix@|@VAR_PREFIX@'
a3d59b
a3d59b
When rpm preserves a user modified file it installs the newest version
a3d59b
of the file by appending the .rpmnew extension to the file name thus
a3d59b
preserving the file but making the latest version avialable. If rpm
a3d59b
replaces a user modified file the file being replaced is renamed to
a3d59b
have the .rpmsave extension. RPM only performs these backup operations
a3d59b
if the file is marked as being a configuration file in the rpm spec
a3d59b
file, it is not performed in general on all files in the package.
a3d59b
a3d59b
a3d59b
Mailman Cron Jobs:
a3d59b
------------------
a3d59b
a3d59b
Mailman relies on the cron daemon to schedule periodic actions. These
a3d59b
are contained in a crontab file. Previous versions of the mailman RPM
a3d59b
from Red Hat created the cron jobs by running the crontab(1) command
a3d59b
during the RPM installation phase. The cron jobs are now handled
a3d59b
slightly differently. Rather than invoking crontab which loaded the
a3d59b
cron jobs into a private cron file a mailman crontab file is installed
a3d59b
into /etc/cron.d. The crontab file and the commands it runs were
a3d59b
modified from the upstream distribution so these commands would run
a3d59b
under the correct SELinux security profile.
a3d59b
a3d59b
Previously the cron jobs were installed when the RPM was
a3d59b
installed. This was less than optimal because the act of having the
a3d59b
mailman RPM installed on a system should not cause the cron jobs to
a3d59b
run. A better solution is to only run the mailman cron jobs if the
a3d59b
mailman service is enabled. This is accomplished by installing the
a3d59b
mailman crontab file in /etc/cron.d when the mailman service is
a3d59b
started by mailman init.d script (e.g. either at boot time or via
a3d59b
/sbin/service). When the mailman service is stopped the crontab file
a3d59b
is removed from /etc/cron.d. The crontab file is copied from
a3d59b
@prefix@/cron/crontab.in to /etc/cron.d/mailman. Thus if you edit the
a3d59b
cron jobs you will need to edit the master copy in @prefix@/cron
a3d59b
otherwise your edits will be lost the next time the mailman service is
a3d59b
started or restarted. To pick up any changes made to the crontab file
a3d59b
edit the master copy in @prefix@/cron and then use /sbin/service to
a3d59b
restart mailman (e.g. /sbin/service mailman restart). Some may wonder
a3d59b
why the crontab file in /etc/cron.d is not symbolically linked to the
a3d59b
master copy when the service starts and unlinked when it stops. The
a3d59b
reason is because newer versions of cron will refuse for security
a3d59b
reasons to run any crontabs which are links to other files or
a3d59b
writeable by anybody else except root.
a3d59b
a3d59b
Choosing your MTA (sendmail or postfix) on Red Hat Systems:
a3d59b
-----------------------------------------------------------
a3d59b
a3d59b
Red Hat ships two different MTA's, sendmail and postfix. Because the
a3d59b
sendmail and postfix rpms's share file names when installed the
a3d59b
conflict is accomodated by utilizing the "alternatives" mechanism
a3d59b
which manages a set of links. When one of the MTA's is selected via
a3d59b
/usr/sbin/alternatives links are established which point to the
a3d59b
correct files for that MTA. There are two ways to select your MTA:
a3d59b
The system-switch-mail package contains a GUI front end to the
a3d59b
alternatives mechanism and /usr/bin/system-switch-mail is an easy way
a3d59b
to select your MTA, or you can invoke alternatives directly like this:
a3d59b
a3d59b
% /usr/sbin/alternatives --config mta
a3d59b
a3d59b
Note: Selecting your preferred MTA is distinct from configuring the
a3d59b
MTA, you will need to consult the documentation for the MTA you
a3d59b
selected for information on how to configure it.
a3d59b
a3d59b

a3d59b
Local Variables:
a3d59b
mode: indented-text
a3d59b
indent-tabs-mode: nil
a3d59b
End: