Damn DMARC

So a couple of weeks or months ago, I noticed something odd with the mailing lists I run. People on Yahoo and AOL claimed that they were missing messages, and Gmail was stuffing mailing list messages from people on Yahoo or AOL into the Spam folder, even though I’d received literally hundreds of messages from those people on those mailing lists in the past.

After investigating, it turns out that both Yahoo and AOL had turned on an anti-spam feature called “DMARC”. Basically what it meant if a message came with a From line saying it was from either of those, but not coming from an approved mail sender, they were asking the rest of the net to treat it as spam. Gmail honored the DMARC request by putting it in the Spam folder, but Yahoo and AOL and some other ISPs were just bouncing the messages or throwing them away.

This DMARC was obviously a huge problem for mailing lists, because what they do is they accept an email from a person, and then send out the message to all the members of the mailing list, and most of them use the person’s email address in the From line of the mailing list message. This breaks under DMARC, because if my mailing list server recieved an email from joe.blow@yahoo and sends out a message to the mailing list members with a From: joe.blow@yahoo, then all those mail servers that implement DMARC are going to see that I’m not designated by yahoo as a valid sender of yahoo email, and they’re going to drop it.

The developers of the Mailman mailing list software were quick to offer some solutions. First they issued 2.1.16, which had a quick and dirty work-around, and then they rolled out 2.1.18, which had what I think is a much better solution. But my problem is that my mailing list server is pure Debian Stable, and I want to only install packages, not get into the hassle of installing things from source and then having to monitor if things are updated. So I waited for 2.1.18 to get backported to Debian Stable (which uses 2.1.15). I put in request tickets to get it backported. They never did. Instead, they made it a package in Debian Testing, which is less stable.

So I did some googling and discovered something called “apt pinning” that would allow me to install some Debian Testing packages on my Debian Stable system. I tried it, and it wanted to drag in a new version of python, which wanted to drag in a new version of libc, and so on. That’s just stupid – the minimum required python for 2.1.18 is exactly the same as the minimum required python for 2.1.15. Whoever set up the .deb was a little over zealous in the requirements section.

I did not particularly want to drag in unstable versions of the very core libraries of a Linux system for no reason, so my next possibility was to install it from source. That was more complicated than it should have been, but relatively painless. First I tried following the instructions that Bill Bradford pointed me at. Unfortunately, immediately it told me that “Distutils is not available or is incomplete for /usr/bin/python” and “be sure to install the -devel package”. Well, unfortunately there isn’t a “python-devel” package. I looked at the script that configure was using to determine what it was looking for, and the problem was a missing Python.h in /usr/include/python2.7/. A bit of searching, and I discovered that this was installed by a package called “python2.7-dev” – so close, but so far from the “python-devel” I had been searching for. After that, I discovered I had to install the “make” program (like I said, this was a pure server system and I hadn’t been building software on it before) and I did my “make install”. Mail seemed to flow, but I couldn’t access the web interface. Bill suggested running the “check_perms -f”, which found and fixed 26 permissions problems, but still things weren’t working. I compared the perms on a few directories between this installation and my last backup, and discovered that neither the installation program nor check_perms had noticed that the cgi-scripts in the /usr/lib/cgi-bin/mailman directory were setgid “root” instead of setgid “list”. I fixed that, and everything started to work.

Now I wanted to test whether the new “dmarc_moderation_action” setting that 2.1.18 provided would actually fix the problem. So I changed the setting on one of my mailing lists, and emailed a guy on yahoo who was on the mailing list to see if he could test it for me. Unfortunately he wasn’t around, so the next morning I bit the bullet and created a yahoo mail account and added it to that list. I tried a post by this user to the list, and it did the right thing (changed the From address to the list address, but used the Yahoo’s person name part in the person name part), and testing that gmail didn’t stuff it in the Spam folder. I made sure it doesn’t do that with non-DMARC addresses like gmail. And then I made that setting change to all my lists.

Finger crossed, and hope that there aren’t too many more updates I have to apply before a 2.1.18 or later Mailman shows up in Debian Stable.

A tale of three GPS/Heart Rate devices

As a kayak racer and a geek, I’m obsessed with numbers, data, tracking stuff. So of course when I’m paddling, I want a device that tells me my speed, time, distance, heart rate, and that will lead me through interval workouts, showing me distance/time remaining in the current segment, how many segments remaining. It also needs to be waterproof and hold a charge for a while.

When I first got a device, I followed the advice of many of my teammates and bought a Garmin Forerunner 301. It was an excellent device for the job – it did every one of my requirements I listed above, and more. Unlike just about every other device on the market it wasn’t a tiny little watch and it had the biggest display of any of them, which is important for kayaking because when you’re paddling you want the device mounted on the front of the cockpit or on your foot strap in a surf ski. It had 3 or 4 pre-configured screens and one customizable one, and when I decided I wanted even more data than I could fit on the customizable screen, I could set it to switch between the screens every few seconds. It was so perfect that when the first one stopped being able to upload to the computer, I decided that in spite of the fact they discontinued it, rather than spending $75 to have Garmin refurbish it, I’d pay $100 to buy one of their clearance ones.

There was only one flaw in the 301 – there was a shitty little rubber gasket that covered the USB port, and it was damn near impossible to get it back on. which meant that after a couple of days in the salt water in Tarifa, the USB port corroded and I couldn’t charge it any more.

So I decided at that point to buy a new Forerunner 310XT. It wasn’t quite as big a display as the 301, but it transferred via wireless and there wasn’t a rust-prone hole in the body. The 310XT has all the features I liked about the 301, but with a few nice extras – you can configure how many screens you have, how many fields on each, and what is in each field. I’ve currently got it configured with 3 screens, with three fields on each. The bottom two always show speed and distance, and the top varies between time, heart rate and lap time (and I’m thinking of getting rid of the lap time screen). One slight downside is that when I’m doing an interval workout, at the end of the interval it doesn’t give as much info on your last interval as the 301. When you finish a distance interval, the 301 tells you your time for that distance, but the 310XT doesn’t.

Unfortunately when it arrived it had two major faults:

  • If was really inconsistent about the wireless transfer – it would usually require me to re-pair the device every time I did a transfer. It didn’t help that just about the time I got it Garmin was recommending people switch from the “ANT+ Agent” to “Garmin Express”, and Garmin Express on the Mac was completely broken.
  • The heart rate monitoring was not reliable. I would put it on, and it wouldn’t show my heart rate until 5 or 6 minutes into my workout.

Garmin eventually responded to my complaints on their support site, on twitter and on this blog by sending me a refurb Forerunner 910XT to replace my 310XT. A 910XT is basically a 310XT but with some extra features for swimmers and cyclists, so the changes didn’t really affect me. But it did start transferring data to my computer reliably, so that was a nice thing.

But the problems with the heart rate continued. I tried using electrolyte gel to try to fix the “won’t start working until 5 minutes into the workout”, and that mostly worked. Except when I used gel, I’d discover that some minutes into the workout, usually an hour or more, it would start flaking out. My heart rate would flash and come back, but for the rest of the workout it would just start ticking down, lower and lower numbers every minute no matter what I was doing. I’d find myself in the middle of a flat-out 1000m “hard piece” in an interval workout and it would be showing my heart rate as 37bpm. I couldn’t reach 37bpm in a coma. Other people on the team had told me they used the electrolyte gel during cold weather because they weren’t producing enough sweat, and I’d never had a problem with the 301, so I was hoping to stop using the gel during the warmer weather, but without it I was getting the “no reading for 5 minutes” *and* getting the “ticking down after an hour” problems.

Again, I contacted Garmin through every method available to me, and the first response I got was just “oh, you’re wearing it wrong”. So I tried everything they suggested (wearing it to one side or the other, above the ribs, below the ribs, on my back), and one thing they didn’t suggest (I shaved my chest hair in a strip where I wear the heart rate strap), but to no avail.

At this point I was getting nervous, because I have my first race of the season this weekend and it looked like I wasn’t going to have a reliable heart rate reading during it. Desperate times call for desperate measures, so I ordered a Polar RC3 GPS.

The Polar RC3 arrived and right out of the box, it started reading my heart rate immediately, with no hesitation and no wait for me to start sweating. But unfortunately I soon discovered it had some severe drawbacks compared to the Garmin. The screens are not configurable at all. There doesn’t seem to be any way to make it cycle between the screens – that’s probably not a problem for runners and cyclists because they have more use of their hands, but that’s almost unforgivable for kayaking. I couldn’t find any way to set up an interval workout the way I wanted to set it up – there seemed to be a mode where it would set up some training according to their recommendations, but not to your coach’s recommendations. The weirdest bit of inflexibility is the color – they sell two different wristband colors. In all the pictures, you see the black wristband pictured with dark letters on a light background, and the orange wristband pictured with light(ish) letters on a dark background, but I thought that was just a stylistic choice. I picked the orange wristband because I figured higher visibility is better for finding it if you lose it. But it turns out that you can’t actually switch it from light on dark to dark on light – the color combination is set in the factory according to the wristband. You can bet it’s just one configuration option in the factory settings, so why they didn’t expose it to the users is just bizarre. Oh, and it also turns out it’s only rated IP5 instead of IP7 so you’re not supposed to immerse it.

So I wasn’t thrilled with the Polar. But since I was determined to have my heart rate for this upcoming race, I thought I was stuck with it. But then my step-daughter Stevie forwarded me an article where a guy who writes reviews of fitness equipment discovered that using a Polar strap (just the fabric and rubber part) with a Garmin transmitter (the part that clips onto the strap) solves a bunch of people’s problems with Garmin heart rates. And so I tried it and my Forerunner started registering my heart rate immediately. I went out and did an hour long workout, and it kept registering my heart rate with no cutouts and no ticking down. Nice!

So I’m going to pass the Polar onto somebody who runs, keeping the strap for myself. Garmin eventually said they were going to send me a new strap, and it’s supposed to arrive today or tomorrow, but I’m thinking I might go with the Polar strap for the race because I’m not planning any more long workouts between now and the race and I don’t want to risk having the same problems.

Spoke too soon.

Update on this post about my Garmin Forerunner:

I just tried it again, and the god damned thing did the same things as before – it took almost exactly 5 minutes into a workout to start showing my heart rate. After the workout, I waited until I had recovered and turned off the GPS and turned it back on, and again, it says “HR Monitor Detected” but no heart rate showing even after twenty minutes. I tried changing the battery in the heart rate monitor strap, no change. Dammit. Time to try some electrolyte gel, I guess.

I’m much happier with Garmin now

So the other day I wrote a blog post about how annoyed I was with Garmin – my brand new Garmin Forerunner 310XT had been acting badly right out of the box, and when Garmin tech support seemed to be ignoring everything I told them and doing the typical “scan the ticket for keywords, send a canned response that doesn’t solve the problem and they would have known it didn’t solve the problem if they’d actually read the ticket” I blew my top and wrote a scathing blog post.

Well, somebody at Garmin noticed my blog post, went back over the interactions I’d had with their tech support and decided that yes, I was being ignored and they needed to make it right. So he sent me a UPS label to ship back my Forerunner, and he replaced my Forerunner 310XT with a Forerunner 910XT. As far as I can tell, a 910XT is basically a 310XT with some extra features to appeal to cyclists and swimmers, which probably won’t help me much. But hey, an upgrade is an upgrade, right?

So I turned it on, configured it to listen to my heart rate monitor, power cycled it again, and it picked up the heart rate monitor in a few seconds! I paired it with Garmin Express, and it worked – Garmin Express is no longer telling me that there is some problem connecting with Garmin’s servers (which makes me think the message was bogus – bad programming there guys). And I went for a bike ride, and as soon as I got home I dropped the Forerunner on the desk beside my computer and before I could sit down it had already sent the data to Garmin Connect. No fiddling around having to change the setting back to enable pairing and pairing and all that manual stuff I had to do with the old one!

So much nicer when things work the way they’re supposed to.

Ok, I’m happier. I’m not ecstatic, but I’m happier. If they’d want to make me ecstatic, they could have done things slightly different:

  • They could have done what the hard drive manufacturers called “advanced shipment” where they take your credit card info, ship you the replacement, and only charge you if you don’t return the broken one. Heck, even Seagate does that and by every other criteria (including the quality of their drives) they suck! As it was, I didn’t have a functioning GPS for the first two paddles of the season – I could have put up with the problems with the 310XT for an extra week if it meant I could have held onto it until the replacement arrived.
  • Maybe I’m being unreasonable, but I always feel a little bit ripped off when I get a new device and it’s DOA, and the replacement they send you is a refurb. I feel like I should get new for new. I can understand why Seagate doesn’t do that for 10 month old drives (I mean, besides the fact that they suck), but the 310XT was only a few months old and it had been broken in this manner since day 1. But I also kind of understand why they don’t.

Bottom line – I’ve bought a Garmin GPSMAP-195 and GPSMAP-296 for flying (biggest mistake in my life was replacing the 296 with an EKMAP-IV when it got stolen instead of a 496), a nuvi 205w for driving, the StreetPilot app for my iPhone, two Forerunner 301s, and a Forerunner 310XT that got upgraded, and right now I don’t see any reason why I wouldn’t buy another Garmin in the future.

Dammit, Seagate

Back in January, I wrote about how two drives had failed, one brand new Western Digital and one 10 or 11 month old Seagate. I mentioned how the Seagate replacement was a refurb, and I wasn’t thrilled about that.

Well, one of my Seagate drives just started throwing dozens of SMART errors, and freezing up the computer. I’ve filled out an RMA, but I’m 90% 100% sure the drive that failed was the damn refurb that they sent me two months ago. I’m tempted to rip them both out and buy some new Western Digitals or Hitachi drives.

Update: I pulled out the bad drive, and sure enough it has the Seagate label that says “Certified Repaired HDD” and my label that says “Installed 23 Jan 2014”. So way to go, Seagate, you repaired the drive well enough to last almost 46 whole days. Better luck next time.