Configuración · 3 min read · Dec 31, 2025

Cómo configurar Virtual Hosting con Virtualmin en CentOS 5.1 - Página 3

Configuración

Configuración de Postfix

Introducción

Vamos a configurar postfix con las siguientes características:

  • Alojamiento virtual
  • Prevención de UCE
  • Antivirus
  • Autenticación SMTP
  • TLS
  • RBLs
  • SPF
  • Mitigación de ataques

La adición de cuentas y dominios se configurará a través de virtualmin, aunque también se puede hacer manualmente. La configuración está diseñada para ser amigable con los recursos, por lo que debería poder ejecutarse en máquinas que no están sobreespecificadas, permitiendo así que los recursos se utilicen de mejor manera. Para hacerlo amigable con los recursos, no estamos utilizando bases de datos externas para almacenar información de usuarios virtuales como lo hacen la mayoría de los otros tutoriales, así como utilizando milters para la verificación de spam y virus en lugar de ejecutar amavisd-new.

Lo Básico

Para comenzar, configuraremos lo básico, como el nombre del host, el origen del correo, las redes y el directorio de spool de mapas hash. Todas estas opciones de configuración deben añadirse a /etc/postfix/main.cf a menos que se indique lo contrario. Los archivos de configuración de muestra están disponibles para descargar al final de esta página.

command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mydomain = example.com
myorigin = $mydomain
mynetworks = 127.0.0.0/8
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
canonical_maps = hash:/etc/postfix/canonical
sender_canonical_maps = hash:/etc/postfix/canonical
recipient_canonical_maps = hash:/etc/postfix/canonical
virtual_alias_maps = hash:/etc/postfix/virtual
mail_spool_directory = /var/spool/mail

Maildir

Usaremos el formato maildir mucho mejorado en lugar del formato mbox por defecto:

home_mailbox = Maildir/

SASL

Para realizar la autenticación SMTP, utilizaremos SASL; sin embargo, no utilizaremos Cyrus SASL ya que eso requiere que ejecutemos el demonio saslauthd. En su lugar, utilizaremos dovecot sasl, ya que estaremos ejecutando dovecot para IMAP y POP3, matando así dos pájaros de un tiro.

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

TLS

Necesitamos TLS para asegurar que las contraseñas en texto plano no se transmitan por la red durante la autenticación SMTP. Los servidores que soportan TLS también pueden comunicarse con este servidor a través de una conexión segura.

Las instrucciones para crear su certificado de servidor firmado por cacert.org se pueden encontrar aquí.

  • Establecer la fuente aleatoria de TLS:
tls_random_source = dev:/dev/urandom
  • Habilitar TLS del servidor:
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/pki/postfix/key.pem
smtpd_tls_cert_file = /etc/pki/postfix/server.pem
smtpd_tls_CAfile = /etc/pki/postfix/root.crt
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_session_cache_database = btree:/var/spool/postfix/smtpd_tls_cache
  • Habilitar TLS del cliente:
smtp_use_tls = yes
smtp_tls_key_file = /etc/pki/postfix/key.pem
smtp_tls_cert_file = /etc/pki/postfix/server.pem
smtp_tls_CAfile = /etc/pki/postfix/root.crt
smtp_tls_session_cache_database = btree:/var/spool/postfix/smtp_tls_cache
smtp_tls_note_starttls_offer = yes

Prevención de Spam

  • Requerir un EHLO / HELO válido:
smtpd_helo_required = yes
  • Prevenir ataques de recolección de direcciones de correo electrónico:
disable_vrfy_command = yes
  • Cambiar los códigos de rechazo a permanente (por defecto, postfix emite códigos de error 4xx que implican un fallo temporal; necesitamos 5xx para errores permanentes):
unverified_recipient_reject_code = 550
unverified_sender_reject_code = 550
unknown_local_recipient_reject_code = 550
  • Configurar la verificación de direcciones de remitente:
address_verify_map = btree:/var/spool/postfix/verify
smtpd_sender_restrictions = hash:/etc/postfix/sender_access
  • Crear /etc/postfix/sender_access y añadir:
#ejemplo /etc/postfix/sender_access contiene dominios frecuentemente suplantados
aol.com     reject_unverified_sender
hotmail.com reject_unverified_sender
yahoo.com reject_unverified_sender
gmail.com reject_unverified_sender
bigfoot.com reject_unverified_sender
  • Mitigar ataques de zombis y clientes rotos:
smtpd_error_sleep_time = 5s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
  • Solo permitir el pipelining de clientes autenticados:
smtpd_data_restrictions = reject_unauth_pipelining
  • Instalar postfix-policyd-spf-perl y habilitar el soporte SPF:
wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.005.tar.gz  
tar xzvf postfix-policyd-spf-perl-2.005.tar.gz  
cd postfix-policyd-spf-perl-2.005  
cp postfix-policyd-spf-perl /etc/postfix/

Añadir esto a /etc/postfix/master.cf:

spfpolicy unix  -       n       n       -       -       spawn user=nobody argv=/usr/bin/perl /etc/postfix/postfix-policyd-spf-perl
  • Añadir soporte DKIM:

Las instrucciones para añadir soporte DKIM se pueden encontrar aquí.

  • Añadir soporte domainkeys:

Las instrucciones para añadir soporte domainkeys se pueden encontrar aquí.

  • Hacer que todo funcione depende de la opción smtpd_recipient_restrictions, así que la configuramos a continuación:
smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination
        check_recipient_access hash:/etc/postfix/access
        reject_unknown_recipient_domain
        reject_unknown_sender_domain
        reject_unverified_recipient
        reject_non_fqdn_recipient
        reject_non_fqdn_sender
        reject_invalid_hostname
        reject_rbl_client list.dsbl.org
        reject_rbl_client zen.spamhaus.org
        reject_rbl_client l1.spews.dnsbl.sorbs.net
        reject_rbl_client combined.njabl.org
        reject_rbl_client bl.spamcop.net
        reject_rhsbl_sender dsn.rfc-ignorant.org
        reject_rhsbl_sender bogusmx.rfc-ignorant.org
        reject_rhsbl_sender rhsbl.sorbs.net
        reject_rhsbl_client dsn.rfc-ignorant.org
        reject_rhsbl_client bogusmx.rfc-ignorant.org
        reject_rhsbl_client rhsbl.sorbs.net
        check_policy_service unix:private/spfpolicy

Milters [SpamAssassin & ClamAV]

Para su clasificación de spam utilizando spamassassin y escaneo de virus utilizando clamav, utilizaremos la interfaz milter de postfix en lugar de utilizar el recurso intensivo demonio amavisd-new. Esta es una forma muy eficiente de hacerlo, ya que ni siquiera tenemos que ejecutar clamd; el milter de clamav realiza el escaneo por sí mismo.

smtpd_milters = unix:/var/clamav/clmilter.socket unix:/var/run/spamass.sock
non_smtpd_milters = unix:/var/clamav/clmilter.socket unix:/var/run/spamass.sock

Crear Archivos DB

postmap /etc/postfix/canonical  
postmap /etc/postfix/access  
postmap /etc/postfix/virtual  
postmap /etc/postfix/sender_access

Archivos de Configuración de Muestra

  • main.cf
  • master.cf
  • canonical
  • virtual
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.