[Postfix-es] Instalacion de Postfix + Dovecot + Squirrelmail

GNU/LINUX linux en dpe.holguin.inf.cu
Mie Dic 5 04:34:33 CET 2007


Simple instalacion de (Postfix+Dovecot+Squirrelmail)

Aqui va lo prometido.

De ante mano les digo que:
Esta configuracion es la basica, el postfix autentifica con los usuarios
locales del sistema, los cuales tienen propiedad /bin/false.
Envia y recibe correos de otro servidor padre y de la LAN.

Todas estas Ip y nombres son fixticios.

El dominio con el cual trabajaremos es postfix.cu para direcciones tales
como *@postfix.cu.
Mi servidor de prueba posee dos interfaces de red (eth0 y eth1).
---------------------------------------------------------------------
           WAN                 LAN         SERVIDOR-PADRE SMTP (WAN)
eth0 (198.168.7.2)     eth1 (192.168.1.2)           (192.168.120.2)
---------------------------------------------------------------------
El nombre de la Pc donde instalaremos Postfix se llama mail-1, y con el
dominio completo quedaria asi:
mail-1.postfix.cu

----------------------
Comenzamos a instalar.
----------------------

1- Instalando el postfix
Nota: Sientase libre de dar enter y clic donde le de la gana. Despues
arreglaremos eso en el archivo.

apt-get install postfix

2- Luego instalamos el Dovecot
Nota: Al instalar estos paquetes se instalaran otros automaticamente, pues
estos dependen de ellos.

apt-get install dovecot-common dovecot-imapd dovecot-pop3d

3- Ahora instalemos el squirrelmail
Nota: Para que el squirrelmail se visualice en la web despues de instalado
debemos copiar el fichero /etc/squirrelmail/apache.conf hacia
/etc/apache2/sites-enabled/ (Para visualizarlo hay que reiniciar apache2
/etc/init.d/apache2 restart) 
Vamos a la web http://localhost/squirrelmail

apt-get install squirrelmail

4- Detenemos todos los servicios instalados

/etc/init.d/postfix stop
/etc/init.d/dovecot stop
/etc/init.d/apache2 stop

5- Configuramos estos archivos /etc/postfix/main.cf y
/etc/dovecot/dovecot.conf

El archivo /etc/postfix/main.cf quedaria asi.


--------------------------------- main.cf
---------------------------------------

mail_name = DOCUS-HH
smtpd_banner = AR_LXA2
biff = no
append_dot_mydomain = no
delay_warning_time = 4h

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

myhostname = mail-1.postfix.cu
mydomain = postfix.cu
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = postfix.cu, mail-1, localhost.localdomain, localhost
relayhost = 192.168.120.2
mynetworks = 127.0.0.0/8 192.168.120.2 192.168.1.0/24
mailbox_command = procmail -a "$EXTENSION"
recipient_delimiter = +
inet_interfaces = all

message_size_limit = 1048576
mailbox_size_limit = 10485760
maximal_queue_lifetime = 7d

# smtpd_helo_required = yes
smtpd_helo_restrictions = reject_invalid_hostname

smtpd_error_sleep_time = 1s
smtpd_soft_error_limit = 60
smtpd_hard_error_limit = 10

disable_vrfy_command = yes

# header_checks = regexp:/etc/postfix/header_checks

smtpd_restriction_classes  =
       nac_in
       nac_out

smtpd_sender_restrictions =
       check_recipient_access hash:/etc/postfix/_usuarios_in
       hash:/etc/postfix/access

smtpd_recipient_restrictions =
       permit_auth_destination
       check_sender_access hash:/etc/postfix/_usuarios_out
       permit_mynetworks
       reject_unauth_destination

nac_out  =
       check_recipient_access regexp:/etc/postfix/_filtro_nac
       reject

nac_in =
       check_sender_access regexp:/etc/postfix/_filtro_nac
       reject

--------------------------------- main.cf
---------------------------------------




El archivo /etc/dovecot/dovecot.conf quedaria asi.

Nota: He quitado todos los comentarios para despejar un poco el archivo,
recomiendo que no hagan esto en sus configuraciones, conserven todos los
comentarios y descomenten solo esto.

------------------------------- dovecot.conf
------------------------------------

protocols = imap pop3
disable_plaintext_auth = no
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = /home/%u/Maildir
mail_extra_groups = mail

protocol imap {

}

protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
}

auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }
  user = root
}

dict {
  #quota = mysql:/etc/dovecot-dict-quota.conf 
}

plugin {
}

------------------------------- dovecot.conf
------------------------------------

Bueno hasta aqui todo bien.

Es hora de iniciar nuevamente los servicios.

/etc/init.d/postfix start

Nota: Antes de iniciar el servicio dovecot, tenemos que devolver los 
permisos
a /var/run/dovecot/login.

chmod 744 /var/run/dovecot/login
/etc/init.d/dovecot start

Nota: Veran que dice algo de los permisos, por si acaso lo reininiciamos.
/etc/init.d/dovecot restart

/etc/init.d/apache2 stop


YA tenemos nuestro servidor casi terminado, ahora crearemos los usuarios.
Estas configuraciones soportan dos tipos de usuarios, nacionales e
internacionales.
Nacionales: Aquellos que solo pueden enviar a *.cu
Internacionales : A cualquier dominio *.*

En el main.cf se declara las clases y los permisos, los cuales son estos:
------------------------------------------------------------------
# Existen dos clases de restricciones.
smtpd_restriction_classes  =
       nac_in
       nac_out

smtpd_sender_restrictions =
       check_recipient_access hash:/etc/postfix/_usuarios_in
       hash:/etc/postfix/access

smtpd_recipient_restrictions =
       permit_auth_destination
       check_sender_access hash:/etc/postfix/_usuarios_out
       permit_mynetworks
       reject_unauth_destination

nac_out  =
       check_recipient_access regexp:/etc/postfix/_filtro_nac
       reject

nac_in =
       check_sender_access regexp:/etc/postfix/_filtro_nac
       reject
------------------------------------------------------------------

Para crear los usuarios no auxiliaremos del siguiente script que me he
creado (mail_user).

---------------------------- /bin/mail_user
---------------------------------------------------
-----------------------------------------------------------------------------------------------

#!/bin/bash

Upgrade_db()
{
cat /etc/postfix/users/in/*.i > /etc/postfix/_usuarios_in
cat /etc/postfix/users/out/*.o > /etc/postfix/_usuarios_out
postmap /etc/postfix/access
postalias /etc/aliases
postmap /etc/postfix/_filtro_nac
postmap /etc/postfix/_usuarios_in
postmap /etc/postfix/_usuarios_out
newaliases
/etc/init.d/postfix reload
}

Update_db()
{
case $2 in
   -i) echo -ne "Cuenta Internacional\n"
   Del_User_db $1
   ;;
   *) echo -ne "Cuenta Nacional\n"
   echo -ne "$1 en postfix.cu\t\t\tnac_in\n" > /etc/postfix/users/in/$1.i
   echo -ne "$1 en postfix.cu\t\t\tnac_out\n" > /etc/postfix/users/out/$1.o
   Upgrade_db
   ;;
esac
}

Del_User_db()
{
if [ -f /etc/postfix/users/in/$1.i ]; then
rm /etc/postfix/users/in/$1.i
fi
if [ -f /etc/postfix/users/out/$1.o ]; then
rm /etc/postfix/users/out/$1.o
fi
Upgrade_db
}

Info()
{
   echo -ne "Argumento no valido...\n"
   echo -ne "Sintaxis:  mail_user [User] [Opcion] [Access]\n"
   echo -ne "Opcion:\n"
   echo -ne "[-c] - Crear usuario\n"
   echo -ne "[-e] - Eliminar usuario\n"
   echo -ne "[-p] - Cambiar password"
   echo -ne "Access:\n"
   echo -ne "[-i] - Internacional\n"
   echo -ne "[Sin argumento] - Nacional\n"
}

Verify_Home_Maildir_User()
{
if [ ! -d /home/$1/Maildir ]; then
   mkdir -p /home/$1/Maildir/new /home/$1/Maildir/cur /home/$1/Maildir/tmp
      if [ ! -f /home/$1/.procmailrc ]; then
      echo -ne
"TATH=/usr/bin:/bin:/usr/local/bin:.\nMAILDIR=\$HOME/Maildir\nDEFAULT=\$MAILDIR/"
> /home/$1/.procmailrc
      fi
fi
   chown $1 -R /home/$1
Update_db $1 $2
}

Verify_Dirs_Files_Postfix()
{

if [ ! -d /etc/postfix/users/in ]; then
mkdir -p /etc/postfix/users/in
fi

if [ ! -d /etc/postfix/users/out ]; then
mkdir -p /etc/postfix/users/out
fi

if [ ! -f /etc/postfix/access ]; then
touch /etc/postfix/access
fi

if [ ! -f /etc/postfix/_usuarios_in ]; then
touch /etc/postfix/_usuarios_in
fi

if [ ! -f /etc/postfix/_usuarios_out ]; then
touch /etc/postfix/_usuarios_out
fi

if [ ! -f /etc/postfix/_filtro_nac ]; then
echo -ne "/\@*\.cu/\t\t\tRELAY\n/^\@/\t\t\tREJECT 550 Formato no
valido.\n/[!%\@].*\@/\t\t\tREJECT 550 Error Sintaxis\n/\@*/\t\t\tREJECT
Esta cuenta no esta autorizada a enviar o recibir correo internacional.\n"
> /etc/postfix/_filtro_nac
fi
Main $1 $2 $3
}

Main()
{
exist=`grep "^$1:" /etc/passwd`
case $2 in
      -c)   if [ -n "$exist" ] ; then
            echo "El usuario ya existe"
            Verify_Home_Maildir_User $1 $3
            else
               adduser --home /home/$1 --shell /bin/false $1
                    Verify_Home_Maildir_User $1 $3
         fi
      ;;
      -e)   if [ -n "$exist" ] ; then
            deluser --remove-home --remove-all-files $1
            Del_User_db $1
            else
               echo "El usuario no existe"
         fi
      ;;
      -p) passwd $1
      ;;
      *) Info
      ;;

esac

}


Verify_Dirs_Files_Postfix $1 $2 $3

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Comandos del script:

Sintaxis:
mail_user [user] [Opcion] [Access]


Opciones:
-c    Crear usuario
-e    Eliminar usuario
-p    Cambiar Password del usuario

Access:
-i   Internacional
[Sin argumento]    Nacional

Ejemplos:

mail_user user1 -c -i             # Crea la cuenta user1 con accesso
Internacional
mail_user user2 -c                # Crea la cuenta user2 con accesso 
Nacional
mail_user user1 -c                # Le cambia el acceso al usuario user1
de Internacional a nacional
mail_user user1 -p                # Cambiar Password del usuario user1
mail_user user2 -e                # Eliminar Cuenta del usuario user2



ESTE SCRIPT ES UN POQUITO LARGO DE EXPLICAR, ASI COMO SU FUNCIONAMIENTO
YA ESTOY UN POCO AGOTADO Y ES TARDE, LUEGO LES SIGO EXPLICANDO..

ESPERO LES SIRVA DE ALGO.

GNU/LINUX DEBIAN ETCH
Angel Fernández Rodríguez.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.wl0.org/pipermail/postfix-es/attachments/20071204/f523f890/attachment-0001.html


Más información sobre la lista de distribución Postfix-es