People probably aren't going to tell you when your anti-spam systems are working
As part of yesterday's entry about how we're now using the spamscores generated by the university's central email system , I was going to say that our users seemhappy with the results. However, I have to admit that this is notquite true. We don't explicitly know that they're happy; instead,what we know is that they've stopped reporting that they're gettingtoo much spam and can we do something about that.
What I've come to
We've wound up using the spam scores from some other mail systems
Like many places, the university hasa central email system and all staff and professors have an addressthere. One of the things you can do with your UTORMail email isforward all of it to an email account elsewhere, such as your account here . A decent number of our usersboth do this and make a reasonably significant use of their centralemail address, making it visible and active and thus periodicallyhit by spammers. When these central email addresses get hit withspam, the central email system forwards it on to
The types of attachments we see for malware-laden email
These days we block some attachment types ,but of course not all of them. We also use our commercial anti-spampackage to detect and reject malware thatisn't already rejected outright as a bad attachment type. Thisraises the obvious interesting question of what attachment typesthat malware comes in. Unfortunately I can't answer exactly thatquestion from our logs, but I can see what attachment types we seein email that is rejected because it contains malware.
(This difference matters only if a malware email contains
OpenSSH has an annoyingly misleading sshd error log message
Suppose that you are trying to get some form of SSH serverauthentication going that uses hostnames. This might be straightforwardhost-based authentication to enable root on a master machine tohave access to subordinate machines, or it might be hostname-based Match statements to enable or disable some restrictions (as oneother example where you can use hostnames). However, it's notworking; when you try host-based authentication, for example, youget a log message on the target machine saying something like:
sshd
Is bootstrapping Go from source faster using Go 1.9 or Go 1.8?
A while back I wrote about building the Go compiler from source and then where the time goes when bootstrappingGo with various Go versions . In both ofthese, I came to the conclusion that bootstrapping with Go 1.8.x.Now that Go 1.9 is out , aninteresting question is whether using Go 1.9 as your bootstrap Gocompiler makes things appreciably faster. One particular reasonto wonder about this is that the Go 1.9 announcement specifically mentions that Go 1.9compiles functions in
Fedora 26 and a font rendering dilemma for me
I recently upgraded my office workstation from Fedora 25 to Fedora26, which didn't go entirely smoothly. One of the things that didn'tis fonts, or more specifically a change in font rendering. I havea long standing set of fontconfig user tweaks thatare supposed to give me relatively light-weight fonts, and they'venow stopped working all that well (although it turns out they haven'tcompletely stopped working).
To make this concrete, ere are three images of xterm

The probable coming explosion of Firefox 57
Let's start with what I tweeted :
I don't think Mozilla understands how angry plenty of people are goingto be when Firefox 57 is released and breaks many of their addons.
If you follow Firefox news, you already know what this is about;Firefox 57 is when Mozilla is going to turn off all old extensions,ones that are not WebExtensions (thisis apparently different from being ready for Firefox Electrolysis , although all WebExtensionsare okay with Electrolysis, or maybe there is something confusinggoing on
An unexpected risk of using Go is it ending support for older OS versions
A few years ago I wrote The question of language longevity fornew languages , where I used a concern about Go 's likely longevity as the starting pointto talk about this issue in general. The time since then has firmedup Go's position in general and I still quite like working in it,but recently a surprising and unexpected issue has cropped up herethat is giving me some cause for thought. Namely, the degree to whichGo will or won't continue to support older versions of OSes.
Why Go changes its minimum version requirements for OSes (and hardware)
Yesterday I wrote about the unexpected (to me) risk of Go endingsupport for older OS versions . This raises theobvious question of why Go does this and the related question ofwhat is affected by the increased version requirements. I'm notgoing to try to give exhaustive answers here; instead, I havesome examples.
There are several reasons why Go changes its requirements, dependingon what is moving forward. To start with CPU architecture requirements,Go 1.8 said about its ARM support:
Go 1
Understanding rainbow tables
In yesterday's entry , I casuallymisused the term 'rainbow table' because I thought I knew what itmeant when I actually didn't; what I was actually talking about wasa (reverse) lookup table, which is not at all the same thing. I'msure that I've read a bit about rainbow tables before but evidentlyit didn't stick and I didn't really get them. As a result of dozzie'scomment pointing out my error, I wound up