Misdirected email and email disclaimers

Like many people who have been active on the Internet since AOL was a standalone service, I’ve accumulated a number of email addresses over the years, many of which I still use. Some are short and easy to remember, and at least a few of them are routinely given out by people who think they are their own.

The worst offender was a ski resort, who kept giving out my email address as their own — perhaps they even used it as their “reply to” address, since people were particularly stubborn in their insistence that they had the right address. I had a lot of conversations like these:

“I’m sorry, I’m not affiliated with any ski resort, you’ll have to phone or mail the resort to get the correct address.”

“But this is the address they gave me. Do you have parking for an RV?”

“Well, on the street, but I’m not sure what good this will do you, since I’m probably a few hundred miles away from where you want to be. As I mentioned, I have nothing to do with the resort, and I do not know how to get in touch with them.”

“Oh good. How far is the street from the slopes?”

Perhaps they just appealed to a particularly obtuse clientele, but they kept doing it. So I asked somebody who emailed me for the number of the resort, and I called them to let them know their mistake. “No, that’s our email address,” I was told. I couldn’t convince them otherwise. Eventually I resorted to just giving out reservation confirmations, and they finally stopped.

“Is it too late to reserve rooms for eight people for this weekend?”

“No, you’re all set. Your confirmation number is 6893-261#-3472@.9653!7160321796. Please have this ready when you arrive.”

I guess having irate people show up is a lot more effective than politely asking them to knock it off. A lot of people give one of my email addresses out as their own when asked for an email address. I’m not sure if they just don’t know their own, or they just don’t think it matters, but I’ve been signed up by proxy for an appalling amount of things:

  • Bank accounts (complete with “here’s your password to bank online”)
  • Home loans (complete with “update your payment address”)
  • Retail sites of all kinds, a handful with active “buy it now” credit cards
  • Medical records
  • Insurance records
  • Porn memberships (with recurring payments and a changeable password)
  • Job sites (complete with “update your resume/profile”)
  • Social networking sites (as above)
  • Dating sites (even more fun, as above)

As the mood takes me, I might locate the phone number of the person whose account it is, and notify them of their mistake (reactions have ranged from confusion to threatening to sue me.) Sometimes I’ll just change the password and forget about it (there are probably a few poor schmucks still paying for porn that they don’t have access to and can’t cancel.) Sometimes I’ll update their profile in amusing ways. Although the thought has occurred to me to drain a few bank accounts, these are people who strike me as most genuinely confused and in need of an explanation — and I’m not really that much of a bastard.

I also get signed up for a lot of mailing lists, which can be fairly obnoxious. If mailing lists have a simple way to unsubscribe, I will. Better yet, mailing lists that ask for confirmation. I don’t confirm, and that’s the end of it. Some mailing lists are particularly obnoxious — no way to unsubscribe, or even worse, the only way to unsubscribe is to enter a lot of personal information on a separate web site (which, if it doesn’t match whatever information the idiot gave them when they provided your email address, won’t let you unsubscribe) or points to a site that doesn’t exist or resolve, etc. Since I don’t want to be on the mailing list, I’ll complain directly to their ISP. I’ve had a few car dealerships disconnected from the Internet by their ISP’s — who are usually pretty cooperative.

Note to email list administrators: always confirm email address, and have a simple way to unsubscribe, or you’re a spammer.

I also get emails directly from misguided individuals. It’s remarkable the amount of personal detail that people will include to an email address they’ve never sent anything to before. I usually reply to let them know I’m not who they think they’re contacting. Occasionally, they argue (which is bizarre to me, but some people get ideas stuck in their heads. “Dot! Stop fooling around!”) and occasionally, they’re just weird — some ask for unrelated computer help (which I provide, to the extent that I can help via email) and one lady told me that she was a “married Christian woman” and that it was improper for her to talk to a strange man. (This, of course, implies to me that she desperately wants to, and either is unhappy with her husband or her repressive brand of Christianity — and she actually does keep writing — go figure.)

High on the obnoxiousness scale are the business emails I get, usually with tons of insider information, and a standard disclaimer telling me what I can and can’t do, my duties if I’m not the intended recipient, etc. I’m not a lawyer, and this isn’t legal advice by any means, but I don’t think I’m bound by any of this crap. If you send me an email, it’s mine. I’ll do what I want with it. If you’re incompetent enough to send me insider or confidential information from your company, I’m going to feel free to post it on the Internet if I damned well feel like it, and you can stick your disclaimer wherever you like.

We don’t have a contractual relationship, and your email was unsolicited. You can’t create one using your disclaimer; I don’t agree to your terms. Any of your terms. If I feel like sending you back an email informing you of your mistake, I might do that. Doing so does not mean I agree to your disclaimers, nor does it obligate me to send you another email informing you of your future mistakes when you do it again and again.

If we were to have a contractual relationship, I could see the value of a disclaimer, to, say, remind me of a confidentiality contract we mutually signed. But unsolicited email is precisely that; just as you can’t send me junk in the mail and obligate me to do anything with it, you can’t via email, either.

Share

Outlook, Mail Archives, and Duplicates

Exchange and Outlook are dismal examples of code, but the fact remains that they are ubiquitous. Nobody has managed to create a mail/calendar/contacts/task application with wider adoption, and it has enough inertia that well designed applications have little chance to make inroads, which means a lot of people are stuck with it. For those of us who prefer elegant, well designed applications, putting up with their quirks is maddening.

Outlook, for example, has a hard-to-explain 2 gigabyte limit on mail archives — and mail archives are arguably one of the niftier features that Outlook offers. Early versions of Outlook don’t know any better, and simply corrupt your mail archives. Later versions of Outlook know better, and warn you not to exceed the limit. While some noise has been made about Outlook finally removing the 2 gigabye limit, it’s actually not quite true, it’s only been removed for Exchange style mailboxes, and is still there, for example, for imap mail boxes.

For those of us with lots of mail and the need to archive it (I receive a lot of technical documents, some very large, via email) using Outlook’s built-in “archives” isn’t really an option, so I used the simple expedient of setting up an archive IMAP server, where the size wouldn’t be an issue. While this works reasonably well going forward, Outlook puked enough while trying to move messages from its proprietary formats to imap, that I was left with a vast number of duplicates.

On a significantly large mailbox, this is a bigger problem than it sounds like — especially since the duplicates were created with different mail id’s, and in many cases the white space or envelopes are different, while the messages are clearly identical. Maddening, but it largely means that any automated duplicate removal will have to happen through IMAP, not through the filesystem.

While it seems that a tool to locate and eliminate duplicate IMAP emails would be simple to find, it appears that such a beast simply does not exist, except for the trivial case in which the message id’s are identical. At the imap level, there are a decent number of tools here:

http://www.athensfbc.com/imap_tools/

Which work admirably, for the most part. For the remainder, I used this Thunderbird Add-on, which took care of the remaining fringe cases. The only problem, of course, is that on a really large email folder, Thunderbird starts to complain endlessly about script timeouts. However, you shouldn’t really need to do this regularly.

Share

Mail, DNS entries, and domains

I recently overhauled bits of the mail system here to take care of a few lingering quirks that I’d never had the time nor inclination to track down. All of my various email addresses and aliases go to the exact same mailbox, through the multiple expedients of fetchmail, which picks up my mail from gmail and AOL, and DNS MX records that point everything to the same place.

Until recently, if you sent mail to “user@goodjobsucking.com” it would be transformed by the server into “user@baddomain.com” unceremoniously. It would show up that way in the mailbox, and only by delving into the mail headers was it obvious that the mail was originally destined for a different domain. For addresses I didn’t make use of much, this was fine, though it leads to the curious circumstance where somebody sending mail to goodjobsucking.com would get replies from baddomain.com, which deviates from the principles of separating domains in the first place.

It turns out the root cause was that goodjobsucking.com, rather than having its own A record in the DNS tables, used a CNAME to baddomain.com. Apparently this implies that mail sent to goodjobsucking.com is actually for baddomain.com. I imagine this would be particularly useful for adjunct or typo domains, where you want to correct the original destination or transition from one domain to another. It’s also useful in that the mailer only needs to internally relay for, and listen to, mail destined for baddomain.com; any mail sent to a CNAME from another domain pointing to it works perfectly well.

Moving the domain from a CNAME to an A record effectively separates things out again, though now the mailer must also be aware that it’s listening for mail for yet another domain.

Share

LaCie 1TB NAS

LaCie has a wonderful little NAS box called the “Ethernet Big Disk” that comes in a 1TB size, supports USB and gigabyte ethernet, and is reasonably priced. The NAS part supports smb, afs, ftp, and http, which makes it pretty darned useful out of the box.

Even better, it sports a version of embedded Linux on an ARM CPU:

Linux version 2.6.12.6-arm1-lacie5a (root@lacie) (gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2)) #1 Tue Oct 31 11:26:21 CET 2006CPU: ARM926EJ-Sid(wb) [41069260] revision 0 (ARMv5TEJ)

Naturally, it’s a prime target for hacking in some useful things. This can be accomplished in several easy steps:

  1. Open it up and pull out the drives
  2. Mount the SATA drives on another Linux box
  3. Add an exploit to the web server (which runs as root, making the rest easy)
  4. Put it back together
  5. Make yourself a root account
  6. Cross compile some binaries and copy them useful places
  7. Give yourself a command line

Okay, so up until step 5, it’s pretty straightforward, and documented here and here. Actually, even making a root account is pretty straightforward; using the web exploit, you can copy passwd and shadow to the NAS share, edit them, and copy them back. I chose to add an account called “myroot” and leave the default root account’s password alone, just in case it’s needed for … something.

Building a cross-compiler is, frankly, a major pain. However, once I got it built properly (in my case, using a handy port for the MacIntosh) it was fairly straightforward to cross-compile utelnetd and rsync. utelnetd can actually be launched from the web exploit, and it’s possible then to log in directly as root.

For those who appreciate a kick start, here are the compiled binaries that run on the LaCie. (Naturally, these are without any warranty of any kind, and whatever happens to your NAS is your own fault, etc.)

lacie.tar.gz

I can’t think of much more one could want than telnet, rsync, and nfs. Well, maybe ssh, but it’s been done, and I don’t really need it.

Share

Rsync over SMB

This is a short one — I was using rsync to back up about a terabyte of data, which suffered a number of interruptions. Each time it restarted, I noticed it was copying over the same files over and over again. As it turns out, SMB rounds off the time stamps to the nearest two-second interval, so when rsync compares timestamps, it believes the file is different.

There’s a simple solution:

rsync -rlptDv –modify-window=1 [source] [destination]

The “–modify-window” switch tells rsync to relax its timestamp comparison just enough for it to behave.

The remaining switches are useful for backing up to a NAS box, it’s essentially -a (archive mode) expanded, but without preserving ownership or groups (which doesn’t work well on the NAS.)

Share

HDD LED for add-on cards

Among the many little things that irritate me, it’s when you have a computer case with multiple drives in it, attached to multiple add-on cards as well as the motherboard, but (of course) there’s only one hard drive LED on the case — so you get to pick a controller card to drive the lights on the case, and … well, I suppose you can be happy with that, especially if you don’t pay it much attention.

When looking for a simple cable to combine the inputs, I realized that I may be part of a subset of the larger population, the subset who wants their leds to behave themselves whether it really matters or not. Either my skills with Google are not up to snuff, or there is no such animal commercially available.

Partly it’s because if you’re hapless enough to simply connect them all in parallel, you’re likely to burn out your case led the moment there’s activity on more than one controller card. So slightly more complex circuitry is necessary to make the lights work.

Lying around, I had a tiny case, optocouplers, and resistors, so I had to get power connectors, header connectors, and a breadboard — but there’s really not much more to it than that.

Case open

To the left, the circuit assembled on a breadboard in a little case — to the right, is a sketch of one of the optocoupler circuits. And here’s what it looks like with the case closed:

Outside

Share

Skipping the FreeBSD vulnerability check during portupgrade

FreeBSD has an excellent facility for checking its ports for vulnerabilities provided by security/portaudit. This is very handy when installing an unknown package. However, it can be quite a hindrance when upgrading from one very vulnerable version of a port to one with fewer vulnerabilities, since portupgrade will flatly refuse to upgrade the port, with this kind of error:

===> wordpress-2.2.1,1 has known vulnerabilities:
=> wordpress — unmoderated comments disclosure.
Reference: <http://www.FreeBSD.org/ports/portaudit/6a31cbe3-1695-11dc-a197-0011098b2f36.html>
=> Please update your ports tree and try again.

It’s best, of course, to confirm that the vulnerability is something you can live with. If so, you can pass a flag to “make” to have it skip the vulnerability check:

portupgrade -m -DDISABLE_VULNERABILITIES wordpress

Naturally, I wouldn’t recommend doing this in conjunction with “portupgrade -all” since it would defeat the purpose of having the vulnerability check at all.

Share

A Tale of Audio, Firefox, and X-Windows

The venerable X-Windows has network support with grace and elegance that other window systems (I’m looking at you, Windows) have yet to come anywhere near. Point your applications at any xserver on the network, and there they run — what could be easier? On the down side, this seems to have been developed before sound was particularly important, so without doing anything fancy, your application runs anywhere but (if you’re lucky) any sound it produces emanates from the machine running the actual application. This can be somewhat disorienting, at best.

The dubious goal: to get a flash game working on an x-server — one that doesn’t even have a browser installed.

The first step was to get Firefox/Flash sound working on the gentoo x-client. (It’s been gone over many times, but X appears to use these terms backwards, a tradition which I will continue.) Simple enough:

export DISPLAY=xserver:0.0
firefox

There’s firefox, but, no sound on either the client or the server. A review of what the terminal is spewing out shows:

ALSA lib confmisc.c:848:(snd_func_card_driver) cannot find card '0'
ALSA lib conf.c:3500:(_snd_config_evaluate) function snd_func_card_driver returned error: No such device
ALSA lib confmisc.c:397:(snd_func_concat) error evaluating strings
ALSA lib conf.c:3500:(_snd_config_evaluate) function snd_func_concat returned error: No such device
ALSA lib confmisc.c:1248:(snd_func_refer) error evaluating name
ALSA lib conf.c:3500:(_snd_config_evaluate) function snd_func_refer returned error: No such device

Weirdly, other sound applications appeared to work perfectly well, albeit from the wrong box. Also weirdly, the card is clearly there and enabled, and ALSA is configured in the kernel (not as a module) with the correct sound card.

After a couple of useless dead ends, running Firefox as root revealed that it’s a permission problem. I can think of more useful ways in conveying this, but placing the user into the audio group takes care of that problem. Now I’ve got local audio, at least.

The next trick is to get the client (Gentoo) to send its audio to the server (FreeBSD) .

Share

EVMS and degraded RAID

I’ve been very happy with EVMS under Linux; it’s an excellent way to coherently tie together lvm and md and other mirroring, striping, and logical volume technologies, and has a nifty GUI for managing drive resources. I move drives around much more than I like, often due to the grim reality of bad sectors or filesystem crashes.

After building a RAID volume, a loose power cable on one of the drives caused it to immediate degrade. This shouldn’t be a big deal, since EVMS has a “remfaulty” function for its RAID-5 plug-in. Except that it doesn’t work. I’m not sure whether it’s missing or broken in my version 2.5.5, but it doesn’t work as documented.

Looks like the way to fix this is through md directly, using mdadm. The tricky part about this is that one needs to refer to the EVMS controlled devices, or it doesn’t work. So, to re-add the drive and invoke the synchronization process, one needs to run:

mdadm --add /dev/md0 /dev/evms/.nodes/sda5

Note the “.nodes” part of the command

Share

HP Image Zone and PVM files

HP Image Zone comes with HP cameras and printers, and is, in general, perfectly adequate for routine image printing and minor manipulation such as cropping, resizing, etc.

On the other hand, it’s remarkably opaque, having the concept of an “Album Shelf” onto which albums can be placed. Albums are collections of image files stored in XML, but with a PVM extension. However, there’s no apparent way to actually get PVM files onto an image shelf, so in the event of, say, a hard drive crash, you’ll apparently need to completely recreate any albums you might have had.

This is utterly obnoxious (not to mention unacceptable) so I actually contacted HP support, who told me that there was simply no way to import albums. One can create albums, I reasoned, and list of albums on the album shelf must be stored somewhere, after all.

After much screwing around, while tech support insisted that what I was attempting was impossible, I determined that this was all stored in

C:\Documents and Settings\[windows login]\Local Settings\Application Data\HP\Digital Imaging\db

The file format appears to be Foxpro, and there are a bunch of files in there.  Foxpro can open them, but what’s shoved into the text columns appears to be UCS-16.  The short version is that copying the database files from one installation to another copies the Album Shelf.

Share