Postfix · 3 min read · Oct 23, 2025

Control de Spam para Postfix

Control de Spam para Postfix

El spam es un gran problema para cualquiera con un servidor de correo. Muchas veces, el spam va a direcciones de correo electrónico que no existen. Pero, aún así, está golpeando tu servidor incluso si no se entrega. Otras veces, la bandeja de entrada de un usuario estará desbordada con mensajes molestos sobre Viagra, prostitutas, software gratuito y cualquier otra cosa.

A continuación se presenta una solución. Es una acumulación continua de mis esfuerzos para detener el spam lo mejor que puedo. Hasta ahora, tiene una tasa de éxito del 97% con más de 20,000 correos electrónicos (spam y ham, por igual) procesados.

Sigue las instrucciones. Actualizaré/modificaré según sea necesario si las cosas parecen poco claras. No dudes en preguntar.

1) Instalar Postgrey, RRD, un analizador de registros y herramientas de gráficos.

apt-get install postgrey rrdtool mailgraph pflogsumm

Postgrey tendrá un retraso de 5 minutos por defecto en los correos electrónicos que van a tu buzón. Si esto es demasiado largo, edita el archivo /etc/default/postgrey agregando –delay=120 donde 120 son segundos.

2) Reiniciar el servidor Postgrey.

  /etc/init.d/postgrey restart

3) Editar el main.cf de Postfix.

Vamos a agregar varias cosas, incluida la configuración de Postgrey.

# Ver /usr/share/postfix/main.cf.dist para una versión comentada y más completa


# Específico de Debian: Especificar un nombre de archivo hará que la primera
# línea de ese archivo se use como el nombre. El valor predeterminado de Debian
# es /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# agregar .domain es trabajo del MUA.
append_dot_mydomain = no

# Descomentar la siguiente línea para generar advertencias de "correo retrasado"
#delay_warning_time = 4h

readme_directory = /usr/share/doc/postfix

# Parámetros TLS
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# Ver /usr/share/doc/postfix/TLS_README.gz en el paquete postfix-doc para
# información sobre cómo habilitar SSL en el cliente smtp.

myhostname = my.derekgordon.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = my.derekgordon.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::1]/128 66.118.142.78
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
html_directory = /usr/share/doc/postfix/html
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /var/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, check_policy_service inet:127.0.0.1:60000, reject_rbl_client zen.spamhaus.org, reject_rbl_client smtp.dnsbl.sorbs.net, reject_rbl_client bl.spamcop.net, reject_rbl_client combined.rbl.msrbl.net, reject_rbl_client multihop.dsbl.org, check_recipient_access regexp:/etc/postfix/spamtrap, permit
smtpd_tls_security_level = may
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
relay_domains = mysql:/etc/postfix/mysql-virtual_relaydomains.cf
relay_recipient_maps = mysql:/etc/postfix/mysql-virtual_relayrecipientmaps.cf
virtual_create_maildirsize = yes
virtual_maildir_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "El usuario que intentas alcanzar está sobre su cuota."
virtual_overquota_bounce = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf
smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-virtual_client.cf
maildrop_destination_concurrency_limit = 1
maildrop_destination_recipient_limit = 1
virtual_transport = maildrop
header_checks = regexp:/etc/postfix/header_checks
mime_header_checks = regexp:/etc/postfix/mime_header_checks
nested_header_checks = regexp:/etc/postfix/nested_header_checks
body_checks = regexp:/etc/postfix/body_checks
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
message_size_limit = 0

disable_vrfy_command = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, permit

Desde un main.cf genérico encontrado en la instalación de Debian Lenny, añadí/modifiqué las áreas en NEGRITA.

4) Crear un archivo llamado “spamtrap” en el directorio /etc/postfix/.

Esto sirve como un filtro. Si el spam se envía a esta dirección y a otras direcciones en tu máquina, se eliminará ese correo electrónico para que no llegue a otros buzones.

El archivo spamtrap se ve así:

/emailcontrol.*@derekgordon\.com/ DISCARD

Esto es regexp, así que se deben usar las barras. Mi correo electrónico de filtro es [email protected] así que edita en consecuencia y colócalo en el archivo spamtrap!!!

Nota: No crees este buzón usando ISPConfig. No hay absolutamente ninguna razón para que exista en tu servidor de correo. Es una dirección falsa destinada a atrapar spam molesto.

5) Abre local.cf para SpamAssassin y agrega el siguiente fragmento.

Será un filtro adicional diseñado para trabajar con SA más que con Postfix en general.

nano /etc/spamassassin/local.cf

Agrega lo siguiente al final:

urirhssub       URIBL_BLACK  multi.uribl.com.        A   2
body            URIBL_BLACK  eval:check_uridnsbl('URIBL_BLACK')
describe        URIBL_BLACK  Contiene una URL listada en la lista negra de URIBL
tflags          URIBL_BLACK  net
score           URIBL_BLACK  3.0
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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