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.

My other kayak

Last year I found this Think Legend surf ski on Craigslist. Poor guy had bought it because he wanted a fast kayak and didn’t realize there is a skill progression required. I’m almost a good enough paddler to manage it. Last year I paddled it a lot, trying to master it. But this year I’ve hardly touched it. You see, last year my other surf ski was a ancient V10 Sport in club layup, so the fact that the Legend was their cheap layup and was heavy as hell didn’t bother me. After all, it was narrower and longer than the V10 Sport so I knew if I ever mastered it I’d be faster in it. And by the end of the year I could handle it in a straight line and on flat water. I used it in a couple of races on the canal and did ok with it.

But this year I’ve had a change of plans. I got a V10 Sport in ultra layout, and it’s so light it makes the weight of the Legend seem like paddling a brick. A tippy unstable brick. Plus I’ve become really enamored of paddling on the lake, with all the waves and boat wakes and other stuff I used to hate. Plus I signed up for the Lighthouse to Lighthouse (L2L) race, my first ocean race, and I’m committed to paddling the Blackburn Challenge next year. So I’ve been all about the V10 Sport this year and neglecting the Legend.

But I did do a bit of a time trial one against the other on the canal and it appears that the Legend might be a tiny bit faster on the flat. And when I’ve hit a bit of a wake, it seems like the Legend has the potential to be really fast in the surf. If only I could keep it upright. If and when that day happens, I’m seriously thinking of getting a light high performance boat, either another Think Legend (if I can find one) or a V12 or whatever turns up on the used market.

I paddle the Legend one night a week – Mike and I call it “tippy boat night”. I guess after l2L I should up that to two or three times a week. Unfortunately last time I dropped it on the dock, putting a rather deep looking crack in it. It’s probably repairable, but I fear it will be a bad idea it paddle it until it’s fixed. Plus the patch will make my heavy boat even heavier. So I guess no tippy boat night until it’s fixed.

Lots and lots and lots of paddling

Remember how when I first started paddling I used to blog about every workout? These days, I don’t bother. I paddle 5 times a week, and there would just be no way to keep up with that. Also, I’m starting to pile on the miles (kilometers) in preparation for the Lighthouse To Lighthouse race in a couple of weeks. The race is 14 miles (22.5 km) and it’s on Long Island Sound, which isn’t the open ocean but it’s likely to be quite different that what I’m used to. So every weekend and some Tuesdays you’ll find me and Mike F out grinding out long paddles on Lake Ontario.

I looked at my stats, and 2010, the year before my surgery, I did 18 paddles of longer than 15 km. So far this year, I’ve done 27. All but one of my paddles over 20 km have been in the last month or so. Case in point, today we did 25 km.

Several of our paddles recently have been battling boat wakes from every direction at once, which is probably good practice but it’s no fun at all. Today we got a really early start (7:30) to try and avoid the boat wakes. We probably needn’t have bothered – the lake “turned over” early this week and the skies were overcast and grey. There was a wicked wind from the south, which is no help at all, and a low amplitude long period swell coming from the north west, which we hoped would provide a bit of help on the way back.

We set off towards the west, keeping tight into shore to avoid the south wind. It was a bit of a balancing act, trying to keep out of the slow shallow water but remain mostly in the wind shadow at shore. Sometimes it didn’t work. One advantage of staying in close was we got to see more scenery – people out walking their dogs on the beach, people taking their morning coffee on their decks, and in one place, 11 deer, including babies with their white spots, coming down to the shore to drink. We paddled a bit slower than usual, and Mike and I paddled beside each other instead of him riding my wake as is often the case. My heart rate was ticking over in the low 110s mostly, which is lower than I’d like, but to go harder would mean losing Mike’s company.

Right smack dab in the middle of the trip in each direction we had to swing away from the shelter of shore to clear the end of the break wall at the river. This is a dicey spot – you’ve got the waves and wind from the south, the swell from the north west, and all sorts of reflections of both of those. However this time, because we left early and because the conditions weren’t optimal for pleasure boats, we didn’t have the usual confusing maelstrom of boat wakes on top of it. It wasn’t too difficult, but even so my heart rate went over 130.

As usual on these paddles, I normally just keep heading out until Mike suggests we turn back. Usually he does it just after I’ve decided “ok, at the next kilometer/point/whatever, I’m going to suggest we turn back”, but it’s good for my ego to make it look like it was his idea. This time it was just seconds after my GPS beeped at the 12 km point – I was going to tough it out to 12.5 or 13, but that’s good too.

As we turned, we did our homage to Oscar Chalupski and shortened our paddles. I wanted to get a bit higher heart rate, so I increased my speed and started towing Mike in my stern wake. That worked out pretty well – with a little assistance from the north west swell at my back, I was nearly 1.5 km/hr faster than on the way out. And all was well until once again we had to leave the wind shadow of the shore to swing around the river break wall. The wind blown off shore waves were bigger, and now it seems like every sailboat at the Rochester Yacht Club is heading out to the lake. Mike lost his place on my wake and started falling behind. Now I’m faced with trying to navigate this mess, but also trying not get so far ahead that I can’t check in Mike and possibly circle back if he needs help. But I don’t want to slow down, so I quickly cross the river and head directly into the wind, then circle back to Mike as he gets about half way between the end of the break wall and shore.

After we get back in the wind shadow, it’s clear that Mike is spent. He can’t even stay on my wake anymore. I don’t want to slow down, so what I start doing is paddling ahead until my GPS beeps for another kilometer mark, then circling back around Mike. That’s literally circling – I don’t have to paddle in the reverse direction, just turn 360 degrees. And even then it usually takes me to about 400 meters or more before I catch and pass Mike. It probably would have been better for Mike, who was clearly suffering, if I’d slowed down and given him a wake he could hold, but out on the water I was only thinking of my training needs and I wanted to know I could still increase my speed at will.

The circling increased my total distance – we’d turned back at almost exactly 12 km, but I finished at 24.9 km. and afterwards I still had enough energy to carry Mike’s boat back to his car for him.

Armond Bassett 2014

Today was the Armond Bassett race. I was originally planning to not go, because I’ve rarely had any fun at it. The first time I did it, it was torrential thunderstorms. The second time, it was hot as hell and not a breath of wind, and I went out too hard and faded hard. Last year I was still recovering from my shoulder surgery and I only did the three mile short race. So basically I’ve never really enjoyed this race.

Today it was perfect weather, though – it wasn’t too hot, and there was a very pleasant breeze. My game plan was to not go out too hard, and try to keep it in a reasonable heart rate zone. In support of this plan, I finally got around to putting the weed guard on my boat, and I also bought a energy gel thinking that would stave off that big drop off in performance I get at about the 1 hour mark. I also made a GPS mount, which turned out to be a bit cock-eyed because I suck at cutting straight lines.

When I got to the race, Jim and Todd were there, so obviously first and second were out of reach, and my old nemesis Mike Littlejohn was there, meaning that I’d have a fight on my hands if I wanted third. As well there was an unknown quantity, a guy named Alex or Adam or something like that from Ithaca. He was in an ICF sprint boat, which meant he could be good. Todd said some thing about how since he couldn’t beat Jim, he might as well paddle with Mike and I and give us a wake to ride (and obviously still drop us at the end). I guess that was before he saw Alex.

Unlike 2009 they started us in waves, so the c2s and c4s were long gone before we started. So at the gun immediately Jim and Todd and Alex lept ahead and started opening a big gap. I jumped on Mike’s side wake and stayed there as I tried to keep my heart rate settled. That worked fine for about 1.5 km until it looked like Mike was heading out beyond a buoy when it looked to me like there was a considerable distance saving to be had going more directly, so I left his wake. And within seconds I discovered that either that was Mike’s plan all along, or he’d seen what I was doing and agreed with my line, because I look back and he was on my stern wake.

Ok, I thought, no harm giving him a ride after he’d given me one, but now I was trying to figure out how to get him to pull through and take a turn after he’d had some time on my stern. I couldn’t exactly ask him, since we were rivals rather than team mates, and unlike cycling there is no recognized gesture like the elbow flick to indicate that it’s somebody else’s turn. As the kilometers kept ticking away I was getting more concerned that I was playing into his hands. I had hoped that my first grab for my drinking water tube would get him to come through, but it didn’t. Then I hoped maybe he’d out turn me at the buoy at the bottom of the course. But he paddles a very long boat of his own design and it turns like a barge, so as we rounded the buoy I’d actually gotten a small gap. I decided to put the hammer down, hoping to deprive him of my wake – if I couldn’t get a rest in his wake, I could at least make him work on his own. It didn’t work; he managed to climb back up and latch onto my stern wake again.

After about two or three kilometers going upstream, I noticed something great – Alex appeared to be having some difficultly, and Jim and Todd dropped him. He was in so much difficulty that he was doing a bit of a brace stroke every now and then, much as I do when I’m paddling my Think Legend. After I raised my speed for another kilometer I managed to pass him, still dragging Mike with me.

As we passed the start/finish area, crossed the canal and under the bridges, I was feeling amazingly strong. Keeping my heart rate under 155 really seemed to be paying off and I stopped worrying about how to get Mike to take a turn since I was convinced I was going to just grind him off.

At about the 55 minute mark, I briefly paused in the wake of a c4 in order to take some of that gel I’d brought along. I’m thinking that might have been a mistake because I got mild stomach cramps a few minutes later.

Soon afterwards we encountered a whole bunch of the stronger canoes in the race stopped and milling around. We didn’t stop to enquire what was going on but I heard people asking each other if anybody had brought a phone. I didn’t have mine, so I didn’t stop. I found out afterwards that one of the paddlers, Mike Skivington, had a medical emergency and had been taken off in an ambulance. I guess that is one advantage of the Armond Bassett race over an Adirondak race – there are paved roads on both banks of the river for the entire length. (I didn’t know it at the time but the organizers decided because so many top competitors had stopped to help that they’d agreed to neutralize the race, so no awards and no NYMCRA points.)

Not far from the canoe commotion was the second turning buoy, and once again I got a tiny gap on Mike, but this time I was starting to feel the pace and I didn’t try to gap him. Instead, he started pulling up beside me. There was a headwind coming from the right side so I tried angling into that shore to see if it gave me an advantage, but it didn’t so I angled back into the middle and put in a minute of hard effort to get back on Mike’s stern wake. I guess the question of when Mike would come through and do a turn was finally sorted, but I was struggling to hold on.

I sat there in his stern wake thinking “his technique is worse than mine, his boat is heavier, he’s wearing a hot sweaty pfd, surely he’s got to get tired at some point!” But he never does. He’s relentless. A couple of times his speed briefly dropped and I though “oh thank God, he’s getting tired”, then “maybe he’s just trying to get you to take over the lead again – well jokes on him, I’m too tired” but then his speed would pick up again and I’d be back in my own little world of hurt. I wasn’t recovering or saving myself, I was just hanging on, trying to convince myself not to just say “screw it, let him go”. I came close a few times.

Finally we got under the final footbridge. He was heading directly for the dock, and I was heading directly downstream in what I thought was a slightly shorter distance to the finish line. I don’t know where I found the energy but I started sprinting for all I was worth. My technique was falling apart, and my arms were sore and I was gasping for breath, but I crossed the line and risked a glance over, and it looked like I just barely edged him out. I could barely manage to turn off my GPS and paddle for the dock. I briefly considered jumping into the water, but I didn’t think I had the energy to remount my boat.

Afterwards, we could see that both Mike and I had picked up weeds on our rudders. I’d also lost my weed guard. Todd told me he makes replacement weed guards in his shop, so hopefully I won’t had to pay Epic for another one.

Beautiful Sun

Like many lucky kids, for many of my teenage years I went to summer camp. I went to YMCA Camp Beausoliel, on Beausoleil Island in the Georgian Bay Islands National Park. It was a wonderful and very formative interlude in those years, and probably did more to create and reinforce my love for the outdoors that continues to this day. It was a very long time ago and my memories aren’t 100% complete of that time but I’d like to share my memories of my last year there.

The oldest campers were put together in a cabin called “Islanders”. Being an Islander was like being king of the camp. Our cabin was on a tiny island just off shore from the camp, so we had our own canoes to get back and forth to the main camp. It was actually a prank that seemed to happen every time that the kids from the second oldest cabin would sneak over in the night and steal the Islanders canoes, so they’d have to swim to breakfast. That wasn’t a bad thing, because any cabin that went swimming before breakfast got the “Morning Dipper” award that sat on your table for the day.

As the oldest cabin, we got the least experienced counsellor – I guess they figured with our experience we could take care of ourselves if the counsellor wasn’t great. In our case, we got a counsellor who was a major flake.

The most major feature of YMCA Camp Beausoliel was that it was a “tripping” camp. Generally you spent the first day or two preparing for your big canoe trip, then left on your trip. The time back in camp after the trip was almost an after thought.

As a senior cabin, we did the usual long ambitious trip that senior cabins did – up the Musquash River to near Bala Ontario, then down the Moon River to Georgian Bay, and then down the shore back to Beausoliel Island. It wasn’t an easy trip – the first night was spent at Flat Rock Falls at the top of Go Home Lake (if you think some of these names sound a bit familiar, maybe you’re remembering the song “You Sold The Cottage” by Martha and the Muffins). When I had been a more junior camper, Flat Rock Falls had been a multi day trip to get there, but back then we’d stopped at the diving rocks in McRae Lake.

All Beausoliel cabins had 7 campers, and each trip consisted of three canoes with three people in each canoe – the counsellor took the stern of one canoe, and either a junior counsellor (jc) or the camp’s trip leader Larry Owen took another, and the three most experienced and strongest campers made up the “camper canoe”. I was considered a strong paddler, so this year I got to be the bowman in the camper canoe. Generally the counsellor got the pack with the sleeping bags, because he was supposed to be the best canoer and therefore less likely to get them wet. The jc got the food, because you didn’t want it getting wet but it wouldn’t be a disaster if it did, and the campers got the tents and cooking pots because it didn’t matter if they got wet. This year that turned out to be a big mistake.

On the first or second day, the counsellor decided to show off and do a handstand on the gunnels of his canoe. That didn’t go well, and he ended up upsetting the canoe. While all of us had been taught how to roll a sleeping bag in a groundsheet to waterproof it, unfortunately only mine and four other sleeping bags had actually turned out waterproof. So we spent the rest of the trip with seven campers crowded into one tent with two sleeping bags underneath us and three on top. It was only years later that I realized that the counsellor in question must have been pretty damn high to do something that stupid. All counsellors were only a few years older than the campers, so you’ve got to expect some immaturity, but that was just crazy.

The third or fourth day, we were on the Moon River, on a stretch called The Seven Sisters which is a sequence of rapids. As is usual in these trips, at each rapids everybody got out to scout the rapids. At one rapids, the camper canoe had a look, and said “we’re portaging”. The counsellor and jc had a bit of debate on the best line, and either the jc decided on a different line or they decided to portage. The counsellor said “HELL, LET’S SHOOT THEM!” We all portaged and then walked back to watch the action. The counsellor’s line went between two rocks that nobody but he thought the canoe could fit between. And as soon as he got into the rapids, past the point of no return and lined up on them, he realized we’d all been right and yelled “BACKPADDLE!” They didn’t have a hope in hell. The river was running too fast and with him in the stern and his strongest paddler in the bow paddling on the same side only balanced by the weakest paddler on the other side (whose name was Jeremy – don’t ask why that’s the only name I remember of the other 8 guys), it was inevitable that they’d turn sideways and be carried into these two rocks. The rush of the water under the canoe flipped it on its side, and the force of the water pinned it there, and the contents of the canoe, including sleeping bags, paddles, life jackets and Jeremy were carried down river to be rescued by the rest of us watching this performance. Meanwhile the counsellor and jc were finding it damn near impossible to pull the canoe off the rock, and they only managed to do it after the bow split open, relieving some of the pressure.

We spent a considerable time on the shore of that rapid, trying to dry out our sleeping bags and clothes in the sun while the counsellor and jc repaired the bow of the canoe with every canvas patch, tube of ambroid (a glue that we used for making canvas repairs) and piece of wire in the canoe repair kit. It took a while, but at the end of it they had a mostly water tight canoe that would have gotten them home if the counsellor hadn’t been such a moron.

One funny thing that stocks with me – the counsellor’s clothes were completely soaked, just like all of us (his canoe load from dumping, the rest of us from jumping in to rescue them), and we were all sitting in the sun stripped down to our underwear, except the counsellor was naked. And as we sat there eating lunch and waiting for our clothes and the repair to dry, a giant horsefly bit him on the penis. You’ve never seen a guy jump so high!

After the repair, we crossed under a bridge, the only road that crossed our route from Bala all the way back to camp. We went through one set of rapids safely and sanely, but at the next one the counsellor proved that there is no way in hell he should have ever been in a leadership position. The rapid had a shelf, about a two foot drop. An experienced canoer might have managed it, but not a moron in a canoe held together with baling wire and partially dried ambroid. He took one look at it and yelled “HELL, LET’S SHOOT IT!” Those of us in the camper canoe thought he was completely mental and we portaged. But the jc agreed to try as well, and he went first. Now he was a lot heavier than the campers in his canoe and I think the fact that it was stern heavy helped him get through it. The counsellor’s canoe was more evenly balanced, and when they hit the shelf they kind of hit the water below nose first, and dumped in the whirlpool below it. I have a vivid memory of Jeremy getting smashed between the canoe and the rock wall on the side of the whirlpool before we could drag him out. He also lost his camera in the whirlpool, although god knows how he held into it on the previous disaster.

This time the canoe was a write-off. The split now went beyond the bow seat and no amount of wire was going to hold it together, even if we’d still had any more canvas and ambroid. So we did the only responsible thing we could do – we distributed his packs and campers to the other two canoes, making them dangerously overloaded and tippy, and paddled back upstream to the bridge. The counsellor paddled his banana split of a boat from the stern deck, which kept the bow out of the water. We made camp at a fishing access that was not a legal campsite while the counsellor and jc hitchhiked to a phone to contact the camp. Much later that night a truck came from camp with a replacement canoe, but sadly not a replacement counsellor.

For the next couple of days, the trip went as they usually went. I don’t recall if the counsellor stopped trying to shoot unshootable rapids or if he just got overruled, but we ended up making it most of the way home without further incident. Until the very last day, when once again this moron decides he wants to try another handstand on the gunnels. Fortunately by this time the two campers in his canoe were more seasoned paddlers and so when he inevitably fell into the water, they kept the boat upright and prevented him from further soaking people’s sleeping bags. (I should mention that campers used the same sleeping bags as bedclothes in camp, and the camp didn’t have laundry facilities of any sort, so even without this a few of the campers still had damp sleeping bags for a night or two after we got back.)

Rereading this, I sound awfully angry about the incompetence of the counsellor. But the amazing thing about being a kid at camp is that we weren’t mad at him. Well, except for getting the sleeping bags wet. Everything else was dumb, but we just took it in stride. Just part if the adventure. It’s only afterwards as a parent I think back and think “we’re lucky he didn’t kill anybody” and I get mad at him.