Backing up and Archiving Google Mail Accounts
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 = [email protected] password = examplepassword mailboxes = ("[Gmail]/All Mail",) port = 993 [destination] type = Maildir path = ~/[email protected]/ [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.












