Jul 8, 2015 - Why does Gmail hate my domain?

For 10 out of the last 15 years, I’ve run my own mail servers. I switched to Gmail when it came out, but I decided I didn’t want to have so much data in their hands. So I took it away from them, and I’ve hosted it again myself for the last few years. In the beginning, it was troublesome, I’d end up in spam folders everywhere. But these days I don’t have much issue with Yahoo or Hotmail/Outlook/MSN/whatever they are now - only Gmail is the outlier.

A few days ago, I attempted to e-mail a company regarding an online e-commerce order I had placed, from my personal address. My email was rejected by Google and improperly identified as bulk e-mail. It’s not an infrequent occurrence. Either my mail ends up in spam folders, or they outright reject it:


The e-mail headers google shows are fine - it passes both DKIM and SPF:


My mail server is not in any blacklist, and any kind of diagnostics you want are GREEN. I’m not an open relay, nor have I ever been.


What is my crime? I host a well-behaved mail server that’s been around for at least a few years, that implements industry standards like DKIM and SPF correctly. It has never sent a single spam, and barely sends mail at all - a couple hundred a year, maximum. And all of a personal nature.

I can only think this is intentional on Google’s part - they have a near monopoly; the vast majority of mail I send these days goes to Google - and if a small company is running their own mail server is too much of a hassle, then maybe they’d buy Google Apps. It’s bad, anti-competitive behavior on Google’s part. Shame on them if its true. I don’t know if it is, I can only guess, but they certainly have an incentive to make it difficult for the little guy.

I’m just a geek that likes running my own servers. My pleas to Google’s impersonal forms fall on deaf ears, and I’m getting tired of telling everyone I e-mail to check their spam folders.

What can I do except move to a hosted provider with a better reputation with Google?

May 7, 2015 - Using Librarian with Katello

Currently, Katello doesn’t handle dependency management for Puppet modules, but you can use librarian-puppet for this purpose.

Let’s create a Puppetfile for our Content View:

forge "https://forgeapi.puppetlabs.com"

mod 'puppetlabs-apache'
mod 'puppetlabs-ntp'

Use librarian-puppet package to get the .tar.gz packaged modules:

# librarian-puppet package

At this point, you’ll have a directory vendor/puppet/cache with all of the puppet modules including their dependencies.

└── puppet
    ├── cache
    │   ├── puppetlabs-apache-1.4.1.tar.gz
    │   ├── puppetlabs-concat-1.2.1.tar.gz
    │   ├── puppetlabs-ntp-3.3.0.tar.gz
    │   └── puppetlabs-stdlib-4.6.0.tar.gz
    └── source

Upload the modules with hammer:

# hammer repository upload-content --organization="BitBin"\
  --name "Local Forge" --product "Puppet Modules" --path vendor/puppet/cache

[Foreman] Username: admin
[Foreman] Password for admin: 
Successfully uploaded file 'theforeman-dns-2.0.1.tar.gz'.
Successfully uploaded file 'puppetlabs-concat-1.2.1.tar.gz'.
Successfully uploaded file 'puppetlabs-stdlib-4.6.0.tar.gz'.
Successfully uploaded file 'puppetlabs-apache-1.4.1.tar.gz'.
Successfully uploaded file 'theforeman-concat_native-1.4.0.tar.gz'.
Successfully uploaded file 'puppetlabs-ntp-3.3.0.tar.gz'.

But, you’ll probably want to add them to a Content View, too. This will require some fancy dancing with bash, but it appears hammer puppet-module is broken. See: http://projects.theforeman.org/issues/10410

If hammer puppet-module did work, some hacky shell script like this would do it:





MODULES=$(librarian-puppet show)

for module in $MODULES
  echo ----- $module
  name=$(echo $module | cut -f1 -d\()
  version=$(echo $module | cut -d\( -f2 | cut -d\) -f1)

  module_id=$(hammer -u $USER -p $PASSWORD puppet-module list --repository-id=$REPOSITORY | grep $name | grep $version | cut -d\| -f1)
  hammer -u $USER -p $PASSWORD content-view puppet-module add --organization-id=$ORGANIZATION --content-view-id=$TARGET_CONTENT_VIEW --id=$module_id

Jan 6, 2015 - Legal Television and Movies for Expats, Part 2

A while ago,I wrote a blog post about legal television and movies for expats, using streaming services combined with a VPN.

Unfortunately it looks like things are changing: movie studios are fighting back against our outrageous attempt to give them our money, by blocking these VPN services.

No doubt, if this escalates, they’ll certainly find the range my current VPN provider uses and block it, and I’ll be stuck with what’s available in Germany. Thankfully, the situation has improved a lot - Netflix and Amazon both stream in Germany now, but still mostly crappy dubbed content. A very limited selection of Original Version (OV) content is available that falls far short of what’s streamable in the U.S.

Most television shows take years to become available here due to complex localization and licensing requirements. Movies take less time, but still not on par with the U.S., Sony completely ignored the rest of the world when they launched The Interview, for example.

The internet has no borders. Please stop building artificial ones. :-(