ASP.NET en Linux con Apache

ASP.NET

Apache con ASP.NET

 

ASP.NET sobre Apache
Corriendo ASP.NET sobre Apache

En esta oportunidad vamos a instalar lo necesario para poder correr paginas ASP.NET en nuestro servidor Linux corriendo Apache, uno de los servidores web mas utilizados en el mundo.

Estas son las primeras cosas que tenemos que instalar.

  1. Apache 2 (lo instalamos con apt-get o como mas les guste).
  2. Módulo para multiproceso: apache2-mpm-worker.
  3. Módulo de Monolibapache2-mod-mono.
  4. Interfaz entre Mono y servidor: mono-apache-server.
  1. Reiniciamos el servicio de Apache para que recargue la configuración: sudo /etc/init.d/apache2 restart
  2. Activamos el módulo (a2enmod significa apache2 enable module): sudo a2enmod mod_mono
  3. Vemos qué versión de ASP.NET está activada (lo recomendable es que sea la 2 y no la 1). Para comprobarlo nos dirigimos a: /etc/apache2/mods-available y vemos el fichero mod_mono.conf, debería estar así (comentada con # la primera):
    #Include /etc/mono-server/mono-server-hosts.conf
    Include /etc/mono-server2/mono-server2-hosts.conf

Con estos cuatros pasos, ya nuestro Apache puede servir paginas con ASP.NET.

Espero que esto les sirva y no se olviden de comentar.

Servidor de correo en UBUNTU con postfix y dovecot

Ubuntu Mail Server

Servidor de correo en Ubuntu, la alternativa a Gmail

Alojando mi correo personal en mi propio servidor

Introducción

Es normal o al menos más común mantener tu blog o página web en tu propio servidor que hacer lo mismo con tu servidor de correos, principalmente por el spam, y por que es más dificil mantener un servidor de correos que un servidor web. Esto porque debido al spam es posible que algunos de tus correos no lleguen a destino debido a el IP de tu servidor no sea conocida o hubiera sido utilizada en algún momento para enviar spam.

Igualmente muchos hackers tratarán de hacerse de tu servidor para enviar campañas de spam a travéz de él.

Pero la satisfacción de tener tu información contigo y no dependiendo de otros, especialmente Google, es grande y el trabajo extra a veces vale la pena.

Algunas cosas han cambiado desde los días en que la única forma de acceder tu correo era a travéz de Eudora, POP3 y desde tu computador, hoy en día llevamos el correo a todas partes en nuestro teléfono, y normalmente quienes te envían correos esperan una respuesta pronta.

Yo había dejado de alojar mi propio correo sobre todo debido a activesync, que es por el momento la mejor tecnología para sincronizar tu correo con el móvil, pero ahora esta disponible una versión opensource, ya veremos como se usa.

Configurando tu propio servidor de correos

Los requerimientos para mi correo son, pues la verdad solo una, correo electrónico confiable, calendario ya lo tengo disponible en el servidor Exchange de la oficina, y el directorio de contactos aún no estoy seguro de donde lo alojare, pero puede que lo haga con CardDav o con mi cuenta de Gmail, despues de todo tengo una para mis aplicaciones Android, solo que no la uso para correo. Por lo tanto, considerando que lo único que requiero es correo, y que lo acceso principalmente del celular y de Microsoft Outlook cuando estoy en la máquina de la oficina (Windows 8) o Mail.app en Mac, por lo tanto no requiero una interfaz gráfica.

El software que voy a utilizar para cubrir mis necesidades es:

  • Ubuntu (El sistema operativo)
  • Postfix (Para recibir el correo y enviarlo via SMTP)
  • Dovecot (Para recuperar el correo vía IMAP para los clientes de escritorio)
  • Procmail (Para clasificar correo)
  • D-push (Para recuperar el correo vía ActiveSync para el cliente de mi Android)
  • Amazon SES

Vamos a explicar un poco como se configura cada uno de estos componentes para lograr lo deseado, no vamos a mostrar como instalar Ubuntu, normalmente es solo arrancarlo en algún proveedor de VPS

Postfix

Vamos a comenzar con postfix, que es un servidor que nos permite recibir y enviar correos mediante el protocolo SMTP, existen otras opciones como sendmail o exim, que son tan buenas como esta, pero vamos a utilizar postfix, comencemos instalandolo.

sudo apt-get install postfix

Y vamos a configurarlo para recibir nuestros correos, colocarlos en nuestro buzón (vamos a usar Maildir), igualmente vamos a configurarlo para que podamos autenticar contra él y que reciba de esta manera nuestros correos para enviarlos al mundo, para esto último vamos a optar por un relay-host, es decir un servidor que hará las verdaderas entregas, al cual le entregaremos toda la correspondencia que tenemos. Hacemos esto porque de este modo evitamos que nuestro correo sea considerado spam, por que el IP no estuviera limpio, o por que algo en la configuración no es correcta.

Vamos a utilizar Amazon SES para que entregue nuestros correos, el precio es totalmente acequible, solo 10 centavos de dólar por cada 1.000 correos.

El principal archivo de configuracion es main.cf, vamos a colocar este contenido dentro de él.

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
delay_warning_time = 4h
mydomain = dominio.com
myhostname = mail.dominio.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mail.dominio.com, localhost.example.com, localhost, dominio.com
relayhost = email-smtp.us-east-1.amazonaws.com
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:tu-login-ses:tu-password-ses
smtp_sasl_security_options = noanonymous
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_auth_only = no
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
home_mailbox = Maildir/

Eso es todo, vamos con el siguiente.

Dovecot

Dovecot, es la interfaz que vamos a utilizar para exponer nuestros buzones de correo al mundo mediante IMAP o POP3, en este caso vamos a configurar IMAP, pues hoy en día casi todos verificamos el correo de varios lugares a la vez.

También vamos a utilizar dovecot para darnos la autenticación requerida para que postfix nos permita enviar correos solo a los usuarios con cuenta en el servidor. La configuración de Dovecot en Ubuntu no es monolítica, es decir no esta en un solo archivo, por lo que veamos a ver solo los que se requieren cambiar, es decir que no tengan los valores por defecto.

Este es contenido de /etc/dovecot/dovecot.conf

!include_try /usr/share/dovecot/protocols.d/*.protocol
listen = *, ::
!include conf.d/*.conf
!include_try local.conf

Este el de /etc/dovecot/conf.d/10-auth.conf

auth_mechanisms = plain login
!include auth-system.conf.ext

Este el de /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:~/Maildir
namespace inbox {
  inbox = yes
}

Vamos con /etc/dovecot/conf.d/10-master.conf

service imap-login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    #port = 993
    #ssl = yes
  }
}
service pop3-login {
  inet_listener pop3 {
    #port = 110
  }
  inet_listener pop3s {
    #port = 995
    #ssl = yes
  }
}
service lmtp {
  unix_listener lmtp {
    #mode = 0666
  }
}
service imap {
}
service pop3 {
}
service auth {
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}
service auth-worker {
}
service dict {
  unix_listener dict {
  }
}

Y finalmente /etc/dovecot/conf.d/10-ssl.conf

ssl = yes
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem

Con esto tenemos Dovecot configurado y listo para entregarnos las correspondencia via IMAP, esto es más que suficiente para la PC de escritorio o para nuestra laptop, pero para la tablet y en especial para nuestro celular tenemos que tener una mejor opción. IMAP puede funcionar en el celular pero no es muy eficiente desde el punto de vista de consumo de batería, algo que siempre debemos cuidar con los celulares hoy en día, pero para ello existe ActiveSync.

Para implementar ActiveSync en Ubuntu vamos a utilizar el paquete z-push, que en Debian se llama d-push, debe tener alguna diferencia pero no lo investigue.

d-push

Para funcionar correctamente d-push requiere de Apache o algún otro servidor web, y de PHP, en general si instalas el paquete este instalará todo lo necesario, pero lo que hace es instalar mod-php de Apache y no es la manera más eficiente de interactuar con PHP, si solo usarás el servidor para tu correo y solo tendras pocos clientes, entonces adelante. Si por el contrario, tendras uno o más blogs de WordPress o Drupal y además varios clientes usando ActiveSync, entonces lo que haremos es instalar Apache + PHP-FPM y luego asegurarnos que Ubuntu no instale mod-phpluego de ello podemos instalar d-push

sudo apt-get install d-push

Asegurate de marcar la autoconfiguración de Apache cuando se te pregunte si deseas hacerlo, yo lo hice para Apache 1 ya que es automático. En general no tienes que hacer ningun cambio a la configuracion de d-push, solo debes crear un sitio al que apuntaras tus dispositivos móviles. E aquí un ejemplo:

<VirtualHost localhost:8080>
        ServerName mail.dominio.com
        DocumentRoot /var/www/mail.dominio.com
   DirectoryIndex index.php
   <Directory /var/www/mail.dominio.com/>
      AllowOverride All
      Require all granted
      #Order Deny,Allow
      #Allow from all
   </Directory>

<Directory /usr/lib/cgi-bin/>
        Require all granted
</Directory>

</VirtualHost>

Dado que tengo Nginx delante, es Nginx con el que manejo https requerido para d-push, en realidad no es requerido y se puede trabajar con el puerto 80 u 8080, pero es buena idea tener una conexión segura, asi que vamos con Nginx.

Lo primero es preparar Nginx para manejar una conexión encriptada, luego configuras el sitio como en el ejemplo de abajo.

server {
    listen 80;
    listen 443 ssl;

    root /var/www/mail.dominio.com/;
    index index.html index.htm;

    server_name mail.dominio.com;
        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;

    location / {
        proxy_pass http://localhost:8080;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Como puede verse, Nginx se encarga de la conexión segura, y luego pasa el requerimiento a Apache que opera tras bambalinas.

Con eso hemos terminado, ya tenemos un servidor de correos que envía correos de forma segura mediante Amazon SES, y que recibe el correo dirigido a nosotros y nos lo entrega de manera eficiente en nuestras aplicaciones de escritorio y móviles utilizadon conexiones seguras y encriptadas.

Procmail

En mi caso re-envío correo de otras cuentas a esta cuenta para tener todo el correo en un solo lugar, utilizo una cuenta para facebook, Twitter, LinkedIn y demás subscripciones que no es mi cuenta principal, por lo que todo el correo enviado a esa cuenta y luego re-enviado aquí lo filtro y archivo en un directorio específico, la forma en que lo hago es mediante procmail al momento de recibir el correo.

Vamos a ver como se puede configurar.

sudo apt-get install procmail

El primer archivo que vamos crear es /etc/procmailrc y tendrá este contenido.

DROPPRIVS=yes
ORGMAIL=${HOME}/Maildir/
DEFAULT=${ORGMAIL}
:0
* ? /usr/bin/test -d $DEFAULT || /bin/mkdir $DEFAULT
{ }
:0 E
{
        EXITCODE=127
        HOST=bail.out
}

Luego en directorio del usuario que va a clasificar su correo mediante procmail son necesarios otros archivos. Vamos crearlos. Asegurate de estar conectado al servidor usando el usuario del que quieres clasificar su correo. Creamos el archivo .forward y ponemos este contenido adentro:

"|IFS=' ' && exec /usr/bin/procmail || exit 75 g"

Luego creamos el archivo .procmailrc e insertamos este contenido:

VERBOSE=no
PMDIR=$HOME/Procmail 
LOGFILE=$PMDIR/log
INCLUDERC=$PMDIR/filtros.rc
SHELL=/bin/sh

Finalmente creamos el archivo ~/Procmail/filtros.rc y colocamos allí los filtros, veamos solo un ejemplo:

:0
* ^TO_cuenta-social@gmail.com
.social/

:0
$HOME/Maildir/

Puedes buscar más ejemplos en Google, o DuckDuckGo

Amazon SES

Finalmente, tenemos que configurar Amazon SES, eso lo vamos a dejar fuera del alcance de este sitio, pues esta suficientemente bien explicado en el sitio de Amazon. Puedes utilizar MailGuy o Mandrill o cualquier otro servicio, solo asegurate de cambiar estas lineas en/etc/postfix/main.cf

relayhost = email-smtp.us-east-1.amazonaws.com
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:tu-login-ses:tu-password-ses
smtp_sasl_security_options = noanonymous

Las mismas deben ser cambiadas de acuerdo al servicio que utilices.

Conclusión

Como puedes ver, es posible instalar y configurar un servidor de correos eficiente y que tenga lo requerido las comunicaciones de hoy en día. Quedó por ver como instalar Spamassassin, y actualizaré el artículo para hacerlo, de momento no lo instalé debido a que gracias a Dios no tengo mucho spam en la cuenta de correos que manejo con este servidor.

1. En mi caso incluso tengo Nginx como proxy delante de Apache, de este modo puedo correr blogs de WordPress directo con Nginx y sitios estáticos con Nginx, o cachear el contenido que sirve Apache, si te preguntas para que tengo Apache, pues porque algún software es más sencillo de configurar con Apache y a veces quiero evitar la molestia.

Configurando GMAIL Como Relay

Editamos  /etc/postfix/main.cf

# sets gmail as relay
relayhost = [smtp.gmail.com]:587
# use tls
smtp_use_tls=yes
# use sasl when authenticating to foreign SMTP servers
smtp_sasl_auth_enable = yes
# path to password map file
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# list of CAs to trust when verifying server certificate
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
# eliminates default security options which are imcompatible with gmail
smtp_sasl_security_options =

13 Herramientas de Google Desconocidas para la Mayoría de Usuarios

13 Herramientas de Google Desconocidas para la Mayoría de UsuariosEstos son algunos de los recursos de Google que no son tan conocidos para la mayor parte de los usuarios.Gran parte están destinadas a programadores y webmaster, pero con otras, podemos aprender algo mientras pasamos un buen rato.

Y es que Google, con una cuota en el mercado de buscadores aplastante y con sus innumerables herramientas y servicios, se ha metido en nuestras vidas de forma irremediable. Todos conocemos y usamos cada día algo que tenga que ver con la compañía de Mountain View: Maps, YouTube, Gmail, Chrome, Drive, etc.

1x1.trans

Estas son algunas de las más conocidas, pero Google extiende sus tentáculos sobre cualquier actividad que nos podamos imaginar. Estoy casi seguro de que, incluso, estando al tanto de todo lo que tiene que ver con la tecnología, no conoces la existencia de algunas de las herramientas que te vamos a presentar. Vamos allá.

1. Google Ngram Viewer

Nos permite buscar o comparar palabras o grupos de palabras entre los libros publicados desde el año 1500 hasta la actualidad en diferentes idiomas y países. Los resultados nos los muestra en un gráfico con el eje de los años y el de porcentaje del total de la muestra de libros.

1x1.trans

Es interesante para saber de qué se hablaba y qué se publicaba en distintitas épocas y si se hacía más o menos de algunos temas, pudiendo comprobar la tendencia de popularidad de esas palabras en el tiempo. Introduce “Apple” y “PC” en distintos idiomas y mira a ver qué pasa.

2. Google Correlate

1x1.trans

Es parte de Google Trends y, por lo tanto, analiza la tendencia en el tiempo de las palabras que usamos en las búsquedas, relacionadas con otras. Por ejemplo, si ponemos “pérdida de peso” podremos saber la tendencia de esa frase comparada con otras como “calorías”, “quemagrasas”, “parafarmacia”, etc.

1x1.trans

También tenemos la posibilidad de hacer la búsqueda inversa, es decir, dibujamos directamente en el gráfico y sobre él nos mostrará las búsquedas que más se aproximen a la curva que hemos dibujado.

3. Google Trends

1x1.trans

Es una de mis favoritas. Una herramienta perfecta para saber de qué se está, o ha estado, hablando en el mundo. Puedes buscar por fecha, categorías, países, idiomas, etc.

1x1.trans

Con la función Explorar podrás saber la tendencia de las búsquedas a lo largo del tiempo, el interés geográfico y las búsquedas relacionadas. Una auténtica joya.

4. Google Think Insights

1x1.trans

Esta herramienta está destinada a un sector más especifico como es el de los empresarios. Aparte de consejos e información sobre negocios de éxito, tenemos a nuestra disposición una serie de herramientas para, por ejemplo, analizar sitios web (PageSpeed) u optimizar campañas publicitarias.

5. Google Public Data Explorer

Como su nombre sugiere, nos encontramos con una herramienta con la quepodemos acceder, examinar y buscar en muchas bases de datos de todo el mundo (sobre todo públicas) para realizar una representación gráfica de ellos. Los resultados nos los puede mostrar en gráficos de distinto tipo, teniendo la opción de filtrarlos para obtener la información que realmente necesitemos.

1x1.trans

Se pueden realizar comparativas entre categorías, enlazar los datos con otros elementos o insertarlos en nuestra página web, actualizándose automáticamente, sin que tengamos que hacer nada.

6. Full Value of Mobile

1x1.trans

En realidad se trata de una calculadora para saber el impacto que tiene sobre el negocio de una empresa el uso de la tecnología móvil en todas sus variantes.

1x1.trans

Introduciendo unos sencillos datos como el número de clicks, visitas, compras sobre el total o conversiones, nos muestra el dinero generadopor el uso de dispositivos móviles para comprar, reservar, localizar o solicitar información de nuestro negocio.

7. Get Your Business Online

Este servicio de Google pone a disposición de los usuarios una serie derecursos para que pequeños negocios o empresas de ámbito local puedan tener presencia en Internet y tener la posibilidad de mejorar sus balances.

1x1.trans

Ofrece herramientas para empezar desde cero con una página, lecciones y tutoriales interactivos, consejos para buscadores, herramientas para webmasters, recomendaciones en el uso de redes sociales para atraer clientes, etc. En definitiva, un buen sitio para empezar a sacar beneficios si estás en la red.

8. Webmaster Tools

Son un conjunto de herramientas para webmasters que ofrecen la posibilidad de monitorizar el tráfico de una web, analizar errores y mejorar el funcionamiento interno de un sitio.

1x1.trans

Una de ellas es Places para empresas, herramienta que nos ayudará a gestionar, de una manera más fácil, la presencia de nuestra empresa en Internet en relación a los servicios de Google. Puedes crear una ficha de empresa para aparecer en los resultados destacados, actualizar rápidamente tus datos de contacto o interactuar con los clientes.

9. Google Fonts

Los que nos dedicamos al diseño, conocemos Google Fonts desde hace algún tiempo, un lugar donde podemos buscar y descargar tipos de fuentes para nuestras creaciones. Bajo Open Source podemos utilizar libremente y de forma gratuita los tipos tanto, a nivel particular, como comercial.

Como es habitual, podemos aplicar filtros a las búsquedas, que pueden ser por categorías (serif, sans serif, handwriting, etc), tipo de caracteres (latino, cirílico, griego, etc), grosor, altura o inclinación.

1x1.trans

Para facilitar la elección, nos permite personalizar el texto de muestra de los tipos, pudiendo modificar algunos de los atributos de las fuentes. Una función muy útil es la de añadir a la colección con la que podrás ir eligiendo los tipos que quieras y bajártelos todos de una vez en un archivo zip.

10. Google Developers

1x1.trans

Un sitio web lleno de recursos para todos los programadores cuyo desarrollo tenga que ver, todo o en parte, con cualquiera de los productos y servicios de Google. Nombrarlos todos sería imposible, así que, vamos con las secciones principales del sitio.

1x1.trans

  • Productos: accedemos a categorías como programador de dispositivos móviles, de juegos, programador web, AdWords, etc.
  • Conferencias: sobre cualquier temática. Mediante un planning sabemos las fechas de los encuentros y de las que están en curso en estos momentos. Pulsando sobre cualquiera de ellas podemos saber más sobre los datos del evento, asistentes, etc.
  • Escaparate: es el lugar donde los desarrolladores muestran sus creaciones. A modo de portfolio, te puedes encontrar aplicaciones muy logradas y otras, bueno, no tanto.
  • Live: todo el potencial de Internet en un solo sitio. Presentaciones en vivo, diálogos en foros, streaming de vídeo, chat, para conectar con empleados de Google, otros desarrolladores o expertos del sector.
  • Grupos: rizamos el rizo, sólo para auténticos programadores con mayúscula. Demostraciones eminentemente técnicas, charlas sobre APIs de cualquier tecnología de Google y, hasta, eventos llamadoscode sprints en los que los desarrolladores se limitan, en un periodo de tiempo dado, sólo a escribir código.

11. Dart

1x1.trans

Dart es un lenguaje de programación orientado a objetos con el que Google pretende destronar a javascript como lenguaje de aplicaciones web. Ha sido creado para que, incluso, los programadores principiantes puedan aprenderlo, aunque, como es lógico, conviene un tanto de experiencia en programación.

Aunque lleva ya unos años entre nosotros, todavía se encuentra en fase de desarrollo. Para empezar a utilizarlo debes descargarte el entorno de trabajo y el editor, disponibles para Windows, Linux o Mac.

12. Google Keep

1x1.trans

Es una aplicación simple y fácil de usar con la que podremos tomar notas de texto, de voz, fotos y checklist. Nos permite sincronizar automáticamente con Drive a través de todos nuestro dispositivos, realizar búsquedas y ordenarlas y disponerlas de la forma que queramos.

13. Google Sky

1x1.trans

Salió como añadido a Google Earth y nos permite explorar el universo. Puedes ver la posición de planetas, constelaciones y hasta el nacimiento de galaxias lejanas como se verían desde el propio telescopio Hubble y desde otros observatorios astronómicos.

Si sabes el nombre de la galaxia o el de una estrella, tienes un campo de búsqueda para localizarlas y no hace falta que pongas el nombre correcto, ya que, la aplicación corregirá el error si te equivocas

vía 13 Herramientas de Google Desconocidas para la Mayoría de Usuarios.