Setting Up Your New Email

Background

Hopefully this is your first time setting up a new email but in some cases, this may be your second or third time.  But, sometimes something happens that we are not sure how to recover from.  In this case, my friend, Jeff, had a computer that crashed AND he had just changed his cell phone provider and got a new phone number so his recovery number was not updated with his email hosting provider, yahoo.com.  After his computer crashed, he was unable to access his account because he lost all of his passwords and browser cookies and whatnot that permitted him to access his account.  There was no way for him to recover so he had to move on and start fresh.

Purpose

The purpose of this article is to explain the general thought processes, considerations, and an overview of the tasks associated with the task of “getting a new email account”.

Let’s Begin

First, decide what it’s worth to you.  Everybody has a defacto price that fits the budget: FREE!  If it’s free, it’s for me!  In many instances that works great.  And, in many instances, it’s the best, or by far, the easiest option.  For instance, if you just want the free stuff from yahoo.com, like brian23@yahoo.com, it will be super easy to just go through the process and create a new email account and pay nothing for it.  However, if you want yahoo.com to be your host provider for your custom email address, brian@247roadies.com, it’s going to cost and it’s going to be complicated.  HOWEVER, you get what you pay for.  If you want support, it will be difficult.  If you want help when you’re in trouble, it will be difficult.  And in these cases, “difficult” means, unless you have lots of time and possibly a some money to burn, it will be almost impossible to get any resolution.  You, therefore, need to cross your “t”s and dot your “i”s – you need to stay on top of your account and know what you’re paying for (or not paying for) and how to manage things yourself – this includes how to RECOVER things yourself.

Did You Say FREE?

So, let’s assume FREE is still our goal here.  Most “global email hosting providers”, namely Google Mail, Yahoo Mail, Outlook Mail, etc., have a free tier that’s pretty easy to set up, with a few steps here and there for verification.  You need to decide which one you are interested in.  There are plenty of people out there who have reviewed different “global providers” so I won’t do that here.  For instance, here is a concise and short comparison with minimal details and here is one packed with information from top to bottom.

I suggest doing some research yourself and pick one.  Also keep in mind what your email says about you.  Do you want to be brianb23@gmail.com, brianb23@outlook.com, or brianb23@yahoo.com?  Maybe you don’t care.  Great!  Pick one.  Of course there are dozen other hosts who will probably host your email for free but keep in mind you’re always offering your personal data in return for $0 and these “top three” may be the most ‘moral’ of them all, if there is such a thing – they will use your data in many ways AND tell you how they are using them.  I’m generalizing, as I often do, but the bottom line is YOU are the product with almost anything you do nowadays and if you are not paying anything for a service, then you ought to know how YOU are being consumed by that company.

Anyway, pick one.  I use Fastmail.com which starts at $30/year.  I also use GMail.com (Paid) and Yahoo.com (Free), and Hotmail.com (which is now live.com) (Free).

Get your Details Straight Ahead of time

Chances are the one you want isn’t going to be available so be flexible and creative.  You may need to use some numbers (pick your favorite or pick the address of the restaurant your significant other and you had your favorite meal at) and an initial or two.  brian1107wb@gmail.com, for instance.  But DO NOT make it TOO complicated.  Try to keep it simple but make sure if it gets complex that it makes sense and it’s easy to tell somebody over the phone.  You do not want to have to say brianone1zero7tpbc@gmail.com to a teller or customer service representative when people are standing behind you in line or you are on the phone with spotty coverage.

Use your legal name, because you may have to verify with an I.D., and a number that isn’t going to change often, better yet, EVER.  If it needs to be your nephew’s cell number then so be it – use their number if you have any doubts of being able to keep your own number for the next 20 years.  Decide these things ahead of time.  In fact, if your nephew’s address is more stable than your address, then you may also need to use their address as your “home address”.

Last but not least, pick a strong password.  If you can, you’ll want to also set up two-factor authentication, or 2FA.  Also called multi-factor auth, or MFA.  If you set up 2FA or MFA, you will typically need either a phone that receives text messages or a phone or tablet that you can load an authentication app onto which generates a code.

Sign Up

Once you have picked one, sign up.  Go through their signup procedure(s) and get yourself your new email address.

What’s Next?

Well, that’s pretty much it.  Once you decide who your new host is, you can open a web browser (Firefox, Microsoft Edge, Safari, Google Chrome), go to their webmail interface on any computer (https://gmail.com or https://outlook.com or https://fastmail.com or https://yahoo.com) and log in using your email address and your password.  You can check your email this way from any device – phone, tablet, desktop computer, laptop, etc.  This is a built-in feature and makes accessing your email easy.

The other option is to configure an email client to manage your email on your personal machine.  This is not an unusual thing to do and many providers make it super easy to do through downloadable configuration files or by using specific DNS records and server responses to your client.[1][2]  If you chose wisely, your host will make this step easy for you.  As before, this post isn’t about configuring your mail client so I won’t cover that here.  There are several resources available to walk you through that part so I’ll leave it up to you to seek those resources out.  Each mail host may have their own specific set of instructions.

[1]https://serverfault.com/questions/172326/how-to-configure-email-autoconfiguration-for-a-domain
[2]https://www.rfc-editor.org/rfc/rfc6186

Need More Help?

Send me an email or leave a comment (when comments are enabled) and let me know what other information would help me to help you!

Computer Architecture

I deal with performant systems every day, on some level.  Sometimes it’s just BIOS or kernel options, other times it’s queuing or threads and processes.  Most of the time, I’m learning something new.  This is a page for those learning experiences.

Authority Mask Register (AMR)

A CVE came across my desk having to do with AMR on PowerPC.  This was new to me so I did a little digging.  It’s not something I’ve ever heard of before.

A component of storage protection.  The operation of the storage protection mechanism depends on the contents of one or more of the following:

  • MSR bits HV, IR, DR, PR
  • the key bits and N bit in the associated SLB entry
  • the page protection bits, key bits, N bit, and Gattribute in the associated PTE
  • the AMR, IAMR, AMOR, and UAMOR

The Virtual Page Class Key Protection mechanism provides the means to assign virtual pages to one of 32 classes, and to modify data access permissions for each class by modifying the AMR and to modify instruction access permissions for each class by modifying the Instruction AMR (IAMR).[1]


References

[1] https://wiki.raptorcs.com/w/images/c/cb/PowerISA_public.v3.0B.pdf

Software Engineering

Makefiles

  • http://nuclear.mutantstargoat.com/articles/make/
  • https://www.hackerearth.com/practice/notes/the-make-command-and-makefiles/

Ruby on Rails

Called a Model-View-Controller software design pattern (architecture).  “Traditionally used for GUIs and web apps. Languages like JavaScript, Python, Ruby, PHP, Java, C#, and Swift have MVC frameworks available to them out of the box.”

Computer Architecture Concepts

Task Execution

Concurrency: “The composition of independently executing processes.  Dealing with alot of things at once.  It’s about structure.”

Parallelism: “Simultaneously execution of multiple things, possibly related, possible not.  Doing alot of things at once.  It’s about execution.”

Concurrency vs Parallelism

 

Go (as in GoLang)

Environment

GOPATH

Attempting to limit the scope of your Go env, you can define the follow to help you maintain tight control over your app.

GOPATH="$(pwd)/vendor:$(pwd)"
GOBIN="$(pwd/bin"

Modules

Command: go mod download

Requirement: go-1.13+ (Note to self: I’ll have to double-check this)

Purpose: download go module dependencies

Command: go mod vendor

Requirement: go-1.13+ (Note to self: I’ll have to double-check this)

Purpose: create a vendor folder in the main module’s root folder and copy all dependencies into it. After this you may pass -mod=vendor param to the go tool.  Dependencies from the vendor folder will be used to build your app.

*  Despite what others may agree or disagree with, I’m calling it golang because I feel that it really helps search engines and human know they’re looking at the programming language, Go, and not trying to find search results for just “go”.

Kernel 4.19 and GCC 4.8.5-16

I ran into an issue trying to compile my own kernel, as you may remember.  The error suggested that I didn’t meet the minimum requirements to compile a kernel.  Well, as it turns out, the programs that I *do* have installed meet the minimum requirements.  The error message says my compiler is a non-retpoline compiler.  retpoline is:

The kernel can protect itself against consuming poisoned branch target buffer entries by using return trampolines (also known as “retpoline”) [3] [9] for all indirect branches. Return trampolines trap speculative execution paths to prevent jumping to gadget code during speculative execution. x86 CPUs with Enhanced Indirect Branch Restricted Speculation (Enhanced IBRS) available in hardware should use the feature to mitigate Spectre variant 2 instead of retpoline. Enhanced IBRS is more efficient than retpoline[1].

We’ll save the spectre discussion for another day (or, just google it, there are plenty of resources to explain what it is).  Back to the issue at hand, I beg to differ that my compiler is a non-retpoline compiler.  Well, at least according to the minimum specs, my version meets the requirements.

Or, does it?  According to Marek Polacek, I need gcc-4.8.5-28.el7 or newer.

I’m running 4.8.5-16.el7

[root@cleveland linux-4.19.87]# yum info gcc
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
Name : gcc
Arch : x86_64
Version : 4.8.5
Release : 16.el7
Size : 37 M
Repo : installed
From repo : anaconda
Summary : Various compilers (C, C++, Objective-C, Java, ...)
URL : http://gcc.gnu.org
License : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
Description : The gcc package contains the GNU Compiler Collection version 4.8.
: You'll need this package in order to compile C code.

Let’s download and install a newer version.  I found one here: http://mirror.centos.org/centos/7/os/x86_64/Packages/

List its dependencies:

# rpm -qpR gcc-4.8.5-39.el7.x86_64.rpm
warning: gcc-4.8.5-39.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
/bin/sh
/bin/sh
/bin/sh
/sbin/install-info
/sbin/install-info
binutils >= 2.20.51.0.2-12
cpp = 4.8.5-39.el7
glibc-devel >= 2.2.90-12
ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.2)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.7)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit)
libgcc >= 4.8.5-39.el7
libgcc_s.so.1()(64bit)
libgmp.so.10()(64bit)
libgomp = 4.8.5-39.el7
libgomp.so.1()(64bit)
liblto_plugin.so.0()(64bit)
libm.so.6()(64bit)
libmpc.so.3()(64bit)
libmpfr.so.4()(64bit)
libz.so.1()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1

Or, get a more useful list by trying to install the rpm:

# rpm -Uvh gcc-4.8.5-39.el7.x86_64.rpm
warning: gcc-4.8.5-39.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
error: Failed dependencies:
cpp = 4.8.5-39.el7 is needed by gcc-4.8.5-39.el7.x86_64
libgcc >= 4.8.5-39.el7 is needed by gcc-4.8.5-39.el7.x86_64
libgomp = 4.8.5-39.el7 is needed by gcc-4.8.5-39.el7.x86_64

A quick note on our options for solving this riddle.

Option 1: yum localinstall is for one package.  Dependencies will be downloaded from the enabled repositories only.

yum install /home/drd/Downloads/libgomp-0.2.5-1.el7_x86_64.rpm

This still maintains the integrity of the rpm and yum databases.

Option 2: For local dependencies use rpm -Uvh *  (when the package + all dependencies are in the same directory)

Option 3: rpm -ivh is used when you want to have two versions of the same library installed (or, if you are absolutely sure that no package by the same name is installed)

Lastly, yum always uses rpm -Uvh for install.

So, keep working through the list of dependencies until all rpms are found in the local directory:

# rpm -Uvh *.rpm
warning: cpp-4.8.5-39.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
error: Failed dependencies:
libstdc++ = 4.8.5-39.el7 is needed by gcc-c++-4.8.5-39.el7.x86_64
libstdc++-devel = 4.8.5-39.el7 is needed by gcc-c++-4.8.5-39.el7.x86_64

And finally…

# rpm -Uvh *.rpm
warning: cpp-4.8.5-39.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:libquadmath-4.8.5-39.el7 ################################# [ 5%]
2:libgcc-4.8.5-39.el7 ################################# [ 9%]
3:libstdc++-4.8.5-39.el7 ################################# [ 14%]
4:libstdc++-devel-4.8.5-39.el7 ################################# [ 18%]
5:libgfortran-4.8.5-39.el7 ################################# [ 23%]
6:libgomp-4.8.5-39.el7 ################################# [ 27%]
7:cpp-4.8.5-39.el7 ################################# [ 32%]
8:gcc-4.8.5-39.el7 ################################# [ 36%]
9:libquadmath-devel-4.8.5-39.el7 ################################# [ 41%]
10:gcc-gfortran-4.8.5-39.el7 ################################# [ 45%]
11:gcc-c++-4.8.5-39.el7 ################################# [ 50%]
Cleaning up / removing...
12:gcc-gfortran-4.8.5-16.el7 ################################# [ 55%]
13:gcc-c++-4.8.5-16.el7 ################################# [ 59%]
14:libquadmath-devel-4.8.5-16.el7 ################################# [ 64%]
15:gcc-4.8.5-16.el7 ################################# [ 68%]
16:libgfortran-4.8.5-16.el7 ################################# [ 73%]
17:libstdc++-devel-4.8.5-16.el7 ################################# [ 77%]
18:libstdc++-4.8.5-16.el7 ################################# [ 82%]
19:libgcc-4.8.5-16.el7 ################################# [ 86%]
20:libquadmath-4.8.5-16.el7 ################################# [ 91%]
21:cpp-4.8.5-16.el7 ################################# [ 95%]
22:libgomp-4.8.5-16.el7 ################################# [100%]

And, we’re in business!  My make rpm-pkg works for compiling my kernel.