7. Phamm

Intro:

7.1. Instalación base de Phamm

En el capitulo 4.3. OpenLDAP ya descargamos las fuentes de phamm-0.4.7 y las des comprimimos en /root/phamm-0.4.7 Entonces copiaremos el directorio visible por apache.

# cd
# cp -r -v phamm-0.4.7 /var/www/localhost/htdocs/phamm
# cd /var/www/localhost/htdocs/phamm

7.2. Configuracion de Phamm

El archivo global de configuración de Phamm es:

/var/www/localhost/htdocs/phamm/config.inc.php.

Podemos editar ese archivo libremente ya que esta el archivo config.inc.php.template que es exactamente igual y lo podemos usar como respaldo.

# vim config.inc.php

# Cambiar suffix a:
define ('SUFFIX','dc=calcom,dc=com,dc=mx');

# Cambiar BINDDN a:
define ('BINDDN','cn=manager,dc=calcom,dc=com,dc=mx');
# Cambiar LDAP_BASE a:
$LDAP_BASE              = 'o=hosting,dc=calcom,dc=com,dc=mx';

# Cambiar FORCE_SSL a 1 para obligar el acceso via SSL.
define ('FORCE_SSL',1);

# (OPCIONAL) Cambiar HIDE_VERSION para que no muestre la version
# de Phamm en la interfaz web
define ('HIDE_VERSION',1);

# Cambiar ORG_TITLE al nombre de tu compañia por ejemplo:
define('ORG_TITLE','Calcom Hosting Admin');

# Cambiar ORG_URL a el url de tu pagina :D, por ejemplo:
define('ORG_URL','http://www.calcom.com.mx');

# Ya que no usaremos el plugin de DNS comentaremos la linea
# para que no lo cargue:

//// $plugins[] = "pdns";

# Ya que usamos el hash md5 para las contraseñas de los usuarios en OpenLDAP,
# también usaremos este algoritmo en Phamm:
define ('ENC_TYPE','md5');	// Standard LDAP encryption type
:wq

7.3. Configuración de el plugin Mail

El archivo de configuración de plugin mail es:

/var/www/localhost/htdocs/phamm/plugins/mail/config.inc.php.

Podemos editar ese archivo libremente ya que esta el archivo config.inc.php.template que es exactamente igual y lo podemos usar como respaldo.

# vim config.inc.php

# (OPCIONAL) Cambiar el valor predeterminado de las quotas de 10MB a 5MB:
    $quota_default              = '5'; // Default quota in Mb

# Por ahora desactivaremos el soporte para vacation.
define (USE_VACATION, 0);

# Tambien desactivaremos por ahora el soporte para amavisd-new
define (USE_AMAVIS, 0);

7.4. Modificaciones extras a Phamm para soporte de quotas con maildrop

Puesto que usaremos a maildrop para el manejo de las quotas de los buzones de correo, entonces haremos una pequeña modificación a el script que se encarga de crear las cuentas de correo y a el que las modifica para que escriba en el formato correcto las quotas y así maildrop las pueda leer, por default Phamm escribe el valor de las quotas en bytes, por ejemplo para 5MB el valor lo pone como: 5242880, y maildrop espera que al final de el numero tenga una "S" para especificar que es una cuota de tamaño (Size), o "C" para especificar que es una quota de Cantidad (Count?), es decir, el numero de correos permitidos en el buzón. Nosotros usaremos el de tipo "S" para espacio en disco. Entonces modificaremos los scripts:

/var/www/localhost/htdocs/phamm/plugins/mail/functions/add_mail.php.

Este es el que tiene la función para crear cuentas de correo, y es así donde hace el calculo para poner en bytes el valor de la cuota, nosotros le concatenaremos la "S" para que sea soportado por maildrop:

# vim /var/www/localhost/htdocs/phamm/plugins/mail/functions/add_mail.php

# cambiar:

$quota=$quota*$multi*$multi;

# por:

$quota=$quota*$multi*$multi.S;

Tambien cambiaremos el script que modifica las cuentas de correo:

/var/www/localhost/htdocs/phamm/plugins/mail/functions/modify_mail.php

# vim /var/www/localhost/htdocs/phamm/plugins/mail/functions/modify_mail.php

# cambiar:

$quota=$quota*$multi*$multi;

# por:

$quota=$quota*$multi*$multi.S;

Aquí aprovecharemos para hacer un cambio en el script:

/var/www/localhost/htdocs/phamm/plugins/mail/functions/add_mail.php Para que cambie la ruta de los buzones a como lo definimos al inicio del documento: cambiar:

$info["mailbox"]            = "$domain/$mail_new/";

por:

$info["mailbox"]            = "$domain/$mail_new/Maildir/";

7.5. Modificaciones extras para que use password hash en MD5 con base64 y así pueda corresponder a los hash que genera slappasswd

Actualmente la manera en que hace los hash Phamm es usando la función md5($password_clear) esto hace el hash y lo hace con codificación base16, pero los hash que generamos con slappasswd -h {md5} los hace en base46, entonces a la hora de autenticarse un usuario con la contraseña los hashes no corresponderán y no validara a los usuarios. Entonces tendremos que modificar la función que genera los hashes y los genere en base64. El archivo que genera el password hash es:

/var/www/localhost/htdocs/phamm/functions/password_hash.php La linea que lo genera es:

case 'md5':
          $password_hash = '{MD5}'.md5($password_clear);
          break;

Y la cambiaremos por:

case 'md5':
          $password_hash = '{MD5}'.base64_encode(mhash(MHASH_MD5,$password_clear));
          break;