среда, 12 января 2011 г.

Доставка и чтение почты: fetchmail, procmail, kmail

До недавнего момента за доставку (и отправку) почты, при подключении ноутбука к интернет, у меня отвечал masqmail. И, если я правильно ошибаюсь, в новых версиях этой программы возможность доставки решили выпилить, и порекомендовали для этих целей воспользоваться специализированными утилитами. Я решил не дожидаться момента, когда в репозиториях debian-а появится новый masqmail, и сразу перейти на рекомендуемый способ получения почты.
Среди найденного списка программ ($ apt-cache search fetch mail) наиболее подходящими оказались getmail4 и fetchmail. В итоге установил старый добрый fetchmail, несмотря на то что питоновский getmail4 позиционируется как более простой, и даже поддерживает Maildir из коробки.
Итак почту я храню в ящике формата maildir:

~/Mail/
 drafts/
 inbox/
  cur/
  new/
  tmp/
 outbox/
 sent-mail/
 templates/
 trash/

За обработку полученной корреспонденции (распихивание её по ящикам) будет отвечать procmail (в качестве альтернативы можно выбрать maildrop, как рекомендуется в man fetchmail или другой mda).

Часть 1 - получение почты вручную от имени пользователя


Создаем простейший конфигурационный файл для procmail (слэш в конце имени ящика указывает на то, что это ящик maildir):

$ cat > ~/.procmailrc
MAILDIR=$HOME/Mail/

:0
inbox/
^C

В результате вся обрабатываемая почта будет складываться в каталог inbox/.
Конфиг для fetchmail можно создать при помощи утилиты fetchmailconf; вот итог её работы, подходящий под мои требования:

$ cat > ~/.fetchmailrc
# Configuration created Wed Jan 12 11:10:56 2011 by fetchmailconf 1.57
set postmaster "reel"
set bouncemail
set no spambounce
set softbounce
set properties ""
set invisible

poll freemail.ukr.net with proto POP3
 user 'r*******@ukr.net' there with password '**********' is 'reel' here options keep stripcr
 mda 'procmail'
 user 'm*******@ukr.net' there with password '**********' is 'reel' here options keep
 mda 'procmail'

poll imap.gmail.com with proto IMAP
 user 'kirill.zabarniuk@gmail.com' there with password '**********' is 'reel' here options keep ssl
 mda 'procmail'
^C

При запуске, fetchmail будет получать почту из двух почтовых ящиков на сервере ukr.net (по протоколу pop3), и из одного ящика на gmail (по протоколу imap). Копии всех сообщений будут оставаться на сервере, а сами сообщения будут передаваться для дальнейшей обработки procmail-у.
Имеет смысл написать пару сообщений самому себе и проверить как это работает:

$ fetchmail
1 сообщение (1 просмотрено) для r*******@ukr.net на freemail.ukr.net (1974 октетов).
пропускается сообщение r*******@ukr.net@new.ukr.net:1 не очищено
1 сообщение (1 просмотрено) для m*********@ukr.net на freemail.ukr.net (1144 октетов).
пропускается сообщение m*********@ukr.net@new.ukr.net:1 не очищено
1 сообщение для kirill.zabarniuk@gmail.com на imap.gmail.com.
считывается сообщение kirill.zabarniuk@gmail.com@wy-in-f109.1e100.net:1 из 1 (1443 октетов в заголовке) (513 октетов в теле) не очищено

Почту я читаю с матом (mutt), но иногда пользуюсь kmail. Обычно kmail сам находит каталоги с почтой пользователя при первом запуске. Но если этого не произошло, и он решил заныкать сообщения у себя (в каталоге по умолчанию ~/.kde/share/apps/kmail/Mail/), то можно попросить его изменить путь к этому каталогу (http://kmail.kde.org/manual/faq.html#id2792815, http://forum.kde.org/viewtopic.php?f=20&t=84335#p140087):

$ kwriteconfig --file kmailrc --group General --key folders $HOME/Mail

см также Автоматическое получение почты на компьютере без постоянного подключения к интернет

Комментариев нет: