Cheatsheet.htm

Phone Info

Dial 7 + 1 + the number == caller ID for your extension.
Dial 8 + 1 + the number == caller ID for main support number.
Dial 9 + 1 + the number == block caller ID.
Dial the 4 digit extension for internal calls/transfers.

Billing calls for colo or transit customers == 4184 (Melissa Harrison) or 4185 (Tami Nomura).
Web Hosting calls == yourself or 4180.

FMT 1:
Hurricane Electric
760 Mission Court
Fremont, CA 94539

FMT 2:
Hurricane Electric
48233 Warm Springs Blvd.
Fremont, CA 94539

General Information -- 	+1 510 580-4100 --- info@he.net
Tech Support --  	+1 510 580-4100 --- support@he.net
Sales --        	+1 510 580-4190 --- sales@he.net
Billing --      	+1 510 580-4180 --- billing@he.net
Fax --          	+1 510 580-4151 

Sales calls (for potential customers):
Savane Peters -- 4196
Anna Shaver -- 4194
Wesley Eby -- 4101

Testing Email With Telnet

IMAP uses Port 143 for incoming mail; Port 587 for outgoing mail
POP3 uses Port 110 for incoming mail; Port 587 for outgoing mail

Open a terminal and type "telnet SERVER_NAME PORT_NUMBER", for testing POP3 on the alpha.he.net server, it would be "telnet alpha.he.net 110". For testing IMAP on the bravo.he.net server, it would be "telnet bravo.he.net 143". You may also be able to use a domain name or IP address instead of the server name.

Testing IMAP - Login

You have established a connection to the server, now you need to log in. To start, type in "# login USER_NAME PASSWORD", and the server will log you in. If your user name is Frankie7 and your password is alphabravo1, you'll type "# login Frankie7 alphabravo1" and if your login credentials are correct for that server, you'll be logged in. Note: this method is non-secure; it transmits the password in plain text.

Testing POP3 - Login

Ping Tests With Looking Glass

The scenario: a dc customer calls. He's trying to troubleshoot the circuit and wants to know if we can ping his IP address from here. Well, you can just open a terminal and ping it from your desktop, but that only tests the path between you and the customer's IP address. So it's also useful to do a "remote" ping test between the router the customer's on out there in the world somewhere, and his IP address. So here's what to do:

  1. Get the customers IP address, either from them dirctly, or look their dc number up in admin.he.net and get it there.
  2. Open traffic.he.net. We want to find out what switch and/or router the customer is connected to at his location. You can search with an IP address or a dc number, but you'll need the IP address later anyway so just use it. Search with the IP address, and look for the 'Device' name of the router and/or switch they're connected to. For example, searching for dc1032, or their IP address 184.105.249.206, shows that this customer is on switch1.rst1.he.net and also on core1.rst1.he.net.
  3. We're interested in the 'rst1' part of the device because we can either find 'rst1' listed in the left column on traffic.he.net, or you can look it up in the wiki at this link. Looking for 'rst1' matches up with 'Rochester (Neutral Path)'.
  4. Now that you know to look for Rochester for this customer, you can goto lg.he.net and use the Looking Glass tool to do a ping test (or another kind of test) from the router in Rochester to the customer's IP address. Find the correct router from the list of routers on Looking Glass, select it, input the IP address into the search box and hit the button. Looking Glass will take a few seconds to talk with the router, and then display the result in a nice little table. You just used Looking Glass to test the customer's circuit remotely! Yay!

If the customer says something like 'I can't ping any of my IP's', it may also be useful to try an nmap scan with 'Kelly's Support Tools' in the Tickets system. This will ping test all the IP addresses in the IP block and tell you which ones responded.

Repairing a SQL Table

Get the SQL login information and shell password from the customer. Log onto the server and start a MySQL session on the server with "mysql -ppassword;". When you have a SQL prompt, you must first select the database with "use databasename;". The database is normally named after the customer account. Don't forget the semi-colon!
Now to repair the table, figure out which table in the database needs fixing and go "REPAIR TABLE tablename;", and it will repair the table, then give some nice tabular output showing what it did. And it's that simple - you repaired a SQL table!

Using Curl To Get Server Information

You can use the Unix "curl" command to remotely find out some information about a server. Type "curl -I SERVERNAME", and you'll get some basic header info from the server. I discovered this because I was trying to find out the PHP version on a particular server. Not every server gives the same info - it depends on the server header settings (I think). An example is below:

lshort@staff:~$ curl -I pepper.he.net
HTTP/1.1 200 OK
Date: Thu, 14 Feb 2013 01:21:13 GMT
Server: Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6 PHP/5.2.4-2ubuntu5.26 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g
Last-Modified: Wed, 30 Apr 2008 19:43:44 GMT
ETag: "2a352-61-44c1c5dd6dc00"
Accept-Ranges: bytes
Content-Length: 97
Content-Type: text/html

Miscellaneous Tidbits

Fix V3> - use this if you're upgrading a customer from a Version 2 server to a Version 3, and their email gets messed up in the process. It'll parse it's way through the mail folders in the old account, convert them to the updated format, and add them into the mailbox on the new server. No idea what it actually does, it's PFM.

Getting Customer Info That's Public

bgp.he.net gives all the publicly available info on a customer's domain- enter the domain in the search box and click Search, then click on the IP address underneath A Records. the whois tab will display the public info for that domain. this is a quick way to give out publicly available information to a non-account holder, such as a web development firm that the customer hired to build a new website.

Re-Setting Customer Passwords

Every time, and I mean every time a customer logs into admin.he.net and changes their main account password, the system will also reset the MySQL password, even if the entry field is blank. I learned this the hard way and made myself feel foolish, don't make the same mistake!
The only way to NOT reset the MySQL password is for the customer to ask Support to do it for them.

Finding the Size of Web Host Accounts

Opening the account in admin.he.net and clicking on the "View Storage and Traffic" link at the bottom will give you basic size information for that account. If you need more specific info, you'll have to use the "du" command. SSH into the customer's account on the server, then from the home directory, do this:

lennys@quebec:~$ ls -alh
total 1.2G
drwx---r-x 14 lennys users 4.0K 2013-06-22 14:02 .
drwxr-xr-x 107 root root 4.0K 2013-06-24 15:01 ..
drwx------ 2 lennys users 4.0K 2012-08-02 12:15 .aptitude
-rw------- 1 lennys users 5.8K 2013-06-20 14:17 .bash_history
-rw-r--r-- 1 lennys users 220 2010-04-18 19:15 .bash_logout
-rw-r--r-- 1 lennys users 2.9K 2008-09-09 19:10 .bashrc
drwx------ 2 lennys users 4.0K 2012-05-29 17:34 .cache
-rw-r--r-- 1 lennys users 1.2G 2013-06-14 07:08 caughtspam.txt
drwxr-xr-x 2 lennys users 4.0K 2009-04-21 20:52 cgi-bin
drwxr-xr-x 2 lennys users 4.0K 2012-08-02 12:15 .debtags
-rw------- 1 lennys users 70 2012-09-26 14:53 .lesshst
-rw------- 1 lennys users 1.4K 2013-06-06 10:59 .mysql_history
-rw-rw---- 1 lennys mail 827K 2013-05-20 16:24 procmail.log
-rw-r--r-- 1 lennys users 3.1K 2013-05-28 13:17 .procmailrc
-rw-r--r-- 1 lennys users 586 2008-09-09 19:10 .profile
drwxr-xr-x 8 lennys users 4.0K 2013-06-29 05:00 public_html
drwxr-xr-x 2 lennys users 4.0K 2009-04-21 20:52 secure_html
-rw-r--r-- 1 lennys users 66 2013-04-18 18:08 .selected_editor
drwx------ 2 lennys users 4.0K 2013-05-28 13:26 .spamassassin
drwx------ 2 lennys users 4.0K 2013-06-06 08:59 .ssh
-rw------- 1 lennys users 23K 2013-06-04 20:15 .viminfo
drwxr-xr-x 2 lennys users 4.0K 2011-04-18 13:39 .web
drwx------ 3 lennys users 4.0K 2012-06-20 13:38 .webmail
lennys@quebec:~$

Adding the "h" switch on the end of the "ls -al" command makes it show the file and directory sizes in Kb/Mb/Gb, whichever is appropriate. Note that this is NOT the total account size - for the total you have to include the mail directory as well. An easy way to get the total account size is with the "du" command:

lennys@quebec:~$ du -skh /var/spool/mail/test.lshort.corp.he.net/ /home/lennys/
6.5M /var/spool/mail/test.lshort.corp.he.net/
1.9G /home/lennys/
lennys@quebec:~$

This checks and displays the size of two directories: the /var/spool/mail directory for the account, and the /home/ directory as well. If you use just "du", it will return a long list of every file in the directory with it's size. "du -sk" returns the directory size in Kb, as does "du -s". "du -sb" will return the directory size in bytes. For most cases, "du -skh" will be the one you need.

IPerf Testing

Sometimes a customer will contact us and ask about their bandwidth speed - they have a Gigabit contract with us, but on their end they may have run some tests using something like speedtest.net, and they saw a result that didn't match up with what they believe they should be getting speed-wise. This is because Speed tests such as these are subject to limitations other than the bandwidth of the NIC and/or connection, such as TCP windowing. They're designed primarily for consumer-grade internet, not 100 megabit and above. iperf tests will get around these limitations when performed with appropriate parameters. iperf tries to "max out" the pipe the customer has, be that 100Mb, 1Gb, etc.

HE's iperf server can be found at the following:
9000.mtu.he.net
4470.mtu.he.net
1500.mtu.he.net
1280.mtu.he.net
iperf.he.net (CNAMEd to 9000.mtu.he.net for simplicity)

Here's the iperf command to run on the customer's end:

iperf -c iperf.he.net -P 10
You could also use this command:

$ iperf -c iperf.he.net -t 15 -i 1 -f m -P 8

This will run a test for 15 seconds, reporting bandwidth in MB/s every second, with 8 concurrent streams. Further details on using iperf can be found at this link on techrepublic.com.

Resetting root passwords with Single User Mode (for CentOS)

Help! I forgot my root password. How do I log in now?
You can log in using single-user mode and create a new root password.
To enter single-user mode, reboot your computer. If you use the default boot loader, GRUB, you can enter single user mode by performing the following:

1. At the boot loader menu, use the arrow keys to highlight the installation you want to edit and type [A] to enter into append mode.
2. You are presented with a prompt that looks similar to the following:
3. grub append> ro root=LABEL=/
4. Press the Spacebar once to add a blank space, then add the word single to tell GRUB to boot into single-user Linux mode. The result should look like the following:
5. ro root=LABEL=/ single
6. Press [Enter] and GRUB will boot single-user Linux mode. After it finishes loading, you will be presented with a shell prompt similar to the following:
7. sh-2.05b#
8. You can now change the root password by typing:
9. passwd root
10. You will be asked to re-type the password for verification. Once you are finished, the password will be changed. You can then reboot by typing reboot at the prompt; then you can log in to root as you normally would.


Procmail and Spamassassin Stuff

Add this into the Subject line of an email if you want to test Spamasassin. It will get flagged and dev/nulled as spam:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Here is a growing collection of tips and shit for working with procmail and spamassassin

Standard Procmail/Spamassassin Script:

PATH=/usr/bin:/usr/local/bin:/bin           # Path Variables for the procmail session
MAILDIR=/var/spool/mail/yourdomain.com      # Do not put 'www.' in front of your domain here
LOGFILE=$HOME/procmail.log                  # Keeps a log of email routing
LOG="
"                                           # Creates a line separator in procmail.log
VERBOSE=yes                                 # Verbose Error Reporting --values (no|off yes|on)
COMSAT=no                                   # set to no|off
# SENDMAIL=/usr/bin/sendmail                # sendmail location (comment in procmail only)

:0fw
* < 60000
| /usr/bin/spamc

:0e
{
    EXITCODE=77
}

:0 
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\* 
/dev/null 

:0:
* ^X-Spam-Status: Yes
$DEFAULT/.Junk/

Filtering mail based on keywords in the Subject: or From: line

This would delete any email with the word "Walgreens" in the Subject line. This is a blanket rule that would apply to all mailboxes for the account.

:0
* ^Subject:.*Walgreens
/dev/null

This would have the same effect, but for only one mailbox:

:0
* ^Subject:.*Walgreens
* $DEFAULT ?? ^/var/mail/domain.com/mailbox_name(/|$)
$DEFAULT/.Spam/

This would add an additional qualifier - if the email had "Walgreens" in the Subject: line, AND was addressed to the "john" mailbox, it would be diverted to the Spam folder. It might also work if the word "John" was in the To: line (will have to test this to be sure). It also wouldn't catch any BCC's with these keywords.

:0
* ^Subject:.*Walgreens
* ^TOjohn
$DEFAULT/.Spam/

Filtering mail by keywords in the body:


:0
* B ?? 
/dev/null

Example: this searches the email for 'href="http://6url.ru/' and deletes the emails that have any 6url.ru links buried within:

:0
* B ?? href="http://6url.ru/
/dev/null

It's not necessary to enclose the keyword/phrase in quotes. You can use this to match any basic word or phrase:

:0
* B ?? viagra
/dev/null

This will delete any email with the word "viagra" anywhere in the email body.

Remember that using keyword-matching like this is easy to get wrong, so be sure to TEST first using your test account. If you don't want to use dev/null, you can replace that one line with a forwarding rule like this:

:0
* B ?? cialis
! forward@example.com

This will forward the email to the email address if it has "cialis" anywhere in the body.