QMail – Courier Authlib (CentOS 7)

Published by Lello on

Una volta installato il nostro sistema di posta, vediamo come accedere alle nostre caselle email tramite servizio imap. Non mi occuperò di installare un pop3 server in quanto credo che il servizio/protocollo pop3 sia veramente inutile.

Sul mercato, i leader incontrastati dei server imap su piattaforma Linux sono sostanzialmente 2: Courier e Dovecot (senza considerare quelli commerciali). Non mi dilungherò su quale sia il migliore, il più veloce o il più facile da configurare. Io uso (quasi) da sempre Courier Imap Server e mi sono sempre trovato bene, soprattutto per quanto riguarda l’interazione con vpopmail, con mysql (fondamentale) e con horde (sistema di webmail che descriveremo in seguito); inoltre è molto plasmabile e potente quando si tratta di creare/gestire le shared folder.

Installazione

Il primo package da installare è il Courier unicode 2.0

# yum -y install expect tcl libtool-ltdl libtool-ltdl-devel gdbm-devel
# cd /usr/src# wget https://jaist.dl.sourceforge.net/project/courier/courier-unicode/2.0/courier-unicode-2.0.tar.bz2# tar xvfj courier-unicode-2.0.tar.bz2# cd courier-unicode-2.0
# ./configure# make
# make install

Successivamente installiamo Courier AuthLib; scaricheremo i sorgenti direttamente dal sito ufficiale:

# cd /usr/src
# wget http://prdownloads.sourceforge.net/courier/authlib/0.68.0/courier-authlib-0.68.0.tar.bz2
# tar xvfj courier-authlib-0.66.1.tar.bz2
# cd courier-authlib-0.66.1
# ./configure
# make
# make install
# make install-migrate # <== SOLO SE AVETE UN'ALTRA VERSIONE DELLE AUTHLIB GIA' INSTALLATE
# make install-configure
ln -s /usr/local/etc/authlib/ /etc/courier-authlib <== Solo per comodità

Configuriamo il servizio di autenticazione in modo che courier possa autenticarsi sul database mysql di vpopmail (dove sono conservati gli utenti e gli hash delle password del mio mail server). Editiamo il file di configurazione del servizio /usr/local/etc/authlib/authdaemonrc in questo modo:

authmodulelist="authuserdb authpwd authshadow authmysql authcustom authpipe"
authmodulelist="authmysql"
daemons=520
# DEBUG_LOGIN=0 - turn off debugging
# DEBUG_LOGIN=1 - turn on debugging
# DEBUG_LOGIN=2 - turn on debugging + log passwords too
# ** YES ** - DEBUG_LOGIN=2 places passwords into syslog.
DEBUG_LOGIN=2 # <== DA DISABILITARE PRIMA CHE IL SISTEMA ENTRI IN PRODUZIONE

Ricordiamoci la struttura del database vpopmail;

# mysql vpopmail_db -p
mysql> SELECT * FROM vpopmail;
+------------+--------------+------------------------------------+--------+--------+------------+------------------------------------------------+----------+
| pw_name    | pw_domain    | pw_passwd                          | pw_uid | pw_gid | pw_gecos   | pw_dir                                         | pw_shell |
+------------+--------------+------------------------------------+--------+--------+------------+------------------------------------------------+----------+
| dave       | anthesia.lan | $1$00000000$rVKz4V7WR45JidlHoaWaB1 |      0 |      0 | dave       | /home/vpopmail/domains/anthesia.lan/dave       | NOQUOTA  |
+------------+--------------+------------------------------------+--------+--------+------------+------------------------------------------------+----------+

Andiamo a modificare il file di configurazione /usr/local/etc/authlib/authmysqlrc per l’accesso al database vpopmail , in maniera tale che i campi del database suindicato coincidano con la query che andremo a fare:

MYSQL_SERVER localhost
MYSQL_USERNAME vpopmail_usr
MYSQL_PASSWORD vpopmail_pwd
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_PORT 3306
MYSQL_DATABASE vpopmail_db
MYSQL_USER_TABLE vpopmail
MYSQL_CRYPT_PWFIELD pw_passwd
DEFAULT_DOMAIN anthesia.lan
MYSQL_UID_FIELD pw_uid
MYSQL_GID_FIELD pw_gid
MYSQL_LOGIN_FIELD pw_name
MYSQL_HOME_FIELD pw_dir
MYSQL_NAME_FIELD pw_gecos
MYSQL_QUOTA_FIELD pw_shell
MYSQL_SELECT_CLAUSE SELECT CONCAT(pw_name, '@', pw_domain) AS username, \
        pw_passwd AS cryptpw, '' AS clearpw, \
        '66' AS uid, '66' AS gid, pw_dir AS home, './Maildir/' AS maildir, \
        pw_shell AS quota, pw_gecos AS fullname, \
        'disablewebmail=0,disablepop3=1,disableimap=0,disableshared=0' AS options \
        FROM vpopmail \
        WHERE pw_name = '$(local_part)' AND pw_domain = '$(domain)'

L’ultima cosa che rimane da fare è creare il file /etc/init.d/courier-authlib per eseguire all’avvio le courier-authlib:

#! /bin/sh
#
# chkconfig: 2345 15 85
# description: Authlib - Courier authentication library.
#
#
prefix="/usr/local"
exec_prefix="/usr/local"
sysconfdir="/usr/local/etc"
sbindir="/usr/local/sbin"

if test ! -f /usr/local/etc/authlib/authdaemonrc
then
   echo "/usr/local/etc/authlib/authdaemonrc does not exist, forgot make install-configure?"
   exit 1
fi

case "$1" in
   start)
      cd /
      # Start daemons.
      touch /var/lock/subsys/courier-authlib
      echo -n "Starting Courier authentication services:"
      $sbindir/authdaemond start
      echo " authdaemond"
      ;;
   stop)
      echo -n "Stopping Courier authentication services:"
      $sbindir/authdaemond stop
      echo " authdaemond"
      rm -f /var/lock/subsys/courier-authlib
      ;;
   restart)
      $0 stop
      $0 start
      ;;
   reload)
      echo -n "Starting Courier authentication services:"
      $sbindir/authdaemond restart
      echo " authdaemond"
      ;;
esac
exit 0

Facciamo partire le nostre librerie di autenticazione courier e facciamo in modo che ripartano al boot:

# chmod 755 /etc/init.d/courier-authlib
# chkconfig courier-authlib on
# systemctl start courier-authlib

← QMail – Test Simscan (CentOS 7) QMail – Courier Imap (CentOS 7) →