Postfix mailer and Dovecot

From Free Knowledge Base- The DUCK Project: information for everyone
Revision as of 19:20, 25 June 2007 by Admin (Talk | contribs)

Jump to: navigation, search

Postfix mailer and Dovecot

__   _
  -o)/ /  (_)__  __ ____  __      Derek Winterstien
  /\\ /__/ / _ \/ // /\ \/ /      r.o.a.c.h.@.r.o.b.o.t.z...c.o.m
 _\_v __/_/_//_/\_,_/ /_/\_\      Trustix Secure Linux / Redhat Linux
..............................................................................

(A). Postfix

Postfix should be configured to start up on boot

  chkconfig Postfix on 

Make some configuration changes in postfix

  vi /etc/postfix/main.cf

Add / Modify the following

inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, $mydomain
myorigin = $mydomain


(B). Dovecot

Install from RPM or latest from source.

Compiling Dovecot From Sources:

./configure
make
sudo make install

Redhat/Fedora

You will need to create a file under /etc/pam.d named dovecot with the following info:

auth    required        pam_unix.so nullok
account required        pam_unix.so


SysV Init Script for dovecot:

#!/bin/bash
#
# Init file for Dovecot on Trustix Linux
# Dovecot was compiled from source.
# Written by Derek B. Winterstien
# http://linux.dbw.org/
# Star City Linux User Group

source /etc/init.d/functions

[ -x /usr/local/sbin/dovecot ] || exit 1
[ -r /usr/local/etc/dovecot.conf ] || exit 1

RETVAL=0
prog="dovecot"
desc="dovecot daemon"

start() {
        echo -n $"Starting $desc ($prog): "
        daemon $prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
        return $RETVAL
}

stop() {
        echo -n $"Shutting down $desc ($prog): "
        killproc $prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
        return $RETVAL
}

restart() {
        stop
        start
}

reload() {
        echo -n $"Reloading $desc ($prog): "
        killproc $prog -HUP
        RETVAL=$?
        echo
        return $RETVAL
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  reload)
        reload
        ;;
  condrestart)
        [ -e /var/lock/subsys/$prog ] && restart
        RETVAL=$?
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
        RETVAL=1
esac

exit $RETVAL


SysV Init Runlevels

  • redhat: /etc/rc.d/init.d
  • trustix: /etc/init.d

Install the init script in the appropriate init.d directory for your distribution. Now create the symlinks and so on with chkconfig.

 chkconfig --add dovecot

Verify that dovecot was added to the correct runlevels

/etc/init.d# chkconfig --list|grep dovecot 

Right now everything is K's

dovecot         0:off   1:off   2:off   3:off   4:off   5:off   6:off
 chkconfig --level 345 dovecot on

Now dovecot will startup with the system

Dovecot 'run as' User

create a separate dovecot user which doesn't have access to anything. It should also have it's own group where no-one else belongs to. dovecot user isn't used for any kind of mail processing - don't store users' mails as dovecot, and don't put dovecot to mail group.

For Trustix and Redhat the following should be ok:

 groupadd -g 97 -r dovecot
 useradd -d /no/dir -g dovecot -M -u 97 -r -s /bin/false dovecot

Misc Notes From Other Sources

dovecot. `/etc/rc.d/init.d/dovecot start` and `chkconfig dovecot add`. Worked with zero configuration although at first I could not see my folders on the server so I had a bit more configuration of imapd to do. I am not acutally sure how I got dovecot/Thunderbird to talk together completely. I had some strange group ownerhip bits in my mail files so fixing those might have helped. The changes I put into /etc/dovecot.conf included the following, to inform it that I have Mail subdirs in user home dirs to contain IMAP mail and about a couple other technical details:

protocols = imaps
#dga imap_listen = [::]
imap_listen = *
#dga default_mail_env = 
default_mail_env = mbox:%h/Mail:INBOX=/var/spool/mail/%u
#dga mailbox_check_interval = 0
mailbox_check_interval = 60