Mail forwarding blocked by SPF

No Comments

Some time ago I moved away from Yahoo mail to my own hosted address, and used the forwarding function to pass through any residual mail. This worked fine for several years, but now my host has implemented strict SPF control and a lot of the forwarded mails get rejected.

Unfortunately Yahoo doesn't give any sophisticated options to handle this, eg. there are a number of options they could have implemented for forwarding from the Yahoo address without looking like it's spam:

  • normal forwarding, or as an attachment
  • putting the sender in the Reply-To header
  • or even a line of text saying who the original sender was

The only way I found to get around this was to stop the forwarding, and use a PHP script to periodically check my Yahoo account via POP and move the mail to my new IMAP account. This actually works fine, so in case it's of use to others here is the script I use:

<html><body><pre>
<?php 

docopy("{pop.mail.yahoo.com:995/pop3/ssl}INBOX","Yahoo email","Yahoo password",
       "{Target imap:143}INBOX", "Target login", "Target password");

function docopy($smailbox, $suser, $spwd, $tmailbox, $tuser, $tpwd) {
  echo "--------------------\nCopying mail from $smailbox:$suser to $tmailbox:$tuser\n--------------------\n";

  if (!($source = imap_open($smailbox, $suser, $spwd))) {
    echo "Connect to source failed";
    exit(1);
  }

  echo "Connected source: $source\n";

  $msgcount = imap_num_msg($source);

  if ($msgcount == 0) {
    echo "No messages to process\n\n";
    imap_close($source);
    return;
  }

  echo "Messages: $msgcount\n";

  if (!($target = imap_open($tmailbox, $tuser, $tpwd))) {
    echo "Connect to target failed";
    imap_close($source);
    exit(1);
  }

  echo "Connected target: $target\n";

  for ($msg = 1; $msg <= $msgcount; $msg++) {
    echo "\nProcessing message $msg\n";

    $header = imap_fetchheader($source, $msg);
    $body = imap_body($source, $msg);

    if (!imap_append($target, $tmailbox, $header . $body)) {
      echo "Saving message failed";
      imap_close($source);
      imap_close($target);
      exit(1);
    }

    echo "Message saved\n";

    if (!imap_delete($source, $msg)) {
      echo "Deleting message failed";
      imap_close($source);
      imap_close($target);
      exit(1);
    }

    echo "Message deleted\n";
  }

  imap_expunge($source);

  imap_close($source);
  imap_close($target);

  echo "Completed copy\n\n";
}
?>
</pre></body></html>

Obviously you have to fill in the bits for Yahoo email, Yahoo password, Target imap etc. It should also work for other POP or IMAP sources/targets, but I haven't tried it.

The function can be called several times if you have more than one account to copy, in my case two works fine.

It's written to give some level of output if you run it through a web server, then once it's working you can schedule it to run every few minutes via cron or similar.

App "upgrade" = Ransomware ?

No Comments

I've been a user of SplashID password manager on my iPhone, iPad and Windows machine for a couple of years and found it pretty good. I paid $10 to use wifi sync which seemed reasonable value at the time.

Now, the developer has created an "upgraded" version which requires a $20 annual fee to use wifi sync. Of course they can offer this service and maybe some people will buy it, but I'm happy with my version thanks.

BUT - the version on my iDevices is linked to the App Store, and will automatically update if I enable this option or if I ever click the "Update All" button; there's no easy way to stop this, and thus at some point my paid for functionality will inevitably be deleted by the developer.

In my view this is ransomware (or possibly theft). The developer almost certainly doesn't intend it this way, but as a consumer I don't care what their theory is, I care what I can use and what it costs me. When I buy something I don't expect free upgrades, although they are often included, but I do expect it to not be remotely disabled and an additional fee demanded.

Of course there is a very simple solution - leave the application on the App Store and create a new one explicitely as "Version X". If the old one breaks with an iOS update then fair enough, I didn't buy perpetual support, but in the meantime don't steal my functionality.

Posts on the SplashData forum received suggestions to use their permanent upgrade offer - so basically ransomware in email form rather than as an in-app purchase.

I also raised this with Apple but haven't heard back yet.

iPhone 6

No Comments

So I now have an iPhone 6 - after sticking with my old iPhone 4S for three years the new 6 offered enough difference to be worth the upgrade.

The migration was trivial and took less than one hour, with all the apps still apparently working and nothing more than a few logins to reset.

For the phone, the highlight is obviously the bigger screen. I didn't really think the 4S was small, but wow the 6 is just so much better in that department, with even more clarity and so much more text visible. Reading news or looking at photos is a vastly improved experience, and I didn't even feel it was a problem before.

In terms of the hardware, it feels solid, and the (optional) leather case is very nice to hold. Camera is significantly more responsive, and the fingerprint ID works pretty well. The size is OK, obviously a lot bigger but not so much it feels inappropriate for a phone.

The only thing I've noticed is that quite a lot of apps are obviously not yet adjusted for the new resolution, so the graphics feel blown up and a bit bold. It's a bit like using the 2x view of an iPhone app on the iPad but not as bad.

Update 17 Oct

The Belkin Charge+Sync Dock works with the iPhone 6 with the leather case on. I think without the case the phone would be too thin and lean back uncomfortably far.

British English??

No Comments

I just upgraded my iPad to iOS7, and have mixed views on the changes overall. The new functionality seems in general to be useful, but the flat design seems to be less clear than the old one and in particular some of the icons are really not intuitive or clear to me.

I've found one thing which particularly annoys me in the Mail application though:

Trash

My iPad is set to use British English, and Trash is not a British term! It's also inconsistent when there's a perfectly good wastebin icon on the email screen itself.

This started a train of thought about a similar icon/term which has always bothered me:

Recycle

Why is is called a Recycle Bin ?

Stuff I put in our physical recycle bin gets taken away, cut up, washed / melted, and reworked into a range of new items, which I don't personally get back. If I expected to put in a Word document and get back an Excel with numbers from a bunch of other people maybe the analogy would be more accurate.

To be fair there are some similarities:

  • I always forget to empty both the electronic and real form of the bins until we run out of space.

  • A file is always needed just after emptying, and newspaper is always needed for surface protection the day after it is recycled.

I wonder what the correct term for this electronic store would be? Options I've thought of:

Attic - much better metaphore, but can't really picture the icon for this.

Celler - not very common in British English.

Garage - having a car on the icon would clearly cause confusion!

Shortcuts for Google Translating a page in IE

No Comments

Google Chrome has some nice features, one in particular being the automatic translation. Unfortunately the performance on my home machine was awful, with long pauses before loading pages despite the usual attemps to cleanup, reinstall etc etc.

In a fit of frustration I tried IE, and was pleasantly surprised to find it very fast and very usable, with the exception of the translation part. Bing isn't very well integrated, and simply doesn't do very good translations.

I don't like the Google Toolbar, but needed a button to do one-stop translation of the page, and found two solutions.

1. Use a Javascript bookmark in the Favourites bar

The following bookmark will take the current URL and open in it Google Translate:

javascript:window.open('http://translate.google.com/translate?hl=en&sl=auto&tl=en&u='+encodeURIComponent(location.href))

To install this in IE

  1. Bookmark the normal Google Translate page translate.google.com.

  2. Edit the properties of the new bookmark to set the URL to the javascript above.

You can change the target and interface language by modifying the tl=en and hl=en parts respectively.

2. Set up Google Translate as a search provider

By setting up Google Translate as a search provider, you can send the current address bar content in two clicks.

  1. Use the tool at the following page to create the search provider: www.enhanceie.com/ie/SearchBuilder.asp.

    The URL you need to use is: http://translate.google.com/translate?hl=en&sl=auto&tl=en&u=TEST

  2. To do the translation, click the little down arrow by the search button in the IE address bar, and click the Google Translate button twice.