Your browser (Internet Explorer 6) is out of date. It has known security flaws and may not display all features of this and other websites. Learn how to update your browser.
X

Booster Fuels Coupon / Promo Code + Review

Booster Fuels Coupon

NOTE: This is a promotion. I don’t get paid to post it, if you use my Booster Fuels Coupon (70JAMESD) you get $5 off first two deliveries ($10 total) of fuel and I get $5 off my next fill up.

Booster Fuels Coupon: 70JAMESD – $5 off first two deliveries ($10 total)

I Hate getting gas

Dirty Gas Station

I loathe going to the gas pump. It’s generally out of my way unless I want to pay top dollar for fuel. Fuel is more expensive the closer you are to a major road or higher income area. The gas stations also usually smell of gas fumes (I mean it is a gas station after all). You are forced to listen to the stereo systems of inconsiderate patrons, walk around trash cans that stink in the Texas heat and are typically  buzzing with bees or wasps. Then if you go at night you get to deal with the shadier folks who tend ask for cash or try and sell you junk out of the trunk of their car. I repeat, I loathe going to the gas pump.

I already have the majority of items delivered to me: groceries, household supplies, electronics I order off the internet. Why not gas too?

Booster Fuels Review

Booster Fuels CouponMy workplace recently re-located to Dallas from Fort Worth. One of the things I immediately noticed was the weird purple trucks running around the new office complex. I had no idea what they were but I started looking into it. Turns out it was a company called Booster Fuels. Shortly after we moved in they did a promotion where anyone could drive up and get a promotional fill up (Usually was about 30c/gal below normal prices). I can now get gas delivered while I’m at work? Awesome.

I was a bit skeptical at first, then I checked out the pricing. Booster even lets you compare to gas stations near you. For regular (87 octane) the prices are around a couple cents above local prices. However for premium (93 octane) the prices are actually lower than the local prices. This surprised me. I was expecting an extra 10c/gal or more to get this delivered. I’m used to most services where delivery can be more expensive than going and getting it yourself.

I usually get to my office between 8:30 and 9:30. Booster offers free delivery and guarantees delivery before 4:30PM if you make the request before 10AM. Any urgent requests and you end up paying for a priority delivery. Even the priority delivery is reasonable @ $2.99. Priority delivery will guarantee delivery before 12PM if you request by 10AM or delivery before 4:30PM if requested after 10AM.

Booster also offers additional services (in some areas). In my case, I got my windshield wipers replaced with Rain-X blades. I neglected my windshield wipers for far too long. The request was placed around 9AM and within about 2 hours the technician had fueled the car and replaced the blades.

I no longer hate getting gas

I continue to use Booster Fuels and I haven’t made a trip to the gas station since the Great Texas Gas shortage of 2017. Every time they fill up the car it’s been within a few hours of my requests. I no longer loathe getting gas and I can do it while I’m already at work.

 

Change cPanel Spambox Name

cPanel has had a long standing feature request, to change cpanel spambox name. It’s been open for well over two years and they still haven’t budged. There’s a large number of people who want the ‘Junk’ folder to replace the ‘spam’ folder that most clients don’t understand.

I’ve managed to figure out how to modify the exim configuration to change the folder to use the Junk folder for spam. The problem is any time an upcp is run it might overwrite the configuration. Here’s the steps to edit it.

  1. Open file ‘/usr/local/cpanel/etc/exim/distconfig/exim.conf.dist’
  2. Change line (around 618 under the virtual_user_spam header) to data = “$local_part+Junk@$domain”
  3. Change line (around 780 under the localuser_spam header) to data = “$local_part+Junk”
  4. Save the file
  5. Run /scripts/eximconfgen > /etc/exim.conf
  6. Restart Exim using /scripts/restartsrv_exim

You’ll need to monitor this closely after an upcp since upcp could possibly completely overwrite these changes. This method is not supported by cPanel either and their support won’t help you if something goes wrong with this implementation.

If you want to get rid of the ‘spam’ folder, edit the dovecot configuration and change the section for the ‘spam’ folder from auto=create to auto=no. This will allow you to delete the email inbox too.

Exchange Spamassassin Transport Agent

Exchange SpamAssassin Transport Agent Summary

I’ve spent a good few months working on an Exchange Spamassassin Transport Agent. The built in Anti-Spam features of Microsoft Exchange are questionable at best in my experience. There isn’t a whole lot to tune and there isn’t much you can do about updating the filters as spammers change their methods.

Exchange SpamAssassin Transport Agent Features

  • Filters all mail coming from external sources through Spamassassin.
  • Configurable Rejection Threshold. (Note: This only tags the message with an X-Spam-Discard header. Your Exchange server can then discard the message based on that header)
  • Configurable Maximum Message Size (Prevent memory issues when scanning very large messages
  • Configurable Received header stripping. (I’ll explain this more later during the installation

Exchange SpamAssassin Transport Agent Installation

  1. Download the Exchange Spamassassin Transport Agent Installation Script
  2. Enable Non-Signed Scripts
  3. Run the install Powershell Script Downloaded from Step #1
  4. Create two Mail Flow Rules to look like the following:
    Exchange SpamAssassin Transport #1
    Exchange SpamAssassin Transport #2
    Exchange SpamAssassin Transport #3
  5. Send a few test messages in / out to make sure mail is still flowing through the server. We want to check the inbound message headers in Outlook / Apple Mail. (Google how to do this if you don’t know how.) We want to make sure that the X-Spam headers are being added. Also we want to make sure that there aren’t any extra ‘Received’ header lines being added after the initial receive on our servers.

    To explain the ‘Received’ header issue: Spamassassin does a lot of weighting and scoring on the most recent ‘Received’ header. Every time the message passed through a mail server or mail transport component one of these headers is added. Exchange has a bad habit of adding a ton of these as it passes through.In this implementation by the time it gets to Spamassassin there is already at least one unnecessary Received header that will prevent Spamassassin from doing it’s job correctly. This is what the ‘SkipRecievedHeaders’ setting is for in the XML file.

    If you’re only using a single exchange server running the hybrid Mailbox (IMAP/POP3/etc) / Frontend (SMTP) roles this will probably need to stay at 1. If you are using an Edge transport (and this isn’t running on the edge transport) it’ll need to be set to 2 or 3. You’ll need to experiment. You’ll know when its right and when it’s wrong. To give you an example, I have a single Exchange server doing everything so the headers look like this for me:

    You can see the X-Spam flags should show up just before the Received line that contains the external SMTP server that you’re receiving the message from using the Frontend Transport. If you don’t have it going on this one, you may end up losing all the weighting based on the external server. (Reputation, HELO validation, etc).

 

Exchange GreyList Transport Agent

Currently Exchange Greylisting doesn’t exist. For some reason Microsoft has not implemented the ability to greylist. I’ve created a very simple Transport Agent for Microsoft Exchange. When this Transport Agent is used it will greylist email for a configurable amount of time.

Greylisting uses a triplet of the sending IP, the sending domain, and the receiving email. This makes it so that each user is protected from spam from invalid MTAs. Typically spambots will not retry delivery if it gets refused a single time. Since the spambots are not MTAs they don’t keep queues and retry them after a certain period of time.

The source code can be downloaded from the github repository: here. You will need Visual Studio 2013 or later. Any person who knows how to open Visual Studio 2013 can compile this code fairly easily.

Exchange GreyList Transport Agent Binary Downloads

I have compiled the .dll for Exchange 2010 SP2 and SP3. I’ve also compiled it for Exchange 2013 SP1. You can download the binaries here. Be sure to pick the right one for your version of exchange. If you use this option you can skip the Build instructions and go straight to the install instructions in the github repository.

Exchange GreyList Transport Agent Build Instructions

  1. Open the Solution in Visual Studio
  2. Expand the References section under the project
  3. Remove the references to the Common and Transport references
  4. Right click References and select add reference
  5. Browse to the folder containing this project and to the Public Exchange DLLs folder.
  6. Browse to your version of exchange and highlight both of the DLL files and select add
  7. Select ‘Release’ for the build configuration. We don’t need Debug here since this is for production.
  8. Build the project by hitting Ctrl+Shift+B.
  9. Copy the PlusAgent.dll file from the resulting Release/bin folder inside of the project directory per the instructions in the github repository.
  10. Continue following those instructions

Exchange GreyList Transport Agent Installation Screenshot

Exchange Greylisting Transport Agent Installation #1

 

 

Exchange Email Plussing Transport Agent

Currently Exchange Email Plussing doesn’t exist. For some reason Microsoft has not implemented the ability to use disposable emails by way of subaddressing. I’ve created a very simple Transport Agent for Microsoft Exchange. When this Transport Agent is used it will allow for E-Mail plussing without interfering with any existing emails that may contain a plus.

Let’s say we have the email john@smith.net. Once installed we can now send email to john+amazon@smith.net, john+newegg@smith.net, john+banking@smith.net. This allows us to create disposable emails. The user can go even further and create server-side organizational rules to put emails to certain addresses in a particular folder.

The source code can be downloaded from the github repository: here. You will need Visual Studio 2013 or later. Any person who knows how to open Visual Studio 2013 can compile this code fairly easily.

Exchange Email Plussing Binary Downloads

I have compiled the .dll for Exchange 2010 SP2 and SP3. I’ve also compiled it for Exchange 2013 SP1. You can download the binaries here. Be sure to pick the right one for your version of exchange. If you use this option you can skip the Build instructions and go straight to the install instructions in the github repository.

Exchange Email Plussing Build Instructions

  1. Open the Solution in Visual Studio
  2. Expand the References section under the project
  3. Remove the references to the Common and Transport references
  4. Right click References and select add reference
  5. Browse to the folder containing this project and to the Public Exchange DLLs folder.
  6. Browse to your version of exchange and highlight both of the DLL files and select add
  7. Select ‘Release’ for the build configuration. We don’t need Debug here since this is for production.
  8. Build the project by hitting Ctrl+Shift+B.
  9. Copy the PlusAgent.dll file from the resulting Release/bin folder inside of the project directory per the instructions in the github repository.
  10. Continue following those instructions

Exchange Email Plussing Installation Screenshots

Exchange Email Plussing #1

Exchange Email Plussing #2

Munin-node on XenServer 6.5.0

munin-node on xenserver 6.5 #1Munin is used to monitor a number of systems across the internet. I use it to monitor and graph performance data for all of my systems. Some systems don’t come with it by default and require a manual installation using an external source. In this case I’ll be looking at installing munin-node on xenserver 6.5

Installing Munin-Node on Xenserver 6.5 – How To:

  • Install the EPEL Repository for EL5 x64. (Xenserver 6.5 is built on RHEL 5):
  • Disable the EPEL Repository by default:
  • Install Munin-node  / Munin-async on the node:

Munin is now installed and ready to go. You can modify the plugins as necessary in /etc/munin/plugins or using munin-node-configure.

C2100 BMC Flashing Procedure

Dell C2100 BMC Flashing Procedure #1Background

I run a Xenserver cluster. In fact this blog runs on a VM that resides on that Xenserver cluster. Recently I did some major changes to my infrastructure. I added a storage server connected to the Xenserver nodes in the pool. This made my VMs agile and allowed me to enable high availability now that I had storage available to the nodes. This was all accomplished using Linux and Fiber Channel. Enough of the nitty gritty, back to the point.

The systems I run in the Xenserver cluster are used. They’re servers that are a few generations out of date but still have quite a bit to offer. I use CS24-SC servers for my Xenserver nodes and a Dell built C2100 for my storage server. They’re cheap, they’re plentiful, and parts are readily available.

Problem

My C2100 came with a non-standard BMC version. It looks like the vendor put their own version on it which only had KVM access, no web based user interface at all. This was a problem. I needed to be able to gain access to the iDRAC in the event I needed to recover the device. I confirmed the BMC didn’t have any other ports opened using nmap. I tried resetting the BMC configuration (clearing it’s built in firewall). No such luck. I’ll need to flash it.

I began the saga of tracking down the firmware and the Dell flashing utility for this system. I was able to look up my C2100 by service tag and download the utility. I followed Dell’s procedures and promptly bricked my BMC. Dells flashing utility, sucks. I wasn’t able to find a good C2100 BMC Flashing procedure. There was a significant amount of  conflicting information.

After a bit of Googling I was able to find that I should use the SOC FLASH utility. I tried this from within Linux, still no such luck. In fact trying it from within Linux also bricked it on another machine. It seems if there is an OS running the BMC won’t get flashed correctly. No idea why.

The only solution I had available to me was using a USB bootable DOS prompt and place the flashing files on there. C2100 BMC Flashing procedure is below.

C2100 BMC Flashing

  • You’ll need to prepare a USB thumbdrive using Rufus (or from my mirror). This utility will allow you to format a thumb drive and load DOS on it. Use the following settings when prepping the drive.
    • Partition Scheme: MBR scheme for BIOS or UEFI
    • File System: FAT32
    • Cluster Size: Leave at it’s default
    • Check for bad blocks: Unchecked
    • Quick Format: Checked
    • Create a Bootable disk using: DOS (Do not use FreeDOS. It will not work)
    • Create extended label an icon files: Checked
  • Once the thumb drive has been prepped it will show up in ‘My Computer’ under whatever label was assigned to it.
  • You’ll need the Aspeed SOCFLASH utility available here. Once you download and extract this there will be a file inside called ‘socflash_v11101.zip’. Unzip this then copy all of the files to the flash drive you just prepped.
  • Download the BMC firmware from here. You’ll need to extract it. Make sure to use the built in WinZip extractor. Otherwise you’ll get end of archive errors. You’re looking for the file in the ‘payload’ directory that ends in .bin. Should be about 15MB in size. Copy this to the flash drive (and into the same folder) as the SOC flash utility.
  • Boot into the USB drive.
  • Then run the command: ‘socflash.exe cs=2 option=fc if=[bmc firmware filename] skip=0x200’. This will cause the utility to erase the flash chip then flash the new firmware to the BMC.
  • If your BMC is currently bricked and the server wont turn on:
    • Unplug Power
    • Open the case
    • Clear the CMOS using the CMOS clear jumper (it’s to the left of the SATA ports on the board
    • Close the case
    • Apply power
    • The server should turn on automatically. It will take about 5 minutes to POST. It will then give an error message about the BMC not responding and will apply defaults and reboot.
    • Wait another 5 minutes.
    • When the boot logo shows up hit F11 to select the Boot Device List. Select your USB thumb drive.
    • Run command listed above. Reboot. Enjoy.

Using this C2100 BMC flashing procedure I was able to recover the BMC after bricking it unintentionally.

Debian Install on an Odroid-C1

Debian Install on an Odroid-C1

So I’ve moved on from Ubuntu and Arch Linux to a Debian Install on an Odroid-C1. The reason for this is I am using my Odroid-C1 as a router. I also have some features that I need that are not included in the Ubuntu install. Arch Linux does solve some of the problems however I don’t think Arch Linux is very popular. Debian seems to be a very popular alternative to Ubuntu (since Ubuntu is a fork of Debian). I’m also a fan of sysvinit over systemd so this also helps me stick with sysvinit.

Debian also seems to boot faster on the odroid-c1. You can enable/disable the various accelerators on the Odroid by editing /media/boot/boot.ini with this image too. This is very useful if you want to do video encoding/decoding with the odroid under Debian.

Pros/Cons

  • Has all IPSec features built into the kernel (See this previous post)
  • Doesn’t allocate tons of memory to the GPU. This leaves 960MB free for the OS. 64MB is allocated to the framebuffer GPU. (See this previous post)
  • Minimal Footprint (600MB OOTB). (See: previous post)
  • Maintains HDMI support in case networking fails or gets misconfigured
  • Uses sysvinit instead of systemd. (Sysvinit uses the old school /etc/init.d/ style). I find this easier to use on embedded devices.

So far I have yet to find any cons of running Debian on the Odroid-C1 instead of Arch Linux or Ubuntu. However I haven’t been able to find an official guide to flash the Odroid-C1 with debian.

Debian Install on an Odroid-C1 How-To

  1. Download the compressed Debian image you want from Mega.co.nz or from my mirror
  2. (Optional) Verify the data integrity using the md5sum
  3. Extract the Debian image from the file you downloaded
  4. (Optional) Verify the data integrity of the extracted file using the md5sum
  5. Use dd on mac/linux (or W32DiskImager on windows)  to flash the image to the SD/eMMC card.
  6. Install the SD/eMMC card into the Odroid-C1
  7. Log in using username: root / password: odroid
  8. Run ‘fs_resize’ to resize the root partition to fill up the entire SD/eMMC card.
  9. Reboot and have fun.

 

Speeding up Owncloud 7 Performance

I’ve been using OwnCloud 7 for some time now. It’s got a few problems when dealing with lots of little files or really really big files. It takes forever to sync either. So here are a few tips for speeding up OwnCloud from both the client side and the server side. Keep in mind these changes will cause OwnCloud to use more memory in order to process large files. With parallel uploading as well it has the potential to require large amounts of memory.

With these options I was able to use a Synology DS415+ to sync 40K files and 101GB of data between multiple machines I have.

Server Side

  • Set the following PHP settings. These will allow the server to handle the larger chunks we will use on the client side.

  •  (PHP-FPM Only) – Set the following options in the FPM configuration file

  •  Force OwnCloud to use persistent MySQL connections.
    • Edit the following file inside of the OwnCloud folder:  3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Driver and Comment out line 37. It should now look like  //$this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('Doctrine\DBAL\Driver\PDOStatement', array()));
    • Edit the OwnCloud configuration file:  config/config.php. Add the following line under the ‘dbpassword’ line:  'dbdriveroptions' => array(PDO::ATTR_PERSISTENT => true),
  • Change all of the OwnCloud tables to use MyISAM instead of InnoDB. This should only be done in situations where you won’t need to handle many users and many files and where database integrity isn’t critical.

Client Side

  • OwnCloud sync clients use a few environment variables to control the parallelism and chunk size when uploading. (For how to set environment variables for your operating system use Google)
    • OWNCLOUD_CHUNK_SIZE – Set this to the number of bytes you want each chunk to be. For very fast connections (.e.g Gigabit) use 100MB (104857600). For slow connections this should be set much smaller or left to it’s default size.
    • OWNCLOUD_MAX_PARALLEL – Set this to the number of parallel connections you desire to have (default is 3, I use 10). Keep in mind this will utilize parallel connections on the end server so if you’re processing say 10 large files and you have this set to 10 OwnCloud will be using lots and lots of memory on the server side.

ODroid C1 – Reclaiming Memory from the GPU/FB/Decoders

Now that I’ve gotten acquainted with my Odroid C1, I decided it’s time to strip it down to my needs. I don’t use the HDMI at all. This means I can strip out all of the GPU & Video Processing. Boy was that a headache. I don’t know how but someone (I’ll have to dig though code commits to find out who to blame) managed to make a dependency upon the Audio/Video drivers in the SD Card driver. Yes, you read that correctly.

Some insane reference to ext_codec is in the mach/sd.h …

… which I tracked to being defined to these lines:

Yea, whoever wrote these can suck my balls. You have no business writing kernel driver code. Please never commit code again without having another kernel developer sign off on it. My solution (since I’m not using the AML Audio Devices) was to remove the references in sd.h to ext_codec. Since EXT_CODEC should always return 0 (since I’m not using it), I fixed the logic in sd.h to reflect that.

So at this point I stripped out a boatload of stuff and after modifying the .dts file to remove the memory space reserved for the video, framebuffers, decoders, etc, I now have 990MB of usable address space. That’s 170MB more than I had before.