Code Search for Developers
 
 
  

INSTALL from AlphaMail at Krugle


Show INSTALL syntax highlighted

Read QUIRKS first!

REQUIREMENTS
============
- Apache 2 with mod_perl 2.x and HTML::Mason.
- C++ Boost libraries 1.33 or better.
- A decent C++ compiler. See imap_webcache notes for information on compiler
  problems.
- A number of perl modules (configure will tell you what you need, and if you
  have it)
- A number of utilities if you want viewers to work (antiword, netpbm, xlhtml,
  unzip, tar)
- The elinks text browser (which is used to convert HTML messages to text). I
  hope to drop this dependency soon.
- An RFC-3501 compliant IMAP server. I have verified compatibility with
  - Dovecot 1.0beta
  - UW-IMAP
  - Cyrus 2.3.1 (Note, versions prior to 2.2.8 will definitely _not_ work, due
    to bounds checking bug in Cyrus)

DOCS - NEW!
===========

There is now an admin guide in the docs subdirectory (in POD format). Use
pod2man to turn it into a man page, or pod2html to turn it into HTML (which
includes pictures).

The notes below should be up to date a a quick guide. Look for more specific
details in the admin guide.

Add requests for the creation of specific docs to the bugzilla database
(http://alphamail.uoosl.org/bugzilla).

UPGRADING
=========
If upgrading, it is a good idea to clean out your mason cache (mason
subdirectory of your install)

Also re-run alphamail_genconfig! Don't expect the configuration files to
remain static. Dependencies and configuration parameters may change. 

IMPORTANT NOTES:

Upgrading from pre-0.70 to 0.70 or above: The prefs file naming changed. The
old names used the imap servers as part of the file names. This was a problem,
since more than one MX can use the same imap server. If you have existing
users, rename the config files using the script util/upgrade_prefs.

Upgrading from pre-0.9921 note that the preferences directory format
changed again. It now creates a sub-tree of depth 3 (+2 for the MX/user) for
these files. This can be tuned, but I have not tested anything but the
defaults. You can port your existing preferences using the prefs_depth.pl tool
(which installs in sbin by default).

BUILD NOTES (platform specific notes may be available in notes/)
===========

1) Building and installing. 

   If you are NOT using g++, then you should look at your compiler manual and
   add some optimization (and possibly debugging) options to CXXFLAGS (see also
   the files in notes/). Speedups of more than 50% are common when optimization
   is enabled, but the configure system only knows how to do this for GNU
   tools. 
   
   Many systems also need an extra option to enable thread support in the
   compiler (-pthread on Linux, -pthreads on Solaris). 
   
   You may also need to specify where the Boost headers and libraries are
   located. Here is an example:

   $ export CXXFLAGS=-I/usr/local/include/boost-1_33_1 -O2 -g -pthread
   $ export LDFLAGS=-L/usr/local/lib
   $ ./configure --prefix=/usr/local/alphamail
   $ make
   $ su -
   # make install

   The configure script will try to auto-detect the boost library names on
   your system they are either in system library locations, or you specify an
   LDFLAGS -L option that indicates their location.

   If you have a Boost toolset that was not documented as of early 2006, or if
   you have more than one toolset and want to force configure to use a specific
   one then you may have to tell the configure script which toolset to use.

   If you have this problem, look at your library names
   (libboost_regex-gcc-mt.a) for the abbreviation between the library name and
   mt (in the example case, it is gcc) and use:

   $ ./configure --prefix=/usr/local/alphamail --enable-boost-toolset=abb

   where abb is the abbreviation in your library names.

   If there are errors on dependencies, fix them before moving on to
   configuration. You can use CPAN or your system's package manager. I have
   made a special effort to insure that most of the dependencies are widely
   available as prebuilt packages.

2) As root, generate a configuration file using the interactive generator:

   # alphamail_genconfig

   This will complain if some of the viewer utilities are not available. The
   only one that should affect operability is elinks.

3) Install the garbage sweeper (from util) in your crontab (see notes below)

Other notes on dependencies:

netpbm-progs is needed for image icon previews
antiword is needed for word doc previews
xlhtml is needed for excel previews
elinks is needed for html message to text conversions (soon to go away)

CONFIGURATION
=============

The alphamail_genconfig script generates an Apache and web app configuration
file, creates util directories, and fixes privileges on certain files.

YOU MUST RUN THIS AS A PRIVILEGED USER. 

You should be able to simply include the apache/alphamail.conf file it creates
in your Apache 2 configuration. SSL is required, unless you hand edit the
resulting configuration.

Please report confirmed bugs to:

http://alphamail.uoosl.org/bugzilla

If you are having general issues with building or installing on a certain
platform you should use the mailing lists.

SANDBOX PROBLEMS?
=================
All external viewers run in a sandbox (see utils/sandbox/sandbox.c), which you
configure when you run the configuration script. The script tries to make sure
all dependencies are met, but you may find you need to link more files into the
sandbox in order to get things to work. Use ln(1) for this purpose if possible,
or cp if you have separate filesystems.

It currently makes some assumptions about the OS (i.e. Linux or OSX), but I am
trying to add support for others. Basically, the configure script tries to copy
all binaries and libraries into the sandbox that will be needed for a chroot
jail.  You can look at what the script tries, and if it fails, just emulate it
via the command line (i.e. make your own chroot area that can run netpbm,
antiword, etc) and comment out the create_sandbox code in alphamail_genconfig.

GARBAGE SWEEPER
===============

Files build up in the temporary directories as the system is used. There is
no way to guarantee their cleanup from within the web-app, because the user may
not log out, etc. So, there is an external utility called garbage_sweeper in
the util directory. Install it in your crontab. You might run it first and look
at the alphamail_ui.log to make sure it is doing the correct thing.

My crontab entry looks like this:

0,10,20,30,40,50 * * * * /usr/local/alphamail/util/garbage_sweeper --config /usr/local/alphamail/etc/alphamail_config --lib /usr/local/alphamail/lib

MEMORY USAGE
============

Perl may "leak" due to the fact that garbage collection is in use and circular
references may be created. I have done my best to insure that my code doesn't
do this, but I am using a lot of other people's modules.  The best way to keep
things in shape is to set MaxClientRequests in httpd.conf to something other
than 0. I use about 200. There is very little penalty in this, and it keeps
apache's memory footprint in check.




See more files for this project here

AlphaMail

AlphaMail is an accelerated web mail interface with a C++ middleware layer that is more effective than an IMAP proxy which is a highly scalable (10k+ users). The interface includes modern features, Section 508 compliance, and universal browser support.

Project homepage: http://sourceforge.net/projects/alphamail
Programming language(s): C++,Java,JavaScript,Perl
License: other

  aux/
    build/
      EL4/
        alphamail.spec
        antiword.spec
        boost-base.patch
        boost-config-compiler-gcc.patch
        boost-gcc-tools.patch
        boost-runtests.patch
        boost-thread.patch
        boost.spec
        gd.patch
        libapreq2-build.patch
        libapreq2.spec
        mod_perl.spec
        perl-Apache-AuthCookie.spec
        perl-Apache-Session.spec
        perl-Archive-Tar.spec
        perl-BSD-Resource.spec
        perl-Bit-Vector.spec
        perl-CGI.pm.spec
        perl-Cache-Cache.spec
        perl-Carp-Clan.spec
        perl-Class-Container.spec
        perl-Class-Data-Inheritable.spec
        perl-Class-ErrorHandler.spec
        perl-Class-Loader.spec
        perl-Compress-Zlib.spec
        perl-Convert-ASCII-Armour.spec
        perl-Convert-PEM.spec
        perl-Crypt-Blowfish.spec
        perl-Crypt-CAST5.spec
        perl-Crypt-CBC.spec
        perl-Crypt-DES.spec
        perl-Crypt-DES_EDE3.spec
        perl-Crypt-DH.spec
        perl-Crypt-DSA.spec
        perl-Crypt-IDEA.spec
        perl-Crypt-Primes.spec
        perl-Crypt-RSA.spec
        perl-Crypt-Random.spec
        perl-Data-Buffer.spec
        perl-Date-Calc.spec
        perl-Devel-StackTrace.spec
        perl-Digest-BubbleBabble.spec
        perl-Digest-HMAC.spec
        perl-Digest-MD2.spec
        perl-Digest-SHA1.spec
        perl-Email-Address.spec
        perl-Email-Date.spec
        perl-Email-Simple.spec
        perl-Error.spec
        perl-Exception-Class.spec
        perl-ExtUtils-XSBuilder.spec
        perl-GD.spec
        perl-GDGraph.spec
        perl-GDTextUtil.spec
        perl-HTML-Mason.spec
        perl-HTML-Parser.spec
        perl-HTML-Tagset.spec
        perl-IO-Zlib.spec
        perl-IO-stringy.spec
        perl-Log-Log4perl.spec
        perl-MIME-Types.spec
        perl-MIME-tools.spec
        perl-Mail-Procmailrc.spec
        perl-MailTools.spec
        perl-Math-GMP.spec
        perl-Math-Pari.spec
        perl-Module-Build.spec
        perl-Net-SSH-Perl.spec
        perl-Params-Validate.spec
        perl-Parse-RecDescent.spec
        perl-Sort-Versions.spec
        perl-String-CRC32.spec
        perl-Sub-Uplevel.spec
        perl-Text-Aspell.spec
        perl-Tie-EncryptedHash.spec
        perl-Tie-IxHash.spec
        perl-Time-HiRes.spec
        perl-Time-Piece.spec
        perl-TimeDate.spec
        perl-URI.spec
        perl-Unicode-Collate.spec
        perl-Unicode-String.spec
        perl-WWW-Mechanize.spec
        perl-YAML.spec
        perl-libwww-perl.spec
        xlhtml.spec
      darwin/
        portfiles/
      README
      alphamail.spec
      boost-base.patch
      boost-config-compiler-gcc.patch
      boost-gcc-tools.patch
      boost-runtests.patch
      boost-thread.patch
      boost.spec
  conf/
    README
    alphamail.conf
    init.pl
    log4perl.conf
  docs/
    notes/
    AlphamailAdmin.pod
    build.sh
    quotas.jpg
  experiments/
    html/
    jstests/
    perl/
  htdocs/
    images/
    mail/
    static/
    download.html
    error.html
    filevault.html
    index.html
  imap_webcache/
    docs/
    experiments/
    netxx/
    patches/
    src/
    tests/
    ChangeLog
    INSTALL
    LICENSE
    Makefile.am
    TODO
  lib/
    AlphaMail/
    Apache2/
    Unicode/
    AlphaMail.pm
    IMAPAuth.pm
    ManagerFactory.pm
  tests/
    cache/
    interface/
    lib/
    load/
    misc/
    resources/
    Makefile
    README
    test
  util/
    init.d/
    sandbox/
    Makefile.am
    alphamail_genconfig
    awstats_gen
    garbage_sweeper
    hang_detector
    logrotate.conf
    prefs_depth.pl
    size_vs_time.pl
    stats.pl
    update_prefs
    webcache_watcher
  AUTHORS
  COPYING
  ChangeLog
  INSTALL
  LICENSE
  Makefile.am
  NEWS
  QUIRKS
  README
  configure.ac