Diferencia entre revisiones de «DbMail»

De Guía Ubuntu
Saltar a: navegación, buscar
m (Instalar DbMail trasladada a DbMail: Así es genérico ya que "Instalar DbMail" es poco versátil.)
(Enlaces Externos)
 
(No se muestran 12 ediciones intermedias realizadas por 6 usuarios)
Línea 1: Línea 1:
Vamos a instalar Dbmail con PostgreSQL, Postfix, ClamSMTP y Postgrey.
+
'''DBMail''' es el nombre de un grupo de programas que permite la posibilidad de almacenar y guardar mensajes de [[w:es:correo electrónico|correo electrónico]] desde una [[w:es:base de datos|base de datos]]. Actualmente se utiliza [[MySQL]], [[PostgreSQL]] y [[SQLite]] como sistema persitente de datos.
  
  neng@urisma:~$ sudo apt-get install postgresql-8.0
+
== Instalación ==
  
Hay que tocar un parametro de configuracion de PostgreSQL para que nos deje autentificarnos como usuarios que no esten datos de alta en linux.
+
Para tener instalado DBMail, seguimos los siguientes pasos:
  
  neng@urisma:~$ sudo gedit /etc/postgresql/8.0/main/pg_hba.conf
+
=== Instalación y configuración de PostgreSQL ===
  
Debemos cambiar la linea 79
+
* Primero [[Añadir aplicaciones|instalamos]] PostgreSQL, a partir del paquete '''postgresql-8.2''' de los repositorios oficiales de Ubuntu.
  
 +
* Hay que tocar un parámetro de configuración de PostgreSQL para que nos deje autentificarnos como usuarios que no estón dados de alta. Para eso, editamos el archivo '''/etc/postgresql/8.2/main/pg_hba.conf''', por ejemplo con [[gEdit]]:
 +
  $ sudo gedit /etc/postgresql/8.2/main/pg_hba.conf
 +
 +
* Buscamos la línea:
 
  local  all        all                          ident sameuser
 
  local  all        all                          ident sameuser
 +
Y la sustituimos por esta otra:
 +
local  all        all                          md5
 +
Guardamos los cambios y cerramos el editor.
  
por esta otra
+
* Reiniciamos PostgreSQL con el siguiente comando:
 +
  $ sudo /etc/init.d/postgresql-8.2 restart
  
local  all        all                          md5
+
=== Instalación de Postfix ===
  
Ahora, instalamos el servidor de correo Postfix.
+
* Ahora, para el servidor de correo Postfix, [[Añadir aplicaciones|instalamos]] los paquetes '''postfix''', '''postfix-pgsql''' y '''mailx''' de los repositorios. En los asistentes de configuración, introducimos los siguientes datos:
 
+
  neng@urisma:~$ sudo apt-get install postfix postfix-pgsql mailx
+
 
   General type of configuration? Internet Site
 
   General type of configuration? Internet Site
 
   Nombre de correo? miservidor.midominio
 
   Nombre de correo? miservidor.midominio
  
Agregamos el repositorio para instalar el paquete de Dbmail 2.0.
+
=== Instalación y configuración de DBMail ===
  
Nota: existe un paquete dbmail-pgsql en el repositorio oficial pero se trata de una version muy antigua de Dbmail.
+
* Agregamos el repositorio para instalar DBMail . Editamos el archivo '''sources.list''', por ejemplo con [[gEdit]]:
 +
  $ sudo gedit /etc/apt/sources.list
 +
Y añadimos al final del archivo la siguiente línea:
 +
deb http://debian.nfgd.net/debian stable main
 +
Finalmente guardamos y cerramos el editor.
  
   neng@urisma:~$ sudo gedit /etc/apt/sources.list
+
* Actualizamos la lista de paquetes:
  *** añadir: deb http://debian.nfgd.net/debian stable main
+
   $ sudo aptitude update
  
  neng@urisma:~$ sudo apt-get update
+
* Luego [[Añadir aplicaciones|instalamos]] el paquete '''dbmail-psgql''' de los repositorios que acabamos de añadir.
  neng@urisma:~$ sudo apt-get install dbmail2-pgsql
+
  
Avisará que no puede conectar con el servidor de bases de datos, es normal.
+
{{Nota|Existe un paquete '''dbmail-pgsql''' en los repositorios oficiales de Ubuntu, pero se trata de una versión muy antigua de DBMail, por eso es recomendable añadir el repositorio mencionado antes.}}
  
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 -s
   neng@urisma:~$ sudo su postgres psql template1
+
   $ su postgres
 
+
   $ psql template1
   Bienvenido a psql 8.0.7, el terminal interactivo de PostgreSQL.
+
  
 +
* Nos aparecerá este texto de bienvenida e instrucciones:
 +
  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
 
           \h para obtener ayuda sobre comandos SQL
 
           \h para obtener ayuda sobre comandos SQL
Línea 45: Línea 56:
 
           \q para salir
 
           \q para salir
  
 +
* Introducimos las siguientes órdenes:
 
   template1=# CREATE USER dbmail PASSWORD 'aleluya';
 
   template1=# CREATE USER dbmail PASSWORD 'aleluya';
 
   CREATE USER
 
   CREATE USER
Línea 51: Línea 63:
 
   template1=# \q
 
   template1=# \q
  
Lo probamos
+
* Lo probamos:
 
+
   $ psql -U dbmail dbmail
   neng@urisma:~$ psql -U dbmail dbmail
+
   Contraseña: (aquí tecleamos la contraseña: ''aleluya'')
   Contraseña: (aqui debe teclear: aleluya)
+
   Bienvenido a psql 8.2.4, el terminal interactivo de PostgreSQL.
   Bienvenido a psql 8.0.7, 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
 
           \h para obtener ayuda sobre comandos SQL
 
           \h para obtener ayuda sobre comandos SQL
Línea 65: Línea 76:
 
   dbmail=> \q
 
   dbmail=> \q
  
  neng@urisma:~$ dpkg-reconfigure dbmail2-pgsql
+
* Editamos el archivo de configuración de DbMail, con [[gEdit]]:
    Utilizar debconf para la configuracion? si
+
  $ sudo gedit /etc/dbmail/dbmail.conf
    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
  
   neng@urisma:~$ cp /usr/share/doc/dbmail2-pgsql/examples/create_tables.pgsql.gz .
+
* Ahora editamos este otro archivo:
  neng@urisma:~$ gunzip create_tables.pgsql.gz .
+
   $ sudo gedit /etc/default/dbmail
  neng@urisma:~$ psql -U dbmail dbmail < create_tables.pgsql
+
Descomentamos las líneas:
 +
START_POP3D
 +
START_IMAPD
 +
START_LMTPD
 +
Guardamos los cambios y cerramos.
  
Comprobamos que todo va bien
+
* Y aún falta crear las tablas. Teclamos estos comandos:
  
   neng@urisma:~$ sudo /etc/init.d/dbmail restart
+
   $ 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.
 
   Stopping dbmail servers: No dbmail-pop3d found running; none killed.
 
   done.
 
   done.
 
   Starting dbmail servers: dbmail-pop3d .done.
 
   Starting dbmail servers: dbmail-pop3d .done.
 
+
 
   neng@urisma:~$ telnet localhost 110
+
   $ telnet localhost 110
 
   Trying 127.0.0.1...
 
   Trying 127.0.0.1...
 
   Connected to localhost.localdomain.
 
   Connected to localhost.localdomain.
Línea 99: Línea 115:
 
   Connection closed by foreign host.
 
   Connection closed by foreign host.
  
Bien parece que tenemos ya servidor de POP3, Ok? Como? Que no te lo crees?
+
* Bien, ya tenemos funcionando el servidor de [[w:es:POP3|POP3]].
Bien hecho.
+
  
  neng@urisma:~$ sudo dbmail-users -a frodo -w mitesoro -s fbolson@midominio
+
* Para agregar un usuario:
 +
  $ sudo dbmail-users -a frodo -w mitesoro -s fbolson@midominio
 
   Opening connection to database...
 
   Opening connection to database...
 
   Opening connection to authentication...
 
   Opening connection to authentication...
Línea 113: Línea 129:
 
   Done
 
   Done
  
Ahora vamos a ver
+
* Para comprobarlo, hacemos lo siguiente:
 
+
   $ telnet localhost 110
   neng@urisma:~$ telnet localhost 110
+
 
   Trying 127.0.0.1...
 
   Trying 127.0.0.1...
 
   Connected to localhost.localdomain.
 
   Connected to localhost.localdomain.
 
   Escape character is '^]'.
 
   Escape character is '^]'.
 
   +OK DBMAIL pop3 server ready to rock <66dcba87dbc642906b8410fc1f2223a0@urisma>
 
   +OK DBMAIL pop3 server ready to rock <66dcba87dbc642906b8410fc1f2223a0@urisma>
   user frodo
+
   > user frodo
 
   +OK Password required for frodo
 
   +OK Password required for frodo
   pass mitesoro
+
   > pass mitesoro
 
   +OK frodo has 0 messages (0 octets)
 
   +OK frodo has 0 messages (0 octets)
   quit
+
   > quit
 
   +OK see ya later
 
   +OK see ya later
 
   Connection closed by foreign host.
 
   Connection closed by foreign host.
  
¿Te lo crees ya? Venga, seguimos.
+
Aún 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
 
+
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
 
   PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  
Las lineas son
+
Las líneas son:
 
+
 
   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
+
=== Instalación y configuración de ClamSMTP y Postgrey ===
  
  START_LMTPD=true
+
Vamos a configurar ahora Postfix con el [[w:es:antivirus|antivirus]], y el [[w:es:antispam|antispam]], haciendo al mismo tiempo la conexión con DBMail para no perder más 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.
+
* [[Añadir aplicaciones|Instalamos]] los paquetes '''clamsmtp''', '''clamav-daemon''' y '''postgrey''' de los repositorios.
  
  neng@urisma:~$ sudo apt-get install clamsmtp clamav-daemon
+
* Editamos el siguiente archivo, con [[gEdit]] por ejemplo:
   neng@urisma:~$ sudo apt-get install postgrey
+
   $ sudo gedit /etc/postfix/main.cf
  neng@urisma:~$ sudo gedit /etc/postfix/main.cf
+
  
Estos son los cambios necesarios:
+
* Realizamos los siguientes cambios:
  
 
   # resuelve en /etc/hosts (no solo dns)
 
   # resuelve en /etc/hosts (no solo dns)
 
   smtp_host_lookup = dns, native
 
   smtp_host_lookup = dns, native
 
+
 
 
   local_recipient_maps =
 
   local_recipient_maps =
 
+
 
 
   # utilizo POP BEFORE SMTP para no actuar de OpenRelay
 
   # utilizo POP BEFORE SMTP para no actuar de OpenRelay
 
   mynetworks = 127.0.0.0/8, pgsql:/etc/postfix/sql-pop-before-smtp.cf
 
   mynetworks = 127.0.0.0/8, pgsql:/etc/postfix/sql-pop-before-smtp.cf
 
+
 
 
   # se pueden añadir dominios en la base de datos
 
   # se pueden añadir dominios en la base de datos
 
   transport_maps = pgsql:/etc/postfix/sql-transport.cf
 
   transport_maps = pgsql:/etc/postfix/sql-transport.cf
 
   mydestination = localhost, localhost.localdomain, $transport_maps
 
   mydestination = localhost, localhost.localdomain, $transport_maps
 
+
 
 
   # para clamav
 
   # para clamav
 
   content_filter = scan:localhost:10026
 
   content_filter = scan:localhost:10026
 
   receive_override_options = no_address_mappings
 
   receive_override_options = no_address_mappings
 
+
 
 
   # el postgrey correo en el puerto 60000
 
   # el postgrey correo en el puerto 60000
 
   smtpd_recipient_restrictions =
 
   smtpd_recipient_restrictions =
Línea 172: Línea 183:
 
         reject_unauth_destination,
 
         reject_unauth_destination,
 
         check_policy_service inet:127.0.0.1:60000
 
         check_policy_service inet:127.0.0.1:60000
 +
Guardamos los cambios y cerramos.
  
 +
* Editamos el archivo /etc/postfix/master.cf:
 +
  $ sudo gedit /etc/postfix/master.cf
  
En /etc/postfix/master.cf
+
* Añadimos estas líneas al final:
 
+
  neng@urisma:~$ sudo gedit /etc/postfix/master.cf
+
 
+
lineas a añadir:
+
 
+
 
+
 
   dbmail-lmtp    unix    -      -      n      -      -      lmtp
 
   dbmail-lmtp    unix    -      -      n      -      -      lmtp
 
           -o disable_dns_lookups=yes
 
           -o disable_dns_lookups=yes
 
+
 
 
   # AV scan filter (used by content_filter)
 
   # AV scan filter (used by content_filter)
 
   scan      unix  -      -      n      -      16      smtp
 
   scan      unix  -      -      n      -      16      smtp
Línea 197: Línea 205:
 
   -o mynetworks_style=host
 
   -o mynetworks_style=host
 
   -o smtpd_authorized_xforward_hosts=127.0.0.0/8,pgsql:/etc/postfix/sql-pop-before-smtp.cf
 
   -o smtpd_authorized_xforward_hosts=127.0.0.0/8,pgsql:/etc/postfix/sql-pop-before-smtp.cf
 +
Guardamos y cerramos.
  
Aun quedan 2 archivos:
+
Aún quedan 2 archivos por editar:
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
+
* El primero le indica a Postfix las [[w:es:dirección IP|IPs]] que tienen permiso para enviar ([[w:es:SMTP|SMTP]]) por haber leido correo previamente ([[w:es:POP3|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
  
  user=dbmail
+
* El segundo nos va a permitir agregar nuevos dominios desde la base de datos. Es el archivo etc/postfix/sql-transport.cf:
  password=aleluya
+
user=dbmail
  dbname=dbmail
+
password=aleluya
  hosts=localhost
+
dbname=dbmail
  table=dbmail_pbsp
+
table=dbmail_transport
  select_field=since
+
select_field=transport
  where_field=ipnumber
+
where_field=domain
 +
hosts=localhost
  
El segundo nos va a permitir agregar nuevos dominios desde la base de datos. Es el archivo /etc/postfix/sql-transport.cf
+
* Antes tenemos que crear la tabla "dbmail_transport" en nuestra base de datos.
 
+
   $ psql dbmail -W dbmail
  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.
+
 
+
   neng@urisma:~$ 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
 
           \h para obtener ayuda sobre comandos SQL
 
           \h para obtener ayuda sobre comandos SQL
Línea 230: Línea 236:
 
           \g o punto y coma (;) para ejecutar consulta
 
           \g o punto y coma (;) para ejecutar consulta
 
           \q para salir
 
           \q para salir
 
+
 
 
   dbmail=> CREATE TABLE dbmail_transport (
 
   dbmail=> CREATE TABLE dbmail_transport (
 
   dbmail(> domain VARCHAR(100) NOT NULL,
 
   dbmail(> domain VARCHAR(100) NOT NULL,
Línea 237: Línea 243:
 
   CREATE TABLE
 
   CREATE TABLE
 
   dbmail=> INSERT INTO dbmail_transport (domain) VALUES ('midominio');
 
   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....
+
{{Advertencia|No olvidar este ''INSERT'', de lo contrario no llegarán los mensajes de 'midominio' a DBMail.}}
  
neng@urisma:~$ sudo /etc/init.d/postfix restart
+
* Vamos a ver cómo va la cosa:
 +
$ sudo /etc/init.d/postfix restart
 
   * 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 Importante
+
== Enlaces Externos ==
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 ] || (mkdir /var/run/dbmail && chown dbmail /var/run/dbmail)
+
 
+
/etc/init.d/clamsmtp:
+
  
[ -d /var/run/clamsmtp ] || (mkdir /var/run/clamsmtp && chown clamsmtp /var/run/clamsmtp)
+
* [http://www.dbmail.org/ Sitio web oficial de DBMail] {{en}}
 +
* [[w:en:DBMail IMAP and POP3 server|Artículo de la Wikipedia sobre Servidores IMAP y POP3 en DBMail]] {{en}}
 +
* [http://josemanuelruizbaena.blogspot.com/2008/05/fatal-pgsqletcpostfixsql-pop-before.html Problemas con sql-pop-before-smtp]
 +
[[Categoría:Administración del sistema]]

Última revisión de 12:13 19 mayo 2008

DBMail es el nombre de un grupo de programas que permite la posibilidad de almacenar y guardar mensajes de correo electrónico desde una base de datos. Actualmente se utiliza MySQL, PostgreSQL y SQLite como sistema persitente de datos.

Instalación

Para tener instalado DBMail, seguimos los siguientes pasos:

Instalación y configuración de PostgreSQL

  • Primero instalamos PostgreSQL, a partir del paquete postgresql-8.2 de los repositorios oficiales de Ubuntu.
  • Hay que tocar un parámetro de configuración de PostgreSQL para que nos deje autentificarnos como usuarios que no estón dados de alta. Para eso, editamos el archivo /etc/postgresql/8.2/main/pg_hba.conf, por ejemplo con gEdit:
 $ sudo gedit /etc/postgresql/8.2/main/pg_hba.conf
  • Buscamos la línea:
local   all         all                          ident sameuser

Y la sustituimos por esta otra:

local   all         all                          md5

Guardamos los cambios y cerramos el editor.

  • Reiniciamos PostgreSQL con el siguiente comando:
 $ sudo /etc/init.d/postgresql-8.2 restart

Instalación de Postfix

  • Ahora, para el servidor de correo Postfix, instalamos los paquetes postfix, postfix-pgsql y mailx de los repositorios. En los asistentes de configuración, introducimos los siguientes datos:
  General type of configuration? Internet Site
  Nombre de correo? miservidor.midominio

Instalación y configuración de DBMail

  • Agregamos el repositorio para instalar DBMail . Editamos el archivo sources.list, por ejemplo con gEdit:
 $ sudo gedit /etc/apt/sources.list

Y añadimos al final del archivo la siguiente línea:

deb http://debian.nfgd.net/debian stable main

Finalmente guardamos y cerramos el editor.

  • Actualizamos la lista de paquetes:
 $ sudo aptitude update
  • Luego instalamos el paquete dbmail-psgql de los repositorios que acabamos de añadir.
Nota clasica.png Existe un paquete dbmail-pgsql en los repositorios oficiales de Ubuntu, pero se trata de una versión muy antigua de DBMail, por eso es recomendable añadir el repositorio mencionado antes.
  • Vamos a crear la base de datos y el usuario en PostgreSQL para DbMail:
 $ sudo -s
 $ su postgres
 $ psql template1
  • Nos aparecerá este texto de bienvenida e instrucciones:
 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
  • Introducimos las siguientes órdenes:
 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: (aquí tecleamos la contraseña: 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
  • Editamos el archivo de configuración de DbMail, con gEdit:
 $ 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
  • Ahora editamos este otro archivo:
 $ sudo gedit /etc/default/dbmail

Descomentamos las líneas:

START_POP3D
START_IMAPD
START_LMTPD

Guardamos los cambios y cerramos.

  • Y aún falta crear las tablas. Teclamos estos comandos:
 $ 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, ya tenemos funcionando el servidor de POP3.
  • Para agregar un usuario:
 $ 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
  • Para comprobarlo, hacemos lo siguiente:
 $ 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.

Aún 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 líneas son:

 PGCLIENTENCODING=LATIN1
 export PGCLIENTENCODING

Instalación y configuración de ClamSMTP y Postgrey

Vamos a configurar ahora Postfix con el antivirus, y el antispam, haciendo al mismo tiempo la conexión con DBMail para no perder más tiempo en detalles.

  • Instalamos los paquetes clamsmtp, clamav-daemon y postgrey de los repositorios.
  • Editamos el siguiente archivo, con gEdit por ejemplo:
 $ sudo gedit /etc/postfix/main.cf
  • Realizamos los siguientes cambios:
 # 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

Guardamos los cambios y cerramos.

  • Editamos el archivo /etc/postfix/master.cf:
 $ sudo gedit /etc/postfix/master.cf
  • Añadimos estas líneas al final:
 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

Guardamos y cerramos.

Aún quedan 2 archivos por editar:

  • El primero le indica 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');
Nota advertencia.png No olvidar este INSERT, de lo contrario no llegarán los mensajes de 'midominio' a DBMail.
  • Vamos a ver cómo va la cosa:
$ sudo /etc/init.d/postfix restart
  * Stopping Postfix Mail Transport Agent postfix                      [ ok ]
  * Starting Postfix Mail Transport Agent postfix                      [ ok ]

Enlaces Externos