Install qmail (OPTIONAL)

Qmail is a secure, reliable, efficient, simple Mail Transfer Agent. It handles incoming and outgoing mail. Install qmail if you want your OpenACS server to send and receive mail, and you don't want to use an alternate MTA.

  1. Install qmail. QMail is available as standard Debian/Ubuntu package, rpms for Fedora/Redhat/CenTOS are available from QMail wiki page

  2. Replace sendmail with qmail's wrapper.

    [root qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
    [root qmail-1.03]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
    [root qmail-1.03]#
    rm -f /usr/bin/sendmail /usr/sbin/sendmail
    ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

    Configure qmail - specifically, run the config script to set up files in /var/qmail/control specifying the computer's identity and which addresses it should accept mail for. This command will automatically set up qmail correctly if you have correctly set a valid host name. If not, you'll want to read /var/qmail/doc/INSTALL.ctl to find out how to configure qmail.

    [root qmail-1.03]# ./config-fast yourserver.test
    Your fully qualified hostname is yourserver.test.
    Putting yourserver.test into control/me...
    Putting yourserver.test into control/defaultdomain...
    Putting yourserver.test into control/plusdomain...
    Putting yourserver.test into control/locals...
    Putting yourserver.test into control/rcpthosts...
    Now qmail will refuse to accept SMTP messages except to yourserver.test.
    Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
    [root qmail-1.03]#
    ./config-fast yourserver.test

    All incoming mail that isn't for a specific user is handled by the alias user. This includes all root mail. These commands prepare the alias user to receive mail.

    [root qmail-1.03]# cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
    [root alias]# chmod 644 ~alias/.qmail*
    [root alias]# /var/qmail/bin/maildirmake ~alias/Maildir/
    [root alias]# chown -R alias.nofiles /var/qmail/alias/Maildir
    [root alias]#
    cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root 
    chmod 644 ~alias/.qmail* 
    /var/qmail/bin/maildirmake ~alias/Maildir/ 
    chown -R alias.nofiles /var/qmail/alias/Maildir

    Configure qmail to use the Maildir delivery format (instead of mbox), and install a version of the qmail startup script modified to use Maildir.

    [root alias]# echo "./Maildir" > /var/qmail/bin/.qmail
    [root alias]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc
    [root alias]# chmod 755 /var/qmail/rc
    [root alias]# 
    echo "./Maildir" > /var/qmail/bin/.qmail 
    cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc 
    chmod 755 /var/qmail/rc 
    

    Set up the skeleton directory so that new users will be configured for qmail.

    [root root]# /var/qmail/bin/maildirmake /etc/skel/Maildir
    [root root]# echo "./Maildir/" > /etc/skel/.qmail
    [root root]# 
    /var/qmail/bin/maildirmake /etc/skel/Maildir
    echo "./Maildir/" > /etc/skel/.qmail

    As recommended, we will run qmail with daemontools control files. Create daemontools control directories, set up a daemontools control script, copy the supervise control files, and set permissions. The last line links the control directories to /service, which will cause supervise to detect them and execute the run files, causing qmail to start.

    [root root]# mkdir -p /var/qmail/supervise/qmail-send/log
    [root root]# mkdir -p /var/qmail/supervise/qmail-smtpd/log
    [root root]# mkdir /var/log/qmail
    [root root]# chown qmaill /var/log/qmail
    [root root]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
    [root root]# chmod 755 /var/qmail/bin/qmailctl
    [root root]# ln -s /var/qmail/bin/qmailctl /usr/bin
    [root root]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run 
    [root root]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    [root root]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    [root root]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
    [root root]# chmod 755 /var/qmail/supervise/qmail-send/run
    [root root]# chmod 755 /var/qmail/supervise/qmail-send/log/run
    [root root]# chmod 755 /var/qmail/supervise/qmail-smtpd/run
    [root root]# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
    [root root]# ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
    [root root]# ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
    mkdir -p /var/qmail/supervise/qmail-send/log
    mkdir -p /var/qmail/supervise/qmail-smtpd/log
    mkdir /var/log/qmail
    chown qmaill /var/log/qmail
    cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
    chmod 755 /var/qmail/bin/qmailctl
    ln -s /var/qmail/bin/qmailctl /usr/bin
    cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run
    cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
    chmod 755 /var/qmail/supervise/qmail-send/run
    chmod 755 /var/qmail/supervise/qmail-send/log/run
    chmod 755 /var/qmail/supervise/qmail-smtpd/run
    chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
    ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
    

    Wait ten seconds or so, and then verify that the four qmail processes are running. If uptimes don't rise above 1 second, this may indicate broken scripts that are continuously restarting. In that case, start debugging by checking permissions.

    [root root]# qmailctl stat
    /service/qmail-send: up (pid 32700) 430 seconds
    /service/qmail-send/log: up (pid 32701) 430 seconds
    /service/qmail-smtpd: up (pid 32704) 430 seconds
    /service/qmail-smtpd/log: up (pid 32705) 430 seconds
    messages in queue: 0
    messages in queue but not yet preprocessed: 0
    [root root]#

    Further verify by sending and receiving email. Incoming mail for root is stored in /var/qmail/alias/Maildir.