Por Paco Aldarias Raya

Servidor de correo: postfix

Por Paco Aldarias Raya

22 de marzo 2007

Email: pacolinux arroba inicia punto es

Web: http://aldarias.es/pacodebian

Con Linux Debian. En Valencia (España)

El documento tiene version .html, y .pdf, cambiando en el navegador la parte final podrás acceder a ambos.

Este documento es de libre reproducción siempre que se cite su fuente.

Realizado con: LATEX


Índice General

+

1 Versiones

2 Introducción

Un servidor de correo permite:

Postfix permite el recibir correo y enviarlo al usuario de linux.

Este artículo explica como enviar correo a cualquier dirección, y como recibir correo local (es decir, que reciba el correo un usuario de linux). No se verá el servidor de correo IMAP o POP.

3 Instalación de postfix

Como root hay q hacer todo esto:

apt-get install postfix

Podemos ver la versión instalada con:

dpkg -s postfix

Yo tengo la versión:

2.0.7-3

Nos pedirá una serie de datos que debemos indicarle:

  1. Postfix Configuration Nos informa de los tipos de instalación posibles. Damos a ok
  2. General type of configuration?
    Internet Site

    Indicamos q queremos enviar correo y recibor correo.

  3. Mail name?
    aldarias.dsland.org

    Aqui le indicamos el nombre del dominio. Es equivalente poner este nombre a poner su ip.

  4. Append .domain to simple addresses
    <Yes>

    Aqui le decimos q añada un punto al una direccion simple. Es decir, que si envian al usuario paco, el añada un punto.

    Si alguien quiere mandarme un correo, deberá enviarlo a paco@aldarias.dsland.org

    Siendo paco un usuario de linux.

  5. Other destinations to accept mail for? (blank for none)

    aldarias.dsland.org, pacohost.aldarias.dsland.org, localhost.aldarias.dsland.org, localhost

    Aqui le indicamos que acepte correo a estos destinos.

  6. Local networks?
    127.0.0.0/8

    Aqui le indicamos que maquinas pueden enviar correo. En mi caso solo mi máquina. Podriamos tb poner 192.168.0.0/255.255.255.0 para la red 192.168.0.

  7. Use procmail for local delivery?
    <Yes>

    Aqui le decimos que use procmail para enviar el correo al usuario.

  8. Mailbox size limit
    0

    Aquí indicamos el tamaño máximo del correo. Si ponemos 0 es sin límite.

  9. Local address extension character?
    +

    Aqui lde decimos que carácter usamos para enviar a usuarios locales.

4 Configuración

Debemos ser root para poder trabajar con postfix.

Veamos el fichero de configuracion del postfix:
nano /etc/postfix/main.cf

5 El fichero de configuración

cat /etc/postfix/main.cf

command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix
setgid_group = postdrop
append_dot_mydomain = yes
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
myhostname = aldarias.dyndns.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = aldarias.dyndns.org  paco localhost
#relayhost =  127.0.0.1
mynetworks =  192.168.0.0/24 127.0.0.1/24
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +

6 Arranque y Parada

Arrancaremos el posfix con:
/etc/init.d/postfix start

Pararemos el posfix con:
/etc/init.d/postfix stop

7 Logs

Podemos ver q pasa con el correo asi:
less /var/log/mail.log

8 Como recoger el correo que nos envian

Debemos ahora recoger el correo.

Usaremos para ello kmail como cliente de correo. Vamos a: inicio, internet, kmail Dentro de kmail: Preferencias, Configurar kmail, Red. Recibiendo, Añadir Tipo de cuenta: Buzón Local Carpeta: /var/mail/paco

Esto lo que hace es ir a la carpeta /var/mail/paco que es donde deja el correo, y se lo lleva kmail, que está en la carpeta del usuario /home/paco/Mail/

9 Ficheros de interes

9.1 El nombre del dominio

cat /etc/mailname
	
	aldarias.dyndns.org

9.2 El nombre de tu máquina

cat /etc/hostname
	
	aldarias.dyndns.org

9.3 El nombre del host

cat /etc/hosts

127.0.0.1       aldarias.dyndns.org localhost
192.168.0.1     paco

10 Cola de correo

Para ver la cola del correo pendiente de enviar:

#mailq

Para borrar la cola:

postsuper -d ALL

Puedes comprobar las cabeceras del mensaje parandolo en la cola con:

# postsuper -h ID_MENSAJE

El ID del mensaje lo puedes mirar con:

# mailq

Luego puedes buscar el fichero que contiene el mensaje que estará por /var/spool/postfix y se llamará igual que el id del mensaje y lo pasas a postcat. Puedes usar esto por ejemplo:

# find /var/spool/postfix/hold -name ID_MENSAJE -exec postcat {} \; 

Viendo las cabeceras podrás saber por qué servidores está pasando el mensaje y ver si de verdad tienes el servidor abierto.

11 Postfix y cuotas

Problema, postfix controla una quota globla (usease, que controla que el direcotorio de los correos de todo el mundo no se pase de un limite). Para tener control de quota individual (que tambien puedes poner a funcionar en la base de de datos... creo un buzon de un mega, ahora lo cambio a 10, y luego a 5... si tener que tocar nada en la configuración de postfix), tendrás que ponerle un parche.

Mas problemas, debian tiene separados los paquetes de postfix, postfix-pgsql, postfix-tls...., así que si lo haces "emparchando" los sources de postfix, te vas a ver en muchos follones de dependencias, archivos que no estan o que estan e otro lado....

Lo ideal:

apt-get install apt-build
apt-build update
apt-build source postfix
en el directorio de los sources descomprimidos, le pones aplicas el 
patch http://web.onda.com.br/nadal/
gunzip postfix-*-trash.patch.gz
patch -p0 <postfix-*-trash.patch
apt-build install postfix

y ya tienes postfix con control de quotas individuales, con usuarios virtuales, pero ojo, tienes que decirselo a postfix que lo utilice

cd /etc/postfix
vi main.cf
te vas a abajo de todo y pulsas i
luego copias y pegas.

#QUOTA
virtual_mailbox_limit_inbox = no
virtual_mailbox_limit_maps = 
pgsql:/etc/postfix/pgsql_virtual_mailbox_size.cf
virtual_mailbox_limit_override = yes
virtual_maildir_extended = yes
virtual_create_maildirsize = yes
virtual_mailbox_limit = 100000000

Mas info en http://aribabiba.cosmoquimica.com.br/leandro/Problema, está en brasileño, para un gallego no es problema porque es praticamente igual al gallego, pero un extremeño un poco avispado deduce facilmente lo que dice, y si no le preguntas a leandro (en ingles, gallego, portugues o brasileño) o preguntas aquí... aunque supongo que las dudas van a ser más de tipo tecnico que idiomático.

12 Autentificar usuario y contraseña: SASL

Instalación:

apt-get install postfix-tls libsasl-digestmd5 libsasl-modules-plain \
sasl-bin libsasl2  libsasl2-modules

12.1 Añadiendo usuarios directamente

Añadir un usuario:

saslpasswd2 -c -u aldarias.dyndns.org paco

Indicar el metodo de comprobación:

nano /etc/postfix/sasl/smtpd.conf

pwcheck_method: sasldb

Configurar postfix:

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_relay_domains

12.2 Usando un fichero de usario-contraseña

Crear este fichero:
nano /etc/postfix/sasl_passwd

mail.midominio.org      miusuario:mipassword

Cambiar los permisos:

chown root:root /etc/postfix/sasl_passwd && chmod 600 /etc/postfix/sasl_passwd

Crear el db file:

postmap hash:/etc/postfix/sasl_passwd

Cambiar la configuración de postfix:

nano /etc/postfix/main.cf


smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtpd_sasl_security_options = noanonymous

Reiniciar postfix:

postfix reload

Comprobar que funciona:

telnet localhost 25
ehlo localhost
quit

Deben aparecer líneas parecidas a éstas:

250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5

12.3 Algunos consejos

Dos o tres apuntes muy importantes si tu distribucion es Debian.

1.- Instala el paquete postfix-tls. El soporte para SASL viene con     esta version parcheada de postfix.

2.- Si usas postfix 2.x + libsasl2, usa como metodo de validacion de     contraseñas saslauthd. Es mas facil asi, aunque no tendras soporte     para CRAM-MD5 ni DIGEST-MD5.

    Asegurate ademas de que saslauthd esta arrancado y usando el     metodo PAM (yo lo he hecho asi y funciona).

    Asegurate ademas de instalar los modulos de autenticacion     correspondientes. He estado casi 30 minutos haciendo debugging del     tinglado solo para darme cuenta de que solo habia instalado     libsasl2 (el core), pero no tenia ningun modulo de autenticacion     (va todo a base de modulos enchufables). Yo he usado     libsasl2-modules, que es quien da soporte para los metodos LOGIN y     PLAIN (en mi caso es mas que suficiente).

3.- MUY IMPORTANTE: Edita el fichero master.cf y asegurate de que la     linea donde aparezca el proceso smtpd, en la columna donde se     configura si corre en un entorno chroot este puesta a 'n' (no). De     lo contrario no encontrara la mitad de las bibliotecas y ficheros     que necesita. En Debian viene activado el chroot por defecto, por     lo que a menos que lo desactives, no te funcionará nunca y no     sabrás por qué.

13 Bibliografía

  1. Ubicación de este documento:
    http://usuario.tiscali.es/paco25abril/

  2. Pagina de linux:
    http://inicia.es/de/pacolinux

  3. Guia rápida de Postfix. Paco Brufal:
    http://www.kleenux.org/articulos/guia-postfix/guia_postfix-5.html

  4. man: postfix

  5. SMTP Authentication for Mail servers
    http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mailservers.html

  6. Postfix SASL Howto
    http://www.postfix.org/SASL_README.html

  7. Postfix+sasl
    http://www.wl0.org/htmlarchives/postfix-es/200211/msg00005.html

  8. Configuración de postfix
    http://www.algomas.org/internet.html

  9. Postfix/SASL/TLS HowTo for Debian Sid and Sarge
    http://www.tribulaciones.org/docs/postfix-sasl-tls-howto.html

  10. SMTP Auth/SMTP over SSL - Debian Woody 3.0
    http://people.brad-x.com/~diamondc/postfix-tls-smtpauth.html

  11. Postfix y autentificación con los usuarios del sistema. Redhat.
    http://libertonia.escomposlinux.org/story/2004/4/21/115328/318

Sobre este documento...

Servidor de correo: postfix

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html postfix -split 0 -local_icons 1 -show_section_numbers -no_auto_link -no_navigation

The translation was initiated by on 2007-03-22


2007-03-22