SPF Records for your Domain

In one one of my previous posts, “Emails from my website get set to spam.  WHY?”, I briefly mentioned using SPF records to stop other people from using your domain to send emails, and spoofing the headers.

An SPF (Sender Policy Framework) is a TXT record placed on your domain, and contains a white list of senders that are allowed to use your domain.  DNS records, like TXT can not be edited by anyone outside of the domain owners.  This means that it is secure and not subject to being able to be worked around.  JadeServe takes care of this on any domain managed by us, to make it easier for you.

This is what a typical SPF record looks like:

v=spf1 include: google.com ~all

This is a fairly straight forward rule that allows all senders that identify as Google to use your domain for email sending.  If this fails, then there’s a good chance that the email will be sent to spam for not validating.  You should only ever have ONE SPF record on your domain.  If you use more than one, depending on the recipient, who is in charge of checking, it might fail.

A record with more than one host can look like:

v=spf1 include: emailserver.com google.com 74.208.236.103 ~all

This rule will mark any emails that originate from “emailserver.com”, “google.com”, and from the IP Address 74.208.236.103 as “PASS” and the rest will fail.

If you need to set up SPF records, and you do have access to your DNS controls, JadeServe may be able to help!

Share This:

Emails from my website get sent to spam. WHY?

When your website gets all set up, and it looks gorgeous, and you want to go into production, you’re finding that a lot the emails you are sending to your clients are ending up in their spam filters.  Why is this happening?  You are not sending spam, and in many cases, they might even be emails that they asked for.  You may not be done setting things up.

There are a few methods that major email service providers use to try to filter out spam from their users.  One of these methods, and the major one, is user reports.  If a majority of the recipients of emails from specific domains gets flagged as spam, then there will be a higher chance of the future emails being flagged as spam, and they may never be seen.  This is the last resort for email providers, if all other methods of authentication pass, it can still fail based on user reports.

The next largest method is based on the content of the message.  Many versions of spam are offering large sums of money, reduced prices on prescription medications, and sexy singles in your area.  These emails are so abundant that spam filters base their decision on likeness of content to previous emails flagged.  This is important to remember if you are planning on selling items on your website, or send out solicitations for various products.  Sometimes, spammers will try to change spellings or add spaces between each letter, but these are “old-school” methods, and most don’t fool major spam filters anymore.

Google has a few guidelines on bulk emails.  JadeServe will take care of many of them for you by default, and can help you if you use a different provider.  Firstly, they require an easy way for users to opt-out of your emails, such as a link at the bottom of the emails.  JadeServe includes this link from many @jadeserve.com emails, such as from billing and technical support.  Internally, this just means that if the user is opted out of emails, they will receive paper invoices and other manual mailings for their account.  Yes, it’s slightly more work, but it’s better than the users not being able to hear from you because of a spam filter.

Another thing that Google emphasis is proper formatting of HTML emails.  This is generally done automatically, but if you are sending emails directly from your site, then you need to be assured that your emails are properly formatted, with compliant HTML.

The next thing that email providers look at is bounce-rate of emails.  This is fixed by removing any email addresses from your lists that are bounced back as undeliverable.  Sometimes, this can take a few days, depending on the destination provider.  If this happens, you will need to contact the customer and get an updated email address from them.  It’s a relatively easy issue to resolve.

Possibly the biggest method of getting through spam filters is domain authentication.  This is done by adding DKIM or SPF records to the DNS settings of your domain.  There will be future posts on setting these up, but what they are are basically a white list on your domain of approved senders.  If someone tried to send an email from billing@jadeserve.com from some server in Russia, it would fail authentication, and it would be sent to spam.  This makes sure that only authorized users on authorized servers can send emails.  This is the strongest way to stop spammers from hijacking your email addresses and sending emails as you.

Hopefully this answers a few questions on why you may be having your emails sent to the spam folder.

Share This:

Why You NEED a Responsive Website

There used to be a time when one of the first questions in a website consultations was always “Do you want your website to be responsive?”  Firstly, what is a responsive website?  A responsive website is one that works on any screen size, without sacrificing features to the end user.  There was a time when mobility wasn’t too much of a concern.  The mobile web browser simply wasn’t mainstream and developers did the bare minimum that the client required for their mobile users.  E-Commerce wasn’t used on mobile, video was non-existent, and you basically had images and text to work with.

What changed?  Phones got smarter, and so did the web browsers.  This isn’t just phones.  It’s all mobile devices from the smallest Android to the largest iPad.  There are literally hundreds of screen sizes that people may be using.  What could be worse?  Oh yeah.  Most tablets and phones also have rotating screens depending on how the device is held.  That literally doubles the amount of screen sizes to worry about.

A standard HTML website will not scale with different screen sizes.  It will either take A LOT of scrolling, or it may be too small to read.  Neither option is ideal.  A way to solve that issue is being responsive.  A responsive site will scale elements and move objects around to accommodate the lack of screen real estate.  Here is the JadeServe site on a desktop screen with 27″ of screen space, in comparison to the same site on a mobile phone (Samsung Galaxy S5) with a 5.1″ screen.

Desktop

full_size_site

Mobile

mobile_site

 

You can see that some of the objects have moved around, but it is legible and usable.  You’ll notice the menu has moved to be hidden at the top (The button with three lines on it), and there is no horizontal scrolling.  Everything has resized to fit our screens, WITHOUT having multiple versions of the site.  This is the power of a responsive site.  It is JadeServe’s standard practices to make every site responsive.  It is cost effective for the customer, and keeps the customer’s visitors happy.

Share This:

301, 404, 500 and Other Codes that make the Internet Run – Pt. 2

In yesterday’s post, I covered some of the web server status codes in the 1xx, 2xx, and 3xx ranges.  As a recap, here’s what the various ranges generally indicate:

 

1xx

Informational

2xx

Success

3xx

Redirection

4xx

Client Error

5xx

Server Error

 

400 Range Status Codes

Most of the 400 range status codes give verbose feedback in your browser, meaning they tell you straight up what’s wrong.  The first example of this is the 401 status.  This is when the client (you) tries to access something they’re not allowed to, otherwise known as “Unauthorized Access.”  This is what a typical Unauthorized status message looks like in Google Chrome:
status401

That status is very intrusive.  It disrupts the user experience and is actually a great idea to fix it.  This is the JadeServe 401 status page, that still gives access to the menu and creates a seamless experience:
status401-fixed

Another common 4xx range status is 403.  This is USUALLY because you tried to view a directory on a web server that doesn’t have a default index file in it.  In Google Chrome, this looks like:
status403

Again, like the 401 status, this is very intrusive and no one likes that.  It’s best to fix this to another custom error page so your users have the absolute best experience.
status403-fixed

The most famous of all status codes is the infamous 404 – File Not Found.  Nine times out of 10, it’s because someone typed the URL wrong.  The rest of the times is because of stray, forgotten links on your site.  If you have a lot of 404 errors, you should definitely look into the cause of them.  This is another error message that you can mask with a custom page, so your users aren’t distracted by them, and with a custom page, you can include error logging, and be informed whenever the errors arise.  This will help troubleshoot issues with your site and make your users happier in the long run.

Not a common status code, but notable is code 418.  This is an official status code for “controlling, monitoring, and diagnosing coffee pots.”  This is a true status that was officially put into place April 1, 1998, and is officially, thoroughly, documented in RFC 2324, and is worth a read.

The final 4xx error that will be discussed today is 451.  This is a special error code that means the selected resource was pulled down for legal reasons, including national security, copyright infringement, privacy laws, or by court order.  If you come across this error, you should probably leave the site post haste.  As a small bit of trivia, this error code actually received its name from the banned book Fahrenheit 451.

500 Range Status Codes

This range of status codes is reserved for server and misconfiguration errors. 500 is literally for “Internal Server Error.”  This is usually for coding errors.  This is a verbose error that generally looks like:
status500

Like this says, you can find out more in your server logs about precisely what the error is from.  If you notice your server logs are getting large, it’s something that should be looked into.

The final status code that we’re going to discuss if 503.  This means that the server is overloaded or down for maintenance.  If you see this error, you may want to look into code optimization, hardware upgrades, or see if the maintenance flag was set on the server accidentally.

 

These status codes are tools to help diagnose and fine tune your website for the best possible user experience.  All of these status codes can be diagnosed and corrected by JadeServe.  When the server runs well, your business runs well.

Share This:

301, 404, 500 and Other Codes that make the Internet Run – Pt. 1

Every time you browse to a website, the server sends back a status code, telling the browser what to do.  It can signal the browser to go somewhere else, like a cop directing traffic.  These codes can signal that there was an error with the server and the file couldn’t be accessed.  They can also signal invalid permissions, because of an invalid password.  We’re gonna cover a few of the common server status codes today in the 1xx, 2xx, and 3xx range today.

Here is a table about the basics of what the codes are for:

1xx

Informational

2xx

Success

3xx

Redirection

4xx

Client Error

5xx

Server Error

 

100 Range Status Codes
These really aren’t used anymore, except to tell the computer to keep on doing what it’s doing.  It’s more of a “carry on”, but they’re not used anymore, so we won’t discuss them too much.

200 Range Status Codes
The most common response code on the internet is 200 – OK.  It tells the requesting computer that everything went alright, and the file was properly served.

status200

The next common 200 range status code is 203.  This is found mostly on proxy services where everything went alright, however the content that your computer is receiving is NOT what the server originally sent, meaning the third party has changed some of the content.  This is when you use a proxy and they add branding to the bottom of the page, or something like that.

204 is a common code meaning everything went okay, however the file returned was empty, so there was no data to return.  This may be because the file was left accidentally empty or because the file wasn’t needed for the page returned, and an empty file was returned.

status204

Finally, to wrap up the 2xx range, there is 206.  This is a partial file, usually because a download is paused or interrupted.  This can also be because only a part of the file is needed and the server knows ahead of time which part that file is.  It is not very common, but if it’s encountered on your web server, it is worth investigating the cause.

300 Range Status Codes
301 is the most common 300 status code, which is for a permanent redirect.  This is commonly used to transfer traffic from a non-www URL to www, or transfer from http to https.  This is commonly used for SEO because search engines see www and non-www traffic as two separate sites, and your site may lose standing for having duplicate traffic.  This is an extremely important status code to understand because of all that it can accomplish.  It can also redirect mobile traffic to a mobile subdomain or folder for sites that are optimized.

status301

304 is another common status, which basically tells the client that there was another version of the file that was available in cache, and that there was no change, so the client will be receiving the old version.  This can greatly speed up traffic on your site because some items, like images or CSS files may not change that much, so there is no point in serving a new copy of the file, when a cached version is available.

status304

 

This wraps up today’s little post on some of the common HTTP status codes.  Learning how these interact with clients and servers can help you troubleshoot issues and make your servers run more efficiently.  JadeServe can help if issues crop up, or you get errors you don’t understand.

Share This:

Comparison of Common Online Database Systems

This post will just be a simple overview comparing the popular database options that are used for web technologies in today’s age.  These databases can be used to power your SaaS (software as a service), blog, user information, inventory, customer relations management, etc….  The possibilities are literally endless.

Microsoft SQL Server MySQL Oracle PostgreSQL SQLite
Maximum Size 524272 TB Unlimited Unlimited Unlimited 104 TB
Max Columns Per Row 1024 4096 1000 250-1600 32767
Max Number Size 126 bits 64 bits 126 bits Unlimited 64 bits
Max Char Size 2 GB 64 KB 32767 Bytes 1 GB 2 GB
Temporary Tables Yes Yes Yes Yes Yes
Cursors Yes Yes Yes Yes No
Native Network Encryption Yes Yes Yes Yes No
Security Certification Yes Yes Yes Yes No

 

We will discuss these properties in future posts.  JadeServe uses MySQL for a lot of services because it is very easy to deploy, connect to, cost effective, and versatile.  Every database management system has its pros and cons.  SQLite is not the most secure, but it can be deployed in a test environment quickly. Microsoft SQL Server costs quite a bit of money, but it is well supported by Microsoft systems, and MySQL is globally used and cross platform, while being easy to use.  The choice of DBMS largely depends on the environment that it’s going to be used on, the service connecting to it, and the cost to be allocated to it.

JadeServe can help you with all of that, and walk you through it.

Share This:

The Power of a Database

A database can be identified as:

"A structured set of data held in a computer, especially one that is accessible in various ways."

What does that mean though?  Well, imagine a big plate of spaghetti.  Not a small plate, but a plate made up of the entire shelf of pasta at the local grocery store.  Now, imagine wanting to get out a specific piece of spaghetti of a specific length, style, and brand from that plate.  There’s no way to do it.  There’s too much “data” all jumbled up with no organization.  There must be a better way!

There is.  You can store your spaghetti in an easily searchable, well structured database.

Every piece of spaghetti has various properties.  Off the top of my head, there’s brand, length, thickness, degree of doneness, semolina or whole grain, and the time it was cooked.  This is all data that we want to be able to organize our data in.  We could write it all out in text files (also known as “Flat Files”), and that would store the data, but that doesn’t index it in any way, shape, or form, and finding your data would be a nightmare.  The answer is to make a “table” in your database.  Visually, a table looks like a spreadsheet, but behind the scenes, magic happens and you can find any piece of data held within it.

This is the structure of our “spaghetti” table with a bit of data added:spaghetti_data

We didn’t discuss it, but I added an “id” field so that each line of data has a unique identifier to add the benefit of easily referencing each row.  This is important.  It’s like the barcode at the grocery store that tells the cash register what item is being rung up.

Now that our data is in a nicely organized table, we can easily hunt for the data that interests us.  For instance, lets say that we want to get all of the undercooked spaghetti.  We can say that any rows with a doneness less than 80%.
undercooked

Or, we can get all of the strings of spaghetti that is not whole grain.
not_whole_grained

Finding data in a database is super fast and super easy when it is well organized.  This can be applied to something such as a User table for your website, where you look for the data with the matching username and password.  If the database doesn’t give any rows, you know that there is no match for the username and password.

If we had our data in flat files, we would have to go line by line by line to see if the data matches what we are looking for.  That is tedious, slow, and inefficient.  That’s why we use modern database technology.  We can zero in on the data fast and efficiently and give the users the best experience possible.

Share This:

Powered by JadeServe