LINUX.ORG.RU

Задачка по синхронизации Gmail


0

0

Привет! Задача такова:
Есть Gmail аккаунт, на нем много почты в разных папках, есть локальная папка формата Maildir. Нужно сделать так, чтобы каждые три минуты почта доставлялась по протоколу IMAP с сервера Gmail в локальную Maildir, при этом папка-source = папка-destination.

Я пробовал Getmail - он все пихает в одну папку INBOX - приходится разруливать каждое письмо по папкам руками - ужасно напрягает.

Пробовал OfflineIMAP - он коверкает русские имена папок.

Подскажите, что еще можно попробовать? Также очень хотелось бы иметь обратную синхронизацию, т.е. чтобы письма удаленные в локальном Maildir'е удалялись бы на сервере...

Re: Задачка по синхронизации Gmail

Зеркалить содержимое папок сервера на локальную машину можно и getmail'ом. Опция mailboxes качалки SimpleIMAPRetriever и несколько rc-файлов - по одному на каждую папку на IMAP-сервере вполне себе сойдут. Только гетмыло написано на удаве, и опцию эту ему тоже надо передать по-удавному: mailboxes = ("Inbox", )

Дальше-то уже можно либо просто разбрасывать письма по локальным папкам, либо procmail подключить...

Вот насчет обратной синхронизации - это х.з.. Гугль выдал вот чего: http://isync.sourceforge.net/ Если не секрет, чем не устраивает хранение всей почты локально?

Sergius256 ()
Ответ на: Re: Задачка по синхронизации Gmail от LordZero

Re: Задачка по синхронизации Gmail

>Проблема в том, что getmail из разных папок на сервере кидает в одну локальную

так procmail на что?

anonymous ()

Re: Задачка по синхронизации Gmail

fetchmail + procmail ?

svu ★★★★★ ()
Ответ на: Re: Задачка по синхронизации Gmail от LordZero

Re: Задачка по синхронизации Gmail

Попробую на примере показать...

Первый файл - rc.inbox, для получения почты из каталога Inbox сервера:
# rc.inbox
[options]
verbose = 1
read_all = true
delete = false # заменить на true, если нужно полученные письма удалять
message_log = ~/.getmail/log

[retriever]
type = SimpleIMAPRetriever
server = mail.google.com # или как его правильно?
username = login
password = very-secret-phrase
mailboxes = ("Inbox", )

[destination]
type = Maildir
path = ~/Mail/Inbox

Всё, следующий rc-файл - rc.trash - для вытягивания каталога trash
# rc.trash
[options]
verbose = 1
read_all = true
delete = false # заменить на true, если нужно полученные письма удалять
message_log = ~/.getmail/log

[retriever]
type = SimpleIMAPRetriever
server = mail.google.com # или как его правильно?
username = login
password = very-secret-phrase
mailboxes = ("Trash", )

[destination]
type = Maildir
path = ~/Mail/Trash

И т.д.. При этом в каталоге ~/Mail должны быть созданы Maildir-почтовые
ящики с именами Inbox и Trash.
Теперь, собственно, вызов getmail:

#!/bin/sh
# ~/bin/getmail.sh mail delivery script
HOST=mail.google.com

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
ping -c 4 $HOST >/dev/null 2>&1 || exit 1
getmail -rrc.inbox -rrc.trash
# End of file

Ну и для полного щастья запихиваем это в crontab:
user@machine$ crontab -
*/10 * * * * /home/user/bin/getmail.sh > /dev/null 2>&1
(жмем Control-D)

Всё, почта будет вытягиваться с сервера раз в 10 минут и раскладываться в 2 каталога - Inbox и Trash.

Вообще, ИМХО, стоит почитать configuration.txt от getmail - там много
интересного - может и лучше решение найдется...

Sergius256 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.