Du er her: Forside > Brukere > Hans Sandsdalen > Diverse > Installasjon av qmail

Installasjon av qmail

av Hans Sandsdalen sist endret 30.11.2010 - 13:41

Dette fins på nettet ellers, men er greit å ha samlet sammen likevel.

Angående qmail, se også:

Installasjon

qmail krever daemontools og ucspi-tcp.

daemontools og ucspi-tcp

  1. daemontools

    Se http://cr.yp.to/daemontools/install.html.

    Create a /package directory:

    mkdir -p /package
    chmod 1755 /package
    cd /package
    

    Unpack the daemontools package:

    gunzip daemontools-0.76.tar
    tar -xpf daemontools-0.76.tar
    rm daemontools-0.76.tar
    cd admin/daemontools-0.76
    

    En liten endring:

    cd src
    cp conf-cc conf-cc.orig
    echo gcc -O2 -include /usr/include/errno.h > conf-cc
    cd ..
    

    Compile and set up the daemontools programs:

    package/install
    
  2. ucspi-tcp

    Se http://cr.yp.to/ucspi-tcp/install.html

    Unpack the ucspi-tcp package:

    gunzip ucspi-tcp-0.88.tar
    tar -xf ucspi-tcp-0.88.tar
    cd ucspi-tcp-0.88
    

    En liten endring:

    cp conf-cc conf-cc.orig
    echo gcc -O2 -include /usr/include/errno.h > conf-cc
    

    Compile the ucspi-tcp programs:

    make
    

    As root, install the ucspi-tcp programs under /usr/local:

    make setup check
    

qmail

  1. hent source:
    wget http://www.netqmail.org/netqmail-1.05.tar.gz
  2. Opprett brukere og grupper:
    groupadd nofiles
    useradd -g nofiles -d /var/qmail/alias alias
    useradd -g nofiles -d /var/qmail qmaild -s /nonexistent
    useradd -g nofiles -d /var/qmail qmaill -s /nonexistent
    useradd -g nofiles -d /var/qmail qmailp -s /nonexistent
    groupadd qmail
    useradd -g qmail -d /var/qmail qmailq -s /nonexistent
    useradd -g qmail -d /var/qmail qmailr -s /nonexistent
    useradd -g qmail -d /var/qmail qmails -s /nonexistent
  3. Opprett kataloger og linker:
    mkdir /var/qmail
    if [ -d /usr/man ]; then
       ln -s /usr/man /var/qmail/man
    elif [ -d /usr/local/man ]; then
       ln -s /usr/local/man /var/qmail/man
    fi
    mkdir /etc/qmail 
    ln -s  /etc/qmail /var/qmail/control
    ln -s /usr/sbin /var/qmail/bin
    
    mkdir -p /var/qmail/supervise/qmail-send/log
    mkdir -p /var/qmail/supervise/qmail-smtpd/log
    
    chmod +t /var/qmail/supervise/qmail-send
    chmod +t /var/qmail/supervise/qmail-smtpd
    
    mkdir -p /var/log/qmail/smtpd
    chown -R qmaill /var/log/qmail
  4. Pakk ut kildekode og kompiler:(endret med netqmail-1.06)
    cd /usr/local/src
    tar zvxf <DOWNLOADDIR>/netqmail-1.05.tar.gz
    cd netqmail-1.05
    ./collate.sh
    
    cd /usr/local/src/netqmail-1.05/netqmail-1.05
    make setup check
    
    ./config-fast <hostname>
  5. Lag boot-script, /var/qmail/rc:
    #! /bin/sh
    
    # Using stdout for logging
    # Using control/defaultdelivery from qmail-local to deliver message by default
    
    DELIVERY=`cat /etc/qmail/defaultdelivery`
    if [ -z "$DELIVERY" ]; then
       echo "/etc/qmail/defaultdelivery is empty or does not exist" 1>&2
       exit 1
    fi
    
    exec env - PATH="/var/qmail/bin:$PATH" qmail-start "$DELIVERY"
    Fila kan også hentes her.

    Så:

    echo "./Mailbox" > /etc/qmail/defaultdelivery
    chmod 644 /etc/qmail/defaultdelivery
    chmod 755 /var/qmail/rc
    ./Mailbox kan også være ./Maildir/
  6. Lag oppstartscript

    Lag ei fil /var/qmail/bin/qmailctl:

    #!/bin/sh
    
    # For Red Hat chkconfig
    # chkconfig: - 80 30
    # description: the qmail MTA
    
    PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
    export PATH
    
    QMAILDUID=`id -u qmaild`
    NOFILESGID=`id -g qmaild`
    
    case "$1" in
      start)
        echo "Starting qmail"
        if svok /service/qmail-send ; then
          svc -u /service/qmail-send
        else
          echo qmail-send supervise not running
        fi
        if svok /service/qmail-smtpd ; then
          svc -u /service/qmail-smtpd
        else
          echo qmail-smtpd supervise not running
        fi
        if [ -d /var/lock/subsys ]; then
          touch /var/lock/subsys/qmail
        fi
        ;;
      stop)
        echo "Stopping qmail..."
        echo "  qmail-smtpd"
        svc -d /service/qmail-smtpd
        echo "  qmail-send"
        svc -d /service/qmail-send
        if [ -f /var/lock/subsys/qmail ]; then
          rm /var/lock/subsys/qmail
        fi
        ;;
      stat)
        svstat /service/qmail-send
        svstat /service/qmail-send/log
        svstat /service/qmail-smtpd
        svstat /service/qmail-smtpd/log
        qmail-qstat
        ;;
      doqueue|alrm|flush)
        echo "Flushing timeout table and sending ALRM signal to qmail-send."
        /var/qmail/bin/qmail-tcpok
        svc -a /service/qmail-send
        ;;
      queue)
        qmail-qstat
        qmail-qread
        ;;
      reload|hup)
        echo "Sending HUP signal to qmail-send."
        svc -h /service/qmail-send
        ;;
      pause)
        echo "Pausing qmail-send"
        svc -p /service/qmail-send
        echo "Pausing qmail-smtpd"
        svc -p /service/qmail-smtpd
        ;;
      cont)
        echo "Continuing qmail-send"
        svc -c /service/qmail-send
        echo "Continuing qmail-smtpd"
        svc -c /service/qmail-smtpd
        ;;
      restart)
        echo "Restarting qmail:"
        echo "* Stopping qmail-smtpd."
        svc -d /service/qmail-smtpd
        echo "* Sending qmail-send SIGTERM and restarting."
        svc -t /service/qmail-send
        echo "* Restarting qmail-smtpd."
        svc -u /service/qmail-smtpd
        ;;
      cdb)
        tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
        chmod 644 /etc/tcp.smtp.cdb
        echo "Reloaded /etc/tcp.smtp."
        ;;
      help)
        cat <<HELP
       stop -- stops mail service (smtp connections refused, nothing goes out)
      start -- starts mail service (smtp connection accepted, mail can go out)
      pause -- temporarily stops mail service (connections accepted, nothing leaves)
       cont -- continues paused mail service
       stat -- displays status of mail service
        cdb -- rebuild the tcpserver cdb file for smtp
    restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it
    doqueue -- schedules queued messages for immediate delivery
     reload -- sends qmail-send HUP, rereading locals and virtualdomains
      queue -- shows status of queue
       alrm -- same as doqueue
      flush -- same as doqueue
        hup -- same as reload
    HELP
        ;;
      *)
        echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"
        exit 1
        ;;
    esac
    
    exit 0
    Fila kan også hentes her.

    Lag link og gjør scriptet eksekverbart:

    chmod +x /var/qmail/bin/qmailctl
    ln -s /var/qmail/bin/qmailctl /usr/local/sbin
    ln -s /var/qmail/bin/qmailctl /etc/init.d/qmail
    chkconfig --add qmail
  7. /var/qmail/supervise/qmail-send/run:
    #!/bin/sh
    exec /var/qmail/rc
  8. /var/qmail/supervise/qmail-send/log/run:
    #!/bin/sh
    exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail
  9. /var/qmail/supervise/qmail-smtpd/run:
    #!/bin/sh
    
    QMAILDUID=`id -u qmaild`
    NOFILESGID=`id -g qmaild`
    MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
    LOCAL=`head -1 /var/qmail/control/me`
    
    if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
        echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
        echo /var/qmail/supervise/qmail-smtpd/run
        exit 1
    fi
    
    if [ ! -f /var/qmail/control/rcpthosts ]; then
        echo "No /var/qmail/control/rcpthosts!"
        echo "Refusing to start SMTP listener because it'll create an open relay"
        exit 1
    fi
    
    exec /usr/local/bin/softlimit -m 2000000 \
        /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
            -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
    Fila kan også hentes her.
    OBS:
    Verdien spesifisert (max minne) til  softlimit kommandoen må muligens økes avhengig av operativsystem og hardware. Dersom forsøk på å koble seg til port 25 feiler, eller andre maskiner ikke klarer å sende mail kan de t være at du ser meldinger som:
      /usr/local/bin/tcpserver: error while loading shared libraries:
      libc.so.6: failed to map segment from shared object: Cannot
      allocate memory
    
    prøv å øke verdien til 3000000 eller 4000000
  10. Lag fila concurrencyincoming:
    echo 20 > /etc/qmail/concurrencyincoming
    chmod 644 /etc/qmail/concurrencyincoming
  11. /var/qmail/supervise/qmail-smtpd/log/run:
    #!/bin/sh
    exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd
  12. Gjør filene eksekverbare:
    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
  13. link supervise katalogene i /service:
    ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
    qmail starter så etter kort tid. dersom du ikke vil ha qmail kjørende ennå:
    qmailctl stop
  14. La localhost få sende via SMTP:
    echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp
    qmailctl cdb
  15. Filer som må/bør endres:
    • /etc/qmail/me (vanligvis navn som skal vises utad)
    • /etc/qmail/locals (f.eks localhost og gjeldene domene)
    • /etc/qmail/smtproutes (spesiell ruting av mail, sjekker ikke MX)
    • /etc/qmail/rcpthosts (domener som mottar mail her)
Side-alternativer
Kommentar

Du kan legge til en kommentar ved å fylle ut skjemaet under.

(Påkrevd)
Please enter your name.
(Påkrevd)
Please enter your e-mail address.
(Påkrevd)
(Påkrevd)