Una cosa si tendremos en cuenta, en el fichero /etc/postgresql/8.1/main/pg_hba.conf tenemos que modificar el modo de identificación de los usuario md5, para ello modificaremos la linea:
local all all ident sameuserPor:
local all all md5Una vez hecho esto simplemente reiniciaremos PostgreSQL (/etc/init.d/postgresql-8.1 restart) y empezaremos por crear la base de datos dbmail y el usuario dbmail dentro del servidor de base de datos PostgreSQL.
#su postgresProbamos el acceso a la base de datos dbmail, por si hay algún problema.
$psql template1
CREATE USER dbmail PASSWORD '123456789';
CREATE DATABASE dbmail OWNER dbmail ENCODING = 'UNICODE';
\q
# psql -U dbmail dbmailInstalaremos postfix, postfix-pgsql, para ello:
Contraseña para usuario dbmail:
Bienvenido a psql 8.1.11, la terminal interactiva de PostgreSQL.
Digite: \copyright para ver los términos de distribución
\h para ayuda de comandos SQL
\? para ayuda de comandos psql
\g o or termine con punto y coma para ejecutar una consulta
\q para salir
dbmail=> \q
aptitude install postfix postfix-pgsql
General type of configuration? Internet SiteVamos a comenzar a instalar dbmail, editaremos el fichero /etc/apt/sources.list y añadimos la linea:
Nombre de correo? miservidor.midominio
deb http://debian.nfgd.net/debian stable mainDespués de actualizar la lista de paquetes (aptitude update) instalaremos el paquete dbmail-pgsql, que instalará por dependencia el paquete dbmail.
aptitude install dbmail-pgsqlTenemos que crear la estructura de la base de datos, para ello:
cp /usr/share/doc/dbmail-pgsql/examples/create_tables.pgsql.gz .Ya tenemos instalada la aplicación, ahora empezamos a configurar. Editamos el fichero /etc/default/dbmail (nano /etc/default/dbmail) y añadimos:
gunzip create_tables.pgsql.gz .
psql -U dbmail dbmail < create_tables.pgsql
START_POP3D=1Editamos el fichero /etc/dbmail/dbmail.conf y modificamos estas lineas:
START_IMAPD=1
START_LMTPD=1
driver = pgsqlReiniciamos dbmail y tendremos que ver algo parecido a esto:
authdriver = sql
host = localhost
pass = 123456789
[POP] POP_BEFORE_SMTP = yes,
[IMAP] IMAP_BEFORE_SMTP = yes
/etc/init.d/dbmail restartTenemos que instalar clamsmtp clamav-daemon postgrey.
Starting dbmail servers: dbmail-imapd dbmail-pop3d dbmail-lmtpd.
aptitude install clamsmtp clamav-daemon postgreyEs el fichero de configuración de postfix tendremos que tocar algunas cosas.
nano /etc/postfix/main.cfAñadiremos en la primera línea sin comentario esta variable y la inicializaremos con el nombre del dominio del cual estemos montando el servidor de correo electrónico. Es muy importante que este dominio sea un dominio valido, es decir que tenga todas las características de un dominio, .com .es .net ... algunos servidores de anti-spam se basan en el nombre del servidor de correo para definirlo como spam y lo último que queremos que ocurra es que nuestro nuevo servidor de correo sea marcado como servidor de spam.
myhostname = www.midominio.com
# resuelve en /etc/hosts (no solo dns)Definimos que busque en el fichero /etc/postfix/sql-pop-before-smtp.cf las IPs que tienen permiso para enviar correos desde nuestro servidor, así no necesitamos tener autenticación en nuestro servidor SMPT, porque siempre que hagamos una lectura antes del intento de envío, el servidor POP o IMAP capturará nuestra IP y gracias a la conexión del fichero /etc/postfix/sql-pop-before-smtp.cf nuestra IP aparecerá en la lista de IPs permitidas.
smtp_host_lookup = dns, native
# utilizo POP BEFORE SMTP para no actuar de OpenRelayIgualmente utilizaremos una conexión a la base de datos para sacar el listado de dominios de los que debemos aceptar correos electrónicos. En esta ocasión la guardamos en una variable y después lo añadimos a la variable mydestination.
mynetworks = 127.0.0.0/8, pgsql:/etc/postfix/sql-pop-before-smtp.cf
# se pueden añadir dominios en la base de datosAhora editaremos el fichero /etc/postfix/master.cf y verificamos que estas tres instrucciones está activas.
transport_maps = pgsql:/etc/postfix/sql-transport.cf
mydestination = localhost, localhost.localdomain, $transport_maps
smtpd_recipient_restrictions =
permit_mynetworks,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:60000
content_filter = scan:localhost:10026
receive_override_options = no_address_mappings
dbmail-lmtp unix - - n - - lmtpAún nos quedan crear los ficheros /etc/postfix/sql-pop-before-smtp.cf y /etc/postfix/sql-transport.cf
-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
El primero le indica a Postfix las IPs que tienen permiso para enviar (SMTP) por haber leído correo previamente (POP3 o IMAP). Es el archivo /etc/postfix/sql-pop-before-smtp.cf y su contenido es:
user=dbmailEl segundo nos va a permitir agregar nuevos dominios desde la base de datos. Es el archivo /etc/postfix/sql-transport.cf y su contenido:
password=123456789
dbname=dbmail
hosts=localhost
table=dbmail_pbsp
select_field=since
where_field=ipnumber
user=dbmailAhora tendremos que crear la tabla dbmail_transport en la base de datos dbmail si no existe. No podemos olvidarnos de hacer el INSERT que agregará el/los dominio a los que escuchará nuestro servidor de correo.
password=123456789
dbname=dbmail
table=dbmail_transport
select_field=transport
where_field=domain
hosts=localhost
psql -U dbmail dbmailUna vez hecho todo, reiniciaremos Postfix.
Contraseña para usuario dbmail:
Bienvenido a psql 8.1.11, la terminal interactiva de PostgreSQL.
Digite: \copyright para ver los términos de distribución
\h para ayuda de comandos SQL
\? para ayuda de comandos psql
\g o or termine con punto y coma para ejecutar una consulta
\q para salir
dbmail=> select * from dbmail_transport;
ERROR: no existe la relación «dbmail_transport»
dbmail=> CREATE TABLE dbmail_transport (domain VARCHAR(100) NOT NULL, transport VARCHAR(100) NOT NULL DEFAULT 'dbmail-lmtp:localhost:24');
CREATE TABLE
dbmail=> INSERT INTO dbmail_transport (domain) VALUES ('midominio.com');
INSERT 0 1
/etc/init.d/postfix restartAú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 conexión con PostgreSQL.
# Codificación que se lebantará con la base de datos PostgreSQLAsí podemos dar de alta al usuario jmruiz con password jmruiz y correo electrónico jmruiz@midominio.com.
PGCLIENTENCODING=UNICODE
export PGCLIENTENCODING
dbmail-users -a jmruiz -w jmruiz -s jmruiz@midominio.comPara probar el usuario podemos hacer telnet al puerto POP y acceder como el usuario jmruiz.
Adding INBOX for new user... ok.
[jmruiz@midominio.com]
Done
jmruiz:x:4:0:0.00:0.00:jmruiz@midominio.com
telnet localhost 110Si ves en el log /var/log/mail.log este error "fatal: pgsql:/etc/postfix/sql-pop-before-smtp.cf(0,lock|fold_fix): table lookup problem". Seguro que te será de mucha ayuda este enlace.
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK DBMAIL pop3 server ready to rock
user jmruiz
+OK Password required for jmruiz
pass jmruiz
+OK jmruiz has 0 messages (0 octets)
quit
+OK see ya later
Connection closed by foreign host.
Que tal, un gran tuto, lo he seguido pero tengo un problema no se si me puedas ayudar he buscado por muchas partes y no he encontrado nada, la cuestion esta al iniciar Postfix arroja el siguiente error, Starting Postfix Mail Transport Agent postfix postfix: fatal: config variable inet_interfaces: host not found: all
ResponderEliminar[fail], de nuevo gracias.
Que tal buen tuto, lo he seguido al pie, pero al finalizar Postfix envia el siguiente error, Starting Postfix Mail Transport Agent postfix postfix: fatal: config variable inet_interfaces: host not found: all [fail] no se si me pudieras ayudar, he buscado en muchos lugares sin encontrar nada en concreto gracias de nuevo.
ResponderEliminarEn la ultima versión yo también he tenido problemas. Edita el fichero:
ResponderEliminar/etc/default/dbmail
Y en lugar de:
START_POP3D=1
START_IMAPD=1
START_LMTPD=1
Pon esto:
START_POP3D
START_IMAPD
START_LMTPD
Ya me dices algo.
Saludos.