Diferencia entre revisiones de «DbMail»

De Guía Ubuntu
Saltar a: navegación, buscar
(Instalación)
Línea 2: Línea 2:
 
Vamos a instalar Dbmail con PostgreSQL, Postfix, ClamSMTP y Postgrey.
 
Vamos a instalar Dbmail con PostgreSQL, Postfix, ClamSMTP y Postgrey.
  
   $ sudo apt-get install postgresql-8.0
+
   $ sudo apt-get install postgresql-8.2
  
 
Hay que tocar un parametro de configuracion de PostgreSQL para que nos deje autentificarnos como usuarios que no esten datos de alta en linux.
 
Hay que tocar un parametro de configuracion de PostgreSQL para que nos deje autentificarnos como usuarios que no esten datos de alta en linux.
  
   $ sudo gedit /etc/postgresql/8.0/main/pg_hba.conf
+
   $ sudo gedit /etc/postgresql/8.2/main/pg_hba.conf
  
Debemos cambiar la linea 79
+
Debemos cambiar la linea
  
 
  local  all        all                          ident sameuser
 
  local  all        all                          ident sameuser
Línea 15: Línea 15:
  
 
  local  all        all                          md5
 
  local  all        all                          md5
 +
 +
Y reiniciamos PostgreSQL
 +
 +
  $ sudo /etc/init.d/postgresql-8.2 restart
  
 
Ahora, instalamos el servidor de correo Postfix.
 
Ahora, instalamos el servidor de correo Postfix.
Línea 22: Línea 26:
 
   Nombre de correo? miservidor.midominio
 
   Nombre de correo? miservidor.midominio
  
Agregamos el repositorio para instalar el paquete de Dbmail 2.0.
+
Agregamos el repositorio para instalar el paquete de Dbmail.
  
 
Nota: existe un paquete dbmail-pgsql en el repositorio oficial pero se trata de una version muy antigua de Dbmail.
 
Nota: existe un paquete dbmail-pgsql en el repositorio oficial pero se trata de una version muy antigua de Dbmail.
  
 
   $ sudo gedit /etc/apt/sources.list
 
   $ sudo gedit /etc/apt/sources.list
   *** añadir: deb http://debian.nfgd.net/debian stable main
+
   *** añadir: deb http://debian.nfgd.net/debian unstable main
  
 
   $ sudo apt-get update
 
   $ sudo apt-get update
   $ sudo apt-get install dbmail2-pgsql
+
   $ sudo apt-get install dbmail-pgsql
 
+
Avisará que no puede conectar con el servidor de bases de datos, es normal.
+
  
 
Vamos a crear la base de datos y el usuario en PostgreSQL para Dbmail.
 
Vamos a crear la base de datos y el usuario en PostgreSQL para Dbmail.
  
   $ sudo su postgres psql template1
+
   $ sudo -s
 +
  $ su postgres
 +
  $ psql template1
  
   Bienvenido a psql 8.0.7, el terminal interactivo de PostgreSQL.
+
   Bienvenido a psql 8.2.4, la terminal interactiva de PostgreSQL.
 
    
 
    
 
   Digite:  \copyright para ver los términos de distribución
 
   Digite:  \copyright para ver los términos de distribución
Línea 56: Línea 60:
 
   $ psql -U dbmail dbmail
 
   $ psql -U dbmail dbmail
 
   Contraseña: (aqui debe teclear: aleluya)
 
   Contraseña: (aqui debe teclear: aleluya)
   Bienvenido a psql 8.0.7, el terminal interactivo de PostgreSQL.
+
   Bienvenido a psql 8.2.4, el terminal interactivo de PostgreSQL.
 
    
 
    
 
   Digite:  \copyright para ver los términos de distribución
 
   Digite:  \copyright para ver los términos de distribución
Línea 66: Línea 70:
 
   dbmail=> \q
 
   dbmail=> \q
  
   $ dpkg-reconfigure dbmail2-pgsql
+
   $ sudo gedit /etc/dbmail/dbmail.conf
    Utilizar debconf para la configuracion? si
+
    Direccion email correos rebotados? MAILER-DAEMON@midominio
+
    Direccion email gestor de correos? postmaster@midominio
+
    Nombre de la maquina del SGBD? localhost
+
    Nombre de la base de datos a usar? dbmail
+
    Nombre de usuario de la base de datos? dbmail
+
    Contraseña de conexion con la base de datos? aleluya
+
    Iniciar el servidor IMAP en el inicio? NO
+
    Iniciar el servidor POP3 en el inicio? SI
+
    Utilizar stunnel para POP3S? NO
+
  
Y sigue sin poder conectar con la base de datos? No pasa nada: aun falta crear las tablas.
+
Cambiamos:
 +
* driver = pgsql
 +
* authdriver = sql
 +
* host = localhost
 +
* pass = aleluya
 +
* [POP] POP_BEFORE_SMTP = yes, [IMAP] IMAP_BEFORE_SMTP = yes
  
   $ cp /usr/share/doc/dbmail2-pgsql/examples/create_tables.pgsql.gz .
+
  $ sudo gedit /etc/default/dbmail
 +
 
 +
Descomentamos las lineas START_POP3D, START_IMAPD y START_LMTPD.
 +
 
 +
Y aun falta crear las tablas.
 +
 
 +
   $ cp /usr/share/doc/dbmail-pgsql/examples/create_tables.pgsql.gz .
 
   $ gunzip create_tables.pgsql.gz .
 
   $ gunzip create_tables.pgsql.gz .
 
   $ psql -U dbmail dbmail < create_tables.pgsql
 
   $ psql -U dbmail dbmail < create_tables.pgsql
Línea 139: Línea 144:
 
   PGCLIENTENCODING=LATIN1
 
   PGCLIENTENCODING=LATIN1
 
   export PGCLIENTENCODING
 
   export PGCLIENTENCODING
 
Para acabar con Dbmail, por defecto no activa el servidor LMTP (para enlazar con Postfix). Es necesario editar /etc/default/dbmail y descomentar la linea
 
 
  START_LMTPD=true
 
  
 
Vamos a configurar ahora Postfix con el antivirus, y el antispam, haciendo al mismo tiempo la conexion con la Dbmail para no perder mas tiempo en detalles.
 
Vamos a configurar ahora Postfix con el antivirus, y el antispam, haciendo al mismo tiempo la conexion con la Dbmail para no perder mas tiempo en detalles.
Línea 224: Línea 225:
 
   $ psql dbmail -W dbmail
 
   $ psql dbmail -W dbmail
 
   Contraseña:
 
   Contraseña:
   Bienvenido a psql 8.0.7, el terminal interactivo de PostgreSQL.
+
   Bienvenido a psql 8.2.4, el terminal interactivo de PostgreSQL.
 
    
 
    
 
   Digite:  \copyright para ver los términos de distribución
 
   Digite:  \copyright para ver los términos de distribución
Línea 246: Línea 247:
 
   * Stopping Postfix Mail Transport Agent postfix                      [ ok ]
 
   * Stopping Postfix Mail Transport Agent postfix                      [ ok ]
 
   * Starting Postfix Mail Transport Agent postfix                      [ ok ]
 
   * Starting Postfix Mail Transport Agent postfix                      [ ok ]
 
{{Nota|Al reiniciar Dapper, se eliminan los directorios /var/run/dbmail y /var/run/clamsmtp. Por tanto, hay que volver a crearlos en los respectivos scripts de inicio.
 
/etc/init.d/dbmail:
 
 
$ [ -d /var/run/dbmail ] <nowiki>||</nowiki> (mkdir /var/run/dbmail && chown dbmail /var/run/dbmail)
 
 
/etc/init.d/clamsmtp:
 
 
$ [ -d /var/run/clamsmtp ] <nowiki>||</nowiki> (mkdir /var/run/clamsmtp && chown clamsmtp /var/run/clamsmtp)
 
 
}}
 
  
  
 
[[Categoría:Administración del sistema]]
 
[[Categoría:Administración del sistema]]

Revisión de 11:44 2 mayo 2007

Instalación

Vamos a instalar Dbmail con PostgreSQL, Postfix, ClamSMTP y Postgrey.

 $ sudo apt-get install postgresql-8.2

Hay que tocar un parametro de configuracion de PostgreSQL para que nos deje autentificarnos como usuarios que no esten datos de alta en linux.

 $ sudo gedit /etc/postgresql/8.2/main/pg_hba.conf

Debemos cambiar la linea

local   all         all                          ident sameuser

por esta otra

local   all         all                          md5

Y reiniciamos PostgreSQL

 $ sudo /etc/init.d/postgresql-8.2 restart

Ahora, instalamos el servidor de correo Postfix.

 $ sudo apt-get install postfix postfix-pgsql mailx
  General type of configuration? Internet Site
  Nombre de correo? miservidor.midominio

Agregamos el repositorio para instalar el paquete de Dbmail.

Nota: existe un paquete dbmail-pgsql en el repositorio oficial pero se trata de una version muy antigua de Dbmail.

 $ sudo gedit /etc/apt/sources.list
 *** añadir: deb http://debian.nfgd.net/debian unstable main
 $ sudo apt-get update
 $ sudo apt-get install dbmail-pgsql

Vamos a crear la base de datos y el usuario en PostgreSQL para Dbmail.

 $ sudo -s
 $ su postgres
 $ psql template1
 Bienvenido a psql 8.2.4, la terminal interactiva de PostgreSQL.
 
 Digite:  \copyright para ver los términos de distribución
          \h para obtener ayuda sobre comandos SQL
          \? para obtener ayuda sobre comandos internos
          \g o punto y coma (;) para ejecutar consulta
          \q para salir
 
 template1=# CREATE USER dbmail PASSWORD 'aleluya';
 CREATE USER
 template1=# CREATE DATABASE dbmail OWNER dbmail;
 CREATE DATABASE
 template1=# \q

Lo probamos

 $ psql -U dbmail dbmail
 Contraseña: (aqui debe teclear: aleluya)
 Bienvenido a psql 8.2.4, el terminal interactivo de PostgreSQL.
 
 Digite:  \copyright para ver los términos de distribución
          \h para obtener ayuda sobre comandos SQL
          \? para obtener ayuda sobre comandos internos
          \g o punto y coma (;) para ejecutar consulta
          \q para salir
 dbmail=> \q
 $ sudo gedit /etc/dbmail/dbmail.conf

Cambiamos:

  • driver = pgsql
  • authdriver = sql
  • host = localhost
  • pass = aleluya
  • [POP] POP_BEFORE_SMTP = yes, [IMAP] IMAP_BEFORE_SMTP = yes
 $ sudo gedit /etc/default/dbmail

Descomentamos las lineas START_POP3D, START_IMAPD y START_LMTPD.

Y aun falta crear las tablas.

 $ cp /usr/share/doc/dbmail-pgsql/examples/create_tables.pgsql.gz .
 $ gunzip create_tables.pgsql.gz .
 $ psql -U dbmail dbmail < create_tables.pgsql

Comprobamos que todo va bien

 $ sudo /etc/init.d/dbmail restart
 Stopping dbmail servers: No dbmail-pop3d found running; none killed.
 done.
 Starting dbmail servers: dbmail-pop3d .done.
 
 $ telnet localhost 110
 Trying 127.0.0.1...
 Connected to localhost.localdomain.
 Escape character is '^]'.
 +OK DBMAIL pop3 server ready to rock 
 quit
 +OK see ya later
 Connection closed by foreign host.

Bien parece que tenemos ya servidor de POP3, Ok? Como? Que no te lo crees? Bien hecho.

 $ sudo dbmail-users -a frodo -w mitesoro -s fbolson@midominio
 Opening connection to database...
 Opening connection to authentication...
 Ok. Connected
 Adding user frodo with password type ,0 bytes mailbox limit and clientid 0...
 Ok, user added id [3]
 Adding INBOX for new user
 Ok. added
 [fbolson@mitesoro]
 Done

Ahora vamos a ver

 $ telnet localhost 110
 Trying 127.0.0.1...
 Connected to localhost.localdomain.
 Escape character is '^]'.
 +OK DBMAIL pop3 server ready to rock <66dcba87dbc642906b8410fc1f2223a0@urisma>
 user frodo
 +OK Password required for frodo
 pass mitesoro
 +OK frodo has 0 messages (0 octets)
 quit
 +OK see ya later
 Connection closed by foreign host.

¿Te lo crees ya? Venga, seguimos.

Aun queda un problema con Dbmail y PostgreSQL. Existe un problema con ciertas codificaciones. Es necesario editar el archivo /etc/init.d/dbmail y agregar un par de lineas. Se deben poner al principio ya que se trata de una variable de entorno utilizada en la conexion con PostgreSQL. Un buen lugar es despues de

 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Las lineas son

 PGCLIENTENCODING=LATIN1
 export PGCLIENTENCODING

Vamos a configurar ahora Postfix con el antivirus, y el antispam, haciendo al mismo tiempo la conexion con la Dbmail para no perder mas tiempo en detalles.

 $ sudo apt-get install clamsmtp clamav-daemon
 $ sudo apt-get install postgrey
 $ sudo gedit /etc/postfix/main.cf

Estos son los cambios necesarios:

 # resuelve en /etc/hosts (no solo dns)
 smtp_host_lookup = dns, native
 
 local_recipient_maps =
 
 # utilizo POP BEFORE SMTP para no actuar de OpenRelay
 mynetworks = 127.0.0.0/8, pgsql:/etc/postfix/sql-pop-before-smtp.cf
 
 # se pueden añadir dominios en la base de datos
 transport_maps = pgsql:/etc/postfix/sql-transport.cf
 mydestination = localhost, localhost.localdomain, $transport_maps
 
 # para clamav
 content_filter = scan:localhost:10026
 receive_override_options = no_address_mappings
 
 # el postgrey correo en el puerto 60000
 smtpd_recipient_restrictions =
       permit_mynetworks,
       reject_unauth_destination,
       check_policy_service inet:127.0.0.1:60000


En /etc/postfix/master.cf

 $ sudo gedit /etc/postfix/master.cf

lineas a añadir:


 dbmail-lmtp     unix    -       -       n       -       -       lmtp
         -o disable_dns_lookups=yes
 
 # AV scan filter (used by content_filter)
 scan      unix  -       -       n       -       16      smtp
   -o smtp_send_xforward_command=yes
 # For injecting mail back into postfix from the filter
 127.0.0.1:10025 inet  n -       n       -       16      smtpd
 -o content_filter=
 -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
 -o smtpd_helo_restrictions=
 -o smtpd_client_restrictions=
 -o smtpd_sender_restrictions=
 -o smtpd_recipient_restrictions=permit_mynetworks,reject
 -o mynetworks_style=host
 -o smtpd_authorized_xforward_hosts=127.0.0.0/8,pgsql:/etc/postfix/sql-pop-before-smtp.cf

Aun quedan 2 archivos: El primero le dice a Postfix las IPs que tienen permiso para enviar (SMTP) por haber leido correo previamente (POP3). Es el archivo /etc/postfix/sql-pop-before-smtp.cf

 user=dbmail
 password=aleluya
 dbname=dbmail
 hosts=localhost
 table=dbmail_pbsp
 select_field=since
 where_field=ipnumber

El segundo nos va a permitir agregar nuevos dominios desde la base de datos. Es el archivo /etc/postfix/sql-transport.cf

 user=dbmail
 password=aleluya
 dbname=dbmail
 table=dbmail_transport
 select_field=transport
 where_field=domain
 hosts=localhost

Antes tenemos que crear la tabla "dbmail_transport" en nuestra base de datos.

 $ psql dbmail -W dbmail
 Contraseña:
 Bienvenido a psql 8.2.4, el terminal interactivo de PostgreSQL.
 
 Digite:  \copyright para ver los términos de distribución
          \h para obtener ayuda sobre comandos SQL
          \? para obtener ayuda sobre comandos internos
          \g o punto y coma (;) para ejecutar consulta
          \q para salir
 
 dbmail=> CREATE TABLE dbmail_transport (
 dbmail(> domain VARCHAR(100) NOT NULL,
 dbmail(> transport VARCHAR(100) NOT NULL DEFAULT 'dbmail-lmtp:localhost:24'
 dbmail(> );
 CREATE TABLE
 dbmail=> INSERT INTO dbmail_transport (domain) VALUES ('midominio');
 

IMPORTANTE: no olvidar este insert (o no llegaran los correos de 'midominio' a DBMAIL)

Vamos a ver como va la cosa....

$ sudo /etc/init.d/postfix restart
  * Stopping Postfix Mail Transport Agent postfix                      [ ok ]
  * Starting Postfix Mail Transport Agent postfix                      [ ok ]