Utilizando Exim4 en Debian para enviar mensajes a través de Gmail

11 de June, 2009


El presente tutorial explica como configurar en servidor de correo por default en Debian (exim), par a que envíe correos a través de una cuenta de gmail. (smarthost on email Google servers).
No es necesario tener IP publica, solo tu cuenta de Gmail!, y un sistema operativo decente (Debian Lenny).
Entre las utilidades, podemos citar la creación de scripts que nos envien información del estado de la máquina. También se podría aprovechar para que nuestros scripts en php envíen email, o aplicaciones que hacen uso intensivo de correo (Ej. Nagios, Asterisk, Gforge, etc).
Además, tienes el registro de email enviados, bien sea con los logs, o en los correos enviados de tu cuenta de Gmail ;) .

INSTALACION Y CONFIGURACION

Ejecutamos:

dpkg-reconfigure exim4-config
(Si no esta instalado, lo sintalamos con apt-get install exim4)

En la reconfiguración/instalación seleccionamos:

* El correo se envía mediante un «smarthost»; se recibe a través de SMTP
* Nombre del sistema de correo: tudominio.xxx
* Direcciones IP en las que recibir conexiones SMTP entrantes: 127.0.0.1
* Otros dominios para los que se acepta el correo: en blanco
* Máquinas para las cuales reenviar correo: en blanco
* Direccion IP o nombre del equipo (smarthost) saliente: smtp.gmail.com::587
* Desea ocultar el nombre de correo local en los mensajes salientes? NO
* Limitar el numero de consultas DNS (Marcación bajo demanda)? NO
* Dividir la configuración en pequeños ficheros?

Ahora editamos el archivo /etc/exim4/passwd.client

vi /etc/exim4/passwd.client

# password file used when the local exim is authenticating to a remote
# host as a client.
#
# see exim4_passwd_client(5) for more documentation
#
# Example:
### target.mail.server.example:login:password
gmail-smtp.l.google.com:yourAccountName@gmail.com:y0uRpaSsw0RD
*.google.com:yourAccountName@gmail.com:y0uRpaSsw0RD
smtp.gmail.com:yourAccountName@gmail.com:y0uRpaSsw0RD

Cambiamos permisos del archivo

chown root:Debian-exim /etc/exim4/passwd.client

Reiniciamos el servidor de correo

/etc/init.d/exim4 restart

Con esto hemos finalizado la configuración, ahora nuestro sistema tendrá la capacidad de enviar email!

EJEMPLO DE USO

* No hay nada mas elegante que enviar un email a traves del shell XD, con el comando mail:

mail jose.cely@xxxx.xxx
Subject: Hola, email enviado desde el Shell
Esto es el cuerpo del mensaje. Es una prueba de mailx.
Un mensaje se acaba con un punto (.) al principio de línea.
.
Cc:

Se podrían hacer scripts para que nos envíen información automática y periódica del estado del estado de la máquina donde corre el servidor!

Para depurar errores en configuraciones, o ver en más detalle que esta pasando, no existe mejor alternativa que ver los logs!
tail /var/log/exim4/mainlog

Dudas, comentarios, sugerencias?

Virtualización de Servidores con KVM en Debian Lenny

31 de May, 2009


La gran mayoría de servidores actuales, posee la potencia suficiente y cantidad de memoria, para poder virtualizar máquinas y en estas correr instancias de sistemas operativos. De esta manera podremos sacarle más provecho a nuestro hardware, y posiblemente reducir costos.

En mi caso de ejemplo, antes usaba 3 máquinas para mi trabajo de desarrollo de software, (1) Mi portátil, en el cual tengo todo lo de producción, el código final, las release oficiales. (2) El servidor de pruebas, (3) El servidor de integración. Pero eso, es historia pasada XD, ahora las dos últimas corren virtualizadas en el portátil (DELL inspiron, 2Gb RAM, Athlon 64 X2).

El siguiente articulo explicará como instalar, crear y configurar maquinas virtuales en un servidor Debian GNU/Linux, utilizando KVM. Estas maquinas virtuales se podrán usar y serán visibles como cualquier otro host de la red.
Para este tutorial necesitamos
1 – Servidor con el sistema Debian (Lenny) base instalado, no es necesario entorno gráfico
2 – Computador con cliente VNC (vncviewer, xtightvncviewer, etc), y cliente ssh.

POR QUE KVM

Las alternativas libres de alto rendimiento que tenemos son 3 (En mi opinión las más importantes):
1 – Virtual Box: Desarrollado por la empresa innotek GmbH, pero SUN Microsystems lo compro, y ahora Oracle compro a SUN… mmmm.. muchos intereses de por medio, no quiero correr riesgos, descarte su uso sin probarlo :D .

2 – XEN: Desarrollado por la Universidad de Cambridge. En este caso Citrix lo compro en el 2007. Citrix cerro el proyecto, tiene un producto gratuito, el XenServer Express Edition, aunque solo puede soportar cuatro máquinas virtuales.
Las versiones actuales se basan en el código ante de su cierre. XEN es el de más alto rendimiento (sin embargo KVM lo supera en varios aspectos).
En el caso de Debian requiere unas versiones empaquetadas especiales del Kernel:
Etch: xen-linux-system-2.6.18-6-xen-686 and xen-linux-system-2.6.18-6-xen-amd64.
Lenny: xen-linux-system-2.6.26-2-xen-686 and xen-linux-system-2.6.26-2-xen-amd64
Y esto fue lo que no me convenció, tener que usar un kernel especifico, en algunas pruebas, después de instalar el kernel el sistema no arranco! Se imaginan si hubiese sido en un servidor remoto!!!. Obviamente buscando en Internet encontré bastante documentación a los problemas que se me presentaban (que fueron bastantes), entonces eran muchos riesgos para una instalación remota, descarte su uso.

3 – KVM (Kernel virtual Machine): Desarrollado por la empresa Qumranet. KVM, como su nombre lo indica, hace parte del núcleo (desde la versión 2.6.20) y herramientas en el espacio de usuario. Por lo tanto no tengo que cambiar el Kernel en ejecución!. La única pega es que requiere un procesador x86 con soporte Virtualization Technology. Sin embargo la mayoría de los procesadores actuales lo soportan, sin embargo si tu procesador es anterior al 2008, lo más probables es que no funcione.
Se está trabajando para utilizar más características de la Virtualization Technology, por lo tanto el tema de rendimiento (que en mis pruebas es más que satisfactorio para usar en producción) mejorara constantemente.

INSTALACIÓN DE KVM Y CONFIGURACIÓN DE RED EN EL SERVIDOR

Asumimos que el servidor tiene el servicio ssh, y podemos acceder a él.
Desde el computador cliente accederemos al servidor para configurar todo lo que necesitamos, aunque esto se puede hacer desde el propio servidor, incluso con herramientas gráficas. Este tutorial esta previsto para el caso que solo tengamos acceso ssh al servidor, es un servidor decente, por ende, no tiene entorno gráfico XD.

Una vez el en servidor;
Detectamos si nuestro procesador soporta virtualización de Hardware

egrep '(vmx|svm)' --color=always /proc/cpuinfo

En mi caso, tengo un procesador AMD Athlon(tm) 64 X2 Dual-Core (se puede ver con cat /proc/cpuinfo), y la salida es la siguiente:

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch

Lo cual significa que si soporta virtualización. Si al ejecutar el comando no produce ninguna salida, puede llorar, su hardware no soporta virtualización y NO HAY NADA QUE HACER!
, lo más probable es que estés trabajan en un procesador un poco viejo, por ejemplo el procesador de mi Desktop ( AMD Sempron) no lo soporta :’( …

Si tenemos suerte, continuamos
// Como buenos Debianitas, primero actualizamos lista de paquetes
apt-get update

// luego instalamos el módulo y utilidades de red
apt-get install kvm bridge-utils

Ahora tenemos que establecer un puente (bridgue) de red en nuestro servidor, para que nuestras máquinas virtuales se puede acceder desde otros hosts como si se trataran de sistemas físicos de red.
Para eso editamos el clásico archivo /etc/network/interfaces:
Por ejemplo, en mi caso esta asi
cat /etc/network/interfaces


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1

Lo editamos ( vi /etc/network/interfaces), modificando algunas lineas para que quede así:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface

auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off

Obviamente, se debe acondicionar los archivos a su direccionamiento IP.
Después de editado, reiniciamos la red

/etc/init.d/networking restart

Y listo, si ejecutáramos el comando ifconfig, veríamos algo como esto (atención a la interfaz br0):

br0 Link encap:Ethernet HWaddr 00:1c:23:92:4e:d8
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::21c:23ff:fe92:4ed8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:18143 errors:0 dropped:0 overruns:0 frame:0
TX packets:27478 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1084126 (1.0 MiB) TX bytes:16915847 (16.1 MiB)

eth0 Link encap:Ethernet HWaddr 00:1c:23:92:4e:d8
inet6 addr: fe80::21c:23ff:fe92:4ed8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:112400 errors:0 dropped:0 overruns:0 frame:0
TX packets:92086 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:144800236 (138.0 MiB) TX bytes:22306616 (21.2 MiB)
Interrupt:21

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:42 errors:0 dropped:0 overruns:0 frame:0
TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2908 (2.8 KiB) TX bytes:2908 (2.8 KiB)

TRABAJANDO CON MAQUINAS VIRTUALES

Antes que nada necesitamos una partición, o un archivo para que sea usado por la máquina virtual como disco duro, en el caso de usar un archivo, ejecutamos:

qemu-img create disk.deb 4G

El anterior comando crea un archivo, que la maquina virtual interpretara como un disco de 4Gb. Por cada máquina que virtualicemos, obiamente debemos crear su archivo
En nuestro ejemplo, instalaremos un sistema Debian en nuestra maquina virtual (Debian virtualizando Debian, que bonito :P ). Para eso necesitamos descargar una imagen ISO del instalador, en mi caso descargue la ISO del netinstall en la carpeta /home
El comando kvm, trae infinidad de opciones interesantes ( man kvm-qemu ).

Para virtualizar una máquina con 256Mb de Ram, con un adaptador de red Realtek compatible, que arranque desde CDROM, y que el CDROM sea nuestra imagen ISO, ejecutamos:

kvm -hda disk.deb -cdrom /home/debian-501-i386-netinst.iso -boot d -m 256 -net nic,vlan=0,model=rtl8139 -net tap,vlan=0 -vnc :0

Como podemos ver, el final agregamos –vnc :0, lo cual significa que podremos desde ya conectarnos vía VNC al servidor como nuestro cliente de preferencia, desde aca podremos seguir la instalación de Debian sin ninguna novedad! En hora buena.

Instalando Debian por VNC

Después de haber instalado el sistema base, ya no es necesario arrancar desde el CDROM, por lo tanto, siempre que se quiera arrancar esta máquina y acceder desde VNC, ejecutamos:

kvm -hda disk.deb -boot c -m 256 -net nic,vlan=0,model=rtl8139 -net tap,vlan=0 -vnc :0

Nótese que al parametro -boot, se cambio por “c “,. Boot permite los siguiente parametros:
Boot on floppy (a), hard disk (c), CD-ROM (d), or Etherboot (n).

Muy seguramente después de configurada nuestra máquina, algunas veces necesitamos iniciarla sin sesión VNC, o por cuestiones de seguridad. Además también podremos necesitar que corra en modo daemon, entonces ejecutamos:

kvm -hda disk.deb -boot c -m 256 -net nic,vlan=0,model=rtl8139 -net tap,vlan=0 -vnc none -daemonize

Este comando lo podríamos poner (tantas veces como sea necesario por cada maquina) en los scripts de arranque del sistema para que inicien siempre junto con el servidor.

NOTA FINAL

Vimos el funcionamiento básico de virtualización con KVM, para casos de manejar muchas maquinas virtuales, existen front-ends que facilitan mucho el trabajo (virt-install, virt-manager, etc). Tambien se pueden setear inumerables parametros en las maquinas a virtualizar, como en numero de cores del procesador, parametros avanzados de red, más seguridad a VNC, etc.

Dudas, comentarios, sugerencias?

http://www.linux-kvm.org
http://blog.bodhizazen.net/linux/how-to-run-kvm-without-x/
http://www.phoronix.com/scan.php?page=article&item=623&num=4

Mi sitio de trabajo (Workspace)

7 de March, 2008



Tal vez no tenga nada interesante que escribir, por lo tanto, un poco desocupado a principios de Enero tomé unas fotos con la Webcam y camorama a mi sitio de trabajo, que luce así:
My Workspace
En total son 5 computadores:

  • El workstation principal es un AMD Sempron de 2800, con 1Gb de RAM, y 300Gb en discos duros, Monitor LCD Acer de 19′, tiene Debian Etch, con GNOME como escritorio
  • El superservidor, que ya le había escrito un articulo, es un P3, con 300Mb ram y 80 Gb en disco, con un practico monitor miniatura monocromatico de 9′ que me soporte una resolución de 800×600 , que conseguí de segundazo en lagocentro en Bogotá por solo 20US, tiene Debian Etch y XFCE4 como escritorio opcional
  • La segunda workstation, con board y procesador VIA, 512Mb de RAM, y 200GB en discos duros, Monitor CRT de 19′ (que hace años costo un huevo, ahora no dan un duro por él), tiene Debian Etch, con GNOME como escritorio
  • El portátil es un Compaq Armada, que también ya le había escrito un articulo :’(
  • Una CPU para chacharreos, que tiene un procesador pentium mmx de 233Mhz, 64Mb de RAM, y 20Gb de disco duro, lo interesante es que tiene dos Modems ISA, notese que dije modems, no softmodem

El superservidor hace de firewall, servidor web para desarrollo local, amule, servidor vnc, servidor NFS (todo el mp3 esta ahí), dominio con no-ip, servidor de impresión con CUPS, y un jocoso script que cada vez que detecta un correo electrónico no leído me avisa con una alarma sonora.Base del monitor de 9
Todas estas cosillas están montadas sobre una mesa / repisa, de fabricación casera. Gracias a la repisa, el firewall, el pentium mmx, el modem ADSL, el hub de 8 puertos, amplificadores de sonido, impresoras (HP 810, y Panasonic) y bafles están sobre esta, de esta manera no tengo tantos cables atravesados por el piso y estan fuera del alcance de mi hijo menor, que a la fecha de este post, tiene tres años, pero es capaz de desarmar hasta una bola de billar en 20 segundos :D (en serio, y me entrega un plano del despiece ).
En este mueble de fabricación casera, el monitor de 9′ esta sobre una pequeña base de madera sobre el monitor de 19′, permitiendo trabajar sentado y ver de frente ambos equipos.
Trabajando
Mejor dicho, si habéis leído hasta acá, mejor vean las fotos que tienen unos títulos muy explicativos.

Microsoft windows en su mínima expresión

6 de January, 2008


El siguiente es un email, que recibí de un amigo, consideré oportuna su publicación, además de publicar la respuesta que le envie. (Que no se note que tengo poco material para escribir :D ).

————————————————————
de: Diego Andrade
para: “mucha gente”
asunto: Microsoft windows en su mínima expresión
enviado por: gmail.com

Hola a todos, el presente es un relato desgarrador, que comenzo hace como 3 horas. Estando yo, chateando con mi Maestro AKA Tonyo a la 1 AM del día 4 de octubre, y a la vez copiando peliculas para pasarselas a Tomás, note un comportamiento extraño en mi sistema operativo, windows desafortunadamente, de repente winamp, gmail, msn y explorer hicieron colgar la maquina, razón por la cual procedí a la tipica reiniciada de windows, que generalmente mejora todo por un momento. Reinicie notando como le costaba mucho trabajo leer a la maquina desde las particiones de mi disco SATA de 250 Gb, arranco el sistema y pantallazo negro diciendome que faltaba el archivo hal.dll en la carpeta system32, típico caso de winbugs.
Procedimiento de rutina, restaurar sistema, pero oh sorpresa que se quedo en el 25% después de 30 minutos, diciendome que el sistema tenía fallas irrecuperables. Ahi comenzo mi madrugada de terror.
Coloque mi disco esclavo de 80 Gb SATA con un windows pelado, escasamente el S.O, para ver que pasaba con mis particiones de siempre.
Nuevamente me quede helado, windows las reconocia pero no podia leer los datos, incluso me pregunto el muy imbecil si queria formatearlas. Le dije NO.
Después de unos segundos en los que no sabía que hacer, recorde un programa que le baje a Alejo, hace muchos meses, y que supuestamente es el putas recuperando archivos llamado: Get Data Back. Me baje bitlord y lo baje en 5 minutos por la red torrent, viene para archivos fat32 y ntfs. lo instale y comenzo a recuperar encontrando muchisimos errores, no se si físicos o archivos dañados en los sectores.
Después de hora y media mal contada, termino de rehacer el disco con todos sus indices y con sus archivos. Como no todo es perfecto, parece que me recupero el contenido multimedia, pero no encontre rastros de la carpeta de mis documento ni de escritorio, que es donde a veces dejamos los documentos. Efectivamente el programa es bueno, no es perfecto pero algo se recupera, no lo importante, pero por lo menos vuelve una perdida total en una perdida de archivos importantes, porque la realidad indica que todo lo podemos volver a bajar, excepto los archivos de texto que creamos.
La lección es, si utilizan windows, quemen todo cuanto puedan, no dejen acumular información. Porque windows es una porqueria, la información no se me daño por virus, tampoco por fallo electrico porque tengo UPS, tampoco hay sectores dañados fisicamente, de eso estoy seguro, porque no hay ruidos anormales en el movimiento mecanico del disco, simplemente se daño porque es windows. Y Tengan a la mano este nombre: Get Data Back

Como dato curioso, hace poco había actualizado el windows XP a SP3, coincidencia? I don’t think so

Adivinen que estoy haciendo?, quemando y hasta ahora son las 4 AM y aún tengo peliculas por copiar….
Mañana reinstalo Debian.

Sayonara

Dileo KILL BILL GATES… por estafador

————————————————
Respuesta
————————————————

de: Jose Antonio Cely Saidiza < ***********.com>
para: “los mismos”
asunto Re: Microsoft windows en su mínima expresión
enviado por: gmail.com

Gracias por narrar esa experiencia de esa forma tan detallada,
Sin embargo no deberíais hablar en plural (Guardo mis documentos
personales por NFS en /mnt/data/josecely, el kit de supervivencia es
xmms, pidging, firefox y nautilus). Y si, he perdido información en
estos 8 años con los extraños sistemas *nix, varias veces por daño
físico de disco, y otro par de veces por un ‘rm -r …’ mal digitado.
Y en ese caso (rm) no hay programa celestial que lo recupere.

Tu historia es triste, pero no hay novedad, iniciare con una analogía;
cada año cambio el bombillo “ahorrador!” de energía de mi cocina, por
que? pues porque se funde o quema!. Pero siempre es más o menos al
año. Esto gracias a los ingenieros, que calculan y fabrican el
bombillo para que su vida útil sea de 1200 horas (horas mas, horas
menos) y dure mas o menos un año. Si durase menos, los acusarían de
mala calidad, si durasen más, nadie compraría bombillos y la empresa
quebraría.

Entonces creo que no todo es tan malo, las compañías antivirus, y de
recuperación ( como su recomendado Get Data Back) no existirían (o
serían más pocas) si no fuese por el gigante Microsoft y sus defectos
(intencionales?). Existen miles de empresas, tal vez generan millones
de de empleos en todo el mundo!. Gracias Microsoft por hacer productos
tan defectuosos, gracias por generar empleos, gracias a esas compañías
y productos como Get Data Back! que sacan partido de los defectos de
Microsoft! que monos son!, deberíamos aprender de ellos!

Bueno, el anterior párrafo estaba siendo un poco sarcástico en algunos
aspectos, solo os digo Diego, que hacéis parte de las estadísticas y
ese fallo ocurre millones de veces en todo el mundo. La pregunta es?
por que seguís con Windows? tal vez la respuesta es que nos gusta que
nos jodan! ha… y generar empleo :P

Saludos!
————————————————————————–
EOC