The easiest way to backup Google Mail accounts is to enable IMAP on the account and download the messages using getmail.
Once getmail is installed you need to create a file called getmailrc. If you plan to download multiple gmail accounts then you might want to create a directory for each account and point the getmail script to that directory. Here is an example of a getmailrc file for Google Mail:
[retriever]
type = SimpleIMAPSSLRetriever
server = imap.gmail.com
username = username@example.com
password = examplepassword
mailboxes = ("[Gmail]/All Mail",)
port = 993
[destination]
type = Maildir
path = ~/username@example.com/
[options]
received = false
delivered_to = false
read_all = false
verbose = 1
After this file is saved you can procede to run getmail. I needed getmail to run all night and in the background. I outputted all the stdout to a logfile so I used the following command:
getmail --getmaildir . > output.txt 2>&1 &
Don't forget to create the directories cur, new, tmp as these are the directories that are needed for IMAP.
Now that you have your mail in a Maildir format what do you do with it? In my case I wanted to delete the account off Google Apps but still be able to search the mail if I needed it at a later date.
The strategy I came up with to bring up a copy of courier and serve the Maildir using a webmail script (in this case Roundcube).
I installed PHP through Nginx first. The easiest way to get a PHP environment up and running on Nginx is to use the Ubuntu packages:
php5-cgi
php5-common
For additional functionality such as PostgreSQL support you can install the package:
php5-pgsql
I then configured nginx with the following script:
server {
listen 80;
server_name webmail.example.com;
access_log /var/log/nginx/access.log;
log_subrequest off;
location / {
root /www/webmail.example.com;
index index.php;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME /www/webmail.example.com/$fastcgi_script_name;
}
}
}
I then created the script: /etc/init.d/php-fcgi
BIND=127.0.0.1:9000
USER=www-data
PHP_FCGI_CHILDREN=15
PHP_FCGI_MAX_REQUESTS=1000
PHP_CGI=/usr/bin/php-cgi
PHP_CGI_NAME=`basename $PHP_CGI`
PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
RETVAL=0
start() {
echo -n "Starting PHP FastCGI: "
start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
RETVAL=$?
echo "$PHP_CGI_NAME."
}
stop() {
echo -n "Stopping PHP FastCGI: "
killall -q -w -u $USER $PHP_CGI
RETVAL=$?
echo "$PHP_CGI_NAME."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: php-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
After php was up and running I installed courier:
apt-get install courier-imap courier-imap-ssl
I then downloaded roundcube and configured roundcube as necessary.
Subscribe to:
Post Comments (Atom)
1 comment:
I hope the getmail's interface is user-friendly and the commands aren't as complex as that. Unless businesses dealing with e-mails are ready to hire a few hands to handle their data, then backing up files is pretty much a manual and lengthy undertaking.
- Mac Pherson
Post a Comment