HOW TO SERVIDOR DE CORREO
CREAR USUARIO
Se crea el usuario con el nombre que queramos$ adduser jc
Con este comando se crea el /bin/bash y el /home/ del usuario. Le ponemos una contraseña y volcamos el contenido.
$ passwd jc
$ pwconv
Si queremos que entren correos con algun alias lo tenemos que poner en /etc/aliases
$ vi /etc/aliases
... jc: jc juancarlos: jc ...$ newaliases
Se actualiza el fichero con los alias nuevos
Estos usuarios son mas peligrosos porque al tener /home prodrian lanzar procesos a traves de procmail en caso de que nos entrasen.
Si no usamos los alias podemos usar los usuarios virtuales los cuales no tienen /home solo un buzon de correo. El fichero que controla los usuarios es el virtusertable $ /etc/mail/virtusertable
... jc@blom.es jc juancarlos@blom.es jc ...$ cd /etc/mail
$ make
Con esto actualizamos y se compila el fichero con los nuevos usuarios virtuales.
BORRADO
La limpieza requiere un mínimo de intervención humana para asegurarse que la cuenta está realmente muerta.Vemos si ha accedido en las últimas 5 semanas
$ grep -i usuario /var/log/maillog.* | grep pop3
Vemos si sólo le llega spam
$ mutt -f /var/spool/mail/usuario
Procedemos a borrar el usuario abandonado
$ userdel usuario
$ locate usuario
$ locate usuario | xargs \rm -f
$ \rm -fr /home/usuario
Faltaria limpiar los alias y la tabla de usuarios virtuales
$ cd /etc/
$ vi /etc/aliases
$ newaliases
$ cd /etc/mail
$ vi /etc/mail/virtusertable
$ make
Para que se guarden los cambios tenemos que ejecutar newaliases para los alias y make para virtusertable
Comprobamos que no quedan rastros en el sistema despues del borrado
$ updatedb
$ locate usuario
Fijaros que este procedimiento no funcionaría con usuarios que no lean el buzón con pop3.... así que cuidado...
Será conveniente también avisar a la gente de que si guardan su correo en local, les dará mejor servicio el pop3 si permiten borrar los restantes en el servidor. También que no hay riesgo de pérdida aunque pierdan la máquina entera, ya que se mantiene un backup.
RESCATAR SPAM - FALSOS POSITIVOS
Cuando un usuario informa de que no le está llegando tal o cual correo. Se procede de la siguiente forma:
Las razones más comunes porque no habrá llegado:
1. El usuario miente
2. No lo mandaron
3. Lo mandaron a la direccion equivocada
4. Los servidores smtp se rechazan
5. Se quedó en la trampa de spam
6. El servidor SMTP se fue al pique
Procedimiento:
Preguntarle al usuario:
1. La dirección de destino
2. La dirección del origen
3. La fecha/hora aproximada
Comprobar que realmente tenemos servidor SMTP...
$ telnet 192.168.33.10 25
Trying 192.168.33.10...
Connected to mail.bom.es (192.168.33.10).
Escape character is '^]'.
220 mail.bom.es ESMTP Sendmail 8.12.5/8.12.5; Tue, 16 Jan 2007 14:20:34 +0100
HELO renera.bom.lan
250 mail.bom.es Hello presentaciones.bom.local [192.168.33.118]
(may be forged), pleased to meet you
QUIT
221 2.0.0 mail.bom.es closing connection
Connection closed by foreign host.
_________________________________________
Aquí determinamos cual de las razones acierta más:
grep -i [dirección de destino] /var/log/maillog | less
Ejemplo:
$ grep -i jc /var/log/maillog | less
____________________________________________
Jan 16 10:24:22 mail sendmail[30176]: AUTH=server,
relay=12-33-62-85.red-acceso.airtel.net [12.33.62.85],
authid=jc, mech=LOGIN, bits=0
Jan 16 10:24:26 mail sendmail[30176]: l0G9OKaY030176:
from=
msgid=<000a01c73950$3078f9b0$553e49d4@bom.local>, proto=ESMTP,
daemon=MTA, relay=12-33-62-85.red-acceso.net [12.33.62.85]
Jan 16 10:24:33 mail sendmail[30178]: l0G9OKaY030176:
to=
(611/612), delay=00:00:10, xdelay=00:00:07, mailer=esmtp, pri=30549,
relay=antonius.berlitz.de. [217.111.63.57], dsn=2.0.0, stat=Sent (Ok: queued as 7210D100000CD)
Jan 16 10:27:02 mail sendmail[30218]: AUTH=server,
relay=12-33-62-85.red-acceso.net [12.33.62.85],
authid=jc, mech=LOGIN, bits=0
Jan 16 10:31:44 mail spamd[26569]: spamd: setuid to jc succeeded
Jan 16 10:31:44 mail spamd[26569]: spamd: processing message
<01c73951$46304050$6c822ecf@administrator> for jc:611
______________________________________________
Y ahora buscando la dirección de origen ej: /
_____________________________________________
Jan 14 14:01:18 mail spamd[6845]: spamd: setuid to jc succeeded
Jan 14 14:01:18 mail spamd[6845]: spamd: processing message
<20070114130245.E4BFB36A4AF@mail1.amadeus.net> for jc:611
Jan 14 14:01:35 mail spamd[6845]: spamd: identified spam (5.1/5.0) for jc:611 in 16.5 seconds, 18604 bytes.
Jan 14 14:01:35 mail spamd[6845]: spamd: result: Y 5 -HTML_10_20,HTML_FONT_BIG,HTML_MESSAGE,HTML_TAG_BALANCE_BODY,
MIME_BASE64_TEXT,SUBJ_ALL_CAPS,UPPERCASE_75_100
scantime=16.5,size=18604,user=jc,uid=611,required_score=5.0,rhost=localhost.localdomain,raddr=127.0.0.1,
rport=36502,mid=<20070114130245.E4BFB36A4AF@mail1.amadeus.net>,autolearn=no
________________________________________________
Se nota que fueron declarados "spam", por lo tanto los tenemos que buscar en /home/jmvitores/spam
$ mutt -f /home/jc/spam
Nos muestra todo el spam recibido por el usuario desde hace tiempo. Y efectivamente allí están los SpamAir desde amadeus net. Con el "S" (save) de mutt() los escribimos a disco a ficheros rescatado1 - rescatado5 . Y se los volvemos a mandar al usuario, asegurandono que no vuelvan a caer en la trampa.
Para evitar que el correo vuelva a caer en el filtro de spam, le ajustamos un poco a spamassassin()
Enseñamos al spamassassin que esto no es spam
$ sa-learn --ham rescatado1
Ahora concatenamos el correo rescatado al mbox del usuario
$ cat rescatado1 >> /var/spool/mail/jc
Si fueran varios los correos rescatados tendriamos que hacerlo para cada uno de ellos
$ cat rescatado1 | mail -s "SpamAir" jc@bom.es
$ cat rescatado2 | mail -s "SpamAir" jc@bom.es
$ cat rescatado3 | mail -s "SpamAir" jc@bom.es
$ cat rescatado4 | mail -s "SpamAir" jc@bom.es
$ cat rescatado5 | mail -s "SpamAir" jc@bom.es
Aquí vemos que efectivamente le han llegado al mbox del usuario.
$ mutt -f /var/spool/mail/jc
Borramos el correo rescatado
$ rm rescatado1
Si fueran varios los correos rescatados
$ sa-learn --ham --mbox rescatado1 &
$ sa-learn --ham --mbox rescatado2 &
$ sa-learn --ham --mbox rescatado3 &
$ sa-learn --ham --mbox rescatado4 &
$ sa-learn --ham --mbox rescatado5 &
$ spamassassin --add-addr-to-whitelist=bom.es
$ spamassassin --add-addr-to-whitelist=amadeus.net
$ spamassassin --add-addr-to-whitelist=apache.org
$ locate /spam | grep home | xargs ls -l
rw------- 1 valvarez valvarez 120016 Jan 10 13:26 /home/valvarez/spam
-rw------- 1 vgarcia vgarcia 120042 Jan 10 13:26 /home/vgarcia/spam
-rw------- 1 vgarrido vgarrido 120024 Jan 10 13:26 /home/vgarrido/spam
-rw------- 1 yinza yinza 119986 Jan 10 13:27 /home/yinza/spam
________________________________________
Hay mucho spam accumulado y como no hemos tenido más quejas, limpiamos un poquito
< $ locate /spam | grep home | xargs rm
(¡Con 2 cojones!... o con mucha conciencia revisamos todos los ficheros de todos los usuarios y corregimos a spamassassin() igual que en el anterior)
Para alimentar al correo con spam reconocidos que hemos visto con mutt que asi es dentro del buzon de un usuario, lo hacemos con el comando
$ sa-learn --spam --mbox /var/spool/mail/jc
MENSAJES ENTRANTES
Para ver el movimiento del servidor de correo tenemos que mirar el siguiente archivo /var/log/maillogVemos si ha accedido un usuario en las últimas 5 semanas
$ grep -i usuario /var/log/maillog.* | grep pop3
Vemos el correo que ha recibido un usuario en las últimas 5 semanas
$ grep -i usuario /var/log/maillog.* | grep to=usuario@dominio.es
REDIRIGIR CORREO A CUENTA EXTERNA
- Lo inmediato:
$ formail -ds sendmail -oi jc@gmail.com < /var/spool/mail/jc
- lo corto:
$ ssh root@mail.bom.es
Hay un script que lo hace automaticamente. Ponemos la direccion interna y la direccion de correo donde se envia
$ /root/bin/mailfwd jc jc@yahoo.es
Probamos que lo hace bien
$ echo "Test for mail forwarding." | mail -s "test for mail forwarding" jc@bom.es
Debe haber el record del re-envio
$ less /home/jc/.procmail/log
Mira a ver si en Yahoo te ha llegado el correo de prueba
Si prefieres practicar primero sin riesgos podemos crear un usuario de prueba
$ useradd test
$ bin/mailfwd test jc@bom.es
$ echo "Test for mail forwarding." | mail -s "test for mail forwarding" test@bom.es
$ less /home/test/.procmail/log
$ mutt -f /var/spool/mail/jc
$ userdel test
- Lo largo:
Este es el script que hace todo el tomate automaticamente
$ vi /root/bin/mailfwd
___________________________________________________
#!/bin/bash
# script que crea los ficheros para hace un traspaso de correo a un usuario con procmail()
# mrp 18/10/2007
username=$1
fwdaddr=$2
mailhead=*@
mailtail=@*
if [ -z $1 ] || [ -z $2 ]; then echo "Usage: $0 username foward_mail_address"; exit 1;fi
id -u $username > /dev/null 2>&1
if [ ! $? ] || [ ! -d /home/$username ]; then
echo "Bad user $username or Home \"/home/$username\" does not exist."
exit 1
fi
echo $fwdaddr | grep -q -E '^[a-zA-Z0-9._%+-]+\@[a-zA-Z0-9.-]+\.[a-zA:-Z]{2,4}$'
if [ ! $? ]; then
echo -e "Bad mail address \"${fwdaddr}\".\n"
exit 1
fi
host -t MX ${fwdaddr#$mailhead} > /dev/null
if [ ! $? ]; then
echo -e "Mail server address \@${fwdaddr#$mailhead} does not resolve.\n"
exit 1
fi
cat > /home/$username/.procmailrc << EOF
MAILDIR=\$HOME/mail # elm users might use $HOME/Mail instead
PMDIR=\$HOME/.procmail
DEFAULT=/var/spool/mail/$username
LOGFILE=\$PMDIR/log
INCLUDERC=\$PMDIR/forward.rc
# add as many INCLUDERC's as you like
EOF
mkdir -p /home/$username/mail
mkdir -p /home/$username/.procmail
cat > /home/$username/.procmail/forward.rc << EOF
# forward to external account if smaller than 1MB
:c
* < 1000000
! $fwdaddr
EOF
_________________________________________________________________________
QUITAR REDIRECCION CORREO A CUENTA EXTERNA
Eliminamos dentro del home del usuario que queramos el directorio .procmail que esta oculto y el fichero .procmailrc
$rm -rf /home/jc/.procmail
$rm -rf /home/jc/.procmailrc
JUBILACION DE DOMINIOS DE CORREO
Al observar que el 90% del spam que entra y entretiene cantidad al servidor de correo vienen a los dominios antiguos, hice la decisión de jubilar estos. El proceso es simple:
- Se comentan los records MX en el DNS, aunque se dejan los records A y la asignación SOA en los dnscaches.
- Se comenta los nombres de los dominios en mail.blom.es de sendmail().
- Se reinicializan los servicios mencionados.
Los efectos que se notarán:
- Se rechazará el 85% del spam desde el DNS, simplemente no llegará.
- Se rechazará el 10% desde sendmail de los MX que siguen en caches por el mundo sin entrar en los filtros caros de spam.
- Todos los usuarios que siguen utilizando los dominios antiguos recibirán un rechazo al intentar enviar correo, ya sería hora que actualizaran el cliente de correo.
- Alguna gente que tienen direcciones antiguas guardadas recibirán rebotes para esas direcciones. Si realmente tienen interés en comunicar con nosotros cogerán el teléfono y corregirán sus direcciones. El resto es spam.
Los dominios jubilados incluyen:
- grafos.es
- grafos.net
- cpca.es
- trabajosaereos.es
- geocart.es
Esto lo vemos en los siguientes ficheros
$ vi /etc/mail/local-host-names
#grafos.local
#grafos.es
#grafos.net
#cpca.es
#cpca.local
bom.es
bom.lan
#trabajosaereos.es
#geocart.es
localhost
localhost.localdomain
$ vi /etc/mail/relay-domains
#grafos.es
#grafos.net
#grafos.local
#cpca.es
#cpca.local
bom.es
bom.lan
#trabajosaereos.es
#geocart.es
PROBLEMAS CORREOS MUY GRANDES
Si tenemos en un buzon de un usuarjo correos muy grandes, y el cliente si no esta en la oficina o tiene un ancho de banda grande no va a poder descargarselos con lo que se le quedara bloqueado su correo. Para solucionarlo temporalmente tenemos que buscar esos correos y los movemos a otro sitio:
Con mutt nos conectamos a su buzon y buscamos los correos que tienen un tamaño muy grande
$mutt -f /var/spool/mail/usuario
Seleccionamos el correo que queremos mover y escogemos la opcion s para salvar el correo en otra parte (nuevo buzon). Si por ejemplo le decimos que lo salve en =nuevo_usuario nos lo salvaria en /root/Mail/nuevo_usuario. Asi con todos los correos que creamos que por tamaño esten bloqueando el correo. En la nueva ruta tendremos un fichero con formato mail con todos los correos que hayamos salvado con la opcion s en mutt.
Con mutt podemos ver que efectivamente tenemos todos los correos que queremos salvados en la nueva ruta.
$mutt -f /root/Mail/nuevo_usuario
Cuando queramos volver a mover esos correos de nuevo al buzon del usuario, podemos hacerlo con cat ya que tiene el formato adecuado
$cat /root/Mail/nuevo_usuario >> /var/spool/mail/usuario
COMANDOS CORREO
- Para ver los correos que estan en cola
- Para forzar la entrega de los correos que estan en cola
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.