SpamSnake · 15 min read · Dec 25, 2025

La Perfecta SpamSnake - Ubuntu Jeos 10.10 Maverick Meerkat - Página 4

14. KAM

vi /etc/cron.daily/kam.sh

Agrega el siguiente contenido y

chmod +x /etc/cron.daily/kam.sh
#!/bin/bash
   
 # Versión original modificada por Andrew MacLachlan ([email protected])
 # Se añadieron reinicios adicionales de MailScanner en caso de fallo inicial
 # Hizo que el script se ejecute en silencio para una operación normal (exitosa)
 # Aumentó UPDATEMAXDELAY a 900 desde 600
 
 # Inserta un retraso aleatorio hasta este valor, para esparcir las actualizaciones de virus
 # a lo largo del reloj. 1800 segundos = 30 minutos.
 # Establecer esto en 0 para deshabilitarlo.
 UPDATEMAXDELAY=0
 if [ -f /opt/MailScanner/var/MailScanner ] ; then
 . /opt/MailScanner/var/MailScanner
 fi
 export UPDATEMAXDELAY
 
 if [ "x$UPDATEMAXDELAY" = "x0" ]; then
 :
 else
 logger -p mail.info -t KAM.cf.sh Retrasando el trabajo cron hasta $UPDATEMAXDELAY segundos
 perl -e "sleep int(rand($UPDATEMAXDELAY));"
 fi
 
 # JKF Fetch KAM.cf
 #echo Obteniendo KAM.cf...
 cd /etc/mail/spamassassin
 rm -f KAM.cf
 wget -O KAM.cf http://www.peregrinehw.com/downloads/SpamAssassin/contrib/KAM.cf > /dev/null 2>&1
 if [ "$?" = "0" ]; then
 #echo Se completó y obtuvo algo
 if ( tail -10 KAM.cf | grep -q '^#.*EOF' ); then
 # echo Tuvo éxito, así que haz una copia de seguridad
 cp -f KAM.cf KAM.cf.backup
 else
 echo ERROR: No se pudo encontrar el marcador EOF
 cp -f KAM.cf.backup KAM.cf
 fi
 else
 echo Falló en completarse correctamente
 cp -f KAM.cf.backup KAM.cf
 fi
 #echo Recargando las reglas de configuración de MailScanner y SpamAssassin
 /etc/init.d/mailscanner reload > /dev/null 2>&1
 if [ $? != 0 ] ; then
 echo "La recarga de MailScanner falló - Reintentando..."
 /etc/init.d/mailscanner force-reload
 if [ $? = 0 ] ; then
 echo "La recarga de MailScanner tuvo éxito."
 else
 echo "Deteniendo MailScanner..."
 /etc/init.d/mailscanner stop
 echo "Esperando un minuto..."
 perl -e "sleep 60;"
 echo "Intentando iniciar MailScanner..."
 /etc/init.d/mailscanner start
 fi
 
 fi 

15. ScamNailer

vi /usr/sbin/update_scamnailer

y

chmod +x /usr/sbin/update_scamnailer

Nota: *El contenido está en scamnailer.doc.)

Agregalo a cron:

@daily /usr/sbin/update_scamnailer &> /dev/null #Actualizar Scamnailer

16. Firewalling the SpamSnake with Firehol

Introducción

Firehol es un configurador de firewall de filtrado de paquetes iptables con estado. Es abstracto, extensible, fácil y poderoso. Puede manejar cualquier tipo de firewall, pero lo más importante, te da los medios para configurarlo, de la misma manera que piensas en él.

Instalar Firehol

apt-get install firehol

Configuraciones de Firehol:

vi /etc/default/firehol

y cambia lo siguiente:

START_FIREHOL=YES
vi /etc/firehol/firehol.conf

y agrega lo siguiente:

version 5
   # Aceptar todo el tráfico de clientes en cualquier interfaz
   interface any internet
   protection strong
   server "icmp ping ICMP ssh http https telnet webmin dns dcc echo smtp" accept
 client all accept

Esto filtra todas las conexiones entrantes que no están relacionadas con los servicios anteriores. Si deseas ser menos cortés, puedes rechazarlas agregando lo siguiente después de ‘protection strong’: policy drop

vi /usr/sbin/get-iana

con lo siguiente y

chmod +x /usr/sbin/get-iana
#!/bin/bash
 # $Id: get-iana.sh,v 1.13 2010/09/12 13:55:00 jcb Exp $
   #
   # $Log: get-iana.sh,v $
   # Revision 1.13 2010/09/12 13:55:00 jcb
   # Actualizado para el último formato de reservas de IANA.
   #
   # Revision 1.12 2008/03/17 22:08:43 ktsaou
   # Actualizado para el último formato de reservas de IANA.
   #
   # Revision 1.11 2007/06/13 14:40:04 ktsaou
   # * mensaje de registro vacío *
   #
   # Revision 1.10 2007/05/05 23:38:31 ktsaou
   # Se añadió soporte para definiciones externas de:
   #
   # RESERVED_IPS
   # PRIVATE_IPS
   # MULTICAST_IPS
   # UNROUTABLE_IPS
   #
   # en archivos bajo el mismo nombre en /etc/firehol/.
   # Solo RESERVED_IPS es obligatorio (firehol se quejará si no está allí,
   # pero aún funcionará sin él), y también es el único archivo que firehol
   # verifica cuán antiguo es. Si tiene más de 90 días, firehol se quejará
   # nuevamente.
   #
   # Cambió el script get-iana.sh suministrado para generar el archivo RESERVED_IPS.
   # FireHOL también instruye al usuario para usar este script si el archivo está
   # faltando o es demasiado antiguo.
   #
   # Revision 1.9 2007/04/29 19:34:11 ktsaou
   # * mensaje de registro vacío *
   #
   # Revision 1.8 2005/06/02 15:48:52 ktsaou
   # Permitió que 127.0.0.1 estuviera en RESERVED_IPS
   #
   # Revision 1.7 2005/05/08 23:27:23 ktsaou
   # Actualizó RESERVED_IPS a las reservas actuales de IANA.
   #
   # Revision 1.6 2004/01/10 18:44:39 ktsaou
   # Más optimizado y reducido PRIVATE_IPS usando:
   # http://www.vergenet.net/linux/aggregate/
   #
   # El get-iana.sh suministrado usa .aggregate. si lo encuentra en la ruta.
   # (aggregate es el nombre de este programa cuando se instala en Gentoo)
   #
   # Revision 1.5 2003/08/23 23:26:50 ktsaou
   # Bug #793889:
   # Cambiar #!/bin/sh a #!/bin/bash para permitir que FireHOL funcione en sistemas que
   # bash no está vinculado a /bin/sh.
   #
   # Revision 1.4 2002/10/27 12:44:42 ktsaou
   # Prueba de CVS
   #
 #
   # Programa que descarga la asignación del espacio de direcciones IPv4 por IANA
   # y crea una lista con todos los espacios de direcciones reservados.
   #
 IPV4_ADDRESS_SPACE_URL="http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.txt"
 # El programa coincidirá con todas las filas en el archivo que comienzan con un número, tienen una barra,
   # seguida de otro número, para las cuales el siguiente patrón también coincidirá en las
   # mismas filas
   IANA_RESERVED="(RESERVED|UNALLOCATED)"
 # ¿qué filas que son coincidentes con lo anterior, para ignorar
   # (es decir, no incluirlas en RESERVED_IPS)?
   #IANA_IGNORE="(Multicast|Private use|Loopback|Local  Identification)"
   IANA_IGNORE="Multicast"
 tempfile="/tmp/iana.$$.$RANDOM"
 AGGREGATE="`which aggregate 2>/dev/null`"
   if [ -z "${AGGREGATE}" ]
   then
   AGGREGATE="`which aggregate 2>/dev/null`"
   fi
 if [ -z "${AGGREGATE}" ]
   then
   echo >&2
   echo >&2
   echo >&2 "ADVERTENCIA"
   echo >&2 "Por favor instala 'aggregate' para reducir la lista de IPs."
   echo >&2
   echo >&2
   fi
 echo >&2
   echo >&2 "Obteniendo el espacio de direcciones IPv4 de IANA, desde:"
   echo >&2 "${IPV4_ADDRESS_SPACE_URL}"
   echo >&2
 wget -O - -proxy=off "${IPV4_ADDRESS_SPACE_URL}" |\
   egrep " *[0-9]+/[0-9]+.*${IANA_RESERVED}" |\
   egrep -vi "${IANA_IGNORE}" |\
   sed -e 's:^ *\([0-9]*/[0-9]*\).*:\1:' |\
   (
 while IFS="/" read range net
   do
   if [ ! $net -eq 8 ]
   then
   echo >&2 "No se pueden manejar máscaras de red de $net bits  ($range/$net)"
   continue
   fi
 first=`echo $range | cut -d '-' -f 1`
   first=`expr $first + 0`
   last=`echo $range | cut -d '-' -f 2`
   last=`expr $last + 0`
 x=$first
   while [ ! $x -gt $last ]
   do
   # test $x -ne 127 && echo "$x.0.0.0/$net"
   echo "$x.0.0.0/$net"
   x=$[x + 1]
   done
   done
   ) | \
   (
   if [ ! -z "${AGGREGATE}" -a -x "${AGGREGATE}" ]
   then
   "${AGGREGATE}"
   else
   cat
   fi
   ) >"${tempfile}"
 echo >&2
   echo >&2
   echo >&2 "ENCONTRADOS LOS SIGUIENTES RANGOS DE IP RESERVADOS:"
   printf "RESERVED_IPS=\""
   i=0
   for x in `cat ${tempfile}`
   do
   i=$[i + 1]
   printf "${x} "
   done
   printf "\"\n"
 if [ $i -eq 0 ]
   then
   echo >&2
   echo >&2
   echo >&2 "No se encontraron IPs reservadas."
   echo >&2 "Posiblemente el formato del archivo ha cambiado, o no puedo obtener la URL."
   echo >&2
 rm -f ${tempfile}
   exit 1
   fi
   echo >&2
   echo >&2
   echo >&2 "Diferencias entre la lista obtenida y la lista instalada en"
   echo >&2 "/etc/firehol/RESERVED_IPS:"
 echo >&2 "# diff /etc/firehol/RESERVED_IPS  ${tempfile}"
   diff /etc/firehol/RESERVED_IPS ${tempfile}
 if [ $? -eq 0 ]
   then
   echo >&2
   echo >&2 "No se encontraron diferencias."
   echo >&2
 rm -f ${tempfile}
   exit 0
   fi
 echo >&2
   echo >&2
   echo >&2 "¿Te gustaría guardar esta lista en  /etc/firehol/RESERVED_IPS"
   echo >&2 "para que FireHOL la use automáticamente de ahora en adelante?"
   echo >&2
   while [ 1 = 1 ]
   do
   printf >&2 "sí o no > "
   read x
 case "${x}" in
   yes) cp -f /etc/firehol/RESERVED_IPS /etc/firehol/RESERVED_IPS.old  2>/dev/null
   cat "${tempfile}" >/etc/firehol/RESERVED_IPS || exit 1
   echo >&2 "Nuevas RESERVED_IPS escritas en  '/etc/firehol/RESERVED_IPS'."
   echo "Firehol se reiniciará ahora"
   sleep 3
   /etc/init.d/firehol restart
   break
   ;;
 no)
   echo >&2 "No se guardó nada."
   break
   ;;
 *) echo >&2 "No puedo entender '${x}'."
   ;;
 esac
   done
 rm -f ${tempfile}
vi /usr/sbin/update-iana

con el siguiente contenido y

chmod +x /usr/sbin/update-iana
#!/bin/sh
 /usr/sbin/get-iana  < /etc/firehol/get-iana-answerfile
vi /etc/firehol/get-iana-answerfile

con el siguiente contenido:

Ejecuta el script para actualizar RESERVED_IPS:

/usr/sbin/update-iana

Ahora tu servidor está configurado para aceptar solo conexiones para los servicios que permitiste.

Agregalo a cron:

@monthly /usr/sbin/update-iana &> /dev/null #Actualizar ips reservadas de firehol

17. Aplicar Destinatarios de Relay

Las siguientes instrucciones están destinadas a personas que utilizan Microsoft Exchange 2000 o Microsoft Exchange 2003.

Esta página describe cómo configurar tu puerta de enlace de correo para obtener periódicamente una lista de direcciones de correo electrónico de destinatarios válidos de tu sistema Exchange. Al hacer esto, puedes configurar tu servidor para rechazar automáticamente cualquier correo electrónico dirigido a direcciones no válidas. Esto reducirá la carga en tu servidor de exchange, ya que ya no tendrá que procesar informes de no entrega, y reducirá la carga en tu servidor postfix ya que no tendrá que realizar escaneos de spam y virus en el mensaje.

Instalar Dependencias

Instala el módulo perl Net::LDAP:

perl -MCPAN -e shell  
install Net::LDAP
vi /usr/bin/getadsmtp.pl

con lo siguiente:

#!/usr/bin/perl -T -w
   # Este script extraerá todas las direcciones SMTP de los usuarios de tu Active Directory
   # (incluyendo direcciones de correo electrónico primarias y secundarias) y las listará en el
   # formato "[email protected] OK" que Postfix usa con relay_recipient_maps.
   # Asegúrate de verificar el camino a perl arriba.
   # Esto requiere que Net::LDAP esté instalado.  Para instalar Net::LDAP, en un shell
   # escribe "perl -MCPAN -e shell" y luego "install Net::LDAP"
   use Net::LDAP;
   use Net::LDAP::Control::Paged;
   use Net::LDAP::Constant ( "LDAP_CONTROL_PAGED" );
   # Ingresa el camino/archivo para la salida
   $VALID = "/etc/postfix/relay_recipients";
   open VALID, "> $VALID" or die "NO SE PUEDE ABRIR $VALID $!";
   # Ingresa el FQDN de tus controladores de dominio de Active Directory abajo
   $dc1="domaincontroller1.example.com";
   $dc2="domaincontroller2.example.com";
   # Ingresa el contenedor LDAP para tu base de usuarios.
   # La sintaxis es CN=Users,dc=example,dc=com
   # Esto se puede encontrar instalando las Herramientas de Soporte de Windows 2000
   # y luego ejecutando ADSI Edit.
   # En ADSI Edit, expande el "Domain NC [domaincontroller1.example.com]" &
   # verás, por ejemplo, DC=example,DC=com (esta es tu base).
   # El Contenedor de Usuarios se especificará en el panel derecho como
   # CN=Users dependiendo de tu esquema (este es tu contenedor).
   # Puedes verificar esto haciendo clic en "Propiedades" de tu carpeta de usuario
   # en ADSI Edit y examinando el valor "Ruta", como:
   # LDAP://domaincontroller1.example.com/CN=Users,DC=example,DC=com
   # lo que sería $hqbase="cn=Users,dc=example,dc=com"
   # Nota:  También puedes usar solo $hqbase="dc=example,dc=com"
   $hqbase="cn=Users,dc=example,dc=com";
   # Ingresa el nombre de usuario y la contraseña para un usuario válido en tu Active Directory
   # con el nombre de usuario en la forma cn=username,cn=Users,dc=example,dc=com
   # Asegúrate de que la contraseña del usuario no expire.  Nota que este usuario
   # no requiere privilegios especiales.
   # Puedes verificar esto haciendo clic en "Propiedades" de tu usuario en
   # ADSI Edit y examinando el valor "Ruta", como:
   # LDAP://domaincontroller1.example.com/CN=user,CN=Users,DC=example,DC=com
   # lo que sería $user="cn=user,cn=Users,dc=example,dc=com"
   # Nota: También puedes usar el inicio de sesión UPN: "[email protected]"
   $user="cn=user,cn=Users,dc=example,dc=com";
   $passwd="password";
   # Conectando a los controladores de dominio de Active Directory
   $noldapserver=0;
   $ldap = Net::LDAP->new($dc1) or
   $noldapserver=1;
   if ($noldapserver == 1)  {
   $ldap = Net::LDAP->new($dc2) or
   die "Error al conectar a los controladores de dominio especificados $@ \n";
   }
   $mesg = $ldap->bind ( dn => $user,
   password =>$passwd);
   if ( $mesg->code()) {
   die ("error:", $mesg->error_text((),"\n"));
   }
   # Cuántos resultados de consulta LDAP obtener para cada ronda paginada
   # Establecer en menos de 1000 para Active Directory
   $page = Net::LDAP::Control::Paged->new( size => 990 );
   @args = ( base     => $hqbase,
   # Juega con esto para obtener objetos como Contactos, Carpetas Públicas, etc.
   # Un filtro mínimo para solo usuarios con correo electrónico sería:
   # filter => "(&(sAMAccountName=*)(mail=*))"
   filter => "(& (mailnickname=*) (| (&(objectCategory=person)
   (objectClass=user)(!(homeMDB=*))(!(msExchHomeServerName=*)))
   (&(objectCategory=person)(objectClass=user)(|(homeMDB=*)
   (msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=contact))
   (objectCategory=group)(objectCategory=publicFolder) ))",
   control  => [ $page ],
   attrs  => "proxyAddresses",
   );
   my $cookie;
   while(1) {
   # Realizar búsqueda
   my $mesg = $ldap->search( @args );
   # Filtrando resultados para atributos proxyAddresses
   foreach my $entry ( $mesg->entries ) {
   my $name = $entry->get_value( "cn" );
   # Los atributos LDAP son multivaluados, así que tenemos que imprimir cada uno.
   foreach my $mail ( $entry->get_value( "proxyAddresses" ) ) {
   # Prueba si la línea comienza con una de las siguientes líneas:
   # proxyAddresses: [smtp|SMTP]:
   # y también descarta esta cadena inicial, para que $mail sea solo la
   # dirección sin ningún otro carácter...
   if ( $mail =~ s/^(smtp|SMTP)://gs ) {
   print VALID $mail." OK\n";
   }
   }
   }
   # Solo continuar en LDAP_SUCCESS
   $mesg->code and last;
   # Obtener cookie del control paginado
   my($resp)  = $mesg->control( LDAP_CONTROL_PAGED ) or last;
   $cookie    = $resp->cookie or last;
   # Establecer cookie en el control paginado
   $page->cookie($cookie);
   }
   if ($cookie) {
   # Tuvimos una salida anormal, así que dejemos que el servidor sepa que no queremos más
   $page->cookie($cookie);
   $page->size(0);
   $ldap->search( @args );
   # También sería una buena idea morir infeliz e informar al OP en este punto
   die("Consulta LDAP no exitosa");
   }
   # Agregar restricciones adicionales, usuarios, etc. al archivo de salida abajo.
   #print VALID "[email protected] OK\n";
   #print VALID "[email protected] 550 Usuario desconocido.\n";
   #print VALID "domain3.com 550 Usuario no existe.\n";
   close VALID;

A continuación, establece los permisos en el archivo para permitir que se ejecute:

chmod +x /usr/bin/getadsmtp.pl

Edita el archivo para personalizarlo para tu dominio específico. Dado que el archivo es de solo lectura, necesitarás usar :w! para guardar el archivo en vi.

  1. Establece $dc1 y $dc2 a los nombres de dominio completamente calificados o direcciones IP de 2 de tus controladores de dominio.
  2. Establece $hqbase igual al camino LDAP al contenedor o unidad organizativa que contiene las cuentas de correo electrónico para las que deseas obtener las direcciones de correo electrónico.
  3. Establece $user y $passwd para indicar qué cuenta de usuario debe usarse para acceder a esta información. Esta cuenta solo necesita ser miembro del dominio, por lo que sería una buena idea configurar una cuenta específicamente para esto.

Intenta ejecutar el script. Si funciona correctamente, creará /etc/postfix/relay_recipients.

Nota que si tu servidor postfix está separado de tus controladores de dominio activos por un firewall, necesitarás abrir el puerto TCP 389 desde el servidor postfix a los ADCs.

getadsmtp.pl

En este punto, es posible que desees editar /etc/postfix/relay_recipients y eliminar cualquier dirección de correo electrónico no deseada, ya que este script importa todo.

Postmap el archivo para crear la base de datos hash

postmap /etc/postfix/relay_recipients  
postfix reload

Finalmente, es posible que desees configurar un trabajo cron para actualizar y construir periódicamente el archivo /etc/postfix/relay_recipients.db. Puedes configurar un script llamado /usr/bin/update-relay-recipients.sh: (Opcional)

vi /usr/bin/update-relay-recipients.sh

con lo siguiente y

chmod +x /usr/bin/update-relay_recipients.sh
#!/bin/sh
/usr/bin/getadsmtp.pl
postmap /etc/postfix/relay_recipients
postfix reload

No olvides asegurarte de que lo siguiente esté en tu archivo /etc/postfix/main.cf:

relay_recipient_maps = hash:/etc/postfix/relay_recipients

Agregalo a cron:

30 2 * * * /usr/bin/update-relay-recipients.sh #sincronizar relay_recipients con direcciones de Active Directory

:Nota que este trabajo cron se ejecutará todos los días a las 2:30 AM para actualizar el archivo de base de datos. Es posible que desees ejecutar el tuyo con más frecuencia o no, dependiendo de cuán a menudo agregues nuevos usuarios de correo electrónico a tu sistema.

18. Instalar Webmin (Opcional):

apt-get install perl libnet-ssleay-perl libauthen-pam-perl libio-pty-perl apt-show-versions  
cd /tmp && wget http://mirrors.kernel.org/ubuntu/pool/universe/libm/libmd5-perl/libmd5-perl_2.03-1_all.deb  
dpkg -i libmd5-perl_2.03-1_all.deb  
wget http://downloads.sourceforge.net/project/webadmin/webmin/1.520/webmin_1.520_all.deb  
dpkg --install webmin_1.520_all.deb

19. Agregar automáticamente un descargo de responsabilidad a los correos electrónicos salientes con alterMIME (Opcional)

Este tutorial muestra cómo instalar y usar alterMIME. alterMIME es una herramienta que puede agregar automáticamente un descargo de responsabilidad a los correos electrónicos. En este artículo explicaré cómo instalarlo como un filtro de Postfix en Ubuntu.

Instalando alterMIME:

apt-get install altermime

A continuación, creamos el filtro de usuario con el directorio home /var/spool/filter - alterMIME se ejecutará como ese usuario:

useradd -r -c "Filtros de Postfix" -d /var/spool/filter filter  
mkdir /var/spool/filter  
chown filter:filter /var/spool/filter  
chmod 750 /var/spool/filter

Después creamos el script /etc/postfix/disclaimer que ejecuta alterMIME. El paquete alterMIME de Ubuntu viene con un script de muestra que podemos simplemente copiar a /etc/postfix/disclaimer:

cp /usr/share/doc/altermime/examples/postfix_filter.sh /etc/postfix/disclaimer  
chgrp filter /etc/postfix/disclaimer  
chmod 750 /etc/postfix/disclaimer

Ahora, el problema con este script es que no distingue entre correos electrónicos entrantes y salientes - simplemente agrega un descargo de responsabilidad a todos los correos. Típicamente, deseas descargos de responsabilidad solo para correos salientes, y aún así, no para todas las direcciones de remitente. Por lo tanto, he modificado un poco el script /etc/postfix/disclaimer - llegaremos a eso en un minuto.

Ahora, creamos el archivo /etc/postfix/disclaimer_addresses que contiene todas las direcciones de correo electrónico de remitentes (una por línea) para las cuales alterMIME debería agregar un descargo de responsabilidad:

vi /etc/postfix/disclaimer_addresses
[email protected]
[email protected]
[email protected]

Ahora abrimos /etc/postfix/disclaimer y lo modificamos de la siguiente manera (he marcado las partes que he cambiado):

vi /etc/postfix/disclaimer
#!/bin/sh
# Localiza estos.
INSPECT_DIR=/var/spool/filter
SENDMAIL=/usr/sbin/sendmail
####### Cambiado del script original #######
DISCLAIMER_ADDRESSES=/etc/postfix/disclaimer_addresses
####### Cambiado del script original FIN #######
# Códigos de salida de 
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
# Limpia cuando termines o al abortar.
trap "rm -f in.$$" 0 1 2 3 15
# Comienza a procesar.
cd $INSPECT_DIR || { echo $INSPECT_DIR no existe; exit
$EX_TEMPFAIL; }
cat >in.$$ || { echo No se puede guardar el correo en el archivo; exit $EX_TEMPFAIL; }
####### Cambiado del script original #######
# obtener dirección de From
from_address=`grep -m 1 "From:" in.$$ | cut -d "<" -f 2 | cut -d ">" -f 1`
if [ `grep -wi ^${from_address}$ ${DISCLAIMER_ADDRESSES}` ]; then
  /usr/bin/altermime --input=in.$$ \
                   --disclaimer=/etc/postfix/disclaimer.txt \
                   --disclaimer-html=/etc/postfix/disclaimer.txt \
                   --xheader="X-Copyrighted-Material: Por favor visita http://www.company.com/privacy.htm" || \
                    { echo Contenido del mensaje rechazado; exit $EX_UNAVAILABLE; }
fi
####### Cambiado del script original FIN #######
$SENDMAIL "$@" 

A continuación, necesitamos el archivo de texto /etc/postfix/disclaimer.txt que contiene nuestro texto de descargo de responsabilidad. El paquete alterMIME de Ubuntu viene con un texto de muestra que podemos usar por ahora (por supuesto, puedes modificarlo si lo deseas):

cp /usr/share/doc/altermime/examples/disclaimer.txt /etc/postfix/disclaimer.txt

Finalmente, tenemos que decirle a Postfix que debe usar el script /etc/postfix/disclaimer para agregar descargos de responsabilidad a los correos electrónicos salientes. Abre /etc/postfix/master.cf y agrega -o content_filter=dfilt: a la línea smtp:

vi /etc/postfix/master.cf
#
# Archivo de configuración del proceso maestro de Postfix.  Para detalles sobre el formato
# del archivo, consulta la página del manual master(5) (comando: "man 5 master").
#
# ========================================================================== 
# tipo de servicio  privado no privilegiado  chroot  despertar  maxproc comando + args
#               (sí)   (sí)   (sí)   (nunca) (100)
# ========================================================================== 
smtp      inet  n       -       -       -       -       smtpd
   -o content_filter=dfilt:
[...] 

Al final del mismo archivo, agrega las siguientes dos líneas:

[...] 
dfilt     unix    -       n       n       -       -       pipe
    flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient} 

Reinicia Postfix después:

/etc/init.d/postfix restart

¡Eso es todo! Ahora se debería agregar un descargo de responsabilidad a los correos electrónicos salientes enviados desde las direcciones listadas en /etc/postfix/disclaimer_addresses.

20. Capturas de pantalla

Felicitaciones

Ahora deberías tener un SpamSnake completamente funcional con todas las novedades :-)

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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