Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

MDaemon: Cómo guardar las cuentas de usuario de MDaemon en base de datos MySQL Server
Internet y comunicaciones


Cómo guardar las cuentas de usuario del servidor de correo electrónico MDaemon en una base de datos MySQL Server. Explicamos en este tutorial cómo guarda MDaemon la lista de usuarios (método fichero de texto plano) por defecto y cómo cambiarlos (migrando los existentes) a una base de datos conectada mediante ODBC.



 

Gestión de cuentas de usuario de MDaemon, fichero, LDAP, base de datos ODBC

MDaemon admite tres posibilidades para almacenar y gestionar las cuentas de usuario: fichero de texto plano sin formato de ancho fijo, LDAP o bien en base de datos mediante ODBC. Por defecto MDaemon utiliza el fichero de texto plano sin formato de ancho fijo (USERLIST.DAT). Podremos realizar el cambio de opción desde la consola de administración de MDaemon, en el menú "Cuentas" - "Opciones de Cuentas":

Gestión de cuentas de usuario de MDaemon

En la opción "Base de Datos de Cuentas":

Gestión de cuentas de usuario de MDaemon, fichero, LDAP, base de datos ODBC

A continuación mostramos algunas de las peculiaridades de cada una de estas opciones.

 

Opción por defecto de MDaemon para guardar las cuentas de usuario en fichero USERLIST.DAT

MDaemon almacena por defecto las cuentas de usuario en un fichero de texto plano sin formato con ancho fijo, llamado USERLIST.DAT. Teniendo marcada la opción "Almacenar datos de cuentas en el archivo de disco USERLIST.DAT":

Opción por defecto de MDaemon para guardar las cuentas de usuario en fichero USERLIST.DAT

Dicho fichero se encuentra en:

C:/MDaemon/App

(donde "C:/MDaemon" será la unidad y carpeta de instalación de MDaemon)

Opción por defecto de MDaemon para guardar las cuentas de usuario en fichero USERLIST.DAT

USERLIST.DAT es editable directamente con cualquier editor de texto plano sin formato (como el notepad de Windows) y tiene un formato de ancho fijo. Podremos editar directamente este fichero para cambiar opciones de configuración de las cuentas de usuario pero sólo si somos usuarios expertos y con precaución, pues un mal formato o mal uso del mismo provocará que MDaemon no lo reconozca:

Opción por defecto de MDaemon para guardar las cuentas de usuario en fichero USERLIST.DAT

En caso de que el fichero USERLIST.DAT de MDaemon contenga una o varias líneas con formato erróneo, cuando se recarguen las cuentas (por ejemplo en un reinicio del servicio), MDaemon analiza el fichero USERLIST.DAT, si no encuenta errores de formato carga los usuarios en memoria para agilizar las validaciones. Si encuenta alguna línea con formato erróneo realiza las siguientes acciones:

1º Realiza una copia de seguridad del fichero USERLIST.DAT original al fichero USERLIST.OLD.

2º Analiza línea a línea el fichero USERLIST.DAT, cada línea que encuentre con formato erróneo la guarda en el fichero USERLIST.BAD y la elimina del fichero USERLIST.DAT. De forma que dejará en el fichero USERLIST.DAT sólo aquellos usuarios de los que haya podido obtener los datos que tengan el formato correcto.

Por lo tanto, subsanar un posible problema, será tan sencillo como copiar la línea errónea del fichero USERLIST.BAD al fichero USERLIST.DAT y solucionar el error de formato. Reiniciando el servicio de MDaemon sabremos si la solución aplicada ha sido correcta.

Todas las opciones de los usuarios deben modificarse desde la consola de administración de MDaemon, sólo editaremos este fichero de forma manual en casos de extricta necesidad o bien con aplicaciones de terceros (o nuestras propias).

Una de las ventajas de usar este método para guardar las cuentas de usuario de MDaemon es su sencillez, no requiere de base de datos, ni de protocolos de acceso, por lo que será muy ágil y para realizar una copia de seguridad de las cuentas de usuario será suficiente con copiar este fichero a otra ubicación (incluso con el servicio de MDaemon iniciado).

El formato del fichero USERLIST.DAT de MDaemon es:

Columna Ancho Descripción

Domain

45

Nombre del dominio al que pertenece la cuenta

Mailbox

30

Nombre del buzón, parte izquierda de la @

FullName

30

Nombre completo de la cuenta

MailDir

90

Unidad y carpeta donde se guardan los datos del buzón (mensajes, contactos, calendarios, carpetas, tareas)

Password

20

Contraseña de la cuenta

AutoDecode

1

'Y' permitirá autoextraer adjuntos

IsForwarding

1

'Y' permitirá reenvío de correo

AccessType

1

'Y' cuenta activa, 'I' sólo acceso IMAP, 'P' sólo acceso POP

AllowChangeViaEmail

1

'Y' permitir cambiar opciones vía email

KeepForwardedMail

1

'Y' permitir retener copia del correo enviadol

HideFromEveryone

1

'Y' para que la cuenta no aparezca en la lista Todos

ProcessCalendarRequests

1

'Y' para que los datos almacenados de la cuenta se encripten

ApplyQuotas

1

'Y' para aplicar restricciones de cuota de disco

EnableMultiPOP

1

'Y' si la cuenta tiene activo MultiPOP

LocalOnly

1

'Y' sí queremos que la cuenta tenga acceso local para que solo pueda enviar a cuentas del dominio

MaxMessageCount

4

Número máximo de mensajes que la cuenta puede tener en el buzón

MaxDiskSpace

6

Espacio máximo en disco permitido

CR

1

Carácter de retorno de carro

LF

1

Carácter de salto de línea

MDaemon almacena la contraseña de usuario encriptada en el fichero USERLIST.DAT, en la posición 196. Aunque admite introducir la contraseña sin encriptar y la posición 215 introducir el carácter "Y" (justo en el último carácter del espacio de 20 caracteres designado para la contraseña):

Opción por defecto de MDaemon para guardar las cuentas de usuario en fichero USERLIST.DAT

Ahora guardamos los cambios en el fichero, cerramos la edición y reiniciamos el servicio de MDaemon, si volvemos a abrir el fichero veremos que MDaemon ha encriptado la contraseña:

Opción por defecto de MDaemon para guardar las cuentas de usuario en fichero USERLIST.DAT

Esta opción resultará muy útil si queremos utilizar herramientas externas desarrolladas por nosotros mismos (o por terceros) para dar de alta cuentas de usuario en MDaemon, en el campo contraseña será suficiente con introducir la contraseña sin encriptación, en la posición 214 añadir un espacio en blanco y en la 215 el carácter "Y" (sin las comillas).

 

Gestión de cuentas de usuario mediante LDAP en MDaemon

MDaemon también permite gestionar las cuentas de usuario desde un servidor con LDAP, soporta el protocolo LDAP por lo que admite tanto OpenLDAP como Active Directory de Microsoft Windows. Marcando la opción "Almacenar datos de cuentas en un almacén accesible de LDAP":

Gestión de cuentas de usuario mediante LDAP en MDaemon

Obviamente deberemos disponer de un servidor con los servicios LDAP activos (OpenLDAP o Microsoft Active Directory). Pulsando en "Configurar" e introduciendo los datos de conexión al servidor LDAP:

Gestión de cuentas de usuario mediante LDAP en MDaemon

Mostramos estas opciones a título informativo pero no son objeto de este tutorial. En las siguientes secciones nos centraremos en la opción "Almacenar datos de cuentas en una base de datos ODBC accesible".

 

Gestión de cuentas de usuario en base de datos ODBC

MDaemon también permite guardar las cuentas de usuario en un servidor de base de datos externo, accesible mediante ODBC. Principalmente admite bases de datos MySQL, Microsoft SQL Server, Access y PostgreSQL. Dedicaremos las siguientes secciones de este tutorial a explicar con detalle y paso a paso cómo guardar las cuentas de usuario de MDaemon en un servidor de base de datos MySQL.

 

Requisitos para guardar los usuarios de MDaemon en una base de datos MySQL Server

Servidor de base de datos MySQL, Microsoft SQL Server, PostgreSQL, Access

Aunque en este tutorial utilizaremos MySQL como motor de base de datos para guardar las cuentas de usuario de MDaemon en base de datos, MDaemon puede almacenar los usuarios en casi cualquier motor de base de datos que admita conexión mediante ODBC (Microsoft SQL Server, PostgreSQL, Access, etc.).

En primer lugar, para poder guardar los usuarios de MDaemon en una base de datos, necesitaremos disponer de un servidor de base de datos con un motor que admita conexión mediante ODBC, en nuestro caso usaremos MySQL Server. En los siguientes enlaces mostramos tutoriales sobre cómo instalar este motor de base de datos tanto en Windows como en Linux:

 

Preparar base de datos MySQL de destino de los usuarios de MDaemon

A continuación indicaremos cómo preparar un servidor de MySQL para recibir las cuentas de usuario de MDaemon. En primer lugar nos conectaremos al servidor de MySQL Server con alguna herramienta que permita su administración, como MySQL Administrator (descontinuado), MySQL Workbench o incluso desde la línea de comandos todas ellas herramientas gratuitas y disponibles en la web oficial de MySQL.

Como ejemplo usaremos MySQL Administrator, lo iniciaremos e introduciremos los datos de conexión al servidor:

  • Server Host: nombre DNS o dirección IP del servidor con MySQL Server.
  • Port: puerto de conexión al servidor, el estándar es 3306.
  • Username: nombre de usuario con permisos suficientes para crear catálogos (bases de datos) y usuarios en MySQL.
  • Password: contraseña del usuario anterior.

Preparar base de datos MySQL de destino de los usuarios de MDaemon

Desde "Catalogs" pulsaremos con el botón derecho y seleccionaremos "Create New Schema":

Preparar base de datos MySQL de destino de los usuarios de MDaemon

Introduciremos el nombre para la base de datos de MDaemon, por ejemplo "bdmdaemon":

Preparar base de datos MySQL de destino de los usuarios de MDaemon

Ahora crearemos un usuario de MySQL con permisos totales sobre la base de datos "bdmaemon", para ello pulsaremos en "User Administration", pulsaremos con el botón derecho y seleccionaremos "Add new user":

Preparar base de datos MySQL de destino de los usuarios de MDaemon

En la pestaña "User Information" introduciremos nombre de usuario en MySQL User, por ejemplo "usumdaemon" y contraseña en Password y Confirm Password:

Preparar base de datos MySQL de destino de los usuarios de MDaemon

En la pestaña "Schema Privileges" seleccionaremos la base de datos creada anteriormente "bddaemon" y pulsaremos el botón para pasar todos los permisos, al menos los privilegios de SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX y ALTER. Tras asignar los permisos a "Assigned Privileges" pulsaremos en "Apply changes" para aplicar los cambios y crear el usuario:

Preparar base de datos MySQL de destino de los usuarios de MDaemon

Tras crear el usuario lo seleccioanaremos, pulsaremos con el botón derecho del ratón sobre él y en el menú emergente seleccionaremos "Add host from which the user can connect":

Preparar base de datos MySQL de destino de los usuarios de MDaemon

Añadiremos aquí la IP del equipo con MDaemon, de esta forma daremos permiso al usuario "usudaemon" y al equipo de MDaemon acceder a MySQL:

Preparar base de datos MySQL de destino de los usuarios de MDaemon

Aplicaremos los cambios pulsando en "Apply changes":

Preparar base de datos MySQL de destino de los usuarios de MDaemon

De esta forma ya tendremos la base de datos bdmdaemon, el usuario usumdaemon con los permisos necesarios para acceder desde el servidor de MDaemon a la bd de MDaemon.

Lo explicado anteriormente también puede hacerse desde la línea de comandos del servidor de MySQL con los comandos:

mysql -u nombre_usuario -p

create database bdmdaemon;

create user 'usumdaemon'@'192.168.1.20' identified by 'contraseña';

grant all on bdmdaemon.* to 'usumdaemon'@'192.168.1.20';

Preparar base de datos MySQL de destino de los usuarios de MDaemon

 

Servidor de correo electrónico con MDaemon y Windows

Obviamente necesitaremos disponer de un servidor de correo electrónico con MDaemon. En el siguiente tutorial explicamos paso a paso cómo instalar MDaemon en Windows Server 2008:

 

Driver ODBC, Origen de datos con conexión a servidor de base de datos MySQL

Puesto que MDaemon usa ODBC para la conexión con una base de datos deberemos instalar el driver ODBC correspondiente al servidor de base de datos elegido como destino de las cuentas de usuario. A continuación explicamos paso a paso cómo instalar el driver ODBC de MySQL Server en Windows Server 2008 y cómo crear una conexión.

Descargaremos el driver ODBC del motor de base de datos a utilizar en el servidor donde tengamos instalado MDaemon, en el caso de MySQL Server accederemos a su web oficial. Puesto que MDaemon funciona en 32 bits, aunque el equipo sea de 64 bits, descargaremos el driver de 32 bits, por lo que para el caso de MySQL Server descargaremos Windows (x86, 32-bit), MSI Connector-ODBC de la URL:

http://dev.mysql.com/downloads/connector/odbc

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Una vez descargado el fichero mysql-connector-odbc-5.2.5-win32.msi lo ejecutaremos:

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Nos mostrará una advertencia de seguridad para ejecutar el archivo, pulsaremos "Ejecutar":

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Se iniciará el asistente para instalar MySQL Connector/ODBC 5.2 32bit, pulsaremos "Next":

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Leeremos los términos de licencia, si estamos de acuerdo marcaremos "I accept the terms in the license agreement" y pulsaremos "Next":

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Elegiremos el método de instalación para MySQL Connector ODBC, aunque en realidad en cualquiera de ellos instalará los mismos componentes, solo MySQL Connector/ODBC:

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

El asistente de instalación nos mostrará las opciones elegidas para instalar MySQL Connector ODBC, si son correctas pulsaremos "Install" para instalarlo definitivamente en el equipo:

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Tras la instalación pulsaremos en "Finish":

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Una vez que hayamos preparado la base de datos de destino de los usuarios de MDaemon como indicamos aquí y una vez hayamos instalado el driver ODBC del motor de base de datos que hayamos elegido como destino de las cuentas de correo de MDaemon, crearemos el driver ODBC en el sistema operativo donde tengamos instalado MDaemon.

Si nuestro sistema operativo es de 32 bits pulsaremos en el botón "Inicio" - "Panel de control":

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Pulsaremos en "Herramientas administrativas":

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Y ejecutaremos "Orígenes de datos ODBC":

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Con lo anterior abriremos la herramienta de Microsoft Windows para gestionar orígenes de datos ODBC (alta, modificación y eliminación). Si nuestro equipo fuese de 64 bits no debemos usar este enlace pues nos abrirá la utilizad Orígenes de datos ODBC pero de 64 bits y no aparecerá el driver MySQL de 32 bits instalado anteriormente ni serviría para MDaemon. Por lo tanto, si nuestro equipo es de 64 bits ejecutaremos la utilidad de Orígenes de datos ODBC desde:

%SystemRoot%/SysWOW64

Donde %SystemRoot% será la unidad y carpeta de instalación del sistema operativo, normalmente C:/Windows.

En la carpeta SysWOW64 encontraremos el fichero odbccad32.exe que será el que ejecutemos como administradores (pulsando con el botón derecho del ratón sobre él y seleccionando "Ejecutar como administrador"), este fichero sí ejecutará la herramienta Orígenes de datos ODBC de 32 bits:

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Pulsaremos en la pestaña "DSN de sistema" (para que el origen de datos que creemos esté disponible para todos los usuarios del sistema operativo). En esta pestaña pulsaremos en "Agregar":

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Seleccionaremos el controlador (driver) de MySQL, veremos que MySQL nos da dos posibilidades en sistemas operativos Windows Server 2008, o bien ANSI o bien Unicode. Si nuestra base de datos va a utilizar un único idioma y no contiene caracteres "extraños" como los chinos podremos elegir "ANSI", aunque en sistemas NT (como el caso de W2008) el driver Unicode puede mejorar sensiblemente la velocidad de conexión a la base de datos (puesto que el núcleo de los sistemas NT está en Unicode). Así pues en nuestro caso elegiremos el controlador "MySQL ODBC 5.2 Unicode Driver" y pulsaremos "Finalizar":

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Introduciremos los datos de conexión al servidor de base de datos preparado anteriormente, que será donde se almacenen los usuarios (cuentas de correo) de MDaemon y será donde MDaemon realice la validación cada vez que un usuario inicie sesión:

  • Data Source Name: nombre del origen de datos, por ejemplo "bdmdaemon".
  • Description: descripción corta del origen de datos, sólo para uso informativo, por ejemplo "Base de datos cuentas usuario MDaemon".
  • TCP/IP Server: dirección IP o nombre DNS (hostname) del equipo que contiene la base de datos de MySQL Server, si es el mismo que el que contiene el servidor MDaemon podremos introducir "localhost" ó "127.0.0.1".
  • Port: puerto establecido en el servidor de MySQL para las conexiones, por defecto el 3306.
  • User: usuario creado para acceso a la base de datos de MDaemon, por ejemplo "usumdaemon".
  • Pasword: contraseña del usuario anterior.
  • Database: nombre de la base de datos (catálogo) de MySQL Server creada para alojar los usuarios de MDaemon, por ejemplo "bdmdaemon".

Una vez introducidos los datos podremos realizar un test de conexión pulsando en "Test" o cerrar y guardar los cambios pulsando "OK":

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

Con los pasos anteriores habremos creado el origen de datos ODBC que asignaremos a MDaemon para realizar la conexión con el motor de base de datos destino de las cuentas de usuario:

Driver ODBC instalado y configurado con conexión a serivdor de base de datos

 

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

Tras preparar el servidor de base de datos e instalar el driver ODBC como indicamos aquí, procederemos a configurar MDaemon para que use la base de datos creada. Para ello, desde el servidor con MDaemon, pulsaremos en el botón "Inicio" - "Todos los programas" - "Iniciar MDaemon":

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

Una vez abierta la consola de administración de MDaemon pulsaremos en el menú "Cuentas" - "Opciones de Cuentas":

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

En "Base de Datos de Cuentas" marcaremos la opción "Almacenar datos de cuentas en una base de datos ODBC accesible" y pulsaremos "Configurar":

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

Si hemos creado correctamente el origen de datos ODBC como hemos indicado aquí, nos aparecerá en la ventana de selección de fuente de datos, lo seleccionaremos. Desde esta ventana MDaemon permite crear un origen de datos ODBC si no existe (pulsando en "Nuevo DSN"), pero recomendamos hacerlo antes como ya hemos explicado. Introduciremos usuario y contraseña del servidor de MySQL en "Registrarse" y "Contraseña" respectivamente y pulsaremos "Siguiente":

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

Puesto que es la primera vez que realizamos el proceso, el asistente de MDaemon detectará que la fuente de datos elegida no contiene las tablas de MDaemon, así pues pulsaremos en "Ejecutar un archivo de comandos para crear las tablas necesarias":

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

Pulsaremos en "Examinar" para seleccionar el fichero de script de base de datos:

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

MDaemon proporciona varios ficheros de script SQL para los distintos motores de base de datos (Access, MySQL, PostgreSQL y Microsoft SQL Server). En nuestro caso seleccionaremos "AccountsDB-MySQL.sql":

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

El contenido del fichero de script para MySQL:

CREATE TABLE Domains (
DomainName varchar(66) NOT NULL,
DomainID int auto_increment NOT NULL,
PRIMARY KEY (DomainID),
CONSTRAINT IdxConstraint UNIQUE (DomainName)
)
GO

CREATE TABLE UserList (
UserID int auto_increment NOT NULL,
Mailbox varchar(60) NOT NULL,
FullName varchar(100) NOT NULL,
MailDir varchar(255) NOT NULL,
Password varchar(32) NOT NULL,
AutoDecode bit NOT NULL,
IsForwarding bit NOT NULL,
AllowAccess int NOT NULL,
AllowChangeViaEmail bit NOT NULL,
KeepForwardedMail bit NOT NULL,
HideFromEveryone bit NOT NULL,
EncryptMail bit NOT NULL,
ApplyQuotas bit NOT NULL,
EnableMultiPop bit NOT NULL,
CanModifyGAB bit NOT NULL,
CalendarOnly bit NOT NULL,
MaxMessageCount int NOT NULL,
MaxDiskSpace int NOT NULL,
DomainID int NOT NULL,
PRIMARY KEY(UserID),
CONSTRAINT IdxConstraint UNIQUE (Mailbox, DomainID),
FOREIGN KEY (DomainID) REFERENCES Domains(DomainID)
)
GO

Una vez seleccionado el fichero de script SQL pulsaremos en "Ejecutar un archivo de comandos y crear tablas de base de datos ahora":

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

Si la conexión es correcta al servidor de base de datos se ejecutará el script y creará las tablas correspondientes, tras finalizar el proceso mostrará un mensaje con el texto "Tables created successfully!":

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

El asistente nos mostrará las tablas creadas "Domains" y "UserList". Pulsaremos "Finalizar":

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

Accediendo al servidor de MySQL Server podremos comprobar que las tablas se han creado correctamente:

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

Si ya tenemos usuarios dados de alta en USERLIST.DAT ahora pulsaremos "Aplicar" para migrar automáticamente los usuarios desde USERLIST.DAT a la base de datos:

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

Se iniciará la utilidad de migración automática de USERLIST.DAT a MySQL:

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

Una vez concluído el proceso el asistente de migración nos mostrará el resultado de los dominios y usuarios migrados a MySQL:

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

MDaemon nos advertirá de que es necesario reiniciar el servicio para aplicar los cambios y que a partir del reinicio empiece a usar MySQL para la gestión de cuentas de usuario, pulsaremos "Aceptar" para reiniciar el servicio:

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

En MySQL podremos consultar que la tabla "UserList" contiene los usuarios que tuviéramos en el fichero USERLIST.DAT:

Configurar MDaemon para que use una base de datos MySQL para guardar las cuentas de usuario

Hay que tener en cuenta que una vez establecida esta configuración en MDaemon, si deja de funcionar el servidor de MySQL Server los usuarios no podrán iniciar sesión en el servidor MDaemon y por lo tanto no podrán acceder vía WebMail, ni descargar correos electrónicos.

 

Artículos relacionados

Créditos

Artículo realizado íntegramente por Alonsojpd, miembro del Proyecto AjpdSoft.

Artículo en inglés.


Anuncios


Enviado el Sábado, 20 julio a las 22:11:43 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A