Email Gateway Provider credentials / connection test

Here I am using

openssl s_client -starttls smtp -crlf -connect


auth login

Enter the baes64 encoded username that you get as follows:

echo -n "SMTP_Injection" | openssl base64

Do the same for the password.

Full conversation:

auth login
334 VXNlcm5hbWU6
334 UGFzc3dvcmQ6
235 2.0.0 Authed. Go on.

auth plain:

echo -ne "\0User Name\123123123" | base64

Hint: Use swaks for testing and full smtp logging output:

brew install swaks
swaks -server -tls --auth-user SMTP_Injection --auth-password 123123123 --to --from --auth PLAIN

Simple Squid on Docker Setup


  • Linux Debian Jessie
  • root access

Install Docker

Add the following to /etc/apt/sources.list.d/docker.list

deb debian-jessie main

Install Docker and some required dependencies:

apt-get update
apt-get install apt-transport-https ca-certificates apache2-utils docker-engine
service docker start


add this to /srv/docker/squid/squid.conf (example squid.conf)

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/squid_passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users

Create the password file

touch /srv/docker/squid/squid_passwd
chown proxy /srv/docker/squid/squid_passwd
htpasswd /srv/docker/squid/squid_passwd user1

Get the docker image:

docker pull sameersbn/squid:latest

Run the docker container

docker run --name squid -d --restart=always   --publish 3128:3128   \
--volume /srv/docker/squid/squid.conf:/etc/squid3/squid.conf   \
--volume /srv/docker/squid/cache:/var/spool/squid3   \
--volume /srv/docker/squid/squid_passwd:/etc/squid/squid_passwd   \


Richard Stallman – Saint IGNUcius, Church of Emacs

*I attended Richard Stallman’s talk at ImpactHub Zurich two weeks ago. Yes, he did take off his shoes, and if you can look over a healthy dose of craziness, what he said made somewhat sense.

When Richard Stallman called himself Saint IGNUcius of the Church of Emacs he did so with a smile. He showed off a very fine and subtle sense of humour and seemed to be enjoying every ounce of it. When somebody from the audience asked a provocative question, in a very short time, the Saint was in a furious passion, and went stamping about, and shouting: ‘Shut his mouth’. Literally. *

This is not really my point though. Apart from being very eccentric, Richard Stallman has something important to say.

The software we use on a daily base on our computers, to do our work, should be free. Mind the difference between gratis and free here. Moreover, in answer to that provocative question, if Richard gets his money out of an ATM that’s perfectly ok. Because the ATM is not his and the bank can install the software they want on their machine, for their reasons.

These fine distinctions are important. And they show that what Richard (and GNU) wants is a lot more reasonable and practical than what you might think. Think about all the software we use for our daily work – much of it is in fact free/opensource (think of Chrome, Android OS, the web server that serves this page, or even parts of Mac OS X). And then think about how much headache non-free software has been causing (namely Microsoft software), and how much it has been limiting its users in what they wanted to do.

A trend Richard could not foresee is the Software-as-a-Service revolution. Many applications are being reinvented as cloud services, and the server software is, of course, proprietary. However not even SaaS can invalidate what GNU prescribes.

  1. First of all, the underlying software that runs much of SaaS is mostly free, which cannot be said of proprietary software that runs on personal computers.
  2. Secondly, the trend to move applications from personal computers back onto servers doesn’t mean that those applications cannot be open-source. In fact, open-source SaaS has been a very hot trend for years, just think about the widespread use of opensource Content Management Systems such as WordPress, Typo3, DjangoCMS.
  3. And last but not least, the architecture of modern applications is a lot more open than you might think. Hardly a SaaS provider can do without an open API (Application Program Interface) and many allow third-parties to extend and integrate and these extensions and plugins are open source.

Even if opensource / free software is not the cure to everything it is certainly on the rise and many modern companies such as Google itself often chose to opensource their software!

Adwords Checklist

Damit die Agentur effizient mit Adwords arbeiten kann, braucht es einige Vorbereitungen:


  • Adwords Konto muss im MCC der Agentur eingebunden sein. Dies ermöglicht der Agentur ein effizientes Zugriffsmanagement in Bezug auf mehrere Agenturmitarbeiter.
  • Google Analytics Conversion Tracking: Das Messen von Schlüsselinteraktionen (Kauf, Hinterlassen von Kontaktdaten, Erfassen von Terminen, etc.) ermöglicht es der Agentur, die Adwords-Kampagnen basierend auf dem Wert, den sie generiert, zu optimieren. Google Analytics ist für das Conversion Tracking optimal, weil das Tracking alle Quellen und Kanäle berücksichtigt und nicht bloss Adwords.
  • Zusätzlich zu Schlüsselinteraktionen kann in Google Analytics mit “intelligenten Zielen” generell Besuche mit einem hohen Engagement als Conversion erfasst werden. Dies ist vor allem bei längeren, komplexeren Verkaufsprozessen nötig, da dort die Conversion-Daten an Qualität (und damit an Aussagekraft) verlieren.
  • Import von Google Analytics Conversions nach Google Adwords: Damit kann der Spezialist der Agentur direkt in Adwords Conversion-Daten aus Google Analytics abrufen, z.B. auch für ein einzelnes Keyword.
  • Import von weiteren Kennzahlen nach Google Adwords: Um die Qualität der von Adwords generierten Besuche im Detail bewerten zu können, sollten Besuchsdaten (Seiten pro Besuch / Besuchsdauer, Absprungrate) ebenfalls importiert werden.
  • Hinzufügen der persönlichen E-Mail Adressen zu Google Analytics: In Google Analytics verbergen sich viele weitere Kennzahlen die für die Agentur wichtig sind. Für ein transparentes Zugriffsmanagement sollten bei Google Analytics nur persönliche (also keine Gruppen-) E-Mail Adressen verwendet werden.


  • Zugriff auf Google Tag Manager: Web Analytics Codes werden nicht mehr direkt in den Quellcode der Webseite eingebaut, sondern über eine spezielle Oberfläche, in diesem Fall der Google Tag Manager, dynamisch verwaltet. Dies hat den Vorteil, dass Marketing-Manager nicht mehr von der IT-Abteilung abhängig sind in Bezug auf Ein- und Ausbau von Webanalyse-Tags. Mit dem Zugriff auf Google Tag Manager kann die Agentur die von ihr benötigten Tracking- & Analyse-Instrumente selbst verwalten.

Website Relaunch Checklist

These days there is not much to do for a website relaunch once the owner is happy with the touch & feel on a stage system. But the following things sure make a difference:

  • Google Analytics: Make sure the old Google Analytics code is running on the new system upon launching.
  • Redirects: Make sure, the old URLs are properly redirected to the new ones. Also make sure that the sitemap.xml of the new website is available and still registered with Google Webmaster Tools / Search Console.
  • SSL: Make sure that your webmaster has access to your SSL certificates and configures them to take advantage of secure HTTP (HTTPS).
  • Email Gateway Provider: If you have email forms on your website you want them to deliver form submissions to you in a safe and reliable way. Make sure your webmaster uses a solid email gateway provider (such as mailchimp mandril or sparkpost) and has your sending domain verified and set a valid email address as the sender.
  • If you use Google Maps on your website make sure your webmaster whitelists the new domain in the Google API Console. Otherwise your Google Maps might not work.
  • It would be good to set speaking page titles and descriptions for each page. This is relevant for search engine result pages.

Jenkins Setup on Docker


docker pull jenkins


run docker container as daemon in the background: -d

docker run --name=jenkins-1.7.2 -d -p 8080:8080 -p 50000:50000 -v /data/jenkins:/var/jenkins_home jenkins


Currently not working, see

Connect to the latest docker image:
docker run -ti -u root jenkins:latest /bin/bash
Then make your changes, exit, find it
docker ps -a
and commit the image with your custom name
docker commit 72362a6649d1 jenkins:1.7.2_php


Create a Dockerfile:

FROM jenkins
# if we want to install via apt
USER root
RUN apt-get update && apt-get install -y php5-cli
USER jenkins

Build the image:
docker build -t jenkins:1.7.2_php .
Then start normally using the new tag
docker run --name=jenkins-1.7.2 -d -p 8080:8080 -p 50000:50000 -v /data/jenkins:/var/jenkins_home jenkins:1.7.2_php


docker stop <id-of-old-container>
docker rm <id-of-old-container>
docker pull jenkins


Remove all containers
docker rm $(docker ps -a -q)