Postfix Configuration
  • Add 'vmail' Account:
    useradd -m vmail
  • Add to /etc/postfix/main.cf:

    ## If maildrop exists please use maildrop instead of courier
    # virtual_transport = maildrop
    virtual_transport = courier
    virtual_mailbox_domains = catspaw.org
    virtual_mailbox_base = /home/vmail/
    virtual_mailbox_maps = hash:/etc/postfix/vmailbox
    virtual_minimum_uid = 100
    virtual_uid_maps = static:

    VMAIL_UID

    virtual_gid_maps = static:
    VMAIL_GID

    virtual_alias_maps = hash:/etc/postfix/virtual

  • Add to /etc/postfix/master.cf:

    courier unix - n n - - pipe user=vmail argv=/usr/bin/deliverquota -c /home/vmail/${recipient}/

  • Create emtpy /etc/postfix/vmailbox:
    touch /etc/postfix/vmailbox
  • Enable smtps w/ tls/sasl for relaying. Uncomment the following in /etc/postfix/master.cf

    smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
    tlsmgr fifo - - n 300 1 tlsmgr

  • Create blank /etc/sasldb2 file and set the permissions correctly.

    touch /etc/sasldb2
    chmod 640 /etc/sasldb2

Courier-IMAP configuration
  • Get the vmail account for the /etc/userdb:

    pw2userdb | grep vmail > /etc/userdb
    chmod 700 /etc/userdb

  • Enable Squirrelmail with courier at HTDOCS/squirrelmail/config/config_local.php:

    $imap_server_type = 'courier'; ## Tell squirrelmail we use courier
    $default_folder_prefix = ''; ## Courier dislikes the prefix concept
    $auto_create_special = false; ## Courier dislikes 'special folders'

Side Note:
If you get a 'Cannot create mail/Sent' in Squirrelmail you may have to go into Options->Folder Preferences and change 'Folder Path:' to blank.

New Virtual Domain
  • Edit /etc/postfix/main.cf and modify 'virtual_mailbox_domains'

    virtual_mailbox_domains = catspaw.org, squirrelhill.com

  • Restart Postfix

New Alias
  • Adding new alias to /etc/postfix/virtual in the followng format:

    # Mail name@address mailto@theirdomain.com
    meercat@catspaw.org mouring@rabbithill.org

  • Remake virtual hash:
    postmap hash:vmailbox

Adding New User
  • Adding new user to /etc/postfix/vmailbox in the following format:

    # MAIL NAME@ADDRESS MAILBOXNAME (same as email)
    meercat@catspaw.org meercat@catspaw.org

  • Remake virtual hash:
    postmap hash:vmailbox
  • Adding /etc/userdb entry:

    userdb 'meercat@catspaw.org' set home=/home/vmail mail=/home/vmail/meercat@catspaw uid=

    VMAIL_UID
    gid=
    VMAIL_GID

  • Send test mail to generate mail folders:
    echo 'test' > mail meercat@catspaw.org
  • Set imap password by doing:
    userdbpw | userdb 'meercat@catspaw.org' set imappw
  • Set pop3 password by doing:
    userdbpw | userdb 'meeercat@catspaw.org' set pop3pw
  • Rebuilding Database:
    makeuserdb
  • Create SASL entry for outgoing mail delivery:
    saslpasswd -c -u catspaw.org -a smtpauth meercat
Side note: Anytime you change the user database. Either a password or an entry in userdb. You need to do '
makeuserdb
' for it to take affect.

Additional Notes for getting mailman to work.
  • Add to the 'main.cf' the following:

    ## Mailman
    owner_request_special = yes
    recipient_delimiter = +
    unknown_local_recipient_reject_code = 550

  • Add to the bottom of /usr/lib/mailman/Mailman/mm_cfg.py:

    ## Postfix
    MTA = 'Postfix'

  • Run /usr/lib/mailman/bin/genaliases
  • Go to /var/lib/mailman/data and type:
    chown mailman:mailman aliases.db aliases
  • Modify the 'main.cf' for postfix to include:
    alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
  • Set mailman site password:

    # cd /usr/lib/mailman/bin
    tigger:/usr/lib/mailman/bin # ./mmsitepass
    New site password: *****
    Again to confirm password: *****
    Password changed.

  • Modify apaache httpd.conf to include:

    ## Mailman
    ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/
    Alias /pipermail/ /var/lib/mailman/archives/public/
    <Directory /usr/lib/mailman/cgi-bin/>
    allow from all
    </Directory>
    <Directory /var/lib/mailman/archives/>
    Options +FollowSymLinks
    allow from all
    </Directory>

  • Change /etc/mailman.cgi-gid to hold the GID of the WWW GID.

If You are seeing this, it is broken. =(