A serious potential danger with Exim host lists in ACLs

Suppose that you have an Exim installation and you want to support somesort of source host based blocking (selective or otherwise) of incomingconnections. The obvious way is to create an ACL section that lookssomething like this:

deny    domains = +local_domains    hosts   = ${if exists {UBLOCKDIR/hosts} {UBLOCKDIR/hosts}}    message = mail from host $sender_host_address not accepted by <$local_part@$domain>.    log_message = blocked by personal hosts blacklist

The technical effects of being an out of tree Linux kernel module

Suppose that you have a kernel module that is not in the mainstreamkernel source for one reason or another. Perhaps it is licensecompatible but just not integrated for various reasons (as is the casewith IET) or perhaps it is license incompatible (as is the case with ZFSon Linux). This non-inclusion has a number of cultural effects, but italso has real technical effects. Although I've mentioned them before , today I want to talk about them in somedetail.

The first thing to


Today's comment spammer trick: regurgitated comments

I log the contents of some attempted spam comments here on WanderingThoughts (the concise summary of when is when the spammer seemsto be trying hard). Usually this doesn't get anything, but today mytrawl through the logs turned up a succession of bizarre and odd commentattempts. The text had misspellings and typos but it generally madesense and most of the comment attempts were even about technical thingsthat are vaguely on topic for here. But they were invariably attemptsto comment on very inapplicable entries.

When I


A little habit of our documentation: how we write logins

Ove the years, we've developed a number of local conventions for ourlocal documentation . One of them is that wealways write Unix logins with < and > around them, as if they werelocal email addresses, so that we'll talk about how 's processeshad to be terminated or whatever. When I started here this struck me asvaguely goofy; over time it has rather grown on me and I now think it'sa quite clever idea.

Writing logins this way does


Why I'm not considering btrfs for our future fileservers just yet

In a comment on yesterday's entry I was asked:

Could you elaborate on the "btrfs does not qualify" part?

What's missing? How likely do you think this to change in the nearfuture?

I will give a simple looking answer that conceals big depths: what'smissing is a btrfs webpage that doesn'tsay 'run the latest kernel.org kernel' and a Fedora release thatdoesn't say 'btrfs is still experimental and is included as atechnology preview' (


Why ZFS's CDDL license matters for ZFS on Linux

In a G+ conversation about ZFS Iread the following:

[...] so, why use BTRFS at all? :-) Just the fact that it's GPL (andso able to be embedded into the kernel source tree) doesn't seemenough, specially considering that CDDL (the ZFS license) is a bonafide open source license, [...]

On the whole I like ZFS on Linux, but let's not mince words here: thislicensing issue is a


Why I've so far been neglecting functional programming languages

Functional programming languages are in many ways the latest hotnessand so for years I've been making off and on runs at things like yetanother explanation of monads (which I think I sort of understandby now) and similar topics. Despite this, so far I've been almostcompletely uninterested in actually trying to write a functional programor exploring a FP language.

The big problem for me is that as far as I can tell, the kind ofprograms I usually work with are exactly the kind of programs


My language irritations with Go (so far) and why I'm wrong about them

The great thing about an evolving language is that if you're slow enoughabout writing up your irritations with it, some of them can wind up fixed(or part fixed). So this list is somewhat shorter than it was when Ioriginally wrote my first Go program , and none ofthe irritations are major. Also, I will reluctantly concede that Go hasgood engineering reasons for all of them.

My largest single irritation is that break acts on switch and select ; I expected it to act only on any


The Unix philosophy is not an end to itself

Today I feel like opening a can of worms that I've alluded to before .

Here is something very important about the Unix philosophy (regardlessof what exactly that is): the Unix philosophy was not conceived as anempty philosophy that was an end to itself. Instead it is above all atheory about how to make computers easy, powerful, and useful. Thisphilosophy (or at least the things built by people following it at BellLabs and elsewhere) has been extraordinarily successful, and I'm not


The consequences of importing a module twice

Back when I wrote about Python's relative import problem , I mentioned that only actually importing amodule once can be important due to Python's semantics. Today I feellike discussing what these are and how much they can matter.

The straightforward thing that goes wrong if you manage to import amodule twice (under two different names) is that any code in the modulegets run twice, not once. Modules that run active code on import assumethat this code is only going to be run once; running