[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