POP3 con TPop3D y MySQL en FreeBSD
Abril 21st, 2008
eeeee gatoreiiiiiiiiii senioritaaaaaa……
Ah no los vi, disculpen. Ya que estan aca, hablemos un poco de como implementar un server POP3 con TPop3D en FreeBSD, of course
TPop3D no es el mejor de los daemons. Pero es simple y rapido de configurar. Y tambien viene con los ports de freebsd.
Entonces:
(ttyp0:22:13 root@hoyganventures:~)# cd /usr/ports/mail/tpop3d/
(ttyp0:22:13 root@hoyganventures:/usr/ports/mail/tpop3d)# make install
Esto nos instala el binario del server como asi tambien una configuracion ejemplo:
(ttyp0:22:16 root@hoyganventures:/usr/ports/mail/tpop3d)# ls -las /usr/local/etc/tpop3d.conf
10 -rw-r–r– 1 root wheel 9076 Apr 15 02:39 /usr/local/etc/tpop3d.conf
(ttyp0:22:16 root@hoyganventures:/usr/ports/mail/tpop3d)# which tpop3d
/usr/local/sbin/tpop3d
ahora necesitamos tener una base en mysql:
create database mailaccounts;
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`domain` varchar(255) NOT NULL,
`pass` varchar(32) NOT NULL,
`delivery` text NOT NULL,
`address` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`),
KEY `domain` (`domain`),
KEY `address` (`address`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ya que estamos vamos a usar esta tabla para implementar un smtp con postfix y mysql, este seria el uso de los campos (ignoren todos los comentarios sobre el postfix, tomenlo como algo informativo, ya que ese sera un articulo aparte):
id: doh ![]()
name: nombre de usuario para el tpop3d y alias para el postfix
domain: nombre de dominio, usado para el postfix y para el tpop3d.
pass: password del usuario, usado por el tpop3d.
delivery: usado por el postfix para especificar como se hace el delivery del mail.
address: usado por el postfix para especificar la direccion de email de cada usuario.
veamos el pedazo del file tpop3d que nos interesa:
## MySQL authentication options
# auth-mysql-enable: (yes | true)
# Enable MySQL authentication.
auth-mysql-enable: true
# auth-mysql-mail-group: (group-name | gid)
# The group name or gid under which access to the mailspool will take place.
# [default: group of user associated with virtualdomain]
auth-mysql-mail-group: mail
# auth-mysql-hostname: hostname [[hostname] hostname] ..
# Host on which to connect to MySQL. Tried in order until a working host is
# found. [default: localhost]
auth-mysql-hostname: localhost
# auth-mysql-database: database
# MySQL database to use for authentication.
auth-mysql-database: mailaccounts
# auth-mysql-username: username
# MySQL username used to access the database.
auth-mysql-username: xxxxx
# auth-mysql-password: password
# Password of MySQL user
auth-mysql-password: xxxxxxxxx
# auth-mysql-pass-query: substitution string
# Query template to use for USER/PASS authentication.
# Return mailpath, password, userid, mailspool type
auth-mysql-pass-query: \
SELECT CONCAT(’/mail/’, ‘$(local_part)’), \
CONCAT(’{plaintext}’, cryptpw), \
‘pop’, ‘maildir’ \
FROM users \
WHERE name = ‘$(local_part)’ \
AND domain = ‘$(domain)’
El tpop3d usara ese query para obtener, en ese orden: mailpath, password, uid, tipo de mailspool (maildir o mailbox). para conocer que otros usos hay para las variables $(…) pueden consultar el man.
El argumento uid especifica los permisos de usuario que tomara el tpop3d para acceder al maildir. FreeBSD viene con un user pop de uid 68 por default que podemos usar (una vez que hayamos otorgado los permisos necesarios para este user en nuestro directorio de mails). El usuario necesita permisos de escritura para borrar mails.
insert into mailaccounts.users (name, domain, pass, delivery, address) values(’user’, ‘hoyganventures.com’, ‘password’, ‘otradir@domain.com’, ‘user@hoyganventures.com’)
Este query ingresa un usuario virtual para el tpop3d y para el postfix, en este caso es una direccion de correo con forward a otra cuenta (detalles para el postfix), lo importante para el tpop3d son los campos name, domain, y pass.
Si el usuario es autenticado de forma exitosa, el damon buscara el directorio /mail/user y lo accedera (en nuestro caso en forma de maildir) para servir los mails de este usuario.
Para probar nuestro daemon:
(ttyp1:22:26 root@hoyganventures:~)# telnet localhost 110
Trying ::1…
Trying 127.0.0.1…
Connected to hoyganventures
Escape character is ‘^]’.
+OK <4708ca40c4a23cba2a8d544ff9c844d8@hoyganventures>
user user@hoyganventures.com
+OK Tell me your password.
pass password
+OK Welcome aboard! You have no messages at all.
Eso es todo amigos. Se que es demasiado concreto, pero en proximos posts iremos contando algunas cositas mas del tpop3d pero mas que nada del setup general de servicios virtuales en freebsd como pop y smtp, ademas obviamente de nuestras super notas contando novedades hoyganeanas, que las hay, hasta la proxima ![]()



