5.1 Instalando Teapop
Deje esto para el final porque este paso toma 10 minutos en todo. Aparte de ser mecanico.
Primero, desempacar los fuentes de teapop en algun directorio COMO UN USUARIO NORMAL. En mi caso, el fiel usuario Postfix
# su postfix
$ cd /tmp
$ tar xfv teapop-latest.tar
Configurar
$ cd teapop-XXXXX
$ ./configure --prefix=/usr --with-mysql=/usr --sysconfdir=/etc/teapop
$ make
Como root, instalar
# make install
El unico problema es que el ejecutable 'teapop' lo instala en /usr/libexec. Asi que movamoslo a /usr/sbin
# mv /usr/libexec/teapop /usr/sbin
5.2 Configurando Teapop
Verificar que en /etc/services la linea que diga pop3 no este comentada:
# cat /etc/services | grep pop3
pop3 110/tcp pop-3 # POP version 3
pop3 110/udp pop-3
Si esta comentada, descomentarla.
Agregar el siguiente archivo (pop3) en /etc/xinetd.d/ (si todavia tienes inetd, lo siento).
service teapop_xinetd
{
disable = no
type = UNLISTED
socket_type = stream
protocol = tcp
wait = no
user = postfix
server = /usr/sbin/teapop
log_on_success += USERID
log_on_failure += USERID
port = 110
}
Ahora viene el cuento de agregar un usuario para autentificar. Las passwords se guardan en texto plano, de ahi que es necesario que nadie externo pueda acceder a nuestra base de datos. Ademas, el usuario Postfix en mysql solo puede leer y seleccionar.
Usemos el usuario "usuario" que creamos hace poco, en la tabla 'dominio1', con contrasena "passwd"
mysql> use mail;
mysql> insert into dominio1(user, pass, maildir) values
('usuario', 'passwd', 'dominio1/usuario');
(El mismo lugar donde esta el spool de Postfix).
Ahora, crear el archivo etc/teapop/teapop.passwd y colocar lo siguiente (en una sola linea):
empty:<ip_de_midominio>:mysql:/home/postfix:0:postfix:postfix:localhost:
3306:mail:postfix:<pass_postfix>:midominio:user:pass:maildir:
Que significa?
El primer campo indica el dominio contra el que se va a autentificar via pop3. La palabra 'empty' indica nada despues del @.
El segundo campo es el numero IP del dominio.
El tercero, el tipo de autentificacion, mysql =)
El cuarto, la raiz donde esta el spool. (ven que facil?)
El quinto es el numero hash. Debe ser distinto por dominio.
El sexto y el septimo, es el UID/GID del usuario que lea el spool. (mas facil)
El octavo, el noveno y el decimo indica el host con mysql (y las tablas), el puerto donde conectarse a mysql y la database.
El undecimo y duodecimo indica el usuario/contrasena para leer/seleccionar la db/tabla
El decimo tercero indica la tabla donde se encuentran las combinaciones usuarios/contrasenas
Los siguientes valores indican los campos de usuario(user), pass(contrasena) y maildir (maild).
Siempre se debe terminar con un dos puntos final.
Ahora, la prueba final.
# mysqladmin reload
# postfix reload
# /etc/rc.d/init.d/xinetd restart
# chkconfig teapop on
# /etc/rc.d/init.d/teapop start
Y listo! Probemos: ( y en otra consola, tail -f /var/log/messages)
# telnet localhost 110
Trying 127.0.0.1
blablablabla....
srv-->+OK Teapop [v0.3.3] - Teaspoon stirs around again <1005018897.CFE43C1@Llywellyn>
yo
>user usuario
srv-->+OK Welcome, do you have any type of ID?
yo
>pass mipassword
srv-->+OK I'm ready to serve you, Master.
Ok!
Todo funciona bien!
Si no funciono, lo mas seguro es que en /etc/teapop/teapop.passwd hayas colocado :
...
midominio::mysql:....
Si es asi, prueba autentificar el usuario como:
usuario@midominio
Esta es una aproximacion de como crear dominios virtuales de correo usando un solo IP. Es decir, en el segundo campo de la linea agregada en /etc/teapop/teapop.passwd indica el numero IP del dominio. Si colocamos el mismo numero IP para varios dominios, debemos diferenciar los usuarios de los distintos dominios. Esto se logra con el separador @.
Justamente el primer campo indica el delimitador. Si colocamos empty, significa que los usuarios se autentificarian via
user USUARIO
Si agregamos, por ejemplo, "foo" al primer campo, los usuarios se deberan autentificar via
user USUARIO@foo
Facil, no?