|
El día domingo 8 de abril de 2007 el Proyecto Debian lanzo la versión 4 "Etch" , si Usted tiene un servidor en producción se recomienda mantener la versión 3.1 Sarge pero si planea hacer una instalación nueva recomendamos que vea el artículo La Instalación Perfecta - Debian 4.0 "Etch". Esta es una descripción detallada de los pasos a seguir para instalar un servidor basado en Debian (Debian Sarge alias Debian 3.1) que ofrece todos los servicios que necesitan tanto ISPs como quienes dan alojamiento (servidor web (soporte SSL), servidor de correo (con SMTP-AUTH y TLS!), servidor DNS, servidor FTP, servidor MySQL, POP3/POP3s/IMAP/IMAPs, Quota, etc.).
La Instalación Perfecta - Debian Sarge (3.1) | Este tutorial es derivado de los documentos de Falko Timme, The Perfect Setup, Virtual Users And Domains With Postfix, Courier And MySQL (+ SMTP-AUTH, Quota, SpamAssassin, ClamAV), que puede encontrar en http://www.falkotimme.com/. Así como de la experiencia de aprendizaje de quien reescribe este documento en la lengua de Cervantes. | | Esta es una guía para "copiar & pegar"! La manera más sencilla de seguirla es usar clientes SSH para Windows (de línea de comandos, como PuTTY o de interfaz gráfica, como WinSCP) o simplemente copiar y pegar los comandos (excepto cuando sea necesario ingresar su propia información como direcciones IP, nombres de host, contraseñas,...). Esto ayuda a evitar errores. |
La Instalación Perfecta - Debian Sarge (3.1) Version 1.5 Autor: Falko Timme <ft [en] falkotimme.com>
Versión castellana no autorizada: Daniel A. Rodriguez <daniel [en] mcye.misiones.gov.ar> Última edición: 30/01/2006 Esta es una descripción detallada de los pasos a seguir para instalar un servidor basado en Debian (Debian Sarge alias Debian 3.1) que ofrece todos los servicios que necesitan tanto ISPs como quienes dan alojamiento (servidor web (soporte SSL), servidor de correo (con SMTP-AUTH y TLS!), servidor DNS, servidor FTP, servidor MySQL, POP3/POP3s/IMAP/IMAPs, Quota, etc.). Usaré el siguiente software: - Servidor Web: Apache 2.0.x
- Servidor de Correo: Postfix (más sencillo de configurar que sendmail; con historial más breve de agujeros de seguridad)
- Servidor DNS: BIND9
- Servidor FTP: proftpd
- POP3/POP3s/IMAP/IMAPs: en este ejemplo puede escoger entre el formato tradicional de casilla de correo de UNIX (ipopd/uw-imapd) o el formato Maildir (en este caso usaremos Courier-POP3/Courier-IMAP).
- Webalizer para las estadísticas del sitio web
Al final debería tener un sistema funcionando confiablemente listo para una panel de control de alojamiento web como ISPConfig. Quiero decir en primer lugar que esta no es la única manera de configurar un sistema. Hay muchas formas de hacerlo pero este es el camino que tomé. No garantizo que esto funcione para usted! Requerimientos Para instalar el sistema necesitara lo siguiente: ‹1› El Sistema Base Inserte el CD Netinstall de Sarge en su sistema y arránquelo desde allí (ingrese linux26 en el prompt de arranque para instalar un kernel 2.6). La instalación comienza, primero debe escoger su idioma: 
Selecciones su país: 
Elija el esquema de teclado: 
Comienza la detección de hardware: 
Ingrese el nombre de host. En este ejemplo, mi sistema se llama servidor1.dominio.com, de modo que ingreso servidor1:/p> 
Ingrese su nombre de dominio. En este ejemplo, esto es dominio.com: 
Ahora debe particionar su disco duro. Crearé una partición grande (con el punto de montaje /) y una pequeña partición de intercambio (swap): 
Los discos duros son escritos de afuera hacia adentro, a ello se debe que sean más veloces en los primeros sectores que en los últimos (~30%). Por esa razón es conveniente colocar la partición de swap al comienzo de los discos duros (si tuviera multiples discos una partición swap al comienzo de cada uno). 


Ahora es instalado el sistema base: 
Instalo el cargador de arranque GRUB en el registro maestro de arranque (MBR): 
Luego remuevo CD Netinstall de Sarge del sistema y lo reinicio: 
Configure su zona horaria: 

Ingrese una contraseña root: 
Cree un segundo usuario admin: 


Si el instalador de Debian detecta algún disco de instalación lo usara como fuente para los paquetes, caso contrario le pedira que escoja su método de instalación. Ya que quiero hacer una instalación a través de la red selecciono http o ftp. 
Seleccione una mirror para su instalación: 

Ingrese un proxy para la instalación (si fuera necesario). Normalmente puede dejar este campo vacío. 
En la Selección de Programas Debian solamente elijo Servidor de Correo. Luego instalaré los demás servicios manualmente. 
La instalación a través de la red comienza: 
Continue instalando libc-client sin soporte Maildir. Si desea usar Maildir puede instalar Courier-POP3/Courier-IMAP (explicado más adelante): 
No configure Exim puesto ya que lo reemplazaremos con Postfix más adelante: 


Felicidades! Su sistema base está terminado: 
En el próximo paso... ‹2› Instalando y Configurando el Resto del Sistema ¿Norton Commander? Para quienes no se sienten muy a gusto con la linea de comandos pueden instalar el Midnight Commander, facilitará enormemente las cosas. apt-get install mc Configure La Red Puesto que el instalador de Debian Sarge ha configurado el sistema para obtener su configuración de red via DHCP, es necesario modificar eso ahora porque un servidor debe tener una dirección IP estática. Edite /etc/network/interfaces y ajustelo a sus necesidades (en esta instalación de ejemplo usaré la dirección IP 192.168.0.100): # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
# The first network card - this entry was created during the Debian installation
# (network, broadcast and gateway are optional)
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1 |
Si desea agregar la direción IP 192.168.0.101 a la interfaz eth0 debe modificar el archivo para que se vea como esto: # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
# The first network card - this entry was created during the Debian installation
# (network, broadcast and gateway are optional)
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
auto eth0:0
iface eth0:0 inet static
address 192.168.0.101
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1 |
Luego reinicie la red: /etc/init.d/networking restart Edite /etc/resolv.conf y agregue algunos servidores de nombre: search servidor1
nameserver 145.253.2.75
nameserver 193.174.32.18
nameserver 194.25.0.60 |
Edite /etc/hosts y agregue sus nuevas direcciones IP: 127.0.0.1 localhost.localdomain localhost servidor1
192.168.0.100 servidor1.dominio.com servidor1
192.168.0.101 virtual-ip1.dominio.com virtual-ip1
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts |
Estableciendo del nombre de host echo servidor1.dominio.com > /etc/hostname
/bin/hostname -F /etc/hostname Instalar/Remover Algunos Programas Ahora instalaremos algunos programas que necesitaremos y se removerán otros que ya no son necesarios: apt-get install wget bzip2 rdate fetchmail libdb3++-dev unzip zip ncftp xlispstat libarchive-zip-perl zlib1g-dev libpopt-dev nmap openssl lynx fileutils apt-get remove lpr nfs-common portmap pidentd pcmcia-cs pppoe pppoeconf ppp pppconfig update-rc.d -f exim4 remove update-inetd --remove daytime update-inetd --remove telnet update-inetd --remove time update-inetd --remove finger update-inetd --remove talk update-inetd --remove ntalk update-inetd --remove ftp update-inetd --remove discard <- Yes /etc/init.d/inetd reload Quota apt-get install quota quotatool <- No Edite /etc/fstab para que se parezca a esto (agregué ',usrquota,grpquota' a la partición con el punto de montaje /): # /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/sda1 / ext3 defaults,errors=remount-ro,usrquota,grpquota 0 1
/dev/sda5 none swap sw 0 0
/dev/hdc /media/cdrom0 iso9660 ro,user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 |
Luego ejecute: touch /quota.user /quota.group chmod 600 /quota.* mount -o remount / quotacheck -avugm En este punto puede presentarse el error "//quota.file (ó group) was probably truncated. Can't save quota settings", ocurre al ejecutar por primera vez el comando. Se soluciona ejecutándolo nuevamente quotaon -avug DNS-Server
apt-get install bind9 Por razones de seguridad queremos ejecutar BIND chrooted para ello debemos seguir los siguientes pasos: /etc/init.d/bind9 stop Edite el archivo /etc/default/bind9 de modo que el demonio se ejecute como el usuario sin privilegios 'bind', chrooted a /var/lib/named. Modifique la linea: OPTS="-u bind" para que se lea OPTS="-u bind -t /var/lib/named": OPTIONS="-u bind -t /var/lib/named" |
Crear los directorios necesario bajo /var/lib: mkdir -p /var/lib/named/etc mkdir /var/lib/named/dev mkdir -p /var/lib/named/var/cache/bind mkdir -p /var/lib/named/var/run/bind/run Luego mueva el directorio de configuración desde /etc a /var/lib/named/etc: mv /etc/bind /var/lib/named/etc Crear un enlace simbólico al nuevo directorio de configuración de la antigua ubicación (para evitar problemas cuando bind sea actualizado en el futuro): ln -s /var/lib/named/etc/bind /etc/bind Crear dispositivos null y random, y corregir permisos a los directorios: mknod /var/lib/named/dev/null c 1 3 mknod /var/lib/named/dev/random c 1 8 chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random chown -R bind:bind /var/lib/named/var/* chown -R bind:bind /var/lib/named/etc/bind Necesitamos modificar el script de inicio /etc/init.d/sysklogd de sysklogd de manera que podamos tener importantes mensajes en los logs del sistema. Modifique la linea: SYSLOGD="" para que se lea: SYSLOGD="-a /var/lib/named/dev/log": #! /bin/sh
# /etc/init.d/sysklogd: start the system log daemon.
PATH=/bin:/usr/bin:/sbin:/usr/sbin
pidfile=/var/run/syslogd.pid
binpath=/sbin/syslogd
test -x $binpath || exit 0
# Options for start/restart the daemons
# For remote UDP logging use SYSLOGD="-r"
#
SYSLOGD="-a /var/lib/named/dev/log"
create_xconsole()
{
if [ ! -e /dev/xconsole ]; then
mknod -m 640 /dev/xconsole p
else
chmod 0640 /dev/xconsole
fi
chown root:adm /dev/xconsole
}
running()
{
# No pidfile, probably no daemon present
#
if [ ! -f $pidfile ]
then
return 1
fi
pid=`cat $pidfile`
# No pid, probably no daemon present
#
if [ -z "$pid" ]
then
return 1
fi
if [ ! -d /proc/$pid ]
then
return 1
fi
cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1`
# No syslogd?
#
if [ "$cmd" != "$binpath" ]
then
return 1
fi
return 0
}
case "$1" in
start)
echo -n "Starting system log daemon: syslogd"
create_xconsole
start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD
echo "."
;;
stop)
echo -n "Stopping system log daemon: syslogd"
start-stop-daemon --stop --quiet --exec $binpath --pidfile $pidfile
echo "."
;;
reload|force-reload)
echo -n "Reloading system log daemon: syslogd"
start-stop-daemon --stop --quiet --signal 1 --exec $binpath --pidfile $pidfile
echo "."
;;
restart)
echo -n "Restarting system log daemon: syslogd"
start-stop-daemon --stop --quiet --exec $binpath --pidfile $pidfile
sleep 1
start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD
echo "."
;;
reload-or-restart)
if running
then
echo -n "Reloading system log daemon: syslogd"
start-stop-daemon --stop --quiet --signal 1 --exec $binpath --pidfile $pidfile
else
echo -n "Restarting system log daemon: syslogd"
start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD
fi
echo "."
;;
*)
echo "Usage: /etc/init.d/sysklogd {start|stop|reload|restart|force-reload|reload-or-restart}"
exit 1
esac
exit 0 |
Reinicie el demonio: /etc/init.d/sysklogd restart Inicie BIND, y verifique el /var/log/syslog por algun error: /etc/init.d/bind9 start MySQL apt-get install mysql-server mysql-client libmysqlclient12-dev mysqladmin -u root password suclaverootsql Cuando ejecuta netstat -tap debería ver una linea como esta: tcp 0 0 localhost.localdo:mysql *:* LISTEN 2449/mysqld |
lo cual significa que MySQL es accesible en 127.0.0.1 en el puerto 3306. Puede ir a la siguiente sección (Postfix). Si no ve esta linea, edite /etc/mysql/my.cnf y descomente skip-networking: Si quiere que MySQL escuche en todas las direcciones IP disponibles, edite /etc/mysql/my.cnf y comente la linea bind-address = 127.0.0.1: #bind-address = 127.0.0.1 |
Si debe editar /etc/mysql/my.cnf deberá reiniciar MySQL: /etc/init.d/mysql restart PHPMyAdmin apt-get install phpmyadmin <- Apache2 <- Yes Postfix/POP3/IMAP
Para instalar Postfix con SMTP-AUTH y TLS así como as un servidor POP3 que soporte POP3s (puerto 995) y un servidor IMAP que tambien es capaz de IMAPs (puerto 993) haga lo siguiente: apt-get install postfix postfix-tls libsasl2 sasl2-bin libsasl2-modules ipopd-ssl uw-imapd-ssl (1 linea!) <- pop3 and pop3s <- No <- Internet Site <- NONE <- servidor1.dominio.com <- servidor1.dominio.com, localhost.dominio.com, localhost <- No postconf -e 'smtpd_sasl_local_domain = servidor1' postconf -e 'smtpd_sasl_auth_enable = yes' postconf -e 'smtpd_sasl_security_options = noanonymous' postconf -e 'broken_sasl_auth_clients = yes' postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination' postconf -e 'inet_interfaces = all' echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf mkdir /etc/postfix/ssl cd /etc/postfix/ssl/ openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 chmod 600 smtpd.key openssl req -new -key smtpd.key -out smtpd.csr openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt openssl rsa -in smtpd.key -out smtpd.key.unencrypted mv -f smtpd.key.unencrypted smtpd.key openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650 postconf -e 'smtpd_tls_auth_only = no' postconf -e 'smtp_use_tls = yes' postconf -e 'smtpd_use_tls = yes' postconf -e 'smtp_tls_note_starttls_offer = yes' postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key' postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt' postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem' postconf -e 'smtpd_tls_loglevel = 1' postconf -e 'smtpd_tls_received_header = yes' postconf -e 'smtpd_tls_session_cache_timeout = 3600s' postconf -e 'tls_random_source = dev:/dev/urandom' El archivo /etc/postfix/main.cf debería verse así: # See /usr/share/postfix/main.cf.dist for a commented, more complete version smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h mydomain = dominio.com
myhostname = servidor1.$mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
relayhost =
mynetworks = [IP RED LOCAL/MASCARA CIDR] 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
## SASL
smtpd_sasl_local_domain = web
smtp_sasl_auth_enable = no
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
##TLS
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom |
/etc/init.d/postfix restart La autenticación será hecha por saslauthd. Es necesario cambiar algunas cosas para que funcione apropiadamente. Ya que Postfix se ejecuta chrooted en /var/spool/postfix debemos hacer lo siguiente: mkdir -p /var/spool/postfix/var/run/saslauthd rm -fr /var/run/saslauthd Ahora tendremos que editar /etc/default/saslauthd para activar saslauthd. Remover # fronte a START=yes y agregar la linea PARAMS="-m /var/spool/postfix/var/run/saslauthd": # This needs to be uncommented before saslauthd will be run automatically
START=yes
PARAMS="-m /var/spool/postfix/var/run/saslauthd"
# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb", like this:
# MECHANISMS="pam shadow"
MECHANISMS="pam" |
Finalmente debemos editar /etc/init.d/saslauthd, cambiando la linea dir=`dpkg-statoverride --list $PWDIR` |
a #dir=`dpkg-statoverride --list $PWDIR` |
Luego cambiar las variables PWDIR y PIDFILE y agregar la variable dir al comienzo del archivo: PWDIR="/var/spool/postfix/var/run/${NAME}"
PIDFILE="${PWDIR}/saslauthd.pid"
dir="root sasl 755 ${PWDIR}" |
/etc/init.d/saslauthd debería verse asi: #!/bin/sh -e
NAME=saslauthd
DAEMON="/usr/sbin/${NAME}"
DESC="SASL Authentication Daemon"
DEFAULTS=/etc/default/saslauthd
PWDIR="/var/spool/postfix/var/run/${NAME}"
PIDFILE="${PWDIR}/saslauthd.pid"
dir="root sasl 755 ${PWDIR}"
createdir() {
# $1 = user
# $2 = group
# $3 = permissions (octal)
# $4 = path to directory
[ -d "$4" ] || mkdir -p "$4"
chown -c -h "$1:$2" "$4"
chmod -c "$3" "$4"
}
test -f "${DAEMON}" || exit 0
# Source defaults file; edit that file to configure this script.
if [ -e "${DEFAULTS}" ]; then
. "${DEFAULTS}"
fi
# If we're not to start the daemon, simply exit
if [ "${START}" != "yes" ]; then
exit 0
fi
# If we have no mechanisms defined
if [ "x${MECHANISMS}" = "x" ]; then
echo "You need to configure ${DEFAULTS} with mechanisms to be used"
exit 0
fi
# Add our mechanimsms with the necessary flag
PARAMS="${PARAMS} -a ${MECHANISMS}"
START="--start --quiet --pidfile ${PIDFILE} --startas ${DAEMON} --name ${NAME} -- ${PARAMS}"
# Consider our options
case "${1}" in
start)
echo -n "Starting ${DESC}: "
#dir=`dpkg-statoverride --list $PWDIR`
test -z "$dir" || createdir $dir
if start-stop-daemon ${START} >/dev/null 2>&1 ; then
echo "${NAME}."
else
if start-stop-daemon --test ${START} >/dev/null 2>&1; then
echo "(failed)."
exit 1
else
echo "${DAEMON} already running."
exit 0
fi
fi
;;
stop)
echo -n "Stopping ${DESC}: "
if start-stop-daemon --stop --quiet --pidfile "${PIDFILE}" \
--startas ${DAEMON} --retry 10 --name ${NAME} \
>/dev/null 2>&1 ; then
echo "${NAME}."
else
if start-stop-daemon --test ${START} >/dev/null 2>&1; then
echo "(not running)."
exit 0
else
echo "(failed)."
exit 1
fi
fi
;;
restart|force-reload)
$0 stop
exec $0 start
;;
*)
echo "Usage: /etc/init.d/${NAME} {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0 |
Ahora inicie saslauthd: /etc/init.d/saslauthd start Instalar algunos Modulos Perl necesarios para SpamAssassin Ejecute el siguiente comando para iniciar el shell de Perl: perl -MCPAN -e shell Si ejecuta el shell de Perl por primera vez tendrá que responder algunas preguntas. En la mayoría de los casos las respuestas predeterminadas están bien. Nota: Si tiene un firewall en su sistema puede ser necesario que lo detenga mientras trabaja con el shell de Perl shell de manera que el shell de Perl sea capaz de alcanzar los módulos necesaros sin demasiada demora. Puede iniciarlo nuevamente al finalizar el proceso. La gran ventaja del shell de Perl comparado con los otros dos métodos descritos aquí es que pone cuidado de las dependencias cuando instala nuevos. Por ejemplo, si nota que un módulo prerequerido está ausente cuando instala otro módulo el shell de Perl le preguntará si debe reinstalar el módulo prerequerido por usted. Debería contestar a esa pregunta con un 'Si'. Ejecute los siguientes comandos para instalar los módulos requeridos por SpamAssassin: install HTML::Parser install DB_File install Net::DNS (cuando se le pregunte para habilitar las pruebas, escoja no) q (para salir del shell de Perl) Si un módulo ya está instalado en su sistema verá un mensaje similar a este: HTML::Parser is up to date. La instalación exitosa de un módulo se ve como esto: /usr/bin/make install -- OK Instalar Amavisd-new, SpamAssassin y ClamAV Para instalar amavisd-new, spamassassin y clamav, ejecute el siguiente comando: apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip unarj bzip2 Deberá responder unas pocas preguntas: Virus database update method: <-- daemon Local database mirror site: <-- db.de.clamav.net (Alemania; seleccione el mirror más cercano) HTTP proxy information (leave blank for none): <-- (en blanco) Should clamd be notified after updates? <-- Yes Ahora tenemos que editar /etc/amavis/amavisd.conf. Este es un archivo muy largo con mucho comentarios. He recortado las partes innecesarias, terminé con esto: use strict;
$MYHOME = '/var/lib/amavis'; # (default is '/var/amavis')
$mydomain = 'localhost';
# $myhostname = 'host.example.com'; # fqdn of this host, default by uname(3)
$daemon_user = 'amavis'; # (no default (undef))
$daemon_group = 'amavis'; # (no default (undef))
$TEMPBASE = $MYHOME; # (must be set if other config vars use is)
$pid_file = "/var/run/amavis/amavisd.pid"; # (default: "$MYHOME/amavisd.pid")
$lock_file = "/var/run/amavis/amavisd.lock"; # (default: "$MYHOME/amavisd.lock")
$ENV{TMPDIR} = $TEMPBASE; # wise to set TMPDIR, but not obligatory
$max_servers = 4; # number of pre-forked children (default 2)
$max_requests = 10; # retire a child after that many accepts (default 10)
$child_timeout=5*60; # abort child if it does not complete each task in n sec
# (default: 8*60 seconds)
# @bypass_virus_checks_acl = qw( . ); # uncomment to DISABLE anti-virus code
# @bypass_spam_checks_acl = qw( . ); # uncomment to DISABLE anti-spam code
@local_domains_acl = ( ".$mydomain" ); # $mydomain and its subdomains
$relayhost_is_client = 0; # (defaults to false)
$insert_received_line = 1;
$unix_socketname = undef;
$inet_socket_port = 10024;
$inet_socket_bind = '127.0.0.1';
@inet_acl = qw( 127.0.0.1 );
$DO_SYSLOG = 1;
$LOGFILE = "/var/log/amavis.log"; # (defaults to empty, no log)
#$log_level = 2; # (defaults to 0)
$log_templ = '[? %#V |[? %#F |[?%#D|Not-Delivered|Passed]|BANNED name/type (%F)]|INFECTED (%V)], #
[?%o|(?)|<%o>] -> [<%R>|,][? %i ||, quarantine %i], Message-ID: %m, Hits: %c';
read_l10n_templates('en_US', '/etc/amavis');
$final_virus_destiny = D_REJECT; # (defaults to D_BOUNCE)
$final_banned_destiny = D_REJECT; # (defaults to D_BOUNCE)
$final_spam_destiny = D_PASS; # (defaults to D_REJECT)
$final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested
$viruses_that_fake_sender_re = new_RE(
qr'nimda|hybris|klez|bugbear|yaha|braid|sobig|fizzer|palyh|peido|holar'i,
qr'tanatos|lentin|bridex|mimail|trojan\.dropper|dumaru|parite|spaces'i,
qr'dloader|galil|gibe|swen|netwatch|bics|sbrowse|sober|rox|val(hal)?la'i,
qr'frethem|sircam|be?agle|tanx|mydoom|novarg|shimg|netsky|somefool|moodown'i,
qr'@mm|@MM', # mass mailing viruses as labeled by f-prot and uvscan
qr'Worm'i, # worms as labeled by ClamAV, Kaspersky, etc
[qr'^(EICAR|Joke\.|Junk\.)'i => 0],
[qr'^(WM97|OF97|W95/CIH-|JS/Fort)'i => 0],
[qr/.*/ => 1], # true by default (remove or comment-out if undesired)
);
$virus_admin = "postmaster\@$mydomain"; # due to D_DISCARD default
$mailfrom_to_quarantine = ''; # override sender address with null return path
$QUARANTINEDIR = '/var/lib/amavis/virusmails';
$virus_quarantine_to = 'virus-quarantine'; # traditional local quarantine
$spam_quarantine_to = 'spam-quarantine';
$X_HEADER_TAG = 'X-Virus-Scanned'; # (default: undef)
$X_HEADER_LINE = "by $myversion (Debian) at $mydomain";
$undecipherable_subject_tag = '***UNCHECKED*** '; # undef disables it
$remove_existing_x_scanned_headers = 0; # leave existing X-Virus-Scanned alone
#$remove_existing_x_scanned_headers= 1; # remove existing headers
# (defaults to false)
#$remove_existing_spam_headers = 0; # leave existing X-Spam* headers alone
$remove_existing_spam_headers = 1; # remove existing spam headers if
# spam scanning is enabled (default)
$keep_decoded_original_re = new_RE(
# qr'^MAIL$', # retain full original message for virus checking (can be slow)
qr'^MAIL-UNDECIPHERABLE$', # retain full mail if it contains undecipherables
qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i,
# qr'^Zip archive data',
);
$banned_filename_re = new_RE(
# qr'^UNDECIPHERABLE$', # is or contains any undecipherable components
qr'\.[^.]*\.(exe|vbs|pif|scr|bat|cmd|com|dll)$'i, # some double extensions
qr'[{}]', # curly braces in names (serve as Class ID extensions - CLSID)
# qr'.\.(exe|vbs|pif|scr|bat|cmd|com)$'i, # banned extension - basic
# qr'.\.(ade|adp|bas|bat|chm|cmd|com|cpl|crt|exe|hlp|hta|inf|ins|isp|js|
# jse|lnk|mdb|mde|msc|msi|msp|mst|pcd|pif|reg|scr|sct|shs|shb|vb|
# vbe|vbs|wsc|wsf|wsh)$'ix, # banned extension - long
# qr'.\.(mim|b64|bhx|hqx|xxe|uu|uue)$'i, # banned extension - WinZip vulnerab.
# qr'^\.(zip|lha|tnef|cab)$'i, # banned file(1) types
# qr'^\.exe$'i, # banned file(1) types
# qr'^application/x-msdownload$'i, # banned MIME types
# qr'^application/x-msdos-program$'i,
qr'^message/partial$'i, # rfc2046. this one is deadly for Outcrook
# qr'^message/external-body$'i, # block rfc2046
);
$recipient_delimiter = '+'; # (default is '+')
$replace_existing_extension = 1; # (default is false)
$localpart_is_case_sensitive = 0; # (default is false)
$blacklist_sender_re = new_RE(
qr'^(bulkmail|offers|cheapbenefits|earnmoney|foryou|greatcasino)@'i,
qr'^(investments|lose_weight_today|market\.alert|money2you|MyGreenCard)@'i,
qr'^(new\.tld\.registry|opt-out|opt-in|optin|saveonl|smoking2002k)@'i,
qr'^(specialoffer|specialoffers|stockalert|stopsnoring|wantsome)@'i,
qr'^(workathome|yesitsfree|your_friend|greatoffers)@'i,
qr'^(inkjetplanet|marketopt|MakeMoney)\d*@'i,
);
map { $whitelist_sender{lc($_)}=1 } (qw(
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
ca+
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
));
$MAXLEVELS = 14; # (default is undef, no limit)
$MAXFILES = 1500; # (default is undef, no limit)
$MIN_EXPANSION_QUOTA = 100*1024; # bytes (default undef, not enforced)
$MAX_EXPANSION_QUOTA = 300*1024*1024; # bytes (default undef, not enforced)
$MIN_EXPANSION_FACTOR = 5; # times original mail size (must be specified)
$MAX_EXPANSION_FACTOR = 500; # times original mail size (must be specified)
$path = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/bin';
$file = 'file'; # file(1) utility; use 3.41 or later to avoid vulnerability
$gzip = 'gzip';
$bzip2 = 'bzip2';
$lzop = 'lzop';
$uncompress = ['uncompress', 'gzip -d', 'zcat'];
$unfreeze = ['unfreeze', 'freeze -d', 'melt', 'fcat'];
$arc = ['nomarch', 'arc'];
$unarj = ['arj', 'unarj']; # both can extract, arj is recommended
$unrar = ['rar', 'unrar']; # both can extract, same options
$zoo = 'zoo';
$lha = 'lha';
$cpio = 'cpio'; # comment out if cpio does not support GNU options
$sa_local_tests_only = 0; # (default: false)
#$sa_auto_whitelist = 1; # turn on AWL (default: false)
# Timout for SpamAssassin. This is only used if spamassassin does NOT
# override it (which it often does if sa_local_tests_only is not true)
$sa_timeout = 30; # timeout in seconds for a call to SpamAssassin
# (default is 30 seconds, undef disables it)
# AWL (auto whitelisting), requires spamassassin 2.44 or better
# $sa_auto_whitelist = 1; # defaults to undef
$sa_mail_body_size_limit = 150*1024;
$sa_tag_level_deflt = 3.0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 4.0; # add 'spam detected' headers at that level
$sa_kill_level_deflt = $sa_tag2_level_deflt;
$sa_dsn_cutoff_level = 10;
$sa_spam_subject_tag = '***SPAM*** ';
$first_infected_stops_scan = 1;
@av_scanners = (
### http://www.clamav.net/
['Clam Antivirus-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.ctl"],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
# NOTE: run clamd under the same user as amavisd; match the socket
# name (LocalSocket) in clamav.conf to the socket name in this entry
# When running chrooted one may prefer: ["CONTSCAN {}\n","$MYHOME/clamd"],
);
@av_scanners_backup = (
### http://www.clamav.net/
['Clam Antivirus - clamscan', 'clamscan',
"--stdout --no-summary -r --tempdir=$TEMPBASE {}", [0], [1],
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
);
1; # insure a defined return |
Amavisd-new es el programa que une Postfix y SpamAssassin/ClamAV. Postfix da los correos a amavisd-new, quien luego invoca a SpamAssassin y ClamAV para escanearlos. Por favor, examine la configuración de Spamassassin y ClamAV /etc/amavis/amavisd.conf. Por supuesto, Ud. puede personalizar el archivo mucho más. Sientase libre de hacerlo, vea las explicaciones en el archivo original /etc/amavis/amavisd.conf! adduser clamav amavis /etc/init.d/amavis restart /etc/init.d/clamav-daemon restart Ahora debemos configurar Postfix para encaminar el correo entrante a través de amavisd-new: postconf -e 'content_filter = amavis:[127.0.0.1]:10024' Luego agregue las siguientes lienas a /etc/postfix/master.cf: amavis unix - - - - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
127.0.0.1:10025 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_bind_address=127.0.0.1 |
y reinicie Postfix: /etc/init.d/postfix restart postfix check Instalar Razor, Pyzor, DCC y Configurar SpamAssassin Razor, Pyzor y DCC son filtros de spam que usan una red colaborativa de filtrado. Para instalarlos, ejecute apt-get install razor pyzor dcc-client Ahora debemos decirle a SpamAssassin que use estos tres programas. Edite /etc/spamassassin/local.cf para que se vea como esto: # This is the right place to customize your installation of SpamAssassin.
#
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
###########################################################################
#
# rewrite_header Subject *****SPAM*****
# report_safe 1
# trusted_networks 212.17.35.
# lock_method flock
# dcc
use_dcc 1
dcc_path /usr/bin/dccproc
dcc_add_header 1
dcc_dccifd_path /usr/sbin/dccifd
#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor
pyzor_add_header 1
#razor
use_razor2 1
razor_config /etc/razor/razor-agent.conf
#bayes
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1 |
Luego ejecute /etc/init.d/amavis restart Ahora quiero insertar en SpamAssassin algunas reglas personalizadas que pueden encontrarse en internet. Las he testeado, y hacen el filtrado anti spam mucho más efectivo. Cree el archivo /usr/local/sbin/sa_rules_update.sh: touch /usr/local/sbin/sa_rules_update.sh Luego copie y pegue el siguiente contenido en él: Reglas Personalizadas
Asígnele permisos de ejecución: chmod 755 /usr/local/sbin/sa_rules_update.sh Luego ejecute el script una vez, incorporará estas reglas en SpamAssassin: /usr/local/sbin/sa_rules_update.sh Creamos una tarea cron para que esas erglas sean actualizadas periodicamente. Ejecute crontab -e para abrir el editor de tareas cron. Cree la siguiente tarea cron: 23 4 */2 * * /usr/local/sbin/sa_rules_update.sh &> /dev/null Esto actualizará las reglas cada segundo día a las 4:23hs. Para ver si SMTP-AUTH y TLS funcionan apropiadamente ejecute el siguiente comando: telnet localhost 25 Tras establecer la conexión a su servidor de correo postfix ingrese ehlo localhost Si ve las lineas 250-STARTTLS y 250-AUTH todo está bien. 
Ingrese quit para retornar al shell del sistema. Courier-IMAP/Courier-POP3 En caso de querer usar el demonio POP3/IMAP que soporta Maildir (si no quiere usar el formato convencional de casilla de correo Unix) puede instalar Courier-IMAP/Courier-IMAP-SSL (para IMAPs en el puerto 993) y Courier-POP3/Courier-POP3-SSL (para POP3s en el puerto 995). De lo contrario puede proceder con la configuración de Apache. apt-get install courier-imap courier-imap-ssl courier-pop courier-pop-ssl <- No ipopd e UW-IMAP serán reeplazados. Configure Postfix para enviar correo al Maildir de cada usuario: postconf -e 'home_mailbox = Maildir/' postconf -e 'mailbox_command =' /etc/init.d/postfix restart Tiene que crear usuario y contraseña para el sistema: useradd -d /home/usuario_ejemplo -s /bin/false -g users usuario_ejemplo passwd usuario_ejemplo Luego será necesario crear un archivo que contendrá todos los dominios para los cuales quiere aceptar correos y otro para contener la tabla de usuarios virtuales touch /etc/postfix/local-host-names su contenido se vería así: localhost nombre.de.su.servidor localhost.nombre.de.su.servidor ejemplo.com sudominio.com touch /etc/postfix/virtusertable el contenido debería se verse así:
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
usuario_ejemplo
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
usuario_ejemplo
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
usuario_ejemplo Los correos electrónicos para
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
,
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
and
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
llegarán ahora a la casilla de usuario_ejemplo. Cada vez que modifica /etc/postfix/virtusertable debe ejecutar el siguiente comando: postmap /etc/postfix/virtusertable Luego debe indicar a Postfix que utilice los archivos que ha creado
postconf -e 'virtual_maps = hash:/etc/postfix/virtusertable' postconf -e 'mydestination = /etc/postfix/local-host-names' Ahora reinicie Postfix: /etc/init.d/postfix restart Antes que cualquier usuario pueda acceder al servidor de correo es necesario enviar a la cuenta recien creada un mensaje de forma que el sistema genere automáticamente la estructura de carpetas necesarias. Ante el eventual error "BD641284546: to=<
Esta dirección de correo está protegida contra los robots de spam y necesitas tener Javascript activado para poder verla
>, relay=local, delay=0, status=bounced
(maildir delivery failed: create /home/usuario_ejemplo/Maildir/tmp/1138277048.P15690.servidor1.dominio.com: Permission denied)
warning: maildir access problem for UID/GID=1001/100:
create /home/usuario_ejemplo/Maildir/tmp/1138277048.P15690.servidor1.dominio.com: Permission denied
warning: perhaps you need to create the maildirs in advance" |
es necesario modificar los permisos en la carpeta /home, para ello ejecute el siguiente comando: chown identd:users /home La combinación grupo:usuario surge del mensaje de error (texto en negrita) users UID = 1001 y identd GID = 100. Apache Ejecute apt-get install apache2 apache2-doc apt-get install libapache2-mod-php4 libapache2-mod-perl2 php4 php4-cli php4-common php4-curl php4-dev php4-domxml php4-gd php4-imap php4-ldap php4-mcal php4-mhash php4-mysql php4-odbc php4-pear php4-xslt curl libwww-perl imagemagick (1 linea!) Edite /etc/apache2/apache2.conf. Cambiar DirectoryIndex index.html index.cgi index.pl index.php index.xhtml |
a DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml |
Edite /etc/mime.types y comente: #application/x-httpd-php phtml pht php
#application/x-httpd-php-source phps
#application/x-httpd-php3 php3
#application/x-httpd-php3-preprocessed php3p
#application/x-httpd-php4 php4 |
Edite /etc/apache2/mods-enabled/php4.conf y descomente las siguientes lineas: <IfModule mod_php4.c>
# AddType application/x-httpd-php .php .phtml .php3
# AddType application/x-httpd-php-source .phps
</IfModule> |
Edite /etc/apache2/ports.conf y agregue Listen 443: Ahora tenemos que habilitar algunos módulos Apache (SSL, rewrite y suexec): cd /etc/apache2/mods-enabled ln -s /etc/apache2/mods-available/ssl.conf ssl.conf ln -s /etc/apache2/mods-available/ssl.load ssl.load ln -s /etc/apache2/mods-available/rewrite.load rewrite.load ln -s /etc/apache2/mods-available/suexec.load suexec.load ln -s /etc/apache2/mods-available/include.load include.load Reinicie Apache: /etc/init.d/apache2 restart Proftpd apt-get install proftpd <- standalone Por razones de seguridad Ud. puede agregar lineas a /etc/proftpd.conf (gracias a Reinaldo Carvalho; puede encontrar más información en: http://proftpd.linux.co.uk/localsite/Userguide/linked/userguide.html): DefaultRoot ~ IdentLookups off ServerIdent on "Servidor FTP listo." y reinicie Proftpd: /etc/init.d/proftpd restart Webalizer apt-get install webalizer <- /var/www/webalizer <- Usage Statistics for <- /var/log/apache/access.log.1 Webmin apt-get install webmin-core webmin-apache webmin-bind webmin-cpan webmin-firewall webmin-grub webmin-htaccess webmin-inetd webmin-logrotate webmin-mailboxes webmin-mysql webmin-postfix webmin-proftpd webmin-quota webmin-spamassassin webmin-usermin (1 linea!) <- servidor1.dominio.com <- Ok <- servidor1.dominio.com Sincronizar el Reloj del Sistema Si desea tener el reloj del sistema sincronizado con un servidor NTP puede agregar las siguientes lineas a /var/spool/cron/crontabs/root (si el archivo no existe, creelo ejecutando touch /var/spool/cron/crontabs/root):
# actualizar el tiempo con un servidor ntp 0 3,9,15,21 * * * /usr/sbin/rdate 128.2.136.71 | logger -t NTP Luego ejecute chmod 600 /var/spool/cron/crontabs/root /etc/init.d/cron restart Compilar un Kernel a Medida Si necesita compilar un nuevo kernel por alguna razón (ej. porque quiere tener el último kernel o necesita de una característica que el kernel estándar de Debian no ofrece), puede encontrar más información aquí: Debian-Kernel-Compile-Howto.
El Final
La configuración del servidor está finalizada, y si lo desea ahora puede instalar en él ISPConfig. Nota para SuExec Si quiere ejecutar scripts CGI bajo suExec, debería especificar /var/www como el directorio home para los sitios web creados por ISPConfig ya que el suExec de Debian está compilado con /var/www como Doc_Root. Ejecute /usr/lib/apache2/suexec2 -V y la salida debería verse así:  Para seleccionar /var/www como directorio home para los sitios web durante la instalación de ISPConfig haga lo siguiente: cuando se le pregunte por el modo de instalación, seleccione el modo experto.

Durante la instalación se le preguntará por el directorio predeterminado, /home/www debería ser el directorio donde ISPConfig cree los sitios web. Responda n e ingrese /var/www como directorio home para los sitios web. 
Enlaces |