TÍTULO: Postfix + procmail + fetchmail
VERSIÓN LFS: 3.1 + lfsbootscript-1.0
AUTOR: Michenaud Laurent <lmichenaud@free.fr>
TRADUCTOR: Proyecto LFS-ES
SINOPSIS:
Cómo instalar y configurar postfix - procmail - fetchmail
RECETA:
Esta receta explica cómo instalar y configurar un servidor de correo en
tu sistema lfs mediante postfix, procmail y fetchmail.
Requerimientos:
- un servidor dns => mira la receta de bind o la de djbdns.
- Base de datos Berkerley (Berkerley DB)
Opcional:
- tener funcionando un fcron => mira la receta de fcrontab
I - PROCMAIL
============
Descárgalo de aquí: http://www.procmail.org/procmail-3.22.tar.gz
$ tar zxvf procmail-3.21.tar.gz
$ cd procmail-3.21
$ make BASENAME=/usr install
II - POSTFIX
============
1) Instalación
---------------
Descárgalo de aquí: ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-1.1.0.tar.gz
a) Compilación
si el fichero db.h no se encuentra en /usr/include o en /usr/include/db
fallara la ejecución del make. Para arreglarlo busca el fichero db.h
y cambia los directorios de búsqueda editando makedefs. O utiliza el
siguiente comando:
sed 's|/usr/include/db.h|/path/to/db.h|' \
makedefs > makedefs~ &&
mv makedefs~ makedefs
Una vez echo esto ejecuta:
$ make
b) Crear el usuario y el grupo postfix
Añade al /etc/passwd:
postfix:x:101:101::/dev/null:/bin/false
Y añade al /etc/group:
postfix:x:101:
postdrop:x:102:
d) Modificar /var/mail
/var/mail pertenece al administrador (root) en un sistema lfs estándar,
así que postfix no puede crear ficheros en él. Cámbialo con esto:
$ chown postfix.postfix /var/mail
e) Finalmente instala
# Si es la primera instalación
$ make install
# o si es una actualización
$ make upgrade
Si eliges make install te hará algunas preguntas sobre que directorios
quieres utilizar.
Recomendado:
install_root : /
temp_dir : /tmp
config_directory : /etc/postfix
daemon_directory : /usr/libexec/postfix
command_directory: /usr/sbin
queue_directory: /var/spool/postfix
sendmail_path: /usr/sbin/sendmail
newaliases_path: /usr/bin/newaliases
mailq_path: /usr/bin/mailq
mail_owner: postfix
setgid_group: postdrop
manpage_directory: /usr/share/man
readme_directory: [no]
Ahora ejecuta:
/etc/postfix/post-install create-missing
Si no encuentras postconf es porque el guión redefine la variable de
entorno $PATH. Modifícalo para que funcione.
$ /etc/postfix/post-install
Por último, puedes copiar la documentación html:
$ cp -rf html /usr/doc/postfix
Con esta nueva versión de postfix, he tenido que editar
/etc/postfix/master.cf para hacer que funcione postfix. Yo he cambiado
lo siguiente:
Activa para pickup la opción unpriv (sin privilegios)
Activa para flush y cleanup la opción private (privado)
Tengo la sensación de que no es una buena solución, pero funciona.
Necesito ayuda en esto.
2) El fichero de configuración principal : /etc/postfix/main.cf
-----------------------------------------------------
# Principio del fichero
# Directorios de información
queue_directory = /var/spool/postfix
mail_spool_directory = /var/mail
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
# Dueño del proceso
mail_owner = postfix
default_privs = nobody
# Nombre de la máquina
myhostname = zarba.zerezo.org
# Dominio
mydomain = zerezo.org
# Dirección que se utiliza para enviar los mensajes
myorigin = $mydomain
# Lista de dominios que la máquina considera suyos como destino de
# mensajes
mydestination = $myhostname, localhost.$mydomain, $mydomain, mail.$mydomain
#inet_interfaces = all
inet_interfaces = $myhostname, localhost
# En que máquinas debe confiar postfix
# los valores posibles son class subnet host
mynetworks_style = subnet
# En vez de mynetworks_style, puedes usar:
# mynetworks = 192.168.0.0, 127.0.0.1
# Que ISP utilizar para mandar los mensajes que no sean locales
relayhost = [smtp.laposte.net]
# Que protocolo utilizar para los mensajes locales
default_transport = smtp
# Permite a postfix saber que direcciones son locales y cuales externas
transport_maps = hash:/etc/postfix/transport
# Fichero de alias para transformar las direcciones locales en
# direcciones externas validas
sender_canonical_maps = hash:/etc/postfix/sender_canonical
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
# Alias
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
# Rechazar a usuarios desconocidos
local_recipient_maps = $alias_maps unix:passwd.byname
# Que programa utilizar para el envío de los mensajes
mailbox_command = /usr/bin/procmail
# Procesos concurrentes
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 5
# Depuración
debug_peer_level = 1
debugger_command =
PATH=/usr/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
# Espacio mínimo que debe haber libre en el disco para que se acepten
# mensajes
queue_minfree = 5000000
# Tamaño máximo de los mensajes
message_size_limit = 10000000
# Enviar una copia de los mensajes de error al administrador del
# servidor de correo (postmaster)
notify_classes = resource,software,bounce,delay,policy
# Pausa en segundos que se hará cuando el ratio de llegada de mensajes
# supere al de envío
in_flow_delay = 1
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
manpage_directory = /usr/share/man
sample_directory = /etc/postfix/sample
readme_directory = no
# Fin del fichero
3) configuracion de los alias : /etc/postfix/aliases
----------------------------------------------------
Los alias te permiten redireccionar los mensajes destinados a un
usuario a otro u otros.
Edita /etc/postfix/aliases
Ejemplo:
root: zarba:
webmaster: zarba:
familly: zarba, dad, mum, karine
Tras esto, debes actualizar el fichero de la base de datos ejecutando:
$ newaliases
4) /etc/postfix/recipient_canonical
-----------------------------------
Este fichero te permite transformar direcciones externas en direcciones
internas.
edita /etc/postfix/recipient_canonical
# Principio del fichero
laurent.michenaud@laposte.net zarba
karine.michenaud@laposte.net karine
laurent.michenaud@wanadoo.fr zarba
# Fin del fichero
Una vez editado actualiza el fichero de la base de datos:
$ postmap /etc/postfix/recipient_canonical
5) /etc/postfix/sender_canonical
--------------------------------
Este fichero te permite transformar tus direcciones locales en
direcciones externas.
Por ejemplo, mi dominio zarba.zerezo.org no esta registrado en
internet. Así que cuando envío mensajes al exterior debo cambiar mi
dirección por una dirección valida.
edita /etc/postfix/sender_canonical
# Principio del fichero
root laurent.michenaud@yourfai.com
karine karine.michenaud@yourfai.com
# Fin del fichero
Y después actualiza el fichero de la base de datos:
$ postmap /etc/postfix/sender_canonical
6) /etc/postfix/transport
-------------------------
Postfix necesita saber que direcciones son locales y cuales externas.
Ejemplo:
zarba.zerezo.org local:
localhost local:
Actualiza el fichero de la base de datos:
postmap /etc/postfix/transport
7) Administration de postfix
----------------------------
postfix start : iniciar el servidor de correo
postfix stop : parar el servidor de correo
postfix reload : recargar la configuración del servidor de correo
postfix check : comprobar la configuración y los permisos
postfix flush : enviar los mensajes que no se han enviado
mailq : mirar que mensajes no se han enviado todavía
( debes ser administrador (root) )
8) El guión de inicio /etc/rc.d/init.d/postfix
----------------------------------------------
# Cuidado, postfix usa el nuevo sistama bootscripts-1.0
#!/bin/sh
source /etc/sysconfig/rc
source $rc_functions
case "$1" in
start)
echo -n "Starting the mail server..."
/usr/sbin/postfix start
evaluate_retval
;;
stop)
echo -n "Stopping the mail server..."
/usr/sbin/postfix stop
evaluate_retval
;;
reload)
echo -n "Reloading the mail server..."
/usr/sbin/postfix reload
evaluate_retval
;;
restart)
$0 stop
/usr/bin/sleep 1
$0 start
;;
*)
echo "Usage: $0 {start|stop|reload|restart}"
exit 1
;;
esac
# Fin del fichero
$ cd /etc/rc.d/init.d/rc0.d
$ ln -s ../init.d/postfix K05postfix
$ cd ../rc6.d
$ ln -s ../init.d/postfix K05postfix
$ cd ../rc3.d
$ ln -s ../init.d/postfix S45postfix
$ cd ../rc5.d
$ ln -s ../init.d/postfix S45postfix
III - FETCHMAIL
===============
Descárgalo de aquí: http://www.tuxedo.org/~esr/fetchmail/fetchmail-5.9.6.tar.gz
a) instalación
# Puedes añadir la opción --with-ssl al guión ./configure si lo deseas( necesitas OpenSSL ).
$ ./configure --prefix=/usr --enable-fallback=procmail --sysconfdir=/etc
$ make
$ make install
b) configuración
Edita el fichero ~/.fetchmailrc y añade tus cuentas de correo.
# Principio del fichero
set logfile /var/log/fetchmail.log
set no bouncemail
set postmaster root
poll pop.free.fr :
user "isplogin" pass "isppassword" is zarba here ;
# Fin del fichero
c) crontab
He hecho un guión que se ejecuta cada 10 minutos y recoje los mensajes
de todas mis cuentas.
Mi guión /root/bin/checkmail :
#!/bin/bash
if [ -e /var/run/ppp0.pid ]
then
/opt/network/bin/fetchmail
fi
El comando en el fcrontab :
$ fcrontab -u root -e
@ 10 touch /root/bin/checkmail -F
d) Alternativa
Usaba esta configuración de fetchmail cuando no tenía conexión
permanente. Desde que tengo una conexión adsl ya no he utilizado
fcrontab para bajar el correo. He ejecutado fetchmail como demonio.
Para conseguirlo se añade al fichero .fetchmailrc la línea:
set daemon 600
600 es el número de segundos que transcurren entre cada comprobación
de las cuentas de correo.
IV - QPOPPER
============
qpopper es un servidor pop. Si tienes una pequeña red en casa
y quieres tener la posibilidad de comprobar si fetchmail te ha
descargado mensajes desde otra máquina debes instalarlo.
descárgalo de aquí:
ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.3.tar.gz
Instalación
./configure --prefix=/usr --sysconfdir=/etc
opcionalmente, puedes añadir --with-openssl=/path/to/openssl
make &&
make install &&
Añade el servidor qpopper a xinetd :
service pop3
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/popper
server_args = qpopper -s
port = 110
only_from = 192.168.0.0
bind = 192.168.0.51
disable = no
}
reinicia xinetd.
Yo tengo restringido qpopper para que sólo este disponible en mi red y
no para el resto de Internet.
IV - Final
==========
Esta receta necesita ser completada.
Buena suerte.
POR HACER:
integración con Amavis ( rasterador (scanner) de virus )
integración LDAP
|