Хочется, чтобы Gmail автоматически бэкапился на компе без запуска каких-то программ, без окошек, индикаторов, мигалок и т.п.

Решение:

Установка Getmail

$ curl -O http://pyropus.ca/software/getmail/old-versions/getmail-4.20.0.tar.gz
$ tar xvf getmail-4.20.0.tar.gz
$ cd getmail-4.20.0
$ sudo python setup.py install

Настройка Getmail

$ mkdir ~/.getmail

Создать файл ~/.getmail/getmail.gmail с таким содержимым:

[retriever]
type = SimpleIMAPSSLRetriever
server = imap.gmail.com
username = ИМЯ@gmail.com
password = ПАРОЛЬ
mailboxes = ("[Gmail]/All Mail",)

[destination]
type = Maildir
path = ~/Gmail/

[options]
delete = false
read_all = false

Не забудьте заменить ИМЯ и ПАРОЛЬ на соответствующие. Кроме того, "[Gmail]/All Mail" у вас может называться по-другому (зависит от локали Gmail) – посмотрите в любом IMAP-клиенте как оно называется.

Создать папки для архива почты:

$ mkdir ~/Gmail && cd ~/Gmail && mkdir tmp cur new

Настройка launchd

Создать файл ~/Library/LaunchAgents/com.codingrobots.gmail-backup.plist c таким содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.codingrobots.gmail-backup</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/getmail</string>
        <string>-q</string>
        <string>-r</string>
        <string>/Users/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.getmail/getmail.gmail</string>
    </array>
    <key>LowPriorityIO</key>
    <true/>
    <key>Nice</key>
    <integer>1</integer>
    <key>StartInterval</key>
    <integer>10800</integer>
    <key>AbandonProcessGroup</key>
    <true/>
</dict>
</plist>

Не забудьте заменить ИМЯ_ПОЛЬЗОВАТЕЛЯ на имя вашего аккаунта в Mac OS X. StartInterval задает период получения новой почты в секундах (10800 – каждые три часа).

$ launchctl load ~/Library/LaunchAgents/com.codingrobots.gmail-backup.plist
$ launchctl start com.codingrobots.gmail-backup

Бекапилка должна стартовать (чтобы убедиться, можете посмотреть в Activity Monitor, запущен ли Python). Она скачает всю почту в папку ~/Gmail/new и потом будет автоматически докачивать новые письма каждые три часа.

Добавлено: обнаружился недостаток: getmail помечает письма как прочитанные. Мне это не мешает, но может кто-нибудь знает как это отключить? Может read_all = true?