Hooked – How to Build Habit-Forming Products

Hooked

A quien quiera leer este libro en Inglés, primero de todo no os asusteis es muy sencillo de leer, así que si ese es vuestro miedo, no sufrais.

Es un libro interesante que te explica una sencilla pero potente idea sobre como contruir productos que generen adicción, siempre explicado con ejemplos que hacen que la comprensión sea muy fácil.

En esencia el modelo «Hook» se basa en conseguir 4 fases o estadios

Trigger: «Que es lo que hace que el usuario use nuestro producto» ese disparador interno (rutina) o externo (publicidad) que hace por ejemplo, quere usar Instagram.

Action: La acción que debemos hacer para poder usar Instagram, en este caso el registro, debe ser lo más sencillo y menos doloroso posible, para evitar las barreras de entrada y poder llegar al siguiente punto, la recompensa.

Variable reward : Esta parte quizás fue la que más me gustó del libro, empezando por algo tan básico (pero que no había caido), el usuario no puede siempre ganar (pensar el ejemplo de la máquina tragaperras), también diferencia los tipos de reward que existen (tribu, cazador, yo), en definitiva explica como y cuando según tus necesidades debes recompenar al usuario.

Investment : Otro concepto interesante que ya había escuchado con anterioridad es la necesaría inversión que debe hacer el usuario en tu producto, ese trabajo «pequeño» pero constante, bajo un concepto precioso de que cuanto más nos cuesta algo, más lo valoramos (pensar en la valoración que le damos a los muebles del Ikea después de haberlos montado) , hay muchos ejemplos muy interesante sobre esto en el libro.

 

En definitiva, es un libro muy ameno, que se puede leer en 4 o 5 horas, con una idea muy buena y repleto de ejemplos utiles que lo simplifican, esto junto con un precio muy atractivo en Amazon, lo hacen una compra más que recomendable.

Los mecánicos deben ser los mejores padres

A mi dilatada experiencia de 65 días siendo padre y con mas de 500 pañales a cuestas, me he dado cuenta que la experiencia es añadir puntos a un checklist.

Niña llora, ¿Que le pasará? ¿hambre?, le das de comer, la niña calla, perfecto!!! hemos aprendido llanto dispara comida.

Niña llora, das comida, no tiene hambre ¿Qué ocurre? ¿Tendrá el pañal sucio? limpias el pañal, la niña calla, perfecto!! llanto dispara comida o caca.

Niña llora, das comida, no tiene hambre, cambias el pañal, está limpio ¿Qué ocurre? ¿Tendrá gases? haces movimientos de piernas, la niña suelta metano como para considerarse bomba química, pero calla, perfecto!!! llanto dispara comida, caca, gas.

Después el listado sigue, con sueño, frio, sudor… en el mismo formato de las anteriores, try catch.

Conclusión, ahora, cada vez que mi hija llora, le hago la revisión oficial de los 25 puntos (hambre, pipi, caca, gases, frio, sudor, sueño, fiebre…) hasta que, con mucha suerte, encuentras el que le tranquiliza.

Reflexión 1: Los niños deberían venir con un cuadro de mandos como el coche para facilitar encontrar la avería.

Reflexión 2: Espero que con el tiempo mi algoritmo de búsqueda mejore, porque hasta el momento los costes son cuadráticos.

National Pens

Hoy me gustaría explicar una amarga experiencia que he tenido con la empresa National Pens… estoy un día en el ordenador y me llega un mail de confirmación de un pedido de 100 bolis, raudo y veloz llamo al teléfono de la empresa a decir que yo no he hecho ningún pedido, que si es correcta esa información que lo cancelen; la chica me intenta convencer de que realmente he sido yo quien ha hecho el pedido, ya que se ha utilizado un código único escrito en una carta que enviaron a mi dirección junto con un boli de muestra, carta que no viene certificada ni evidentemente recibí jamas.

Pasado X días recibo el paquete en mi casa, con la mala suerte que no soy yo quien está en casa ese día y por lo tanto el paquete queda recibido, envío un mail a la dirección de correo que aparece en los papeles irccesteam@pens.com y NP_ESFinance@pens.com , para indicar que no he hecho el pedido y que por favor vengan a buscar el producto.

Empiezo entonces a recibir cartas de pago de factura, a las que contesto que no he hecho el pedido y que por favor vengan a por los bolis, envío mails a los que nunca nadie me contesta, las cartas de impago siguen llegando… les intento enviar un burofax, pero sorprendentemente no tienen dirección física y a un apartado postal no puedo enviar un burofax.

Les envío mails resumiendo lo ocurrido, pero nunca nadie me dice nada, así que puesto que no puedo enviar un burofax, envío un mail certificado, no sirve de nada, las reclamaciones (con recargo de factura) siguen llegando, así que vuelvo a llamar al 900 96 35 36 para intentar dar sentido a este sin sentido, hablo con una chica, que se niega a darme su nombre (políticas de empresa me dice) así que no tengo más que llamarla «Señorita X», le explico a Señorita X lo que ha ocurrido y me dice que lamentándolo mucho, voy a tener que pagar, porque la información escrita en los bolis es correcta.

Cojo aire y le pido confirmación, «¿O sea… que enviáis un boli a un buzón sin ningún tipo de seguridad que lo reciba la persona adecuada, que si se hace el pedido con la información que hay en internet (nada personal) es suficiente «prueba» como para obligarme a pagar una factura de un pedido que yo NO he hecho y que he informado en varias ocasiones y por varios medios que no NO había hecho? » Contestación de Señorita X, «Sí, lo lamento mucho pero tendrá que pagar».

No se la legalidad de este procedimiento, pero a mí se me ha quedado un cuerpo de haber sido engañado y estafado por esta National Pens.

Espero que esta historia se sirva a alguien, como mínimo para saber lo que debe y no hacer ante una situación como la que me ha ocurrido a mí.

La isla de los 5 faros

Hace poco trabajando con @Pere Carbó de Cala me recomendó un libro que me ha parecido muy interesante, «La isla de los 5 faros», es un libro de pocas páginas que se puede leer fácilmente en un par de horas, el mensaje que nos da puede parecer evidente, pero lo importante no es que el mensaje sea revelador, sino intentar tenerlo presente cada vez que queramos hacer alguna presentación o en general cuando queramos exponer algo de forma efectiva.

Las 5 ideas son:

Ten siempre claro y deja claro cual es la idea o ideas que quieres comunicar, no hay nada peor que acabar de escuchar una presentación y no coincidir que la persona de al lado sobre cual era el tema de la charla o los puntos importantes de la misma.

Habla el lenguaje de tus oyentes, es muy importante hablar el mismo lenguaje de las personas que nos escuchan, evidentemente no estoy hablando de idioma, estoy hablando por ejemplo, de evitar tecnicismos sí estamos hablando con personas no técnicas. Hablar diferentes lenguajes genera distancia y precisamente es lo que queremos evitar.

Cuenta una historia, esta idea me encantó, no hay mejor forma de explicar una idea que en forma de historia o metáfora, es la mejor forma de hacer que las personas lo entiendan y lo retengan.

Fíjate en el lenguaje de las personas, mira como reaccionan, que cara ponen, verás como debes modular tú discurso y rectificar en el caso que sea necesario, verás en la gente el reflejo de lo que sienten por lo que estás explicando.

Invita, no empujes, esta sería la última idea, personalmente (y no tiene porque tener sentido para ti) me recuerda al concepto de no vender un producto, sino vender la solución a una necesidad, la perspectiva del cliente es totalmente diferente. Siempre me acordaré de MadMen cuando decía: «Hay que generar un picor en el cliente, que sienta la necesidad de aliviar ese picor y solo entonces, le presentamos nuestro producto, como la solución a sus picores».

He disfrutado mucho con este libro y ciertamente lo recomiendo a cualquiera.

Gestión de las peticiones

Un punto común en la gestión de incidencias o peticiones, es la recepción de las mismas, como recepcionamos estas peticiones.

Si miro atrás en el tiempo veo que siempre ha sido un punto muy importante en el trabajo y que sufre un seguido de fases que comentando con mis colegas son siempre comunes.

Peticiones de pasillo

 

Petición de pasillo: Por comodidad del usuario suele ser la primera que gestionas en la vida, usuarios que por pasillo o por teléfono te hacen una petición de lo que quieren o lo que les ocurre. En este estadio vives muy poco tiempo, al poco migras a la versión 2.0 de «petición de pasillo», que es «me lo apunto en la agenda», ya empezamos a querer tener un mínimo de orden, es imposible acordarse de todo!!

 

Petición por Email

 

Enviame un mail: Después de migrar de la «petición de pasillo» a «me lo apunto en la agenda», rápidamente llegamos a una conclusión: «Si yo me lo tengo que apuntar en la agenda, que me lo envien por mail y así ya lo tengo escrito», con lo que agarramos con fuerza nuestra bandera donde pone «¿Me lo envias por mail?» y cada vez que alguien en el pasillo o por teléfono te hace una petición, tú sacas la bandera y repites como un buen lorito: «¿Me lo envías por email?»

 

Ticket

 

Me abres un ticket: En el punto anterior del email, nos hemos sentido cómodos durante algún tiempo, pero poco a poco empiezas a ver que tampoco es el estadio ideal, te juntas con 200 mails al día entre:  trabajo, publicidad, compras, spam…empieza a ser incontrolable, pero como estás bien en este estadio, te intentas agarrar y empiezas a hacer variantes, ¿Y si voy creando carpetas para clasificarlo todo? ¿Y si intento mantener la bandeja de entrada como tareas pendientes y clasificó lo realizado en carpetas? ¿Y si juego con etiquetas de colores automáticas para poder gestionar mejor el correo? … pero nada te parece del todo correcto, no tienes control de las incidencias, no tienes indicadores, no puedes cuantificar cargas de trabajo y entonces es cuando te rindes a la plataforma de ticketing, coges tu bandera donde habías escrito el «¿Me lo envias por mail?» y lo sustituyes por «Me abres un ticket?»

 

 

Soporte

 

Me envias un soporte: Ya estamos en un punto de madurez alto, tenemos nuestras peticiones que nos han entrado por la plataforma de ticketing y podemos controlar trabajo pendiente, SLA’s, cargas de trabajo, responder con base de conocimiento, todo empieza a estar controlado y parecer profesional, solo hay un pequeño problema, al usuario esto de entrar en una web, hacer login y enviar una petición le gusta más bien poco, sobretodo al usuario V1.0 que le has ido pasando de la petición por el pasillo al email y del email al ticket ya empieza a estar un poco harto, porque para él no haces más que complicarle la vida, así que en este estadio empiezas a tener fricciones serias.

 

La solución en mi caso es hacer un híbrido del paso 2 y 3, no me abras un ticket, pero enviame un mail a soporte@ o incidencias@ o helpdesk@ que esto me abrirá un ticket y tú solo me tienes que enviar un mail: «Eso ya lo hacías antes y no te cuesta nada…»

 

Y así amigos es como ha sido mi evolución en la introducción de peticiones, si un caso otro día hablamos de cómo podemos gestionar incidencias con SLA’s cortos a proyectos o miniproyectos sin SLA’s en una misma plataforma.
Saludos!

Instalar Symfony2 en Yosemite con MAMP

Un amigo mio me comento que Symfony es una gran opción para programar web, pues vamos a probarlo, así que veremos como instalar Symfony2 en Yosemite con MAMP!!

Primero de todo me bajo MAMP para correr un entorno de desarrollo local en mi MacBook Pro Retina de 13″ (Sí, estoy orgulloso de él)

Empezamos mal, pues al arrancar MAMP ya no funciona

dyld: Symbol not found: _iconv Referenced from: /usr/lib/libmecabra.dylib Expected in: /Applications/MAMP/Library/lib/libiconv.2.dylib in /usr/lib/libmecabra.dylib /Applications/MAMP/Library/bin/apachectl: line 80: 2799 Trace/BPT trap: 5 $HTTPD "$

MAMP error Yosemite

 

Para arreglar esto nos vamos a la carpeta Aplicaciones de nuestro Mac y allí entremos en:

bin -> apache2 -> bin

Cambiamos el nombre del fichero envvars a _envvars

MAMP ya arranca, eso es bueno.

 

 

 

Ahora nos vamos a instalar Symfony, que es lo que queremos… entramos en la web de Symfony y vemos que nos dicen que para instalarlo tenemos que utilizar un script llamado composer, pues lo que ellos digan, si es así vamos allá.

Abrimos un terminal de Mac y lanzamos

curl -sS https://getcomposer.org/installer | php

Ningún problema, siguiente orden:

sudo mv composer.phar /usr/local/bin/composer

Ya estamos otra vez, «error», la carpeta no existe, no es un gran problema, cambiamos la ruta y punto

sudo mv composer.phar /usr/bin/composer

Perfecto, esto ya está, otro paso más hacia Symfony, ahora tenemos que instalar el aplicativo utilizando composer

composer create-project symfony/framework-standard-edition ruta-donde-instalaremos-la-aplicacion/

Que bonito! empieza a hacer cosita, a descargar otras, me hace preguntas del servidor de Mysql: usuario, pass, puerto bla bla bla bla y para terminar, algo que no había sucedido nunca, «error».

Cagontodo, mira que está siendo un parto esto

Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-update-cmd event terminated with an exception

[RuntimeException]
An error occurred when executing the "'cache:clear --no-warmup'" command

Volvemos a buscar información y como dice el error un poco más arriba, es debido al date.timezone de php.

Ningún problema!!! MAMP tiene un fabuloso sistema de plantillas para corregir esto, en la configuración del php.ini de la distribución de PHP que estemos lanzando en ese momento.

Ni corto ni perezoso me voy al php.ini del MAMP y añado la linea:

date.timezone = "Europe/Madrid"

Lanzo nuevamente el instalador y… redoble de tambores!!! tampoco va… mismo error, mi no entender.

Me rasco la cabeza a modo orangután pensando que narices puede ser, creo un fichero para lanzar un phpinfo() y me está devolviendo bien date.time

Entonces ocurrió un milagro de esos que no se bien bien porque me vienen a la cabeza y pienso

¿Y si el apache está lanzando una versión de PHP, pero la consola de comando está lanzando la versión que viene nativa en Yosemite?

Con una aureola celestial a mis espaldas lanzo desde linea de comandos un php -v y veo que me devuelve la versión 5.5.14 cuando MAMP trabaja con la 5.5.10 , ahí está, tenía razón, a veces pienso en Marilyn Manson y su costilla.

Bueno señor@s, pues miro donde está el php.ini nativo de Yosemite y como no, está en /etc/php.ini.default así que copiamos el fichero para que sea php.ini

 sudo cp /etc/php.ini.default /etc/php.ini

Añadimos la susodicha linea de date.timezone, lanzamos nuevamente el composer y ahora sí!!!! Con lagrimas en los ojos doy gracias a mis padres y a todo el mundo que me ha apollado en esta ardua carrera….

Seguimos, siguiente paso es cambiar los permisos de ciertos directorios

chmod 0777 app/{cache,logs}
chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/{cache,logs}

Una vez hecho esto, arrancamos nuestro servidor

php app/console server:run

Y al navegar a la url de config  localhost:8000/config.php deberíamos ver algo así:

yosemite-symfony-start

Pero… ¿Yo vi ese mensaje?

A estas alturas ya sabéis que yo no vi ese P#t@ mensaje

 

Yo me comí un :

 

Major problems

Major problems have been detected and must be fixed before continuing:
    1.    Vendor libraries are missing. Install composer following instructions from https://getcomposer.org/. Then run "php composer.phar install" to install them.

Bueno, haremos lo que nos dice y lanzaremos comando dentro de nuestra web

composer install

Pero continua dando el mismo error, me meto otra vez en San Google y miro que narices es este error, encontrando esto:

 

https://stackoverflow.com/questions/27744855/symfony-2-6-error-after-using-composer-vendor-libraries-must-be-installed

Pues se ve que es un Bug actual, menos mal, empezaba a estar cansado de tanto fracaso y error.

Bueno, pues ya está señor@s, tenemos Symfony2 instalado en nuestro Mac con MAMP.

Ahora solo hace falta programar, que es lo realmente fácil :p

 

 

Migrar un blog WordPress de una Url de desarrollo a una Url de producción

Para entender un poco la situación debemos entender que tenemos al usar wordpress:

1) Ficheros php que encontramos en la raíz del directorio de desarrollo, los ficheros de https://new.dominio.com
2) Base de datos Mysql del dominio new.dominio.com
3) Fichero de conexión PHP que enlaza los ficheros (punto 1) con la base de datos (punto 2) este fichero se llama wp-config.php y está en la raiz del directorio

Para mover los ficheros a otro lado, cada uno puede hacer lo que quiera, a mi me gusta comprimir los en un tar llevarme el fichero al servidor destino y descomprimirlo. Entramos por SSH en el servidor y escribimos:

tar czvf backup.tar.gz *

Nos llevamos el fichero a la ubicación del nuevo servidor y escribimos

tar xzvf backup.tar.gz

Muy bien…ahora tenemos los ficheros en el nuevo servidor, pero tenemos que cambiarles el propietario, porque los ficheros conservan el usuario:grupo que tenian en el antiguo servidor, para ello escribimos:

chown usuario:grupo * -R

Así cambiamos de forma recursiva los propietarios de los ficheros.

Una vez hecho esto tenemos que migrar la bbdd, esto cada uno lo hace como quiere, la idea es coger la bbdd de desarrollo volcarla en un .sql irse a la base de datos de producción y ejecutar ese fichero. A mi personalmente me gusta Navicat, así que las capturas serán de Navicat

Nos vamos a la base de datos de desarrollo, botón derecho y Dump SQL -> Estructure and Data

DumpSQL

 

 

 

 

 

 

 

 

Esto nos generará un fichero .sql con las instrucciones para regenerar la base de datos.

Ahora nos tenemos que ir a la base de datos de producción a restaurar dicho fichero, para hacer esto no es mas que ejecutar una query.

 

 

 

 

LoadQuery

 

 

 

 

Perfecto, ahora ya tenemos fichero y base de datos en el nuevo servidor, ahora solo nos faltan dos detalles.

Cambiar los datos del fichero wp-config.php para que funcionen con la nueva conexión. Nos metemos por ssh en el nuevo servidor y hacemos un:

 

 

 

vi wp-config.php

wp-config

 

 

 

 

 

 

 

 

Escribimos el usuario/password de la conexión a la base de datos y el nombre de la base de datos en el caso que sea diferente.

Perfecto! somos los mejores, ahora nos vamos a nuestro sitio web y…. funciona, que bonito, que alboroto otro perrito piloto!!!

Solo un detalle, al primer click que hagas te vas al site antiguo 🙁

Dentro de la base de datos guarda información referente a la URL del sitio, con lo que aún está apuntando a https://new.dominio.com en vez de https://www.dominio.com

Para poder corregir esto, tenemos que lanzar una sentencia de SQL para poder corregir esto ¿Que sentencia? pues para esto tenemos una página que nos ayuda mucho:

https://themergency.com/generators/wordpress-site-url-migration-generator/

Aquí veremos que nos pide la URL antigua, la URL nueva y el prefijo que le hemos puesto en la instalación del WordPress.

Normalmente el prefijo suele ser wp_ pero me he encontrado locos que le han puesto como prefijo 8jZsyWKjTn_

Bueno, si tu eres uno de esos locos, pues en el apartado de prefijo deberás escribir eso… la página te generará un código tal que así

/* update all post permalinks */
update 8jZsyWKjTn_posts
set guid = REPLACE(guid, 'https://new.dominio.com', 'https://www.dominio.com')
where guid LIKE '%https://new.dominio.com%';

/* update all post content */
update 8jZsyWKjTn_posts
SET post_content = REPLACE(post_content, 'https://new.dominio.com', 'https://www.dominio.com')
where post_content LIKE '%https://new.dominio.com%';

/* update all post meta */
update 8jZsyWKjTn_postmeta
SET meta_value = REPLACE(meta_value, 'https://new.dominio.com', 'https://www.dominio.com')
where meta_value LIKE '%https://new.dominio.com%';

/* update all options */
update 8jZsyWKjTn_options
set option_value = REPLACE(option_value, 'https://new.dominio.com', 'https://www.dominio.com')
where option_value LIKE '%https://new.dominio.com%';

Donde indica que debe actualizar los contenidos de la base de datos con la nueva URL.

Nos vamos nuevamente al Navicat, desde el apartado de querys creamos una nueva y enganchamos el churro de código que nos ha dado la página.

Hecho esto ya nos funcionará el Blog perfectamente!!!

Exportar Buzones Exchange 2010 a PST | Muy fácil

Exportar-Exchange2010-PST
Exportar Buzones Exchange 2010 a PST

A quien no le ha pasado que trabajando con Exchange 2010, por precaución o por necesidad, quiere exportar todos los buzones o algún buzón a PST.

Los informáticos un poco carcas (como yo) tenemos en mente aquella fabulosa herramienta de Exchange 2003 para exportar a PST, es una pena que las versiones posteriores no lo lleven.

Como siempre tirando de Google y de Technet llegamos a la conclusión que podemos hacer lo mismo nosotros mismos tirando de comandos, cosa que me parece más divertida que la herramienta gráfica que antes comentaba.

Resumo unas ordenes a lanzar desde la consola de comandos de Exchange para poder hacer la exportación, teniendo en cuenta que queremos, exportar un usuario en concreto, todos los usuarios, filtrar por fechas para uno o varios usuarios.

Así podréis escoger y jugar para bastantes situaciones que se os puedan plantear.

 

En mi caso yo quería dejar únicamente los correos posteriores a una fecha en concreto así que necesite:

– Full backup de todas los buzones (Por si un caso)

– Backup de los buzones para los correos que quería eliminar.

 

Es importante que la ruta de exportación sea UNC a una carpeta con permisos.

 

 

Exportar un usuario Exchange 2010 a PST


New-MailboxExportRequest -Mailbox usuario -FilePath \\RutaUNC\PST\usuario.pst

 

 

Exportar un usuario Exchange 2010 a PST filtrando por fecha


New-MailboxExportRequest -Mailbox usuario -ContentFilter {received -lt ’01/07/2014′} -FilePath \\RutaUNC\PST\usuario_010712014.pst

 

 

Exportar todos los usuarios de Exchange 2010 a PST


foreach ($i in (Get-Mailbox)) {New-MailboxExportRequest -Mailbox $i -FilePath «\\RutaUNC\PST\$($i.Alias).pst»}

 

 

Exportar todos los usuarios de Exchange 2010 a PST filtrando por fecha


foreach ($i in (Get-Mailbox)) {New-MailboxExportRequest -Mailbox $i -ContentFilter {received -lt ’01/07/2014′} -FilePath \\RutaUNC\PST\$($i.Alias)_010712014.pst}

 

 

Borrar la petición de Exportación que se han completado correctamente


Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest

Fuente: https://technet.microsoft.com/en-us/library/ff607464%28v=exchg.150%29.aspx

 

 

Mirar como va el proceso de exportación de buzones


Get-MailboxExportRequest | Get-MailboxExportRequestStatistics

 

 

Errores de replicación en entornos virtuales y el error 8456 o 8457

desesperaciónComo la mayoría de los errores graves de un informático empiezan por una tontería de nada:

Me da error al acceder a la cuenta Exchange que acabo de crear ¿Que extraño…?

Desde ese punto inicial empezamos a tirar de la manta a ver que ocurre, por OWA entramos bien, que raro…

El objeto existe en el servidor de Exchange, perfecto y en el servidor del 2008… no ahí no existe.

Es en ese momento cuando me empiezo a poner pálido y las gónadas ascienden hasta rodear la garganta.

Empiezo a tirar del visor de sucesos y me encuentro los sucesos 8456 y 8457 el servidor destino/origen rechazo la petición de replicación, la famosa frase:

 

 

«El servidor de destino está actualmente rechazando las solicitudes de replicación»

Cabrón…¿!Porque rechazas a tu hermanito¡? con lo que él te quiere.

 

Lanzamos un  repadmin /options *  y vemos

 

Repadmin: running command /OPTIONS against full DC SRVEX2010
Current DSA Options: IS_GC DISABLE_INBOUND_REPL DISABLE_OUTBOUND_REPL
Repadmin: running command /OPTIONS against full DC SRV2008
Current DSA Options: IS_GC
Satán te pillé!!!
Nos vamos al servidor que toca, en este caso el del Exchange y ponemos:
repadmin /options localhost -DISABLE_OUTBOUND_REPL
repadmin /options localhost -DISABLE_INBOUND_REPL
Después de esto y un par de cigarrillos para dar tiempo, problema resuelto 🙂
 Bueno, espero que sea de ayuda!!!
Fuente:
https://guylabs.ch/2013/11/06/vmware-snapshot-and-recovery-fix-active-directory-replication/
https://www.bassas.pro/index.php/site-replica-vpn-i-mtu-misteris-resolts/

Servidor Ubuntu 12.04 Postfix con Relay a Gmail con multicuenta.

Vamos a ver como montar un servidor Postfix con Gmail, la gente normalmente monta los servidores para hacer el envio con 1 cuenta únicamente, mi caso es diferente, tengo varias cuentas de la misma empresa que descargo por imap desde Google, pero el envio me molesta más que sea directo contra Google, no me gusta esperar!! Así que montaremos un servidor Ubuntu para que haga el envio de los correos hacia Google.

apt-get install postfix
vi /etc/postfix/main.cf

Dentro del main.cf debemos tener algo parecido a esto:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

append_dot_mydomain = no

readme_directory = no

smtp_use_tls = yes
smtp_tls_CAfile = /etc/postfix/cacert.pem

smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

myhostname = servidor.dominio.local
myorigin = /etc/mailname
mydestination = servidor.dominio.local, localhost.dominio.local, localhost
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/passwd
relayhost = [smtp.gmail.com]:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

sender_canonical_maps = hash:/etc/postfix/sender_canonical

smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = no
smtpd_sasl_local_domain =
smtpd_sasl_security_options =
broken_sasl_auth_clients = yes
smtp_sasl_auth_enable = yes
smtp_sender_dependent_authentication = yes
smtp_sasl_password_maps = hash:/etc/postfix/passwd
smtp_sasl_security_options = noanonymous
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject

De aquí resaltaremos:

myhostname = servidor.dominio.local «Aquí pondremos el nombre del servidor que hemos especificado en la Instalación»
mydestination = servidor.dominio.local, localhost.dominio.local, localhost «Nombre del servidor también como localhost y nuestro dominio»
sender_canonical_maps = hash:/etc/postfix/sender_canonical «En este fichero guardaremos la relación entre usuarios y dirección»
smtp_sasl_password_maps = hash:/etc/postfix/passwd «En este fichero guardaremos la relación entre la dirección de correo y el password»

Ahora crearemos los dos ficheros que hemos dicho anteriormente, primero el fichero passwd

vi /etc/postfix/passwd

Y dentro escribiremos el texto de esta forma:

usuario1@dominio.com usuario1@dominio.com:PasswordUser1
usuario2@dominio.com usuario2@dominio.com:PasswordUser2
usuario3@dominio.com usuario3@dominio.com:PasswordUser3
usuario4@dominio.com usuario4@dominio.com:PasswordUser4
usuario5@dominio.com usuario5@dominio.com:PasswordUser5
usuario6@dominio.com usuario6@dominio.com:PasswordUser6

Proseguiremos con el fichero sender_canonical

vi /etc/postfix/sender_canonical

Con una estructura de: usuario (espacio) dirección de correo

usuario1 usuario1@dominio.com
usuario2 usuario2@dominio.com
usuario3 usuario3@dominio.com
usuario4 usuario4@dominio.com
usuario5 usuario5@dominio.com
usuario6 usuario6@dominio.com

Una vez hecho esto haremos:

chmod 600 /etc/postfix/passwd
chmod 600 /etc/postfix/sender_canonical
postmap /etc/postfix/passwd
postmap /etc/postfix/sender_canonical

OK, falta poco, instalaremos los certificados

mkdir /etc/postfix/certs/
cd /etc/postfix/certs/
cd certs
openssl dsaparam 1024 -out dsa1024.pem
openssl req -x509 -nodes -days 3650 -newkey dsa:dsa1024.pem -out mycert.pem -keyout mykey.pem
ln -s mycert.pem CAcert.pem
openssl req -x509 -new -days 3650 -key /etc/postfix/certs/mykey.pem -out /etc/postfix/certs/mycert.pem
rm dsa1024.pem

Una vez hecho esto solo nos queda reiniciar el servicio de postfix

/etc/init.d/postfix reload