Guía Gentoo para el filtrado de correo
1.
Introducción
Esta guía describe paso a paso cómo instalar una pasarela para el
filtro de correo no deseado y virus. Es un alternativa simple de
adoptar para soluciones de un servidor.
Un vistazo general
Este documento describe cómo configurar una pasarela para el filtro de
correo no deseado con dominios múltiples. Este servidor está diseñado
para funcionar delante del servidor que realmente contiene las cuentas
de correo, como por ejemplo, Microsoft Exchange o Lotus Notes.
En esta configuración se han elegido aplicaciones con un buen registro
de seguridad y archivos de configuración fáciles de entender. El MTA
(siglas en inglés de Agente de Transferencia de Correo) es postfix que
tiene un buen registro de seguridad y es muy fácil de configurar
correctamente. Postfix normalmente oirá al puerto 25 por correo
entrante. Al momento de recibirlo lo enviará a Amavisd-new en el
puerto 10024. Esta aplicación filtrará el correo mediante distintas
reglas antes de reenviarlo a Postfix en el puerto 10025, que a su vez
enviará el correo al próximo servidor de correo.
Amavisd-new es una armazón para el filtrado de contenido utilizada
para ayudar a las aplicaciones a filtrar virus y correo no deseado. En
esta configuración utilizaremos dos aplicaciones auxiliares, ClamAV
para el filtro de correo con virus y Spamassassin para el filtrado de
correo no deseado. El mismo Spamassassin puede funcionar como otra
capa de infraestructura para el filtrado de contenido y utilizar
aplicaciones auxiliares como Vipul's Razor2 y DCC.
A diferencia de otras tecnologías contra el correo no deseado como
RBLs, Spamassassin no rechaza ni acepta un correo simplemente en base
a una sola prueba. Use varias pruebas internas y aplicaciones
auxiliares externas para calcular el puntaje spam de cada correo que
revisa. Este puntaje se basa en los siguientes tests:
- Filtrado Bayesiano
- Reglas estáticas basadas en expresiones regulares
- Redes distribuidas y colaborativas:
La primera parte (capítulos 1 al 4) de la guía describe la
configuración básica de la pasarela de filtro de correo. Los
siguientes capítulos pueden ser implementados individualmente sin
dependencia entre ellos. Esos capítulos describen cómo:
-
configurar carpetas especiales IMAP (siglas en inglés de Protocolo
de Acceso Interactivo de Correo) para el aprendizaje del filtro
Bayesiano y para el envío de falsos positivos.
-
configurar listas grises con Postfix.
-
configurar amavisd-new para que utilice MySQL como motor para las
preferencias de los usuarios.
-
configurar Spamassassin para que utilice MySQL como motor para
datos Bayesianos y AWL.
Nota:
Las carpetas IMAP utilizarán el formato maildir. Tener cada correo en
una carpeta separada hace su manejo mucho más simple. Si está
utilizando mbox le propongo que le de una oportunidad a maildir. Si
no está utilizando maildir actualmente, haga emerge de las herramientas
necesarias con emerge courier-imap.
|
Una quinta parte planeada a futuro contendrá varios consejos sobre
desempeño y otras cosas que quizás le gustaría saber (correr en un
ambiente chroot, restricciones del postfix, etc.).
Nota:
Delegar responsabilidades a terceros tiene sus riesgos. Tiene que
conocer y confiar en estas terceras partes. En esta configuración la
decisión de poner en cuarentena correos con virus se basa solo en una
aplicación de terceros. Usando el sistema de calificación de
Spamassassin, la decisión de detener correos no es realizada por una
sola autoridad, excepto quizás por las reglas estáticas del Spamassassin.
|
Aviso:
Al rechazar correo no deseado en el nivel del MTA debe tener mucho
cuidado en elegir el RBL (siglas en inglés de Lista Negra en Tiempo
Real) que utilizará, por ejemplo SpamCop es un mal RBL para ser
implementado en el nivel MTA, ya que causará que se den falsos
positivos porque algunas veces sus reglas son muy agresivas. Mayor
información en
Las Listas Negras en Tiempo Real son malas (en inglés) y
El problema Spam: Moviéndose más allá de los RBLs (en inglés).
|
Preparándonos
Antes de empezar, asegúrese de que tiene una instalación de Postfix
funcionando donde pueda enviar y recibir correos, también necesita
un servidor de correo. Si no tiene experiencia en configurar Postfix
podría resultar rápidamente muy complicado si se ve todo de golpe. Si
necesita ayuda puede encontrarla en la excelente Guía de
Alojamiento de Correo Virtual con Postfix en la página de
Documentación Gentoo.
2.
Instalando los programas necesarios
Empezaremos por instalar los programas más importantes: Amavisd-new,
Spamassassin y ClamAV.
Listado de Código 2.1: Instalar Amavis, Spamassassin y Clamav |
# emerge amavisd-new spamassassin clamav
|
Nota:
Como se mencionó previamente ya debe tener una instalación de
postfix funcionando en la computadora. Básicamente eso no debe
ser más que emerge postfix y tener conocimientos básicos
del funcionamiento de Postfix.
|
Configurar el DNS
Nota:
Si no está configurando un servidor pasarela sino que tiene las
carpetas de correo en el mismo servidor, entonces solo necesita crear
los registros MX.
|
Mientras los programas están siendo instalados, inicie otra consola y
cree los registros DNS necesarios.
Comience creando un registro MX para la pasarela de correo y un
registro A para el próximo destino.
Listado de Código 2.2: Configurar el DNS |
MX 10 mailgateway.mydomain.tld.
mailgateway A mgw.ip.add.here
mail A ms.ip.add.here
|
Nota:
Algunos proveedores ADSL bloquean el puerto 25 y le obligan a pasar el
correo a través de alguno de sus servidores. Normalmente tiene que
crear un registro MX secundario como
MX 20 backup-mx.some-isp.tld
|
Abrir el cortafuegos
Además de permitir el trafico normal de correo, tiene que permitir a
un par de servicios atravesar el cortafuegos para que la red pueda
comprobar la comunicación con los servidores.
| Aplicación |
Protocolo |
Puerto |
| DCC |
UDP |
6277 |
| Razor(ping de salida) |
TCP |
7 |
| Razor |
TCP |
2703 |
Razor usa pings para descubrir que servidores tiene más cerca.
Configurar Postfix
Primero debemos decirle a postfix que escuche al puerto 10025 y
así salvamos la mayoría de las restricciones que pueden haber sido
aplicadas a la instancia de postfix que escucha al puerto
25. Además, nos aseguramos que solo atienda conexiones locales en el
puerto 10025. Para lograr esto añadimos a
/etc/postfix/master.cf lo siguiente:
Listado de Código 2.3: Modificar el archivo master.cf |
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
127.0.0.1:10025 inet n - 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 smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
|
Nota:
La linea smtp-amavis especifica que un máximo de dos procesos
pueden correr en cualquier momento. Si necesita una concurrencia
mayor ajuste este número a sus necesidades. Recuerde que debe ser
igual al número de $max_servers= en amavisd.conf
Tenga en cuenta que amavisd-new consume bastante memoria y
por lo tanto aumentar demasiado el número de procesos puede consumir
toda la memoria y provocar que se utilice memoria swap lo cual puede
disminuir notoriamente el desempeño de su sistema.
|
Nota:
Si quiere rechazar el correo no deseado temprano en el proceso,
puede usar el método Before-Queue (proxy) en vez del método de
filtro. Si descomenta las tres lineas tendrá que configurar
content_filter en main.cf. Este no es un método
recomendado en servidores con gran tráfico, ya que el número de
conexiones concurrentes está limitado por el número de instancias de
amavisd.
|
Aviso:
El método Before-Queue(proxy) no está todavía apropiadamente probado.
|
Nota:
Si, por alguna razón, quiere enviar correo desde esta computadora y
no quiere que sea escaneado, añada otra instancia de postfix
descomentando las dos últimas lineas y substituyendo con el IP
apropiado.
|
El archivo master.cf le indica al programa maestro de
postfix como correr cada uno de los procesos individuales
postfix. Mayor información con man 8 master.
A continuación, necesitamos que la instancia principal de
postfix escuche al puerto 25 para filtrar el correo a través de
amavisd-new que escucha por el puerto 10024.
También necesitamos configurar el siguiente destino del correo. Hay
que indicarle a Postfix que filtre el correo a través de un filtro de
contenido externo y habilitar explícitamente el direccionamiento para
que Postfix sepa a donde enviar el correo.
Listado de Código 2.4: Modificar /etc/postfix/main.cf |
biff = no
empty_address_recipient = MAILER-DAEMON
queue_minfree = 120000000
content_filter = smtp-amavis:[127.0.0.1]:10024
transport_maps = hash:/etc/postfix/transport
relay_domains = $transport_maps
|
Postfix tiene muchas opciones configuradas en
main.cf. Para mayor información acerca del archivo
consulta man 5 postconf o en linea Parámetros de
configuración de Postfix.
El formato de transport es el de un archivo hash de
Postfix normal. El correo al dominio en la izquierda es enviado al
destinatario en el lado derecho.
Listado de Código 2.5: /etc/postfix/transport |
mydomain.tld smtp:mail.mydomain.tld
|
Después de haber editado este archivo, necesitamos ejecutar la
orden postmap. Postfix no puede leer este archivo así que
debemos convertirlo al formato adecuado con postmap
/etc/postfix/transport. Esto crea el archivo
/etc/postfix/transport.db. No hay necesidad de cargar de
nuevo Postfix, ya que lee los cambios de manera automática.
Nota:
Si el siguiente destino en el servidor de correo no escucha al puerto
SMTP estándar: 25, puede indicarle a postfix que use un cierto número
de puerto, como:
smtp:mail.mydomain.tld:25000.
|
Si sus primeros intentos de enviar un correo resultan en estos
rebotando, es probable que haya cometido un error de configuración
en algún lugar. Intente activar de forma temporal soft_bounce
mientras que soluciona sus problemas de configuración. Esto
impide que postfix rebote los correos por errores de entrega al
tratarlos como errores temporales. Postfix mantiene los mensajes en
la cola de correo hasta que soft_bounce sea desactivado o
eliminado.
Listado de Código 2.6: Activar soft_bounce |
# postconf -e "soft_bounce = yes"
# /etc/init.d/postfix reload
|
Una vez que tenga su configuración funcionando de manera adecuada,
asegúrese de desactivar o eliminar soft_bounce y recargar
postfix.
Configurar Amavisd-new
Amavisd-new es utilizada para manejar todos los filtrados y le
permite utilizar distintas tecnologías juntas de manera sencilla.
Al momento de recibir la notificación de un correo, va a extraerlo,
filtrarlo a través de distintos filtros personalizables, manejar
listas blancas y negras, filtrar el correo a través de escáneres de
virus y finalmente entregarlo a Spamassassin.
El mismo amavisd-new tiene varias características extras:
-
identifica archivos adjuntos peligrosos y tiene políticas para manejarlos
-
políticas por usuario, por dominio y globales para:
- listas blancas
- listas negras
- umbrales para la calificación de spam
- políticas para el correo no deseados y los virus
Aparte de postfix y freshclam ejecutaremos todas las
demás aplicaciones como el usuario amavis.
Edite las lineas siguientes en /etc/amavisd.conf
Listado de Código 2.7: Editar /etc/amavisd.conf |
$mydomain = 'example.com';
$inet_socket_bind = '127.0.0.1';
$forward_method = 'smtp:127.0.0.1:10025';
$notify_method = $forward_method;
$virus_admin = "virusalert\@$mydomain";
$sa_tag_level_deflt = -100;
$sa_tag2_level_deflt = 5;
$sa_kill_level_deflt = $sa_tag2_level_deflt;
$sa_dsn_cutoff_level = 10;
$final_virus_destiny = D_DISCARD; # (defaults to D_DISCARD)
$final_banned_destiny = D_DISCARD; # (defaults to D_BOUNCE)
$final_spam_destiny = D_DISCARD; # (defaults to D_BOUNCE)
|
Nota:
Con esta linea configura la calificación de correo no deseado de
Spamassasin a 5 $sa_tag2_level_deflt = 5;. Esto podría ser algo
bajo. Como se habrá dado cuenta, el valor por defecto de Amavisd-new
es 6.3. Si no quiere ver ningún correo no deseado en sus
carpetas de correo elija 5, pero si no quiere lidiar con
falsos positivos elija 6.3.
|
Cree un directorio para poner los correos con virus en cuarentena, ya
que no queremos que estos lleguen a los usuarios.
Listado de Código 2.8: Crear un directorio para cuarentena |
# mkdir /var/amavis/virusmails
# chown amavis:amavis /var/amavis/virusmails
# chmod 750 /var/amavis/virusmails
|
Nota:
Amavisd-new ofrece políticas de refinamiento más avanzadas utilizando
un banco de políticas.
|
Configurar ClamAV
Como escáner de virus utilizamos ClamAV, ya que tiene un ratio de
detección bastante bueno comparable con las opciones comerciales, es
además rápido y Open Source. Nosotros adoramos los registros, así que
haga que clamd guarde el registro utilizando syslog y
activando el modo detallado. También, no se olvide de ejecutar
clamd como root. Ahora edite /etc/clamd.conf
Listado de Código 2.9: Editar /etc/clamd.conf |
LogSyslog
LogVerbose
LogFacility LOG_MAIL
PidFile /var/run/amavis/clamd.pid
LocalSocket /var/amavis/clamd
StreamMaxLength 10M
User amavis
ScanMail
ScanArchive
|
Nota:
No se olvide de quitar la directiva de ejemplo para que ClamAV funcione.
|
ClamAV viene con el demonio freshclam dedicado a revisar
periódicamente las actualizaciones en las firmas de virus. En ves de
actualizar las firmas de virus dos veces al día, haremos que
freshclam las actualice cada dos horas.
Listado de Código 2.10: Editar /etc/freshclam.conf |
LogSyslog
LogVerbose
DatabaseOwner clamav
Checks 12
DatabaseMirror db.XY.clamav.net
|
Arranque clamd con freshclam utilizando el guión de
inicio modificando /etc/conf.d/clamd
Listado de Código 2.11: Modificar /etc/conf.d/clamd |
START_CLAMD=yes
FRESHCLAM_OPTS="-d"
|
Al menos modifique amavisd.conf con la nueva ubicación
del socket.
Listado de Código 2.12: Modificar /etc/amavisd.conf |
['ClamAV-clamd',
\&ask_daemon, ["CONTSCAN {}\n", "/var/amavis/clamd"],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
|
Aviso:
NO modifique el $unix_socketname al menos que sepa lo que
está haciendo.
|
Configurar Vipul's Razor
Razor2 es una red colaborativa y distribuida para la suma de
verificación del correo no deseado. Instálelo con emerge razor
y cree los archivos de configuración necesarios. Haga esto esto al
ejecutar como el usuario amavis: su -amavis y
razor-admin -create
Listado de Código 2.13: Crear los archivos de configuración necesarios |
# emerge razor
# usermod -s /bin/bash amavis
# su - amavis
$ razor-admin -create
$ exit
# usermod -s /bin/false amavis
|
Configurar la Central de Sumas de Control Distribuidas (Distributed Checksum Clearinghouse o dcc)
Al igual que Razor2, dcc es una red distribuida y colaborativa para la
suma de verificación del correo no deseado. Su filosofía se basa en
contar el número de destinatarios de un mail identificando cada correo
con una suma de verificación.
Listado de Código 2.14: Instalar DCC |
# emerge dcc
|
Configurar Spamassassin
Amavis utiliza directamente las librerías Perl de Spamassassin así que
no hay necesidad de iniciar el servicio. Pero esto también trae
confusión y a que algunas preferencias modificadas en
/etc/mail/spamassassin/local.cf son sobreescritas por
opciones en /etc/amavisd.conf.
Listado de Código 2.15: Crear /etc/mail/spamassassin/local.cf |
use_bayes 1
skip_rbl_checks 0
ok_languages da en no sv
ok_locales en
bayes_path /var/amavis/.spamassassin/bayes
|
Nota:
Con Spamassassin versión 3.1 tiene que activar DCC, Razor2 eliminado
los comentarios de las líneas correspondientes en
v310.pre
|
Nota:
Puede encontrar inspiración para su archivo local.cf
probando el
Generador de
configuración de SpamAssassin.
|
Nota:
Quizás también quiera activar las opciones ok_languages y
ok_locales.
|
3.
Toda buena regla también tiene buenas excepciones
Una vez que el correo realmente empiece a pasar a través de esta
pasarela de correo quizás se de cuenta que la configuración actual no
es perfecta. Tal vez a algunos de sus clientes les gusta recibir
correos que otros no. Puede crear listas blancas/listas negras para
los remitentes de los correos de una manera muy sencilla. Descomente
la siguiente línea en amavisd.conf.
Listado de Código 3.1: Modificar amavisd.conf para que realice una calificación global |
read_hash("/var/amavis/sender_scores_sitewide"),
|
En el archivo sender_scores_sitewide colocas la dirección
de correo completa o solo las partes del dominio junto con una
calificación positiva/negativa ha añadir a la calificación de correo no
deseado.
Listado de Código 3.2: Ejemplo de una lista blanca |
postmaster@example.net -3.0
.example.net 1.0
|
Nota:
Revise el archivo /etc/amavisd.conf para más ejemplos.
|
Nota:
Colocar estas direcciones fuera de amavisd.conf es una
solución más limpia y segura.
|
Nota:
Alternativamente, puede hacer estas especificaciones en el archivo de
configuración /etc/mail/spamassassin/local.cf pero pienso
que es más claro si lo hace en /etc/amavisd.conf.
|
Nota:
En un capítulo más adelante mostraré como implementar políticas por
usuario utilizando MySQL.
|
Hasta implementar un mejor método, puede añadir lo siguiente a
amavisd.conf para evitar la revisión de correo no deseado
para los buzones de postmaster y abuse
Listado de Código 3.3: Saltar los filtros de spam para todos los correos de postmaster y abuse |
map { $bypass_spam_checks{lc($_)}=1 } (qw(
postmaster@
abuse@
));
|
Importante:
Mientras estamos en esto nunca debemos descartar
automáticamente correos de las cuentas postmaster o
abuse. Mira en RFC 2142 NOMBRES DE BUZONES
PARA SERVICIOS COMUNES, ROLES Y FUNCIONES. De otra manera sus
dominios pueden quedar registrados en algunas de las malévolas listas
de rfc-ignorant.org.
|
4.
Añadir más reglas
Si quiere utilizar más reglas ofrecidas por los Ninjas SARE en el
Emporio de Reglas de
SpamAssassin, puede añadirlas y actualizarlas fácilmente
utilizando el mecanismo sa-update incluido en Spamassassin.
Se puede encontrar Una breve guía para el uso de conjuntos de reglas
SARE con sa-update
aquí.
5.
Probar y realizar los últimos retoques
Probar la configuración
Antes de iniciar freshclam puede verificar si funciona manualmente.
Listado de Código 5.1: Probar freshclam |
# freshclam
ClamAV update process started at Sun May 2 09:13:41 2004
Reading CVD header (main.cvd): OK
Downloading main.cvd [*]
main.cvd updated (version: 22, sigs: 20229, f-level: 1, builder: tkojm)
Reading CVD header (daily.cvd): OK
Downloading daily.cvd [*]
daily.cvd updated (version: 298, sigs: 1141, f-level: 2, builder: diego)
Database updated (21370 signatures) from database.clamav.net (193.1.219.100).
|
Ahora que ha actualizado las definiciones de los virus, puede estar
seguro de que freshclam.conf funciona correctamente.
Prueba freshclam y amavisd desde los correos de prueba de cli y
amavisd. Inicia clamd y amavis con las siguientes
órdenes:
Listado de Código 5.2: Iniciar amavisd y clamd y recargar la configuración de postfix |
# /etc/init.d/clamd start
# /etc/init.d/amavisd start
# /etc/init.d/postfix reload
|
Si todo a salido como debe postfix ahora estará escuchando por
correos en el puerto 24 y por correos reinyectados en el puerto
10024. Para verificar que es así, revise el registro.
Listado de Código 5.3: Resvisar los registros |
# tail -f /var/log/mail.log
|
Nota:
Dependiendo de la configuración de sus registros, la ruta correcta
sería /var/log/messages.
|
Si ningún mensaje extraño aparece en el registro, es hora para una
nueva prueba.
Use netcat para conectarse manualmente a amavisd en
el puerto 10024 y postfix en el puerto 10025.
Nota:
Netcat puede ser utilizado como un reemplazo avanzado de
telnet. Instálelo con emerge netcat.
|
Nota:
Por alguna razón desconocida no se puede completar la inyección manual
de correo a amavisd con netcat. Use telnet en
cambio.
|
Listado de Código 5.4: Comprobación manual de que amavisd y postfix están escuchando a los nuevos puertos |
# nc localhost 10024
220 [127.0.0.1] ESMTP amavisd-new service ready
nc localhost 10025
220 example.com ESMTP Postfix
|
Nota:
Si quiere ver la salida completa de amavisd-new, ejecute amavisd
debug-sa como el usuario amavis y envíe un correo. Para que
este método funcione tendrá que cambiar el intérprete de comandos por
defecto en /etc/passwd
|
Añada amavisd y clamd al nivel de ejecución default.
Listado de Código 5.5: Añadir amavisd y clamd al nivel de ejecución default |
# rc-update add clamd default
# rc-update add amavisd default
|
Nota:
No añadimos spamd al nivel de ejecución por defecto y que
amavisd utiliza las librerías Perl de Spamassassin
directamente.
|
Nota:
Quizás halla notado las siguientes lineas en su registro:
Net::Server: Couldn't POSIX::setuid to ... []. De acuerdo al
LEEME de
amavis chroot, si el proceso UID permanece en 0 (root),
el programa terminará, de otra forma considera el mensaje simplemente
informativo. Esto es porque POSIX::setuid() regresa la cadena
0 but true.
|
Importante:
Si activó la posibilidad de iniciar sesión para amavis, no olvide
redefinir el intérprete de comandos en /etc/passwd a
/bin/false.
|
6.
Autoaprendizaje y apartar emails
Crear el usuario spamtrap
Cree la cuenta spamtrap y los directorios.
Listado de Código 6.1: Crear la cuenta spamtrap |
# useradd -m spamtrap
# maildirmake /home/spamtrap/.maildir
# chown -R spamtrap:spamtrap /home/spamtrap/.maildir
# passwd spamtrap
|
Si quiere revisar manualmente algunos de los correos para asegurarse
de no tener falsos positivos puede usarla siguiente receta
de procmail para desviar el correo no deseado encontrado hacia
distintas carpetas de correo.
Crear .procmailrc
Listado de Código 6.2: Crear /home/spamtrap/.procmailrc |
MAILDIR=$HOME/.maildir
SPAM_FOLDER=$MAILDIR/.spam-found/
LIKELY_SPAM_FOLDER=$MAILDIR/.likely-spam-found/
:0:
* ^X-Spam-Status: Yes
* ^X-Spam-Level: \*\*\*\*\*\*\*
$SPAM_FOLDER
:0:
* ^X-Spam-Status: Yes
$LIKELY_SPAM_FOLDER
:0
*
./
|
Aviso:
Si su servidor de correo va a recibir una gran cantidad de correo NO
se recomienda el uso de la receta likely-spam. En cambio
configure $sa_tag2_level_deflt lo suficientemente alto como
para evitar falsos positivos y que los filtre directamente
a $SPAM_FOLDER.
|
Nota:
Si todavía no ha instalado procmail, hágalo con emerge
procmail.
|
Ahora, hay que asegurar que Postfix utilice procmail para
entregar el correo.
Listado de Código 6.3: Modificar /etc/postfix/main.cf |
mailbox_command = /usr/bin/procmail -a "DOMAIN"
|
Crear los buzones
Ahora crearemos los directorios compartidos por ham y spam.
Listado de Código 6.4: Crear los buzones necesarios |
# maildirmake /var/amavis/.maildir
# maildirmake -S /var/amavis/.maildir/Bayes
# maildirmake -s write -f spam /var/amavis/.maildir/Bayes
# maildirmake -s write -f ham /var/amavis/.maildir/Bayes
# maildirmake -s write -f redeliver /var/amavis/.maildir/Bayes
|
Amavisd-new necesita ser capaz de leer estos archivos de la misma
manera que todos los usuarios. Por lo tanto, necesitamos añadir todos
los usuarios relevantes al grupo mailuser junto con amavis.
Listado de Código 6.5: Configurar los permisos necesarios |
# groupadd mailusers
# usermod -G mailusers spamtrap
# chown -R amavis:mailusers /var/amavis/.maildir/
# chown amavis:mailusers /var/amavis/
# chmod -R 1733 /var/amavis/.maildir/Bayes/
# chmod g+rx /var/amavis/.maildir/
# chmod g+rx /var/amavis/.maildir/Bayes/
|
Aviso:
Esto garantiza que los miembros del grupo mailusers tengan
acceso al correo de amavis
|
Eso permite que los directorios spam y ham pueden ser leídos pero no
modificados. De esta manera los usuarios pueden enviar sus ham sin que
nadie más pueda leerlos.
Luego ejecute la siguiente orden como el usuario spamtrap:
Listado de Código 6.6: Añadir los directorios compartidos a los buzones de los usuarios |
$ maildirmake --add Bayes=/var/amavis/.maildir/Bayes $HOME/.maildir
|
Nota:
Tenemos que darle al grupo los permisos de lectura en el
directorio Bayes de manera que el cliente de correo pueda
ver los subdirectorios utilizados por IMAP.
|
Añadir los trabajos programados
Ahora ejecute crontab -u amavis -e para editar el crontab de
manera que se active el aprendizaje automático del filtro Bayesiano
cada hora.
Listado de Código 6.7: amavis crontab |
0 * * * * /usr/bin/sa-learn --spam /var/amavis/.maildir/Bayes/.spam/{cur,new} \
> /dev/null 2>&1
0 * * * * /usr/bin/sa-learn --ham /var/amavis/.maildir/Bayes/.ham/{cur,new} > \
/dev/null 2>&1
|
Nota:
amavis necesita ser miembro del grupo cron para ejecutar
los trabajos.
|
Nota:
Parece que los buzones compartidos harán que sa-lern examine
todos los mensajes dos veces. Esto no debería ser un problema. La
salida también mostrará que el máximo de mensajes de los cuales se
aprende es la mitad o menos de los examinados.
|
Modificar amavisd.conf
Ahora, modifique amavis para que redireccione el correo no deseado a la
cuenta spamtrap y se quede con los encabezados.
Listado de Código 6.8: Modificar /etc/amavisd.conf |
$spam_quarantine_to = "spamtrap\@$myhostname";
|
Limpieza
No queremos guardar el correo para siempre, así que
utilizaremos tmpwatch para limpiarlo regularmente. Instálelo
con emerge tmpwatch. Únicamente el root puede
ejecutar tmpwatch así que necesitamos editar el crontab de él.
Listado de Código 6.9: Modificar el crontab de root |
15 0 * * * /usr/sbin/tmpwatch -c -f -d --quiet 168 /var/amavis/virusmails/
15 0 * * * /usr/sbin/tmpwatch -c -f -d --quiet 168 /var/amavis/.maildir/Bayes/
|
7.
Listas Grises
Introducción
Las listas grises son una de las nuevas armas en el arsenal de lucha
contra el correo no deseado. Como el nombre lo implica, son muy
parecidas a las listas blancas y a las listas negras. Cada vez que
un servidor de correo desconocido intenta enviar un correo, este es
rechazado con el mensaje try again later (intente de nuevo más
tarde). Esto implica que el correo es demorado, pero también que los
estúpidos spam bots que no implementan el protocolo RFC descartarán
el correo y no volverán a intentarlo jamás. Con el tiempo los spam
bots probablemente se adaptarán, sin embargo esto dará tiempo a
otras tecnologías para que identifiquen el correo no deseado.
Nota:
Si su proveedor ISP bloquea todo el tráfico entrante por el puerto 25
y le envía todo el correo a través de su propio servidor de correo,
las listas grises no funcionarán.
|
Postfix 2.1 viene con un simple servidor de políticas de listas grises
en Perl que implementa el esquema. Sin embargo, cuando la partición
que alberga la base de datos de la lista gris se queda sin espacio,
los resultados son impredecibles. Hay una versión mejorada que no
sufre de este error. Primero le mostraré como instalar el soporte para
listas grises que viene incluido en Postfix y luego, pasaremos
implementar el reemplazo más robusto.
Nota:
Hay otros servidores de políticas de listas grises para Postfix
(como Gld, que está en
Portage,
y SQLgrey). Algunos
de ellos soportan motores de base de datos, listas blancas automáticas
y otras interesantes características.
|
Listas grises simples
Nota:
Si desea en cambio utilizar el servidor mejorado de políticas de
listas grises con postgrey, puede tranquilamente saltarse esta
sección.
|
Necesitamos el archivo greylist.pl pero
desafortunadamente el ebuild no lo instala por defecto.
Listado de Código 7.1: Conseguir el greylist.pl |
# cp /usr/portage/distfiles/postfix-your-version-here.tar.gz /root/
# tar xzf postfix-your-version-here.tar.gz
# cp postfix-2.1.0/examples/smtpd-policy/greylist.pl /usr/bin/
|
Ahora que tenemos el archivo en su lugar, necesitamos crear el
directorio que albergará la base de datos de la lista gris.
Listado de Código 7.2: Crear el directorio para la base de datos |
# mkdir /var/mta
# chown nobody /var/mta
|
Aviso:
No crees el directorio para la base de datos en una partición que
podría quedarse sin espacio. Mientras que postfix puede recuperarse de
situación donde no hay más espacio para la cola de correos y los
buzones, este no es el caso con la base de datos de la lista gris. Si
el archivo se corrompe, no serás capaz de recibir correo en lo
absoluto hasta que borres el archivo manualmente.
|
Configurar la lista gris
Ahora que tenemos eso listo, lo que nos falta hacer es modificar la
configuración de postfix. Primero, añadiremos la necesaria información
a master.cf
Listado de Código 7.3: Modificar master.cf para utilizar listas grises |
policy-greylist unix - n n - - spawn
user=nobody argv=/usr/bin/perl /usr/bin/greylist.pl
|
El demonio spawn de postfix normalmente termina los procesos luego de
1000 segundos, pero este tiempo es muy corto para permitir el proceso
de las listas grises, así que debemos incrementar el límite de tiempo
en main.cf:
Listado de Código 7.4: Modificar el main.cf para utilizar listas gises |
policy-greylist_time_limit = 3600
check_sender_access hash:/etc/postfix/sender_access
restriction_classes = greylist
greylist = check_policy_service unix:private/policy-greylist
|
Aviso:
Asegúrese de especificar check_sender_access DESPUÉS
de reject_unauth_destination o su sistema se convertirá
en un conmutador de correo abierto.
|
Nota:
La base de datos de la lista gris es rápidamente contaminada con
direcciones erradas. Ayuda que protejas la lista gris con otras
restricciones además de rechazar destinatarios y/o remitentes
desconocidos.
|
No vamos a utilizar las listas grises para todos los dominios, solo
para aquellos abusados frecuentemente por los correos no
deseados. Después de todo, va a demorar la entrega del correo. Una
lista de dominios CORREO DE frecuentemente olvidados la puede
encontrar
en línea. Añada los dominios desde los cuales recibe bastante
correo no deseado en /etc/postfix/sender_access:
Listado de Código 7.5: Formato del sender_access |
aol.com greylist
hotmail.com greylist
bigfoot.com greylist
|
Si desea una lista más extensa:
Listado de Código 7.6: Adding all domains to sender_access |
# wget http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in
# cat sender-domain-validate.in | sort | awk {'print $1 "\t\t greylist"'} > /etc/postfix/sender_access
|
Ahora solo necesitamos inicializar la base de datos sender_access
database:
Listado de Código 7.7: Inicializar sender_access |
# postmap /etc/postfix/sender_access
|
La configuración de la lista gris simple está completa.
Aviso:
He probado esto en una máquina que manejaba miles de correos
diariamente y los resultados fueron casi un completo desastre. Luego
de cuatro días la máquina estaba saturada con viejos
procesos greylist.pl.
|
Configurar listas grises mejoradas con postgrey
Puede instalar un servidor políticas de listas grises mejoradas con
un simple:
Listado de Código 7.8: Instalar postgrey |
# emerge postgrey
|
Luego de instalar postgrey tenemos que editar el
archivo main.cf. Los cambios son casi exactamente los
mismos que para la lista gris incluida.
Listado de Código 7.9: Modificar el main.cf para usar listas grises |
check_sender_access hash:/etc/postfix/sender_access
smtpd_restriction_classes = greylist
greylist = check_policy_service inet:127.0.0.1:10023
|
Nota:
El SMTPD_POLICY_README de Postfix utiliza
solo restriction_clases pero parece no funcionar.
|
Nota:
Si desea poner todo bajo la lista gris, añada en
cambio check_policy_service inet:127.0.0.1:10030.
|
Finalmente, inicie el servidor y añádalo al nivel de ejecución
apropiado.
Listado de Código 7.10: Iniciar postgrey |
# /etc/init.d/postgrey start
# rc-update add postgrey default
|
Nota:
Algunas personas prefieren recibir su correo rápido, así que utilizar
listas grises es inapropiado. Sin embargo, si utiliza un servidor de
correo de respaldo, puede configurar las listas grises ahí. Mi
limitada experiencia me ha enseñado que puede detener hasta un tercio
de todo el correo no deseado recibido.
|
8.
SPF (Infraestructura de Políticas de envío, Sender Policy Framework)
Introducción
SPF permite a los dueños de los dominios especificar en sus registros
DNS qué direcciones IP podrán enviar correos desde su dominio. Esto
evitará que los spammers que se aprovechen del Return-Path.
Nota:
Si su proveedor ISP bloquea todo el trafico por el puerto 25 y envía
todo el correo a través de su propio servidor, SPF no funcionará.
|
En primer lugar, los dueños de los dominios tienen que crear un
registro DNS TXT especial. Así, un MTA con soporte SPF puede
leerlo y si el correo entrante no proviene de un servidor especificado
en el registro SPF será rechazado. Una entrada de ejemplo es la
siguiente:
Listado de Código 8.1: Registro SPF de ejemplo |
example.com. IN TXT "v=spf1 a mx ptr -all"
|
El -all indica que se rechace todo el correo por defecto pero
que se permita el ingreso de este si proviene de los registros
A(a), MX(mx)
y PTR(ptr). Para mayor información, consulta los
recursos listados abajo.
Nota:
Si envía su correo saliente a través de su ISP, entonces añada:
include:yourisp.com.
|
Spamassassin 3.0 tiene soporte para SPF, sin embargo este no viene
activado por defecto y el nuevo demonio de políticas de Postfix
soporta SPF, así que instalemos el soporte SPF de Postfix.
Nota:
Si en cambio desea utilizar el SPF de Spamassassin simplemente
ejecute emerge dev-perl/Mail-SPF-Query y reinicie
Amavisd-new
|
Preparar el sistema
Primero debe instalar Postfix 2.1 como se describe a
continuación. Luego de haber descargado las fuentes, agarra
el spf.pl con:
Listado de Código 8.2: Instalar spf.pl |
# cp postfix-<version>/examples/smtpd-policy/spf.pl /usr/local/bin/
|
Nota:
El spf.pl que viene incluido con Postfix tiene algunos
errores, así que busca y descomente la siguiente linea: push
@HANDLERS, "sender_permitted_from"; use Mail::SPF::Query. Más
adelante, en la línea 199 sustituya comemnt
con comment. Alternativamente puede descargarte
una versión en
desarrollo.
|
Este guión en Perl también necesita algunas librerías que no están en
Portage pero que son sencillas de instalar:
Listado de Código 8.3: Instalar las librerias faltantes |
# emerge Mail-SPF-Query Net-CIDR-Lite Sys-Hostname-Long
|
Ahora que tenemos todo en su lugar, solo necesitamos configurar
Postfix para que utilice esta nueva política.
Listado de Código 8.4: Modificar master.cf para que utilice SPF |
policy-spf unix - n n - - spawn
user=nobody argv=/usr/bin/perl /usr/local/bin/spf.pl
|
Ahora añada la verificación SPF en main.cf. Un SPF
correctamente configurado no debería hacer ningún daño de manera que
podamos revisar SPF para todos los dominios.
Listado de Código 8.5: Modificar main.cf para que utilice SPF |
check_policy_service unix:private/policy-spf
|
Nota:
Si tiene problemas utilizando SPF, por ejemplo al
utilizar fetchmail, quizás prefiera habilitar el SPF solo
para algunos dominios.
|
9.
Configurar amavisd-new para que utilice MySQL
Configurar MySQL
Nota:
Esto no ha sido probado todavía en versiones mayores que la
2.2. Cualquier comentario o sugerencia es bienvenido :).
|
Para dominios grandes, los valores por defecto que ha definido
en amavisd.conf quizás no se adecúen a todos los
usuarios. Si configura amavisd-new con soporte para MySQL puede
tener configuraciones individuales por usuarios o por grupos.
Listado de Código 9.1: Crear la base de datos y usuarios MySQL |
# mysql -u root -p mysql
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 78 to server version: 4.0.18-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database maildb;
mysql> GRANT INSERT,UPDATE,DELETE,SELECT ON maildb.* TO 'mail'@'localhost' IDENTIFIED BY 'very_secret_password';
mysql> use maildb;
|
Ahora que la base de datos está creada, necesitamos crear las
tablas. Puede copiar y pegar lo siguiente en el símbolo de espera
de órdenes de mysql:
Listado de Código 9.2: Diseño de tablas MySQL |
CREATE TABLE users (
id int unsigned NOT NULL auto_increment,
priority int NOT NULL DEFAULT '7', -- 0 is low priority
policy_id int unsigned NOT NULL DEFAULT '1',
email varchar(255) NOT NULL,
fullname varchar(255) DEFAULT NULL, -- not used by amavisd-new
local char(1), -- Y/N (optional field, see note further down)
PRIMARY KEY (id),
KEY email (email)
);
CREATE UNIQUE INDEX users_idx_email ON users(email);
CREATE TABLE mailaddr (
id int unsigned NOT NULL auto_increment,
priority int NOT NULL DEFAULT '7', -- 0 is low priority
email varchar(255) NOT NULL,
PRIMARY KEY (id),
KEY email (email)
);
CREATE UNIQUE INDEX mailaddr_idx_email ON mailaddr(email);
(white or blacklisted sender)
CREATE TABLE wblist (
rid int unsigned NOT NULL, -- recipient: users.id
sid int unsigned NOT NULL, -- sender: mailaddr.id
wb char(1) NOT NULL, -- W or Y / B or N / space=neutral
PRIMARY KEY (rid,sid)
);
CREATE TABLE policy (
id int unsigned NOT NULL auto_increment,
policy_name varchar(32), -- not used by amavisd-new
virus_lover char(1), -- Y/N
spam_lover char(1), -- Y/N (optional field)
banned_files_lover char(1), -- Y/N (optional field)
bad_header_lover char(1), -- Y/N (optional field)
bypass_virus_checks char(1), -- Y/N
bypass_spam_checks char(1), -- Y/N
bypass_banned_checks char(1), -- Y/N (optional field)
bypass_header_checks char(1), -- Y/N (optional field)
spam_modifies_subj char(1), -- Y/N (optional field)
spam_quarantine_to varchar(64) DEFAULT NULL, -- (optional field)
spam_tag_level float, -- higher score inserts spam info headers
spam_tag2_level float DEFAULT NULL, -- higher score inserts
-- 'declared spam' info header fields
spam_kill_level float, -- higher score activates evasive actions, e.g.
-- reject/drop, quarantine, ...
-- (subject to final_spam_destiny setting)
PRIMARY KEY (id)
);
|
Nota:
Si tiene inconvenientes utilizando copiar/pegar, quizás tenga que
copiar esto en otro lugar y quitarle los caracteres innecesarios.
|
Nota:
Las búsquedas de correo se hacen con las direcciones puras
(rfc2821-sin comillas y sin llaves) como claves, por ejemplo: John
"Funny" Smith@ejemplo.com.
|
Nota:
Las búsquedas son realizadas en el siguiente orden: SQL,
LDAP, hash, ACL, regexp, constant.
El primero que devuelva una respuesta definitiva (not undef/NULL)
detiene la búsqueda.
|
Si desea usar listas blancas y listas negras, entonces debe añadir
el remitente y el destinatario a mailadr, después defina
la relación entre ambas direcciones de correo en wblist
e indique si es lista blanca o lista negra.
Ahora que hemos creado las tablas, insertemos un usuario de prueba y
una política de ejemplo:
Listado de Código 9.3: Crear un usuario y política de prueba |
INSERT INTO users
SET
id =1,
priority =9,
policy_id =1,
email ="johndoe@example.com",
fullname ="John Doe",
local ="Y";
INSERT INTO policy
SET
id =1,
policy_name ="Test policy 1",
virus_lover ="N",
spam_lover ="N",
banned_files_lover ="N",
bad_header_lover ="N",
bypass_virus_checks ="N",
bypass_spam_checks ="N",
bypass_banned_checks ="N",
bypass_header_checks ="N",
spam_modifies_subj ="N",
spam_quarantine_to =NULL,
spam_tag_level =-50.0,
spam_tag2_level =7.0,
spam_kill_level =10.0;
|
Nota:
Copie esto en algún lugar y ajústelo a sus necesidades.
|
Nota:
local debe estar definido en Y, de otra manera el correo
no será revisado en busca de spam.
|
Esto inserta un usuario y políticas de prueba. Ajuste estos ejemplos
a sus necesidades. Se puede encontrar más información sobre los items
de configuración en amavisd.conf.
Configurar amavisd para funcione con MySQL
Ahora que MySQL está listo necesitamos indicarle a amavis que lo
utilice:
Listado de Código 9.4: Modificar amavisd.conf |
@lookup_sql_dsn =
( ['DBI:mysql:maildb:host1', 'mail', 'very_secret_password'] );
$sql_select_policy = 'SELECT *,users.id FROM users,policy'.
' WHERE (users.policy_id=policy.id) AND (users.email IN (%k))'.
' ORDER BY users.priority DESC';
$sql_select_white_black_list = 'SELECT wb FROM wblist,mailaddr'.
' WHERE (wblist.rid=?) AND (wblist.sid=mailaddr.id)'.
' AND (mailaddr.email IN (%k))'.
' ORDER BY mailaddr.priority DESC';
|
10.
Configurar Spamassassin para que utilice MySQL
En Spamassassin 3.0 es posible almacenar la información de Bayes y AWL
en una base de datos MySQL. Utilizaremos MySQL ya que generalmente
puede desempeñarse mejor que otros sistemas de gestión de base de
datos. Además, utilizar MySQL para ambos conjuntos de datos facilita
bastante la administración. Aquí mostraremos como hacerlo.
Primero empieza creando el nuevo usuario y las tablas necesarias de
MySQL.
Listado de Código 10.1: Crear la nueva base de datos y usuario MySQL |
# mysql -u root -p mysql
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 78 to server version: 4.0.18-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database dbname;
mysql> GRANT INSERT,UPDATE,DELETE,SELECT ON dbname.* TO 'dbuser'@'localhost' IDENTIFIED BY 'another_very_secret_password';
mysql> use dbname;
|
Ahora que la base de datos ha sido creada, seguiremos con las tablas
necesarias. Puede copiar y pegar lo siguiente al monitor de mysql.
Listado de Código 10.2: Distribución de tablas MySQL |
CREATE TABLE bayes_expire (
id int(11) NOT NULL default '0',
runtime int(11) NOT NULL default '0',
KEY bayes_expire_idx1 (id)
) TYPE=MyISAM;
CREATE TABLE bayes_global_vars (
variable varchar(30) NOT NULL default '',
value varchar(200) NOT NULL default '',
PRIMARY KEY (variable)
) TYPE=MyISAM;
INSERT INTO bayes_global_vars VALUES ('VERSION','3');
CREATE TABLE bayes_seen (
id int(11) NOT NULL default '0',
msgid varchar(200) binary NOT NULL default '',
flag char(1) NOT NULL default '',
PRIMARY KEY (id,msgid)
) TYPE=MyISAM;
CREATE TABLE bayes_token (
id int(11) NOT NULL default '0',
token char(5) NOT NULL default '',
spam_count int(11) NOT NULL default '0',
ham_count int(11) NOT NULL default '0',
atime int(11) NOT NULL default '0',
PRIMARY KEY (id, token)
INDEX (id,atime)
) TYPE=MyISAM;
CREATE TABLE bayes_vars (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(200) NOT NULL default '',
spam_count int(11) NOT NULL default '0',
ham_count int(11) NOT NULL default '0',
token_count int(11) NOT NULL default '0',
last_expire int(11) NOT NULL default '0',
last_atime_delta int(11) NOT NULL default '0',
last_expire_reduce int(11) NOT NULL default '0',
oldest_token_age int(11) NOT NULL default '2147483647',
newest_token_age int(11) NOT NULL default '0',
PRIMARY KEY (id),
UNIQUE bayes_vars_idx1 (username)
) TYPE=MyISAM;
CREATE TABLE awl (
username varchar(100) NOT NULL default '',
email varchar(200) NOT NULL default '',
ip varchar(10) NOT NULL default '',
count int(11) default '0',
totscore float default '0',
PRIMARY KEY (username,email,ip)
) TYPE=MyISAM;
|
Importante:
La línea INSERT es necesaria para que Spamassassin funcione.
|
Nota:
Esto también está disponible en el tarball de código fuente en los
archivos awl_mysql.sql y bayes_mysql.sql.
|
Configurar Spamassassin para que utilice el motor MySQL
Si tiene una vieja base de datos de Bayes en el formato DBM y quiere
conservarla sigue las siguientes instrucciones:
Listado de Código 10.3: Transformar la información de Bayes desde una base de datos DBM |
su - amavis
sa-learn --sync
sa-learn --backup > backup.txt
sa-learn --restore backup.txt
|
Nota:
Observe que el último paso debe ser ejecutado solo luego de que la base
de datos MySQL y secrets.cf hayan sido actualizados.
|
Ahora hay que darle a Spamassassin la información necesaria:
Listado de Código 10.4: Modificar /etc/mail/spamassassin/secrets.cf |
bayes_store_module Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn DBI:mysql:sa_bayes:localhost:3306
bayes_sql_username db_name
bayes_sql_password another_very_secret_password
auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
user_awl_dsn DBI:mysql:sa_bayes:localhost:3306
user_awl_sql_username db_name
user_awl_sql_password another_very_secret_password
|
Seguidamente, cambie los permisos para tener una adecuada seguridad:
Listado de Código 10.5: Cambiar permisos |
# chmod 400 /etc/mail/spamassassin/secrets.cf
|
Nota:
Para crear un password realmente secreto haga
emerge app-admin/makepasswd y makepasswd -chars=8.
|
Ahora, todo lo que tiene que hacer es
/etc/init.d/amavisd restart.
11.
Solución de problemas
Amavisd-new
Para solucionar cualquier problema con Amavisd-new empieza
deteniéndolo con /etc/init.d/amavisd stop e iniciándolo
manualmente como proceso activo con amavisd debug y observa
cualquier anomalía en la salida.
Spamassassin
Para solucionar problemas en Spamassassin puede filtrar un correo
utilizando spamassassin -D < mail. Para asegurarse de que
las cabeceras están intactas puede moverlas desde otra máquina con IMAP.
Nota:
Si necesita solucionar algún problema tiene que activar el login del
usuario amavis cambiando el intérprete de comandos en
/etc/passwd a /bin/bash.
|
Si lo desea, puede obtener la misma y más información con Amavisd-new
utilizando amavisd debug-sa.
Repetir tareas después de la instalación
Algunas de las actividades mencionadas en esta guía necesitarán ser
repetidas después de realizar actualizaciones. Por ejemplo el chown
-R amavis:mailusers en la sección acerca de Autoaprendizaje y apartar emails, requerirá
repetición después de cada actualización de amavisd-new.
Afortunadamente, Gentoo el ofrece indicaciones para realizar estos pasos
de forma automática. En
Enganchándose al proceso de emerge, del manual de Gentoo se
explica como ejecutar tareas después de la instalación de un paquete en
particular, como en este caso:
Listado de Código 11.1: Ejemplo de gragmento de código bashrc para ejecutar la orden chown mencionada |
if [ "${PN}" == "amavisd-new" ] &&
[ "${EBUILD_PHASE}" == "postinst" ];
then
chown -R amavis:mailusers /var/amavis/.maildir
fi
|
Recibir ayuda
Si necesita ayuda, un buen lugar al cual acudir es la lista de correo
de amavis-user. Antes de colocar alguna pregunta revise
el archivo de
la lista de correo de usuarios Amavis. Si no encuentra ninguna
ayuda ahí puede suscribirte a la Lista
de correo de usuarios Amavis.
Si su pregunta es específica de SpamAssassin, DCC, Razo o Postfix,
dirígase a sus respectivas páginas listadas a continuación.
12.
Fuentes
Para mayor información
Fuentes en general
Otros cómo
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|