Debido a que la comunidad colombiana decidió testear la extensión IMAP en el marco del PHPTestFest 2009 y que el soporte IMAP no está por defecto instalado en la máquina virtual que se puso a disposición para el evento, he recopilado unas instrucciones para instalar el soporte IMAP en la máquina virtual.
Estas instrucciones están en proceso de prueba y en mi máquina virtual corre el 98% de los tests de core con esta configuración, es probable que el soporte IMAP sea incluido en la próxima versión de la máquina virtual, de todas formas acá están los pasos que seguí para lograrlo y espero que les sirva para configurar sus máquinas virtuales.
después de tener funcionando la máquina virtual y poder ejecutar los tests, es hora de configurar el servidor que nos ayudará a probar los tests IMAP, primero hay que instalar el software necesario:
Activando IMAP en PHP
Por defecto el php no viene configurado con la extensión IMAP, de forma que hay que recompilar php para poder incluirla, lo primero es instalar algunas dependencias que la extensión necesita:
tester@ubuntu:~/src/php5.3-200905141630$ sudo apt-get install libc-client2007b libc-client2007b-dev
Se le pedirá de nuevo el password y que confirme que quiere instalar los dos paquetes, debería tener una salida (mas larga) como esta:
[sudo] password for tester:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
mlock
Suggested packages:
uw-mailutils
The following NEW packages will be installed:
libc-client2007b mlock
0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
Need to get 778kB of archives.
After this operation, 1618kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://us.archive.ubuntu.com intrepid/universe mlock 7:2007b~dfsg-2 [30.8kB]
Get:2 http://us.archive.ubuntu.com intrepid/universe libc-client2007b 7:2007b~dfsg-2 [747kB]
Fetched 778kB in 3s (203kB/s)
Selecting previously deselected package mlock.
(Reading database ... 60923 files and directories currently installed.)
Unpacking mlock (from .../mlock_7%3a2007b~dfsg-2_i386.deb) ...
Selecting previously deselected package libc-client2007b.
Unpacking libc-client2007b (from .../libc-client2007b_7%3a2007b~dfsg-2_i386.deb) ...
Processing triggers for man-db ...
Setting up mlock (7:2007b~dfsg-2) ...
Setting up libc-client2007b (7:2007b~dfsg-2) ...
Processing triggers for libc6 ...
ldconfig deferred processing now taking place
Ahora a configurar el php:
tester@ubuntu:~/src/php5.3-200905141630$ ./buildconf
tester@ubuntu:~/src/php5.3-200905141630$ ./configure --prefix=/usr/local --enable-bcmath --enable-calendar --enable-ftp --enable-shmop --enable-sockets --enable-exif --with-apxs2=/usr/bin/apxs2 --with-openssl=/usr --with-mysql=/usr/ --with-ncurses=/usr --with-zlib --with-zlib-dir=/usr --with-ldap=/usr --with-kerberos=/usr --with-libxml-dir=/usr --with-gd --with-png-dir=/usr --with-jpeg-dir=/usr --with-freetype-dir=/usr --with-bz2=/usr/local --with-mcrypt=/usr --with-readline=/usr --with-curl=/usr --with-gettext=/usr --with-pgsql=/usr -with-interbase=/usr --with-xsl=/usr --enable-wddx --enable-zip --with-mime-magic --enable-mbstring --with-pspell=/usr --enable-inline-optimization --with-gmp --enable-pcntl --enable-sysvsem --enable-sysvshm --enable-sysvmsg --with-regex --enable-soap --with-mssql=/usr --with-imap=/usr/lib --with-imap-ssl=/usr/lib
El comando anterior produce una salida extensa, debe esperar a que el proceso termine y que no se produzcan mensajes de error.
Hora de compilar:
tester@ubuntu:~/src/php5.3-200905141630$ make
El comando anterior produce una salida extensa, debe esperar a que el proceso termine y que no se produzcan mensajes de error.
Instalando Dovecot
tester@ubuntu:~/src/php5.3-200905141630$ sudo apt-get install dovecot-imapd
nos va a preguntar por el password de nuevo ( el password es 1234 ) y si realmente queremos instalar, a lo que respondemos con “Y”, si todo sale bien, se verá algo como:
[sudo] password for tester:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
dovecot-common
The following NEW packages will be installed:
dovecot-common dovecot-imapd
0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
Need to get 4438kB of archives.
After this operation, 9114kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://us.archive.ubuntu.com intrepid-updates/main dovecot-common 1:1.1.4-0ubuntu1.2 [3517kB]
Get:2 http://us.archive.ubuntu.com intrepid-updates/main dovecot-imapd 1:1.1.4-0ubuntu1.2 [921kB]
Fetched 4438kB in 28s (158kB/s)
Selecting previously deselected package dovecot-common.
(Reading database ... 60651 files and directories currently installed.)
Unpacking dovecot-common (from .../dovecot-common_1%3a1.1.4-0ubuntu1.2_i386.deb) ...
Selecting previously deselected package dovecot-imapd.
Unpacking dovecot-imapd (from .../dovecot-imapd_1%3a1.1.4-0ubuntu1.2_i386.deb) ...
Processing triggers for ufw ...
Processing triggers for man-db ...
Setting up dovecot-common (1:1.1.4-0ubuntu1.2) ...
Creating config file /etc/dovecot/dovecot.conf with new version
Creating config file /etc/dovecot/dovecot-ldap.conf with new version
Creating config file /etc/dovecot/dovecot-sql.conf with new version
adduser: Warning: The home directory `/usr/lib/dovecot' does not belong to the user you are currently creating.
You already have ssl certs for dovecot.
Setting up dovecot-imapd (1:1.1.4-0ubuntu1.2) ...
* Restarting IMAP/POP3 mail server dovecot [ OK ]
Configurando Dovecot
ahora es necesario configurarlo, hay que editar el archivo de configuración del servidor de correo para hacerlo, escriba en la línea de comandos:
tester@ubuntu:~/src/php5.3-200905141630$ sudo nano /etc/dovecot/dovecot.conf
y haga los siguientes cambios:
| línea | Original | Cambiarlo A |
|---|---|---|
| 46 | #listen = * | listen = * |
| 93 | #ssl_disable = no | ssl_disable = yes |
| 222 | #mail_location = | mail_location = maildir:/home/vmail/mail/%d/%n/Maildir |
| 805 | #auth_verbose = no | auth_verbose = yes |
| 809 | #auth_debug = no | auth_debug = yes |
| 847 | mechanisms = plain | mechanisms = login |
| 880 | passdb pam { | #passdb pam { |
| 909 | } | #} |
| 936 | #passdb passwd-file { | passdb passwd-file { |
| 939 | #args = | args = /etc/dovecot/dovecotpass |
| 940 | #} | } |
| 980 | userdb passwd { | #userdb passwd { |
| 987 | } | #} |
| 997 | #userdb static { | userdb static { |
| 1010 | #args = | args = uid=vmail gid=vmail home=/home/vmail/mail/%d/%n |
| 1011 | #} | } |
Nota: para localizar más fácilmente la línea que desea modificar, use la combinación de teclas Ctrl + w y escriba mail_location.
Para guardar el archivo use la combinación de teclas Ctrl + o y Ctrl + x para salir.
Acto seguido hay que reiniciar el servidor para que tome los cambios:
tester@ubuntu:~/src/php5.3-200905141630$ sudo /etc/init.d/dovecot restart
Debe ver algo como:
[sudo] password for tester:
* Restarting IMAP/POP3 mail server dovecot [ OK ]
hay que crear un usuario del sistema que almacenará los archivos de los usuarios virtuales:
tester@ubuntu:~/src/php5.3-200905141630$ sudo useradd -d /home/vmail -m vmail
Hay que asignarle una contraseña al nuevo usuario (escriba 1234 como contraseña):
tester@ubuntu:~/src/php5.3-200905141630$ sudo passwd vmail
Se le pedirá dos veces que escriba el password para el nuevo usuario:
Enter new UNIX password:
Retype new UNIX password:
Es necesario crear el usuario que se usará en las pruebas, solo el usuario webmaster necesita password, la información de los passwords se guarda en el archivo /etc/dovecot/dovecotpass, para crearlo use el comando:
tester@ubuntu:~/src/php5.3-200905141630$ sudo nano /etc/dovecot/dovecotpass
el contenido del archivo debe ser:
webmaster@something.com:$1$a9o8eBPN$6j2oPI7QjhftO9TSll/I2/
Probando Dovecot
Ahora vamos a probar que el servidor esté corriendo y que nos podemos autenticar correctamente, en la línea de comandos escriba:
telnet localhost 143
Y debe obtener (lo que ud debe escribir aparece con »>):
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK Dovecot ready.
>>> a login webmaster@something.com 1234
a OK Logged in.
b select inbox
* FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft)
* OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft \\*)] Flags permitted.
* 0 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1] UIDs valid
* OK [UIDNEXT 1] Predicted next UID
b OK [READ-WRITE] Select completed.
>>> c list "" *
* LIST (\\HasNoChildren \\UnMarked) "/" "INBOX"
c OK List completed.
>>> d logout
* BYE Logging out
d OK Logout completed.
Connection closed by foreign host.