Out of the many things I've learned in the past half year about using Linux, I find the concept of remote access of my computer through SSH to be the coolest. Periodically I will be away from home, and I'll realize that I need access to some file on my computer so that I can send it to someone. I recently learned how to set up a
Secure Shell Server on my Ubuntu Linux laptop that I can access from my Android cell phone using an Android app called
ConnectBot. Once I get into my computer, I can then open up a fantastic text-mode email program called
Alpine and compose emails with files attached right from my computer's hard drive and then send them through my Gmail account. Nothing makes me feel more like a huge nerd than this!
Here's how I set up an SSH server and then install Alpine with access to my Gmail account (my Gmail is setup to check and respond from 2 additional email addresses, so the instructions are tailored to that scenario):
Setting up openSSH
First you need to install the openSSH server. Easily enough you just have to type in
sudo apt-get install openssh-server into your terminal to get the server. Amazingly, it's ready right away to be used! I wanted the SSH server to use a different port than the default (port 22), so I opened up
/etc/ssh/sshd_config and changed the port number on the 5th line to something that was wacky enough not to be predictable.
Next came two considerations: (1) I'm behind a router, and therefore needed to set-up port forwarding so that I'd be able to access my openSSH server remotely. If you have a router and forget this step then prepare for lots of frustration! (2) Even having port-forwarding set-up, who wants to remember and type in an IP address so that you can connect to your server? So I needed to sign up for a free dynamic hosting service that would give me a constant host name regardless of my IP address.
Setting up Dynamic DNS hosting
I found a great tutorial on the Ubuntu Help Site for setting up
Dynamic DNS hosting for your computer. Basically, I went to
DynDNS, set-up an account for my computer, and then followed the instructions on the above-mentioned
Ubuntu Help Site to install and configure
ddclient. ddclient will periodically send updates to DynDNS so that the hostname they provide you with always points to your IP address. When you're done configuring all of this, you will then have a host-name pointing to your computer such as tommy.gotdns.com. That's a lot easier to remember than 40.831.391.33 right?
Initial installation and set-up of Alpine
Next I set-up Alpine. Installing it was easy enough:
sudo apt-get install alpine. Once it's installed, you have to set it up to work with your Gmail account. Refer to
this tutorial from the University of Virginia for a tutorial on how to do that. Be sure that when you're in the
Config screen of Alpine, look for the field named
Inbox Path and enter in the following:
imap.gmail.com/ssl/user=username@gmail.com . Be sure to replace 'username' with your own Gmail account username. This will make sure that when you start-up Alpine and go into your Message Index, you will see the emails in your Gmail Inbox right away, instead of having to navigate to that inbox.
Configuring Alpine to send emails using different 'From' email addresses
Now, when I reply to emails that I've picked up using my Gmail account, I usually want to reply using different email accounts. When you're only using the web-based Gmail checker, it allows you to respond using the account that the email was downloaded from. I wanted to have that same functionality in Alpine. This is where the Alpine concept of a
Role comes in handy. From the main screen of alpine, type the following keys (don't type the triangular brackets):
S > R > R > A . This will bring you to a screen that allows you to set-up the conditions under which Alpine will let you send an email using a different
From email address.
First, set a nickname up for your role; maybe the name of your email provider (i.e. Sympatico). Next, under
Current Message Conditions and beside
To Pattern put one of the (or the only) email address(es) that Gmail is checking for you (e.g. bill@sympatico.ca). This creates an expectation that whenever this email address is in the the
To field of an email, Alpine will do whatever you tell it in your role.
Then, under
Actions Begin Here and beside
Set From put your name and then email address that Gmail is checking for you (e.g. Bill Nye <bill@sympatico.ca>).
Finally, under
Uses Begin Here you need to make the following changes (if necessary): (1) Under
Reply Use = make sure to highlight and press enter on
Without Confirmation and (2) Under
Compose Use = make sure to highlight and press enter on
With Confirmation. This will make it so that if someone emails you at bill@sympatico.ca, when you reply to that email, Alpine will automatically put bill@sypmpatico.ca in the
From email address and not bill@gmail.com.
When you're done, you can press
E to exit the Role set-up. If you check two email accounts through Gmail like me, press
A once more when you're in the
Setup Role Rules screen in alpine and repeat the above instructions to set-up a role for your other email account.
Saving your Gmail password in Alpine so that it doesn't prompt you all the time
Finally, you'll probably be annoyed with entering in your Gmail password every time you start up Alpine. Thanks to a helpful user on
Ubuntu Forums, I found out a simple way of making Alpine save your password. Open up your terminal, change directories to your home directory,
cd ~/, and then type in touch .pine-passfile. After that, run Alpine. It will ask you for your password on start-up, and on sending an email, only to save your password indefinitely so that you no longer have to type in your password all the time.
Conclusion
Wow, those were a lot of very little steps which, put together, seem mountainous. However, now I can punch in my dynamic DNS hostname into ConnectBot on my Android cell phone, access Alpine and send emails with files attached right from my computer's hard drive! I also like that I can update my databases on the fly with important personal info, manage, and even turn my computer off from afar. It's quite neat and if you're into feeling nerdy, I highly recommend getting your own openssh server configuration.