Steam and macOS High Sierra

I just took the plunge and installed a fresh new copy of High Sierra. One of the next things I did was try to install the Steam client and all it did was pause at the splash screen. Running the Steam command from the console produced the following errors:

Errors in public/subpanelwelcomeintro.res:
error loading file 'public/subpanelwelcomeintro.res', no such file
Errors in public/subpanelwelcomecreatenewaccount.res:
error loading file 'public/subpanelwelcomecreatenewaccount.res', no such file
Errors in public/subpanelwelcomecreatenewaccountaccountname.res:
error loading file 'public/subpanelwelcomecreatenewaccountaccountname.res', no such file
Errors in public/subpanelwelcomecreatenewaccountemail.res:
error loading file 'public/subpanelwelcomecreatenewaccountemail.res', no such file
Errors in public/subpanelwelcomecreatenewaccountnamecollision.res:
error loading file 'public/subpanelwelcomecreatenewaccountnamecollision.res', no such file
Errors in public/subpanelwelcomecreatingaccount.res:
error loading file 'public/subpanelwelcomecreatingaccount.res', no such file

And technically those files were not there. However files that looked very much like those were there. My new shiny APFS filesystem is case-sensitive like every good Unix filesystem should be. Steam on the other hand doesn't seem to understand this. So here's a script to get you up and running. It basically renames all the files the Steam client is looking for into the correct case:

USER=$(whoami)
cd /Users/${USER}/Library/Application\ Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/public; ls *.res | while read line ; do file=$(echo $line | tr '[:upper:]' '[:lower:]'); mv $line $file; done
cd /Users/${USER}/Library/Application\ Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/steam/cached/; ls *.res | while read line ; do file=$(echo $line | tr '[:upper:]' '[:lower:]'); mv $line $file; done
cd /Users/${USER}/Library/Application\ Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/friends; ls *.res | while read line ; do file=$(echo $line | tr '[:upper:]' '[:lower:]'); mv $line $file; done
cd /Users/${USER}/Library/Application\ Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/graphics; ls *.tga | while read line ; do file=$(echo $line | tr '[:upper:]' '[:lower:]'); mv $line $file; done
cd /Users/${USER}/Library/Application\ Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/servers; ls *.tga | while read line ; do file=$(echo $line | tr '[:upper:]' '[:lower:]'); mv $line $file; done

And now you should be good to game.

VMware Workstation 12 and Centos 7

After I upgraded my Centos 7 box to kernel 3.10.0-693.2.2.el7.x86_64, VMware Workstation 12 spit this error out when trying to recompile the network modules:

compat_netdevice.h:343:46: error: ‘struct net_device’ has no member named ‘trans_start’

That's because the kernel just doesn't have trans_start anymore. So here's the fix:

mkdir ~/vmnet-fix
cd ~/vmnet-fix
cp /usr/lib/vmware/modules/source/vmnet.tar ./vmnet-12.5.7.tar
tar xf vmnet-12.5.7.tar
 

Open up your favorite text editor and make the file CentosVMwareWorkstation.patch with this content:

--- vmnet-only/compat_netdevice.h
+++ vmnet-only/compat_netdevice.h
@@ -337,7 +337,8 @@
 typedef u32 compat_netdev_features_t;
 #endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0) || \
+    (defined(RHEL_RELEASE_CODE) && RHEL_RELEASE_CODE >= 0x0704)
 #define compat_netif_trans_update(d) netif_trans_update(d)
 #else
 #define compat_netif_trans_update(d) do { (d)->trans_start = jiffies; } while (0)

Save that and:

patch -p0 < CentosVMwareWorkstation.patch
tar cf vmnet.tar vmnet-only/
sudo cp vmnet.tar /usr/lib/vmware/modules/source/vmnet.tar
sudo vmware-modconfig --console --install-all

And then you're back in business.

Email Signatures and Spam Filters

Do you wonder why sometimes the email you send gets placed into the recipient's spam folder? You've been emailing them for years but once in awhile or all the sudden your messages are marked as spam. Every email you send gets scored (graded with a numeric value by a spam engine) multiple times before it ends up in someone's inbox and every scoring system is different.

Most email servers work the same way. The first level of spam detection occurs before the email is ever accepted. The receiving server checks several things about the sending server to make sure it should be sending out email from a particular domain. IE: A yahoo email server should not be sending out email with a from address containing gmail.com. Once the receiving email server accepts delivery of the message, the second level of spam detection occurs: content scanning.

Here is what a normal email looks like:

From: Email Test <emailtest@visibil.it>
To: testemail@somedomain.com
Date: Thu, 28 Sep 2017 14:14:30 -0500
Subject: Hi
Hi there.

Here is what the server sees:

Delivered-To: testemail@somedomain.com
Received: by 10.25.59.211 with SMTP id d80csp1091303lfl;
Thu, 28 Sep 2017 12:14:31 -0700 (PDT)
X-Received: by 10.55.17.233 with SMTP id 102mr3738794qkr.56.1506626071639;
Thu, 28 Sep 2017 12:14:31 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1506626071; cv=none;
d=google.com; s=arc-20160816;
b=J1+HZ/zkILoym+6upvp4Wp1st0dvyoT37QMv6m+ljXPHOmwF9QZMT42dsiQoThkpwH
QpxeFLW0T6WHjKLTyP9kRMuFpa+2yFbD5bWUhbjJ0FVzAwqxGcYTuqXz/Cf6kICK5HDs
jD2zu8ipzMWlYq/zPx9vn/E+B54pwK9pPXgzjwQ8XybQPORaKb1M3FOqqff+ywrq1121
IppShr1k2oU/Oy0tczF3QeQFB1rnG7ZGDYXX4ydARN3lKyK4iJlC8xIc4jP8NRLqlZyZ
DsdvEG5P5x2fUR7QVeLkBD7Wsw085XuIIHa2LfZ5aDUoya/zNbDfHmRf36PMaTcUaCo6
c7fw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
h=to:subject:message-id:date:from:mime-version:dkim-signature
:arc-authentication-results;
bh=Eq0FLBHrzGRGkt+/YYbIRBpVuknn+KX5ee62OBYGadg=;
b=bkD5AJUmfUjZeWwv39b5VcdPyT26ZyEP8I2tn7uZENClzicl89nrICTnB55xSD7qcc
zBmlIVDuWdhi+7IG/BnWkRG+9haCuZby7DiBYT4ehr2sozj7r89JcLEjgTC/s/yY84bf
1m3+1LCz+kVijyF7v5QStuLvKq4WFSiujAvFsH+IUu35sNKDsw/b1yBWUmvEm5fTKPjs
TM5AUC8t9775Gjtyf9SvbBl3TzRG2/guAEqa+BSKOZjiKIzlqwbNw4P9VGFU8TMxB9mA
W+LiVdwuz/VfmtKyX6GBZ8Azs+gpWZqYAw7BnNwf1ek14SlQdrWKvUVVecJdBGTW4FkP
iXQQ==
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@visibil-it.20150623.gappssmtp.com header.s=20150623 header.b=Ev0UvhD9;
spf=pass (google.com: domain of emailtest@visibil.it designates 209.85.220.41 as permitted sender) smtp.mailfrom=emailtest@visibil.it
Return-Path: <emailtest@visibil.it>
Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41])
by mx.google.com with SMTPS id a184sor1681237qke.149.2017.09.28.12.14.31
for <testemail@somedomain.com>
(Google Transport Security);
Thu, 28 Sep 2017 12:14:31 -0700 (PDT)
Received-SPF: pass (google.com: domain of emailtest@visibil.it designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;
Authentication-Results: mx.google.com;
dkim=pass header.i=@visibil-it.20150623.gappssmtp.com header.s=20150623 header.b=Ev0UvhD9;
spf=pass (google.com: domain of emailtest@visibil.it designates 209.85.220.41 as permitted sender) smtp.mailfrom=emailtest@visibil.it
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=visibil-it.20150623.gappssmtp.com; s=20150623;
h=mime-version:from:date:message-id:subject:to;
bh=Eq0FLBHrzGRGkt+/YYbIRBpVuknn+KX5ee62OBYGadg=;
b=Ev0UvhD9jgyoKfbCEHsMnJCP0Sq0UmQ+DNQN4FoEBhlnEfSTO4ktHEQ5UD3biuA7Kk
Vkixn8ErmInQijNx5wBYpcDwpjEOMd26M14SAa4d9h283Fk0KsrizwY0L7b+ngYoZUN5
8mq2kbspCz9nYa2sfBhxWZ9elkCtc0RcOZyi7o/mNVqFj5fFf6Sk4zHMawXXdok1icY7
4WB5jyKDhHN9UynSAJJ+D66GEtmJSxh/XfBuj3WKXftEen6oWzXEiC46RsZNvxmxI8XX
RE2oCVT4DlRKGhZZi2A8MVY+LGilTjvjBcAOaXp0d2EgivQOzKI3ebqbP4suGUJCLIR7
YDGQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
bh=Eq0FLBHrzGRGkt+/YYbIRBpVuknn+KX5ee62OBYGadg=;
b=lyWtR1GBfW3mLFbEcJXUQY8x+rQcaj8worYKPaB5hDDhBdMTm55SCGs/yDSn00cQsj
SYBj9fWLuZw/wRyoVfbBvyiE2Wicu1lVmagd7RXfbhKBp1r4699V6kJ80dI5+78LRpBb
QGShXYSlqM2OGdwrgA4COabWqXp8/MYOhbP2REzkJjVTu12DT9GPxjaMNxmZo6qPoxjn
9+6nwBLitz7EczCGzcYhh/WPNdPocwS/G+lpXNYwdotV/ApEW8MYf8X1qoruEUZDrxbE
leSTDItXKjqQKKNASoRxPrXk8ff65LAHjUbzBE9sTj8/ZMLllxV156NU8dj0bnpFuFrL
sOWg==
X-Gm-Message-State: AMCzsaVMAYt46cG72Q+gilUv8VdQ+sy5r+KLcKu3yvZ804/XomcsUBmL VFTBfj8eK6FmGuPV/OwrBkunXMfgseHWYf+PH0ThUQ==
X-Google-Smtp-Source: AOwi7QBB610tnIas/Try6wpkQUFaCW0WckIeIvHWwfg3ca1mgOneiK+yGwhGOHqxOGqrhby7Cdzd9I83ocIbNbpZmGA=
X-Received: by 10.55.157.195 with SMTP id g186mr8061174qke.347.1506626070824; Thu, 28 Sep 2017 12:14:30 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.140.22.72 with HTTP; Thu, 28 Sep 2017 12:14:30 -0700 (PDT)
X-Originating-IP: [207.203.41.250]
From: Email Test <emailtest@visibil.it>
Date: Thu, 28 Sep 2017 14:14:30 -0500
Message-ID: <CALN7Uesx3_iEMCBo5FaR8rZvS7isvht_Gw90DB8Rh=ptZ1m=Mw@mail.gmail.com>
Subject: Hi
To: testemail@somedomain.com
Content-Type: text/plain; charset="UTF-8"
Hi there.

Big difference for such a short message but it is still pretty easy to read as the content of the message was in plain text. This is the way email was designed and it was never really meant to carry today's payload of images, html and javascript. Below is the same email with a modern email signature with all the various social media hooks:


Screen Shot 2017-09-28 at 2.54.00 PM.png

Here's the additional code that now appears at the bottom of every email you send:

<table cellpadding="0" cellspacing="0" border="0" style="background: none; border-width: 0px; border: 0px; margin: 0; padding: 0;">
<tr><td colspan="2" style="padding-bottom: 5px; color: #F7751F; font-size: 18px; font-family: Arial, Helvetica, sans-serif;">Email Test</td></tr>
<tr><td colspan="2" style="color: #333333; font-size: 14px; font-family: Arial, Helvetica, sans-serif;"><i>Overlord</i></td></tr>
<tr><td colspan="2" style="color: #333333; font-size: 14px; font-family: Arial, Helvetica, sans-serif;">Operations</td></tr>
<tr><td colspan="2" style="color: #333333; font-size: 14px; font-family: Arial, Helvetica, sans-serif;"><strong>Visibil.IT</strong></td></tr>
<tr><td width="20" valign="top" style="vertical-align: top; width: 20px; color: #F7751F; font-size: 14px; font-family: Arial, Helvetica, sans-serif;">p:</td><td valign="top" style="vertical-align: top; color: #333333; font-size: 14px; font-family: Arial, Helvetica, sans-serif;">256-665-9282&nbsp;&nbsp;<span style="color: #F7751F;">m:&nbsp;</span>256-555-0000</td></tr>
<tr><td width="20" valign="top" style="vertical-align: top; width: 20px; color: #F7751F; font-size: 14px; font-family: Arial, Helvetica, sans-serif;">a:</td><td valign="top" style="vertical-align: top; color: #333333; font-size: 14px; font-family: Arial, Helvetica, sans-serif;">200 Dan Tibbs Road</td></tr>
<tr><td width="20" valign="top" style="vertical-align: top; width: 20px; color: #F7751F; font-size: 14px; font-family: Arial, Helvetica, sans-serif;">&nbsp;</td><td valign="top" style="vertical-align: top; color: #333333; font-size: 14px; font-family: Arial, Helvetica, sans-serif;">Suite 200</td></tr>
<tr><td width="20" valign="top" style="vertical-align: top; width: 20px; color: #F7751F; font-size: 14px; font-family: Arial, Helvetica, sans-serif;">w:</td><td valign="top" style="vertical-align: top; color: #333333; font-size: 14px; font-family: Arial, Helvetica, sans-serif;"><a href="https://visibil.it" style=" color: #1da1db; text-decoration: none; font-weight: normal; font-size: 14px;">visibil.it</a>&nbsp;&nbsp;<span style="color: #F7751F;">e:&nbsp;</span><a href="mailto:emailtest@visibil.it" style="color: #1da1db; text-decoration: none; font-weight: normal; font-size: 14px;">emailtest@visibil.it</a></td></tr>
<tr><td colspan="2" style="padding-bottom: 8px; padding-top: 5px;"><img src="https://drive.google.com/uc?id=0B_wEeyJUAw2MbUdEMlAwYnAtc28"></td></tr>
<tr><td colspan="2"><a href="https://twitter.com/visibil_it" style="border-width:0px; border:0px; text-decoration: none;"><img width="25" height="25" style="border: none; width: 25px; max-width: 25px !important; height: 25px; max-height: 25px !important;" src="http://cdn2.hubspot.net/hubfs/184235/dev_images/signature_app/twitter_sig.png"></a></td></tr>
<tr><td colspan="2" style="padding-top: 10px;"><a href="http://bit.ly/2wPXphP " style="border-width:0px; border:0px; text-decoration: none;">
<img width="35" height="34" style="border: none; width: 35px; max-width: 35px !important; height: 34px; max-height: 34px !important;" src="http://cdn2.hubspot.net/hubfs/53/InboundCert-NoShadow_35px.png" alt="Inbound Certification">
<img width="35" height="34" style="border: none; width: 35px; max-width: 35px !important; height: 34px; max-height: 34px !important;" src="http://cdn2.hubspot.net/hubfs/53/EmailCert-NoShadow_35px.png" alt="Email Marketing Certification">
<img width="35" height="34" style="border: none; width: 35px; max-width: 35px !important; height: 34px; max-height: 34px !important;" src="http://cdn2.hubspot.net/hubfs/53/HubSpotMarketingCert-NoShadow_35px.png" alt="HubSpot Marketing Software Certification">
<img width="35" height="34" style="border: none; width: 35px; max-width: 35px !important; height: 34px; max-height: 34px !important;" src="http://cdn2.hubspot.net/hubfs/53/HubSpotSalesCert-NoShadow_35px.png" alt="HubSpot Sales Software Certification">
<img width="35" height="34" style="border: none; width: 35px; max-width: 35px !important; height: 34px; max-height: 34px !important;" src="http://cdn2.hubspot.net/hubfs/53/InboundSaleslCert-NoShadow_35px.png" alt="Inbound Sales Certification">
<img width="35" height="34" style="border: none; width: 35px; max-width: 35px !important; height: 34px; max-height: 34px !important;" src="http://cdn2.hubspot.net/hubfs/53/PartnerCert-NoShadow_35px.png" alt="Partner Certification">
<img width="35" height="34" style="border: none; width: 35px; max-width: 35px !important; height: 34px; max-height: 34px !important;" src="http://cdn2.hubspot.net/hubfs/53/DesignCert-NoShadow_35px.png" alt="HubSpot Design Certification">
<img width="35" height="34" style="border: none; width: 35px; max-width: 35px !important; height: 34px; max-height: 34px !important;" src="http://cdn2.hubspot.net/hubfs/53/COMCert-NoShadow_35px.png" alt="Contextual Marketing Certification">
<img width="35" height="34" style="border: none; width: 35px; max-width: 35px !important; height: 34px; max-height: 34px !important;" src="http://cdn2.hubspot.net/hubfs/53/ContentMarketingCert-NoShadow_35px.png" alt="Contextual Marketing Certification">
<img width="35" height="34" style="border: none; width: 35px; max-width: 35px !important; height: 34px; max-height: 34px !important;" src="http://cdn2.hubspot.net/hubfs/53/GDDCert-NoShadow_35px.png" alt="Growth-Driven Design Agency Certification">
</a></td></tr>
</table>

That's a huge difference for a message that just says "Hi there." Also notice all the links to external websites to pull images and data from. Not only does this slow email display time down on the recipient devices, but the external websites are what the spam filter focuses on. Things that can get these external sites scored higher on a spam filter:

  • If anyone on any email service, such as gmail, marked a message as spam using the same company that generated your signature.

  • The signature company's website has been marked as dangerous by a spam reporting service.

  • If a mass marketing email campaign with that signature was used and marked as spam.

  • If the signature is too image or link heavy. Each item adds more to the spam score.

  • If new spam definitions contain a false positive signature (Something that scored low in the past could score high now due to any non-text elements.)


Keep your email signature simple. Keep it plain text. 

Now a blast from the past. Even in the before time, people tried to out do each other on email signatures. Here's one of my favorite:

 

asciiemailsig.png